aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/hda_intel.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2011-05-17 12:41:25 -0400
committerTakashi Iwai <tiwai@suse.de>2011-05-17 12:41:25 -0400
commit20c304ed84e05a91b2acae36d428d621d3c1d1c6 (patch)
tree8060cd5fdd14ac8ce5d38e62cf231f6679a3c0de /sound/pci/hda/hda_intel.c
parentb55fcb508dfc9f00056beb33d4c466bc9032dd05 (diff)
ALSA: hda - Enable snoop bit for AMD controllers
AMD Hudson controllers give noisy outputs when the buffer data is rewritten on the fly as PulseAudio does. This seems fixed by the snoop bit enabled just like ATI chipset. Also, disable 64bit DMA as now, to be sure. We can revisit this later. Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda/hda_intel.c')
-rw-r--r--sound/pci/hda/hda_intel.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index 010fd3181961..ecadb5b7d647 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -1092,7 +1092,13 @@ static void azx_init_pci(struct azx *chip)
1092 ? "Failed" : "OK"); 1092 ? "Failed" : "OK");
1093 } 1093 }
1094 break; 1094 break;
1095 1095 default:
1096 /* AMD Hudson needs the similar snoop, as it seems... */
1097 if (chip->pci->vendor == PCI_VENDOR_ID_AMD)
1098 update_pci_byte(chip->pci,
1099 ATI_SB450_HDAUDIO_MISC_CNTR2_ADDR,
1100 0x07, ATI_SB450_HDAUDIO_ENABLE_SNOOP);
1101 break;
1096 } 1102 }
1097} 1103}
1098 1104
@@ -2566,6 +2572,13 @@ static int __devinit azx_create(struct snd_card *card, struct pci_dev *pci,
2566 gcap &= ~ICH6_GCAP_64OK; 2572 gcap &= ~ICH6_GCAP_64OK;
2567 pci_dev_put(p_smbus); 2573 pci_dev_put(p_smbus);
2568 } 2574 }
2575 } else {
2576 /* FIXME: not sure whether this is really needed, but
2577 * Hudson isn't stable enough for allowing everything...
2578 * let's check later again.
2579 */
2580 if (chip->pci->vendor == PCI_VENDOR_ID_AMD)
2581 gcap &= ~ICH6_GCAP_64OK;
2569 } 2582 }
2570 2583
2571 /* disable 64bit DMA address for Teradici */ 2584 /* disable 64bit DMA address for Teradici */