mei: pxp: support matching with a gfx discrete card

With on-boards graphics card, both i915 and MEI
are in the same device hierarchy with the same parent,
while for discrete gfx card the MEI is its child device.
Adjust the match function for that scenario
by matching MEI parent device with i915.

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Vitaly Lubart <vitaly.lubart@intel.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-by: Alan Previn <alan.previn.teres.alexis@intel.com>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20220928004145.745803-7-daniele.ceraolospurio@intel.com
This commit is contained in:
Tomas Winkler 2022-09-27 17:41:36 -07:00 коммит произвёл Daniele Ceraolo Spurio
Родитель c72891256a
Коммит bd58904a32
1 изменённых файлов: 10 добавлений и 3 удалений

Просмотреть файл

@ -156,17 +156,24 @@ static int mei_pxp_component_match(struct device *dev, int subcomponent,
{
struct device *base = data;
if (!dev)
return 0;
if (!dev->driver || strcmp(dev->driver->name, "i915") ||
subcomponent != I915_COMPONENT_PXP)
return 0;
base = base->parent;
if (!base)
if (!base) /* mei device */
return 0;
base = base->parent;
dev = dev->parent;
base = base->parent; /* pci device */
/* for dgfx */
if (base && dev == base)
return 1;
/* for pch */
dev = dev->parent;
return (base && dev && dev == base);
}