hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/sound/pci/hda/hda_intel.c
....@@ -264,6 +264,7 @@
264264 AZX_DRIVER_ATI,
265265 AZX_DRIVER_ATIHDMI,
266266 AZX_DRIVER_ATIHDMI_NS,
267
+ AZX_DRIVER_GFHDMI,
267268 AZX_DRIVER_VIA,
268269 AZX_DRIVER_SIS,
269270 AZX_DRIVER_ULI,
....@@ -365,14 +366,15 @@
365366 #define needs_eld_notify_link(chip) false
366367 #endif
367368
368
-#define CONTROLLER_IN_GPU(pci) (((pci)->device == 0x0a0c) || \
369
+#define CONTROLLER_IN_GPU(pci) (((pci)->vendor == 0x8086) && \
370
+ (((pci)->device == 0x0a0c) || \
369371 ((pci)->device == 0x0c0c) || \
370372 ((pci)->device == 0x0d0c) || \
371373 ((pci)->device == 0x160c) || \
372374 ((pci)->device == 0x490d) || \
373375 ((pci)->device == 0x4f90) || \
374376 ((pci)->device == 0x4f91) || \
375
- ((pci)->device == 0x4f92))
377
+ ((pci)->device == 0x4f92)))
376378
377379 #define IS_BXT(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x5a98)
378380
....@@ -385,6 +387,7 @@
385387 [AZX_DRIVER_ATI] = "HDA ATI SB",
386388 [AZX_DRIVER_ATIHDMI] = "HDA ATI HDMI",
387389 [AZX_DRIVER_ATIHDMI_NS] = "HDA ATI HDMI",
390
+ [AZX_DRIVER_GFHDMI] = "HDA GF HDMI",
388391 [AZX_DRIVER_VIA] = "HDA VIA VT82xx",
389392 [AZX_DRIVER_SIS] = "HDA SIS966",
390393 [AZX_DRIVER_ULI] = "HDA ULI M5461",
....@@ -1782,6 +1785,12 @@
17821785 }
17831786
17841787 switch (chip->driver_type) {
1788
+ /*
1789
+ * increase the bdl size for Glenfly Gpus for hardware
1790
+ * limitation on hdac interrupt interval
1791
+ */
1792
+ case AZX_DRIVER_GFHDMI:
1793
+ return 128;
17851794 case AZX_DRIVER_ICH:
17861795 case AZX_DRIVER_PCH:
17871796 return 1;
....@@ -1901,6 +1910,12 @@
19011910 pci_write_config_dword(pci, PCI_BASE_ADDRESS_1, 0);
19021911 }
19031912 #endif
1913
+ /*
1914
+ * Fix response write request not synced to memory when handle
1915
+ * hdac interrupt on Glenfly Gpus
1916
+ */
1917
+ if (chip->driver_type == AZX_DRIVER_GFHDMI)
1918
+ bus->polling_mode = 1;
19041919
19051920 err = pci_request_regions(pci, "ICH HD audio");
19061921 if (err < 0)
....@@ -2010,6 +2025,7 @@
20102025 chip->playback_streams = ATIHDMI_NUM_PLAYBACK;
20112026 chip->capture_streams = ATIHDMI_NUM_CAPTURE;
20122027 break;
2028
+ case AZX_DRIVER_GFHDMI:
20132029 case AZX_DRIVER_GENERIC:
20142030 default:
20152031 chip->playback_streams = ICH6_NUM_PLAYBACK;
....@@ -2255,6 +2271,7 @@
22552271 SND_PCI_QUIRK(0x8086, 0x2068, "Intel NUC7i3BNB", 0),
22562272 /* https://bugzilla.kernel.org/show_bug.cgi?id=198611 */
22572273 SND_PCI_QUIRK(0x17aa, 0x2227, "Lenovo X1 Carbon 3rd Gen", 0),
2274
+ SND_PCI_QUIRK(0x17aa, 0x316e, "Lenovo ThinkCentre M70q", 0),
22582275 /* https://bugzilla.redhat.com/show_bug.cgi?id=1689623 */
22592276 SND_PCI_QUIRK(0x17aa, 0x367b, "Lenovo IdeaCentre B550", 0),
22602277 /* https://bugzilla.redhat.com/show_bug.cgi?id=1572975 */
....@@ -2755,6 +2772,12 @@
27552772 { PCI_DEVICE(0x1002, 0xab38),
27562773 .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS |
27572774 AZX_DCAPS_PM_RUNTIME },
2775
+ /* GLENFLY */
2776
+ { PCI_DEVICE(0x6766, PCI_ANY_ID),
2777
+ .class = PCI_CLASS_MULTIMEDIA_HD_AUDIO << 8,
2778
+ .class_mask = 0xffffff,
2779
+ .driver_data = AZX_DRIVER_GFHDMI | AZX_DCAPS_POSFIX_LPIB |
2780
+ AZX_DCAPS_NO_MSI | AZX_DCAPS_NO_64BIT },
27582781 /* VIA VT8251/VT8237A */
27592782 { PCI_DEVICE(0x1106, 0x3288), .driver_data = AZX_DRIVER_VIA },
27602783 /* VIA GFX VT7122/VX900 */