|
@@ -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 |
|