[alsa-devel] [PATCH]HDA: Disable AMD SB600 64bit address support only

Takashi Iwai tiwai at suse.de
Wed Jul 8 08:04:13 CEST 2009


At Wed, 8 Jul 2009 13:55:31 +0800,
Andiry Brienza wrote:
> 
> HDA driver disabled HD audio 64bit address support for all AMD SB600/SB700/SB800
> platforms with commit 09240cf429505891d6123ce14a29f58f2a60121e due to one SB600
> issue reported by community, but we do not see the similar issue on SB700/SB800
> platforms. This patch is to refine the workaround for SB600 only.
> 
> Signed-off-by: Andiry Xu <andiry.xu at amd.com>

Applied now.  Thanks.


Takashi

> diff -ruN a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
> --- a/sound/pci/hda/hda_intel.c	2009-07-01 17:14:23.000000000 +0800
> +++ b/sound/pci/hda/hda_intel.c	2009-07-08 10:24:35.000000000 +0800
> @@ -2322,9 +2322,19 @@
>  	gcap = azx_readw(chip, GCAP);
>  	snd_printdd(SFX "chipset global capabilities = 0x%x\n", gcap);
>  
> -	/* ATI chips seems buggy about 64bit DMA addresses */
> -	if (chip->driver_type == AZX_DRIVER_ATI)
> -		gcap &= ~ICH6_GCAP_64OK;
> +	/* disable SB600 64bit support for safety */
> +	if ((chip->driver_type == AZX_DRIVER_ATI) ||
> +	    (chip->driver_type == AZX_DRIVER_ATIHDMI)) {
> +		struct pci_dev *p_smbus;
> +		p_smbus = pci_get_device(PCI_VENDOR_ID_ATI,
> +					 PCI_DEVICE_ID_ATI_SBX00_SMBUS,
> +					 NULL);
> +		if (p_smbus) {
> +			if (p_smbus->revision < 0x30)
> +				gcap &= ~ICH6_GCAP_64OK;
> +			pci_dev_put(p_smbus);
> +		}
> +	}
>  
>  	/* allow 64bit DMA address if supported by H/W */
>  	if ((gcap & ICH6_GCAP_64OK) && !pci_set_dma_mask(pci, DMA_BIT_MASK(64)))
> 
> 


More information about the Alsa-devel mailing list