aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2015-10-27 09:21:51 -0400
committerTakashi Iwai <tiwai@suse.de>2015-10-27 09:32:02 -0400
commitcadd16ea33a938d49aee99edd4758cc76048b399 (patch)
tree4aa5dabc63e42d357361a533a979482a77bbf53f
parent6ed1131fe196ad7ffc13acc1a1eadc08a1db0303 (diff)
ALSA: hda - Disable 64bit address for Creative HDA controllers
We've had many reports that some Creative sound cards with CA0132 don't work well. Some reported that it starts working after reloading the module, while some reported it starts working when a 32bit kernel is used. All these facts seem implying that the chip fails to communicate when the buffer is located in 64bit address. This patch addresses these issues by just adding AZX_DCAPS_NO_64BIT flag to the corresponding PCI entries. I casually had a chance to test an SB Recon3D board, and indeed this seems helping. Although this hasn't been tested on all Creative devices, it's safer to assume that this restriction applies to the rest of them, too. So the flag is applied to all Creative entries. Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r--sound/pci/hda/hda_intel.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index c38c68f57938..61b8b75a3c80 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -334,6 +334,7 @@ enum {
334 334
335#define AZX_DCAPS_PRESET_CTHDA \ 335#define AZX_DCAPS_PRESET_CTHDA \
336 (AZX_DCAPS_NO_MSI | AZX_DCAPS_POSFIX_LPIB |\ 336 (AZX_DCAPS_NO_MSI | AZX_DCAPS_POSFIX_LPIB |\
337 AZX_DCAPS_NO_64BIT |\
337 AZX_DCAPS_4K_BDLE_BOUNDARY | AZX_DCAPS_SNOOP_OFF) 338 AZX_DCAPS_4K_BDLE_BOUNDARY | AZX_DCAPS_SNOOP_OFF)
338 339
339/* 340/*
@@ -2284,11 +2285,13 @@ static const struct pci_device_id azx_ids[] = {
2284 .class = PCI_CLASS_MULTIMEDIA_HD_AUDIO << 8, 2285 .class = PCI_CLASS_MULTIMEDIA_HD_AUDIO << 8,
2285 .class_mask = 0xffffff, 2286 .class_mask = 0xffffff,
2286 .driver_data = AZX_DRIVER_CTX | AZX_DCAPS_CTX_WORKAROUND | 2287 .driver_data = AZX_DRIVER_CTX | AZX_DCAPS_CTX_WORKAROUND |
2288 AZX_DCAPS_NO_64BIT |
2287 AZX_DCAPS_RIRB_PRE_DELAY | AZX_DCAPS_POSFIX_LPIB }, 2289 AZX_DCAPS_RIRB_PRE_DELAY | AZX_DCAPS_POSFIX_LPIB },
2288#else 2290#else
2289 /* this entry seems still valid -- i.e. without emu20kx chip */ 2291 /* this entry seems still valid -- i.e. without emu20kx chip */
2290 { PCI_DEVICE(0x1102, 0x0009), 2292 { PCI_DEVICE(0x1102, 0x0009),
2291 .driver_data = AZX_DRIVER_CTX | AZX_DCAPS_CTX_WORKAROUND | 2293 .driver_data = AZX_DRIVER_CTX | AZX_DCAPS_CTX_WORKAROUND |
2294 AZX_DCAPS_NO_64BIT |
2292 AZX_DCAPS_RIRB_PRE_DELAY | AZX_DCAPS_POSFIX_LPIB }, 2295 AZX_DCAPS_RIRB_PRE_DELAY | AZX_DCAPS_POSFIX_LPIB },
2293#endif 2296#endif
2294 /* CM8888 */ 2297 /* CM8888 */