driver-core: platform: probe of-devices only using list of compatibles
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Fri, 13 Nov 2015 08:14:20 +0000 (09:14 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 10 Feb 2016 01:39:33 +0000 (17:39 -0800)
There are several indications that make a platform device match a
platform driver. For devices that are instantiated by a device tree
matching by name, id table or acpi mechanisms doesn't make sense and
might result in surprising effects. So limit matching to use the
driver's of_match_table for these.

Acked-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/base/platform.c

index f437afa..1b5b7b5 100644 (file)
@@ -949,8 +949,8 @@ static int platform_match(struct device *dev, struct device_driver *drv)
                return !strcmp(pdev->driver_override, drv->name);
 
        /* Attempt an OF style match first */
-       if (of_driver_match_device(dev, drv))
-               return 1;
+       if (pdev->dev.of_node)
+               return of_driver_match_device(dev, drv);
 
        /* Then try ACPI style match */
        if (acpi_driver_match_device(dev, drv))