aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2017-06-14 01:26:00 -0400
committerTakashi Iwai <tiwai@suse.de>2017-06-20 01:53:28 -0400
commita4b4793f640b72af3e2bb2a1ad79725c103d5e40 (patch)
treed91a18d023b370229a36babc54080fdd7fe8f9f1
parent7fc8e7c1d9787ab8cb0f91adb3bc9c2c64c00ef8 (diff)
ALSA: hda - Add AZX_DRIVER_SKL for simplification
We checked the quirks specific to the recent Intel chips by checking the PCI IDs manually, but it's becoming messy with lots of IS_SKL() and other macros, as the amount accumulated. For simplification, here the new AZX_DRIVER_SKL type is introduced, and check chip->driver_type instead of the manual PCI ID. The short name for this is still "HDA Intel PCH", so that it doesn't break the existing user-space unnecessarily. Suggested-by: Vinod Koul <vinod.koul@intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r--sound/pci/hda/hda_intel.c47
1 files changed, 21 insertions, 26 deletions
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index 01eb1dc7b5b3..07ea7f48aa01 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -263,6 +263,7 @@ enum {
263 AZX_DRIVER_ICH, 263 AZX_DRIVER_ICH,
264 AZX_DRIVER_PCH, 264 AZX_DRIVER_PCH,
265 AZX_DRIVER_SCH, 265 AZX_DRIVER_SCH,
266 AZX_DRIVER_SKL,
266 AZX_DRIVER_HDMI, 267 AZX_DRIVER_HDMI,
267 AZX_DRIVER_ATI, 268 AZX_DRIVER_ATI,
268 AZX_DRIVER_ATIHDMI, 269 AZX_DRIVER_ATIHDMI,
@@ -364,23 +365,13 @@ enum {
364 ((pci)->device == 0x0d0c) || \ 365 ((pci)->device == 0x0d0c) || \
365 ((pci)->device == 0x160c)) 366 ((pci)->device == 0x160c))
366 367
367#define IS_SKL(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0xa170)
368#define IS_SKL_LP(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x9d70)
369#define IS_KBL(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0xa171)
370#define IS_KBL_LP(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x9d71)
371#define IS_KBL_H(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0xa2f0)
372#define IS_BXT(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x5a98) 368#define IS_BXT(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x5a98)
373#define IS_BXT_T(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x1a98)
374#define IS_GLK(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x3198)
375#define IS_CFL(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0xa348)
376#define IS_SKL_PLUS(pci) (IS_SKL(pci) || IS_SKL_LP(pci) || IS_BXT(pci) || \
377 IS_BXT_T(pci) || IS_KBL(pci) || IS_KBL_LP(pci) || \
378 IS_KBL_H(pci) || IS_GLK(pci) || IS_CFL(pci))
379 369
380static char *driver_short_names[] = { 370static char *driver_short_names[] = {
381 [AZX_DRIVER_ICH] = "HDA Intel", 371 [AZX_DRIVER_ICH] = "HDA Intel",
382 [AZX_DRIVER_PCH] = "HDA Intel PCH", 372 [AZX_DRIVER_PCH] = "HDA Intel PCH",
383 [AZX_DRIVER_SCH] = "HDA Intel MID", 373 [AZX_DRIVER_SCH] = "HDA Intel MID",
374 [AZX_DRIVER_SKL] = "HDA Intel PCH", /* kept old name for compatibility */
384 [AZX_DRIVER_HDMI] = "HDA Intel HDMI", 375 [AZX_DRIVER_HDMI] = "HDA Intel HDMI",
385 [AZX_DRIVER_ATI] = "HDA ATI SB", 376 [AZX_DRIVER_ATI] = "HDA ATI SB",
386 [AZX_DRIVER_ATIHDMI] = "HDA ATI HDMI", 377 [AZX_DRIVER_ATIHDMI] = "HDA ATI HDMI",
@@ -644,13 +635,13 @@ static void hda_intel_init_chip(struct azx *chip, bool full_reset)
644 635
645 if (chip->driver_caps & AZX_DCAPS_I915_POWERWELL) 636 if (chip->driver_caps & AZX_DCAPS_I915_POWERWELL)
646 snd_hdac_set_codec_wakeup(bus, true); 637 snd_hdac_set_codec_wakeup(bus, true);
647 if (IS_SKL_PLUS(pci)) { 638 if (chip->driver_type == AZX_DRIVER_SKL) {
648 pci_read_config_dword(pci, INTEL_HDA_CGCTL, &val); 639 pci_read_config_dword(pci, INTEL_HDA_CGCTL, &val);
649 val = val & ~INTEL_HDA_CGCTL_MISCBDCGE; 640 val = val & ~INTEL_HDA_CGCTL_MISCBDCGE;
650 pci_write_config_dword(pci, INTEL_HDA_CGCTL, val); 641 pci_write_config_dword(pci, INTEL_HDA_CGCTL, val);
651 } 642 }
652 azx_init_chip(chip, full_reset); 643 azx_init_chip(chip, full_reset);
653 if (IS_SKL_PLUS(pci)) { 644 if (chip->driver_type == AZX_DRIVER_SKL) {
654 pci_read_config_dword(pci, INTEL_HDA_CGCTL, &val); 645 pci_read_config_dword(pci, INTEL_HDA_CGCTL, &val);
655 val = val | INTEL_HDA_CGCTL_MISCBDCGE; 646 val = val | INTEL_HDA_CGCTL_MISCBDCGE;
656 pci_write_config_dword(pci, INTEL_HDA_CGCTL, val); 647 pci_write_config_dword(pci, INTEL_HDA_CGCTL, val);
@@ -1075,9 +1066,11 @@ static int azx_resume(struct device *dev)
1075 */ 1066 */
1076static int azx_freeze_noirq(struct device *dev) 1067static int azx_freeze_noirq(struct device *dev)
1077{ 1068{
1069 struct snd_card *card = dev_get_drvdata(dev);
1070 struct azx *chip = card->private_data;
1078 struct pci_dev *pci = to_pci_dev(dev); 1071 struct pci_dev *pci = to_pci_dev(dev);
1079 1072
1080 if (IS_SKL_PLUS(pci)) 1073 if (chip->driver_type == AZX_DRIVER_SKL)
1081 pci_set_power_state(pci, PCI_D3hot); 1074 pci_set_power_state(pci, PCI_D3hot);
1082 1075
1083 return 0; 1076 return 0;
@@ -1085,9 +1078,11 @@ static int azx_freeze_noirq(struct device *dev)
1085 1078
1086static int azx_thaw_noirq(struct device *dev) 1079static int azx_thaw_noirq(struct device *dev)
1087{ 1080{
1081 struct snd_card *card = dev_get_drvdata(dev);
1082 struct azx *chip = card->private_data;
1088 struct pci_dev *pci = to_pci_dev(dev); 1083 struct pci_dev *pci = to_pci_dev(dev);
1089 1084
1090 if (IS_SKL_PLUS(pci)) 1085 if (chip->driver_type == AZX_DRIVER_SKL)
1091 pci_set_power_state(pci, PCI_D0); 1086 pci_set_power_state(pci, PCI_D0);
1092 1087
1093 return 0; 1088 return 0;
@@ -1497,7 +1492,7 @@ static int check_position_fix(struct azx *chip, int fix)
1497 dev_dbg(chip->card->dev, "Using LPIB position fix\n"); 1492 dev_dbg(chip->card->dev, "Using LPIB position fix\n");
1498 return POS_FIX_LPIB; 1493 return POS_FIX_LPIB;
1499 } 1494 }
1500 if (IS_SKL_PLUS(chip->pci)) { 1495 if (chip->driver_type == AZX_DRIVER_SKL) {
1501 dev_dbg(chip->card->dev, "Using SKL position fix\n"); 1496 dev_dbg(chip->card->dev, "Using SKL position fix\n");
1502 return POS_FIX_SKL; 1497 return POS_FIX_SKL;
1503 } 1498 }
@@ -1798,7 +1793,7 @@ static int azx_first_init(struct azx *chip)
1798 return -ENXIO; 1793 return -ENXIO;
1799 } 1794 }
1800 1795
1801 if (IS_SKL_PLUS(pci)) 1796 if (chip->driver_type == AZX_DRIVER_SKL)
1802 snd_hdac_bus_parse_capabilities(bus); 1797 snd_hdac_bus_parse_capabilities(bus);
1803 1798
1804 /* 1799 /*
@@ -2367,31 +2362,31 @@ static const struct pci_device_id azx_ids[] = {
2367 .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_PCH }, 2362 .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_PCH },
2368 /* Sunrise Point */ 2363 /* Sunrise Point */
2369 { PCI_DEVICE(0x8086, 0xa170), 2364 { PCI_DEVICE(0x8086, 0xa170),
2370 .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_SKYLAKE }, 2365 .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE },
2371 /* Sunrise Point-LP */ 2366 /* Sunrise Point-LP */
2372 { PCI_DEVICE(0x8086, 0x9d70), 2367 { PCI_DEVICE(0x8086, 0x9d70),
2373 .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_SKYLAKE }, 2368 .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE },
2374 /* Kabylake */ 2369 /* Kabylake */
2375 { PCI_DEVICE(0x8086, 0xa171), 2370 { PCI_DEVICE(0x8086, 0xa171),
2376 .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_SKYLAKE }, 2371 .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE },
2377 /* Kabylake-LP */ 2372 /* Kabylake-LP */
2378 { PCI_DEVICE(0x8086, 0x9d71), 2373 { PCI_DEVICE(0x8086, 0x9d71),
2379 .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_SKYLAKE }, 2374 .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE },
2380 /* Kabylake-H */ 2375 /* Kabylake-H */
2381 { PCI_DEVICE(0x8086, 0xa2f0), 2376 { PCI_DEVICE(0x8086, 0xa2f0),
2382 .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_SKYLAKE }, 2377 .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE },
2383 /* Coffelake */ 2378 /* Coffelake */
2384 { PCI_DEVICE(0x8086, 0xa348), 2379 { PCI_DEVICE(0x8086, 0xa348),
2385 .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_SKYLAKE}, 2380 .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE},
2386 /* Broxton-P(Apollolake) */ 2381 /* Broxton-P(Apollolake) */
2387 { PCI_DEVICE(0x8086, 0x5a98), 2382 { PCI_DEVICE(0x8086, 0x5a98),
2388 .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_BROXTON }, 2383 .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_BROXTON },
2389 /* Broxton-T */ 2384 /* Broxton-T */
2390 { PCI_DEVICE(0x8086, 0x1a98), 2385 { PCI_DEVICE(0x8086, 0x1a98),
2391 .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_BROXTON }, 2386 .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_BROXTON },
2392 /* Gemini-Lake */ 2387 /* Gemini-Lake */
2393 { PCI_DEVICE(0x8086, 0x3198), 2388 { PCI_DEVICE(0x8086, 0x3198),
2394 .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_BROXTON }, 2389 .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_BROXTON },
2395 /* Haswell */ 2390 /* Haswell */
2396 { PCI_DEVICE(0x8086, 0x0a0c), 2391 { PCI_DEVICE(0x8086, 0x0a0c),
2397 .driver_data = AZX_DRIVER_HDMI | AZX_DCAPS_INTEL_HASWELL }, 2392 .driver_data = AZX_DRIVER_HDMI | AZX_DCAPS_INTEL_HASWELL },