Message ID | 20240223114626.1052784-2-cezary.rojewski@intel.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | ALSA/ASoC: Conditionally skip i915 init and cleanups | expand |
On Fri, Feb 23, 2024 at 12:46:23PM +0100, Cezary Rojewski wrote: > Commit 78f613ba1efb ("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/20210728215946.1573015-1-lucas.demarchi@intel.com/ > Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> > --- > sound/hda/hdac_i915.c | 32 +++++++++++++++++++++++++++++--- > 1 file changed, 29 insertions(+), 3 deletions(-) > > diff --git a/sound/hda/hdac_i915.c b/sound/hda/hdac_i915.c > index 365c36fdf205..afee87bd0f2e 100644 > --- a/sound/hda/hdac_i915.c > +++ b/sound/hda/hdac_i915.c > @@ -127,15 +127,41 @@ static int i915_component_master_match(struct device *dev, int subcomponent, > /* check whether Intel graphics is present and reachable */ > static int i915_gfx_present(struct pci_dev *hdac_pci) > { > + /* List of known platforms with no i915 support. */ > + static struct pci_device_id denylist[] = { > + /* CNL */ > + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a40), 0x030000, 0xff0000 }, > + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a41), 0x030000, 0xff0000 }, > + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a42), 0x030000, 0xff0000 }, > + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a44), 0x030000, 0xff0000 }, > + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a49), 0x030000, 0xff0000 }, > + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a4a), 0x030000, 0xff0000 }, > + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a4c), 0x030000, 0xff0000 }, > + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a50), 0x030000, 0xff0000 }, > + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a51), 0x030000, 0xff0000 }, > + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a52), 0x030000, 0xff0000 }, > + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a54), 0x030000, 0xff0000 }, > + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a59), 0x030000, 0xff0000 }, > + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a5a), 0x030000, 0xff0000 }, > + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a5c), 0x030000, 0xff0000 }, > + /* LKF */ > + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x9840), 0x030000, 0xff0000 }, > + { 0 } > + }; > struct pci_dev *display_dev = NULL; > > if (!gpu_bind || (gpu_bind < 0 && video_firmware_drivers_only())) > return false; > > for_each_pci_dev(display_dev) { > - if (display_dev->vendor == PCI_VENDOR_ID_INTEL && > - (display_dev->class >> 16) == PCI_BASE_CLASS_DISPLAY && > - connectivity_check(display_dev, hdac_pci)) { > + if (display_dev->vendor != PCI_VENDOR_ID_INTEL || > + (display_dev->class >> 16) != PCI_BASE_CLASS_DISPLAY) > + continue; > + > + if (pci_match_id(denylist, display_dev)) > + continue; > + > + if (connectivity_check(display_dev, hdac_pci)) { > pci_dev_put(display_dev); > return true; > } > -- > 2.25.1 >
On Fri, 23 Feb 2024, Cezary Rojewski <cezary.rojewski@intel.com> wrote: > Commit 78f613ba1efb ("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/20210728215946.1573015-1-lucas.demarchi@intel.com/ > Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com> > --- > sound/hda/hdac_i915.c | 32 +++++++++++++++++++++++++++++--- > 1 file changed, 29 insertions(+), 3 deletions(-) > > diff --git a/sound/hda/hdac_i915.c b/sound/hda/hdac_i915.c > index 365c36fdf205..afee87bd0f2e 100644 > --- a/sound/hda/hdac_i915.c > +++ b/sound/hda/hdac_i915.c > @@ -127,15 +127,41 @@ static int i915_component_master_match(struct device *dev, int subcomponent, > /* check whether Intel graphics is present and reachable */ > static int i915_gfx_present(struct pci_dev *hdac_pci) > { > + /* List of known platforms with no i915 support. */ > + static struct pci_device_id denylist[] = { This should be const to place it in rodata, it doesn't need to be mutable. > + /* CNL */ > + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a40), 0x030000, 0xff0000 }, > + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a41), 0x030000, 0xff0000 }, > + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a42), 0x030000, 0xff0000 }, > + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a44), 0x030000, 0xff0000 }, > + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a49), 0x030000, 0xff0000 }, > + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a4a), 0x030000, 0xff0000 }, > + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a4c), 0x030000, 0xff0000 }, > + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a50), 0x030000, 0xff0000 }, > + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a51), 0x030000, 0xff0000 }, > + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a52), 0x030000, 0xff0000 }, > + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a54), 0x030000, 0xff0000 }, > + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a59), 0x030000, 0xff0000 }, > + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a5a), 0x030000, 0xff0000 }, > + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a5c), 0x030000, 0xff0000 }, > + /* LKF */ > + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x9840), 0x030000, 0xff0000 }, > + { 0 } Nitpick, prefer {} over { 0 }. BR, Jani. > + }; > struct pci_dev *display_dev = NULL; > > if (!gpu_bind || (gpu_bind < 0 && video_firmware_drivers_only())) > return false; > > for_each_pci_dev(display_dev) { > - if (display_dev->vendor == PCI_VENDOR_ID_INTEL && > - (display_dev->class >> 16) == PCI_BASE_CLASS_DISPLAY && > - connectivity_check(display_dev, hdac_pci)) { > + if (display_dev->vendor != PCI_VENDOR_ID_INTEL || > + (display_dev->class >> 16) != PCI_BASE_CLASS_DISPLAY) > + continue; > + > + if (pci_match_id(denylist, display_dev)) > + continue; > + > + if (connectivity_check(display_dev, hdac_pci)) { > pci_dev_put(display_dev); > return true; > }
On 2024-02-26 11:40 AM, Jani Nikula wrote: > On Fri, 23 Feb 2024, Cezary Rojewski <cezary.rojewski@intel.com> wrote: >> Commit 78f613ba1efb ("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/20210728215946.1573015-1-lucas.demarchi@intel.com/ >> Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com> >> --- >> sound/hda/hdac_i915.c | 32 +++++++++++++++++++++++++++++--- >> 1 file changed, 29 insertions(+), 3 deletions(-) >> >> diff --git a/sound/hda/hdac_i915.c b/sound/hda/hdac_i915.c >> index 365c36fdf205..afee87bd0f2e 100644 >> --- a/sound/hda/hdac_i915.c >> +++ b/sound/hda/hdac_i915.c >> @@ -127,15 +127,41 @@ static int i915_component_master_match(struct device *dev, int subcomponent, >> /* check whether Intel graphics is present and reachable */ >> static int i915_gfx_present(struct pci_dev *hdac_pci) >> { >> + /* List of known platforms with no i915 support. */ >> + static struct pci_device_id denylist[] = { > > This should be const to place it in rodata, it doesn't need to be > mutable. > >> + /* CNL */ >> + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a40), 0x030000, 0xff0000 }, >> + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a41), 0x030000, 0xff0000 }, >> + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a42), 0x030000, 0xff0000 }, >> + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a44), 0x030000, 0xff0000 }, >> + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a49), 0x030000, 0xff0000 }, >> + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a4a), 0x030000, 0xff0000 }, >> + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a4c), 0x030000, 0xff0000 }, >> + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a50), 0x030000, 0xff0000 }, >> + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a51), 0x030000, 0xff0000 }, >> + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a52), 0x030000, 0xff0000 }, >> + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a54), 0x030000, 0xff0000 }, >> + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a59), 0x030000, 0xff0000 }, >> + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a5a), 0x030000, 0xff0000 }, >> + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a5c), 0x030000, 0xff0000 }, >> + /* LKF */ >> + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x9840), 0x030000, 0xff0000 }, >> + { 0 } > > Nitpick, prefer {} over { 0 }. Ack for both suggestions. Thank you. Kind regards, Czarek
diff --git a/sound/hda/hdac_i915.c b/sound/hda/hdac_i915.c index 365c36fdf205..afee87bd0f2e 100644 --- a/sound/hda/hdac_i915.c +++ b/sound/hda/hdac_i915.c @@ -127,15 +127,41 @@ static int i915_component_master_match(struct device *dev, int subcomponent, /* check whether Intel graphics is present and reachable */ static int i915_gfx_present(struct pci_dev *hdac_pci) { + /* List of known platforms with no i915 support. */ + static struct pci_device_id denylist[] = { + /* CNL */ + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a40), 0x030000, 0xff0000 }, + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a41), 0x030000, 0xff0000 }, + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a42), 0x030000, 0xff0000 }, + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a44), 0x030000, 0xff0000 }, + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a49), 0x030000, 0xff0000 }, + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a4a), 0x030000, 0xff0000 }, + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a4c), 0x030000, 0xff0000 }, + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a50), 0x030000, 0xff0000 }, + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a51), 0x030000, 0xff0000 }, + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a52), 0x030000, 0xff0000 }, + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a54), 0x030000, 0xff0000 }, + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a59), 0x030000, 0xff0000 }, + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a5a), 0x030000, 0xff0000 }, + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x5a5c), 0x030000, 0xff0000 }, + /* LKF */ + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x9840), 0x030000, 0xff0000 }, + { 0 } + }; struct pci_dev *display_dev = NULL; if (!gpu_bind || (gpu_bind < 0 && video_firmware_drivers_only())) return false; for_each_pci_dev(display_dev) { - if (display_dev->vendor == PCI_VENDOR_ID_INTEL && - (display_dev->class >> 16) == PCI_BASE_CLASS_DISPLAY && - connectivity_check(display_dev, hdac_pci)) { + if (display_dev->vendor != PCI_VENDOR_ID_INTEL || + (display_dev->class >> 16) != PCI_BASE_CLASS_DISPLAY) + continue; + + if (pci_match_id(denylist, display_dev)) + continue; + + if (connectivity_check(display_dev, hdac_pci)) { pci_dev_put(display_dev); return true; }
Commit 78f613ba1efb ("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/20210728215946.1573015-1-lucas.demarchi@intel.com/ Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com> --- sound/hda/hdac_i915.c | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-)