RE: [PATCH 1/1] hda_intel: switch Intel chipsets to COMBOposition_fix

From: Heasley, Seth
Date: Wed Jun 13 2012 - 13:58:55 EST


>> This patch implements the COMBO position_fix for recent Intel client
>chipsets.
>>
>> Signed-off-by: Seth Heasley <seth.heasley@xxxxxxxxx>
>
>Thanks for the patch.
>But could you give a bit more context why this change is needed?

The COMBO method was recommended for Intel chipsets by a certain audio maintainer. ;) It was also tested on the most recent Intel chips because we were seeing warning messages when using DMA positioning ("Invalid position buffer, using LPIB read method instead.").

>> ---
>> sound/pci/hda/hda_intel.c | 11 ++++++++---
>> 1 files changed, 8 insertions(+), 3 deletions(-)
>>
>> diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
>> index 2b6392b..466a88c 100644
>> --- a/sound/pci/hda/hda_intel.c
>> +++ b/sound/pci/hda/hda_intel.c
>> @@ -535,6 +535,7 @@ enum {
>> #define AZX_DCAPS_BUFSIZE (1 << 21) /* no buffer size
>alignment */
>> #define AZX_DCAPS_ALIGN_BUFSIZE (1 << 22) /* buffer size
>alignment */
>> #define AZX_DCAPS_4K_BDLE_BOUNDARY (1 << 23) /* BDLE in 4k boundary
>*/
>> +#define AZX_DCAPS_POSFIX_COMBO (1 << 24) /* Use COMBO as
>default */
>>
>> /* quirks for ATI SB / AMD Hudson */
>> #define AZX_DCAPS_PRESET_ATI_SB \
>> @@ -2728,6 +2729,10 @@ static int __devinit check_position_fix(struct azx
>*chip, int fix)
>> snd_printd(SFX "Using LPIB position fix\n");
>> return POS_FIX_LPIB;
>> }
>> + if (chip->driver_caps & AZX_DCAPS_POSFIX_COMBO) {
>> + snd_printd(SFX "Using COMBO position fix\n");
>> + return POS_FIX_COMBO;
>> + }
>> return POS_FIX_AUTO;
>> }
>>
>> @@ -3240,7 +3245,7 @@ static DEFINE_PCI_DEVICE_TABLE(azx_ids) = {
>> /* CPT */
>> { PCI_DEVICE(0x8086, 0x1c20),
>> .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP |
>> - AZX_DCAPS_BUFSIZE },
>> + AZX_DCAPS_BUFSIZE | AZX_DCAPS_POSFIX_COMBO },
>> /* PBG */
>> { PCI_DEVICE(0x8086, 0x1d20),
>> .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP | @@ -
>3248,11
>> +3253,11 @@ static DEFINE_PCI_DEVICE_TABLE(azx_ids) = {
>> /* Panther Point */
>> { PCI_DEVICE(0x8086, 0x1e20),
>> .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP |
>> - AZX_DCAPS_BUFSIZE},
>> + AZX_DCAPS_BUFSIZE | AZX_DCAPS_POSFIX_COMBO },
>> /* Lynx Point */
>> { PCI_DEVICE(0x8086, 0x8c20),
>> .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP |
>> - AZX_DCAPS_BUFSIZE},
>> + AZX_DCAPS_BUFSIZE | AZX_DCAPS_POSFIX_COMBO },
>> /* SCH */
>> { PCI_DEVICE(0x8086, 0x811b),
>> .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_SCH_SNOOP |
>> --
>> 1.7.4.4
>>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/