mei: pxp: match without driver name
authorAlexander Usyskin <alexander.usyskin@intel.com>
Tue, 23 Jan 2024 10:16:23 +0000 (12:16 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 31 Jan 2024 00:19:59 +0000 (16:19 -0800)
Xe driver uses this component too, but current match function
matches by i915 driver name.
Remove dependency on i915 driver name in component_match function.
Use PCI header information to match Intel graphics device.

Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Link: https://lore.kernel.org/r/20240123101625.220365-3-tomas.winkler@intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/misc/mei/pxp/mei_pxp.c

index 787c6a27a4be60f9322c6aad9e1d7143da24e47e..b1e4c23b31a32957c616f0edcdf74dc086c44a89 100644 (file)
@@ -13,6 +13,7 @@
 
 #include <linux/delay.h>
 #include <linux/module.h>
+#include <linux/pci.h>
 #include <linux/slab.h>
 #include <linux/mei.h>
 #include <linux/mei_cl_bus.h>
@@ -225,12 +226,21 @@ static int mei_pxp_component_match(struct device *dev, int subcomponent,
                                   void *data)
 {
        struct device *base = data;
+       struct pci_dev *pdev;
 
        if (!dev)
                return 0;
 
-       if (!dev->driver || strcmp(dev->driver->name, "i915") ||
-           subcomponent != I915_COMPONENT_PXP)
+       if (!dev_is_pci(dev))
+               return 0;
+
+       pdev = to_pci_dev(dev);
+
+       if (pdev->class != (PCI_CLASS_DISPLAY_VGA << 8) ||
+           pdev->vendor != PCI_VENDOR_ID_INTEL)
+               return 0;
+
+       if (subcomponent != I915_COMPONENT_PXP)
                return 0;
 
        base = base->parent;