aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/hda_intel.c
diff options
context:
space:
mode:
authorSeth Heasley <seth.heasley@intel.com>2012-06-14 17:23:53 -0400
committerTakashi Iwai <tiwai@suse.de>2012-06-15 04:28:16 -0400
commitc20c5a841cbe47f5b7812b57bd25397497e5fbc0 (patch)
treea380ffd9acb7d4a207a4af573935bc9dead1ba41 /sound/pci/hda/hda_intel.c
parent80c8bfbe76869bfd6bdf3d260d316e7a32f318c3 (diff)
ALSA: hda_intel: activate COMBO mode for Intel client chipsets
This patch activates the COMBO position_fix for recent Intel client chipsets. COMBO mode is the recommended setting for Intel chipsets and eliminates HD audio warnings in dmesg. This patch has been tested on Lynx Point, Panther Point, and Cougar Pont. Signed-off-by: Seth Heasley <seth.heasley@intel.com> 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.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index d49926e4d19f..1a07d2188dd7 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -535,6 +535,7 @@ enum {
535#define AZX_DCAPS_BUFSIZE (1 << 21) /* no buffer size alignment */ 535#define AZX_DCAPS_BUFSIZE (1 << 21) /* no buffer size alignment */
536#define AZX_DCAPS_ALIGN_BUFSIZE (1 << 22) /* buffer size alignment */ 536#define AZX_DCAPS_ALIGN_BUFSIZE (1 << 22) /* buffer size alignment */
537#define AZX_DCAPS_4K_BDLE_BOUNDARY (1 << 23) /* BDLE in 4k boundary */ 537#define AZX_DCAPS_4K_BDLE_BOUNDARY (1 << 23) /* BDLE in 4k boundary */
538#define AZX_DCAPS_POSFIX_COMBO (1 << 24) /* Use COMBO as default */
538 539
539/* quirks for ATI SB / AMD Hudson */ 540/* quirks for ATI SB / AMD Hudson */
540#define AZX_DCAPS_PRESET_ATI_SB \ 541#define AZX_DCAPS_PRESET_ATI_SB \
@@ -2728,6 +2729,10 @@ static int __devinit check_position_fix(struct azx *chip, int fix)
2728 snd_printd(SFX "Using LPIB position fix\n"); 2729 snd_printd(SFX "Using LPIB position fix\n");
2729 return POS_FIX_LPIB; 2730 return POS_FIX_LPIB;
2730 } 2731 }
2732 if (chip->driver_caps & AZX_DCAPS_POSFIX_COMBO) {
2733 snd_printd(SFX "Using COMBO position fix\n");
2734 return POS_FIX_COMBO;
2735 }
2731 return POS_FIX_AUTO; 2736 return POS_FIX_AUTO;
2732} 2737}
2733 2738
@@ -3240,7 +3245,7 @@ static DEFINE_PCI_DEVICE_TABLE(azx_ids) = {
3240 /* CPT */ 3245 /* CPT */
3241 { PCI_DEVICE(0x8086, 0x1c20), 3246 { PCI_DEVICE(0x8086, 0x1c20),
3242 .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP | 3247 .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP |
3243 AZX_DCAPS_BUFSIZE }, 3248 AZX_DCAPS_BUFSIZE | AZX_DCAPS_POSFIX_COMBO },
3244 /* PBG */ 3249 /* PBG */
3245 { PCI_DEVICE(0x8086, 0x1d20), 3250 { PCI_DEVICE(0x8086, 0x1d20),
3246 .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP | 3251 .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP |
@@ -3248,11 +3253,11 @@ static DEFINE_PCI_DEVICE_TABLE(azx_ids) = {
3248 /* Panther Point */ 3253 /* Panther Point */
3249 { PCI_DEVICE(0x8086, 0x1e20), 3254 { PCI_DEVICE(0x8086, 0x1e20),
3250 .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP | 3255 .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP |
3251 AZX_DCAPS_BUFSIZE}, 3256 AZX_DCAPS_BUFSIZE | AZX_DCAPS_POSFIX_COMBO },
3252 /* Lynx Point */ 3257 /* Lynx Point */
3253 { PCI_DEVICE(0x8086, 0x8c20), 3258 { PCI_DEVICE(0x8086, 0x8c20),
3254 .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP | 3259 .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP |
3255 AZX_DCAPS_BUFSIZE}, 3260 AZX_DCAPS_BUFSIZE | AZX_DCAPS_POSFIX_COMBO },
3256 /* SCH */ 3261 /* SCH */
3257 { PCI_DEVICE(0x8086, 0x811b), 3262 { PCI_DEVICE(0x8086, 0x811b),
3258 .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_SCH_SNOOP | 3263 .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_SCH_SNOOP |