diff options
Diffstat (limited to 'sound/pci/hda/hda_intel.c')
-rw-r--r-- | sound/pci/hda/hda_intel.c | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 7757536b9d5f..b4f3c7295a53 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c | |||
@@ -72,7 +72,7 @@ static int enable_msi = -1; | |||
72 | static char *patch[SNDRV_CARDS]; | 72 | static char *patch[SNDRV_CARDS]; |
73 | #endif | 73 | #endif |
74 | #ifdef CONFIG_SND_HDA_INPUT_BEEP | 74 | #ifdef CONFIG_SND_HDA_INPUT_BEEP |
75 | static int beep_mode[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS-1)] = | 75 | static bool beep_mode[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS-1)] = |
76 | CONFIG_SND_HDA_INPUT_BEEP_MODE}; | 76 | CONFIG_SND_HDA_INPUT_BEEP_MODE}; |
77 | #endif | 77 | #endif |
78 | 78 | ||
@@ -103,9 +103,9 @@ module_param_array(patch, charp, NULL, 0444); | |||
103 | MODULE_PARM_DESC(patch, "Patch file for Intel HD audio interface."); | 103 | MODULE_PARM_DESC(patch, "Patch file for Intel HD audio interface."); |
104 | #endif | 104 | #endif |
105 | #ifdef CONFIG_SND_HDA_INPUT_BEEP | 105 | #ifdef CONFIG_SND_HDA_INPUT_BEEP |
106 | module_param_array(beep_mode, int, NULL, 0444); | 106 | module_param_array(beep_mode, bool, NULL, 0444); |
107 | MODULE_PARM_DESC(beep_mode, "Select HDA Beep registration mode " | 107 | MODULE_PARM_DESC(beep_mode, "Select HDA Beep registration mode " |
108 | "(0=off, 1=on, 2=mute switch on/off) (default=1)."); | 108 | "(0=off, 1=on) (default=1)."); |
109 | #endif | 109 | #endif |
110 | 110 | ||
111 | #ifdef CONFIG_SND_HDA_POWER_SAVE | 111 | #ifdef CONFIG_SND_HDA_POWER_SAVE |
@@ -151,6 +151,7 @@ MODULE_SUPPORTED_DEVICE("{{Intel, ICH6}," | |||
151 | "{Intel, CPT}," | 151 | "{Intel, CPT}," |
152 | "{Intel, PPT}," | 152 | "{Intel, PPT}," |
153 | "{Intel, LPT}," | 153 | "{Intel, LPT}," |
154 | "{Intel, HPT}," | ||
154 | "{Intel, PBG}," | 155 | "{Intel, PBG}," |
155 | "{Intel, SCH}," | 156 | "{Intel, SCH}," |
156 | "{ATI, SB450}," | 157 | "{ATI, SB450}," |
@@ -535,6 +536,7 @@ enum { | |||
535 | #define AZX_DCAPS_BUFSIZE (1 << 21) /* no buffer size alignment */ | 536 | #define AZX_DCAPS_BUFSIZE (1 << 21) /* no buffer size alignment */ |
536 | #define AZX_DCAPS_ALIGN_BUFSIZE (1 << 22) /* buffer size alignment */ | 537 | #define AZX_DCAPS_ALIGN_BUFSIZE (1 << 22) /* buffer size alignment */ |
537 | #define AZX_DCAPS_4K_BDLE_BOUNDARY (1 << 23) /* BDLE in 4k boundary */ | 538 | #define AZX_DCAPS_4K_BDLE_BOUNDARY (1 << 23) /* BDLE in 4k boundary */ |
539 | #define AZX_DCAPS_POSFIX_COMBO (1 << 24) /* Use COMBO as default */ | ||
538 | 540 | ||
539 | /* quirks for ATI SB / AMD Hudson */ | 541 | /* quirks for ATI SB / AMD Hudson */ |
540 | #define AZX_DCAPS_PRESET_ATI_SB \ | 542 | #define AZX_DCAPS_PRESET_ATI_SB \ |
@@ -2731,6 +2733,10 @@ static int __devinit check_position_fix(struct azx *chip, int fix) | |||
2731 | snd_printd(SFX "Using LPIB position fix\n"); | 2733 | snd_printd(SFX "Using LPIB position fix\n"); |
2732 | return POS_FIX_LPIB; | 2734 | return POS_FIX_LPIB; |
2733 | } | 2735 | } |
2736 | if (chip->driver_caps & AZX_DCAPS_POSFIX_COMBO) { | ||
2737 | snd_printd(SFX "Using COMBO position fix\n"); | ||
2738 | return POS_FIX_COMBO; | ||
2739 | } | ||
2734 | return POS_FIX_AUTO; | 2740 | return POS_FIX_AUTO; |
2735 | } | 2741 | } |
2736 | 2742 | ||
@@ -3243,7 +3249,7 @@ static DEFINE_PCI_DEVICE_TABLE(azx_ids) = { | |||
3243 | /* CPT */ | 3249 | /* CPT */ |
3244 | { PCI_DEVICE(0x8086, 0x1c20), | 3250 | { PCI_DEVICE(0x8086, 0x1c20), |
3245 | .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP | | 3251 | .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP | |
3246 | AZX_DCAPS_BUFSIZE }, | 3252 | AZX_DCAPS_BUFSIZE | AZX_DCAPS_POSFIX_COMBO }, |
3247 | /* PBG */ | 3253 | /* PBG */ |
3248 | { PCI_DEVICE(0x8086, 0x1d20), | 3254 | { PCI_DEVICE(0x8086, 0x1d20), |
3249 | .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP | | 3255 | .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP | |
@@ -3251,11 +3257,15 @@ static DEFINE_PCI_DEVICE_TABLE(azx_ids) = { | |||
3251 | /* Panther Point */ | 3257 | /* Panther Point */ |
3252 | { PCI_DEVICE(0x8086, 0x1e20), | 3258 | { PCI_DEVICE(0x8086, 0x1e20), |
3253 | .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP | | 3259 | .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP | |
3254 | AZX_DCAPS_BUFSIZE}, | 3260 | AZX_DCAPS_BUFSIZE | AZX_DCAPS_POSFIX_COMBO }, |
3255 | /* Lynx Point */ | 3261 | /* Lynx Point */ |
3256 | { PCI_DEVICE(0x8086, 0x8c20), | 3262 | { PCI_DEVICE(0x8086, 0x8c20), |
3257 | .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP | | 3263 | .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP | |
3258 | AZX_DCAPS_BUFSIZE}, | 3264 | AZX_DCAPS_BUFSIZE | AZX_DCAPS_POSFIX_COMBO }, |
3265 | /* Haswell */ | ||
3266 | { PCI_DEVICE(0x8086, 0x0c0c), | ||
3267 | .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_SCH_SNOOP | | ||
3268 | AZX_DCAPS_BUFSIZE | AZX_DCAPS_POSFIX_COMBO }, | ||
3259 | /* SCH */ | 3269 | /* SCH */ |
3260 | { PCI_DEVICE(0x8086, 0x811b), | 3270 | { PCI_DEVICE(0x8086, 0x811b), |
3261 | .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_SCH_SNOOP | | 3271 | .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_SCH_SNOOP | |
@@ -3341,6 +3351,10 @@ static DEFINE_PCI_DEVICE_TABLE(azx_ids) = { | |||
3341 | /* VIA VT8251/VT8237A */ | 3351 | /* VIA VT8251/VT8237A */ |
3342 | { PCI_DEVICE(0x1106, 0x3288), | 3352 | { PCI_DEVICE(0x1106, 0x3288), |
3343 | .driver_data = AZX_DRIVER_VIA | AZX_DCAPS_POSFIX_VIA }, | 3353 | .driver_data = AZX_DRIVER_VIA | AZX_DCAPS_POSFIX_VIA }, |
3354 | /* VIA GFX VT7122/VX900 */ | ||
3355 | { PCI_DEVICE(0x1106, 0x9170), .driver_data = AZX_DRIVER_GENERIC }, | ||
3356 | /* VIA GFX VT6122/VX11 */ | ||
3357 | { PCI_DEVICE(0x1106, 0x9140), .driver_data = AZX_DRIVER_GENERIC }, | ||
3344 | /* SIS966 */ | 3358 | /* SIS966 */ |
3345 | { PCI_DEVICE(0x1039, 0x7502), .driver_data = AZX_DRIVER_SIS }, | 3359 | { PCI_DEVICE(0x1039, 0x7502), .driver_data = AZX_DRIVER_SIS }, |
3346 | /* ULI M5461 */ | 3360 | /* ULI M5461 */ |