mfd: core: propagate device properties to sub devices drivers
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Mon, 30 Nov 2015 15:11:40 +0000 (17:11 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 7 Dec 2015 01:29:23 +0000 (02:29 +0100)
In the similar way like we do for the platform data we propagate the device
properties. For example, in case of Intel LPSS drivers we may provide a
specific property to tell the actual device driver an additional information
such as platform name.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/mfd/mfd-core.c
include/linux/mfd/core.h

index 60b60dc..88bd1b1 100644 (file)
@@ -14,6 +14,7 @@
 #include <linux/kernel.h>
 #include <linux/platform_device.h>
 #include <linux/acpi.h>
+#include <linux/property.h>
 #include <linux/mfd/core.h>
 #include <linux/pm_runtime.h>
 #include <linux/slab.h>
@@ -192,6 +193,12 @@ static int mfd_add_device(struct device *parent, int id,
                        goto fail_alias;
        }
 
+       if (cell->pset) {
+               ret = platform_device_add_properties(pdev, cell->pset);
+               if (ret)
+                       goto fail_alias;
+       }
+
        ret = mfd_platform_add_cell(pdev, cell, usage_count);
        if (ret)
                goto fail_alias;
index 27dac3f..bc6f7e0 100644 (file)
@@ -17,6 +17,7 @@
 #include <linux/platform_device.h>
 
 struct irq_domain;
+struct property_set;
 
 /* Matches ACPI PNP id, either _HID or _CID, or ACPI _ADR */
 struct mfd_cell_acpi_match {
@@ -44,6 +45,10 @@ struct mfd_cell {
        /* platform data passed to the sub devices drivers */
        void                    *platform_data;
        size_t                  pdata_size;
+
+       /* device properties passed to the sub devices drivers */
+       const struct property_set *pset;
+
        /*
         * Device Tree compatible string
         * See: Documentation/devicetree/usage-model.txt Chapter 2.2 for details