Skip to content

Commit bd6e4c4

Browse files
crojewsk-inteltiwai
authored andcommitted
ALSA: hda: Skip i915 initialization on CNL/LKF-based platforms
Commit 78f613b ("drm/i915: finish removal of CNL") and its friends removed support for i915 for all CNL-based platforms. HDAudio library, however, still treats such platforms as valid candidates for i915 binding. Update query mechanism to reflect changes made in drm tree. At the same time, i915 support for LKF-based platforms has not been provided so remove them from valid binding candidates. Link: https://lore.kernel.org/all/[email protected]/ Reviewed-by: Rodrigo Vivi <[email protected]> Signed-off-by: Cezary Rojewski <[email protected]> Signed-off-by: Takashi Iwai <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent 1601cd5 commit bd6e4c4

File tree

1 file changed

+29
-3
lines changed

1 file changed

+29
-3
lines changed

sound/hda/hdac_i915.c

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,15 +127,41 @@ static int i915_component_master_match(struct device *dev, int subcomponent,
127127
/* check whether Intel graphics is present and reachable */
128128
static int i915_gfx_present(struct pci_dev *hdac_pci)
129129
{
130+
/* List of known platforms with no i915 support. */
131+
static const struct pci_device_id denylist[] = {
132+
/* CNL */
133+
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a40), 0x030000, 0xff0000 },
134+
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a41), 0x030000, 0xff0000 },
135+
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a42), 0x030000, 0xff0000 },
136+
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a44), 0x030000, 0xff0000 },
137+
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a49), 0x030000, 0xff0000 },
138+
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a4a), 0x030000, 0xff0000 },
139+
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a4c), 0x030000, 0xff0000 },
140+
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a50), 0x030000, 0xff0000 },
141+
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a51), 0x030000, 0xff0000 },
142+
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a52), 0x030000, 0xff0000 },
143+
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a54), 0x030000, 0xff0000 },
144+
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a59), 0x030000, 0xff0000 },
145+
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a5a), 0x030000, 0xff0000 },
146+
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a5c), 0x030000, 0xff0000 },
147+
/* LKF */
148+
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x9840), 0x030000, 0xff0000 },
149+
{}
150+
};
130151
struct pci_dev *display_dev = NULL;
131152

132153
if (!gpu_bind || (gpu_bind < 0 && video_firmware_drivers_only()))
133154
return false;
134155

135156
for_each_pci_dev(display_dev) {
136-
if (display_dev->vendor == PCI_VENDOR_ID_INTEL &&
137-
(display_dev->class >> 16) == PCI_BASE_CLASS_DISPLAY &&
138-
connectivity_check(display_dev, hdac_pci)) {
157+
if (display_dev->vendor != PCI_VENDOR_ID_INTEL ||
158+
(display_dev->class >> 16) != PCI_BASE_CLASS_DISPLAY)
159+
continue;
160+
161+
if (pci_match_id(denylist, display_dev))
162+
continue;
163+
164+
if (connectivity_check(display_dev, hdac_pci)) {
139165
pci_dev_put(display_dev);
140166
return true;
141167
}

0 commit comments

Comments
 (0)