mfd: Save device node parsed platform data for tps65910 sub devices
authorLaxman Dewangan <ldewangan@nvidia.com>
Fri, 18 May 2012 20:31:41 +0000 (02:01 +0530)
committerSamuel Ortiz <sameo@linux.intel.com>
Tue, 22 May 2012 21:49:13 +0000 (23:49 +0200)
Save the allocated memory to store the parsed device node information
to the global device structure so that sub devices can directly use this
pointer.
In this way, the sub devices does not require to re-allocate the
memory for storing the sub-devices specific device node information.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
drivers/mfd/tps65910.c
include/linux/mfd/tps65910.h

index 18b30cf45e5b2b82196414dcdbca73ed6d698db7..05d449b33693e44ee140621909746546688493c4 100644 (file)
@@ -209,14 +209,17 @@ static __devinit int tps65910_i2c_probe(struct i2c_client *i2c,
 {
        struct tps65910 *tps65910;
        struct tps65910_board *pmic_plat_data;
+       struct tps65910_board *of_pmic_plat_data = NULL;
        struct tps65910_platform_data *init_data;
        int ret = 0;
        int chip_id = id->driver_data;
 
        pmic_plat_data = dev_get_platdata(&i2c->dev);
 
-       if (!pmic_plat_data && i2c->dev.of_node)
+       if (!pmic_plat_data && i2c->dev.of_node) {
                pmic_plat_data = tps65910_parse_dt(i2c, &chip_id);
+               of_pmic_plat_data = pmic_plat_data;
+       }
 
        if (!pmic_plat_data)
                return -EINVAL;
@@ -229,6 +232,7 @@ static __devinit int tps65910_i2c_probe(struct i2c_client *i2c,
        if (tps65910 == NULL)
                return -ENOMEM;
 
+       tps65910->of_plat_data = of_pmic_plat_data;
        i2c_set_clientdata(i2c, tps65910);
        tps65910->dev = &i2c->dev;
        tps65910->i2c_client = i2c;
index ab04e901e57e24b5c756da5e632850bdd41413fc..dd8dc0a6c46243141ea59e325cde465fb993bce5 100644 (file)
@@ -830,6 +830,9 @@ struct tps65910 {
        struct tps65910_rtc *rtc;
        struct tps65910_power *power;
 
+       /* Device node parsed board data */
+       struct tps65910_board *of_plat_data;
+
        /* IRQ Handling */
        struct mutex irq_lock;
        int chip_irq;