mfd: Use mfd cell platform_data for mc13xxx cells platform bits
authorSamuel Ortiz <sameo@linux.intel.com>
Thu, 7 Apr 2011 23:55:01 +0000 (01:55 +0200)
committerSamuel Ortiz <sameo@linux.intel.com>
Thu, 26 May 2011 17:45:07 +0000 (19:45 +0200)
With the addition of a platform device mfd_cell pointer, MFD drivers
can go back to passing platform data back to their sub drivers.
This allows for an mfd_cell->mfd_data removal and thus keep the
sub drivers MFD agnostic. This is mostly needed for non MFD aware
sub drivers.

Cc: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: Liam Girdwood <lrg@slimlogic.co.uk>
Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
drivers/leds/leds-mc13783.c
drivers/mfd/mc13xxx-core.c
drivers/regulator/mc13783-regulator.c
drivers/regulator/mc13892-regulator.c

index 126ca7955f6e16f4f43cd72ec387d4a8a0fd3637..f369e56d6547ced1e92444c8f22cad3e3e09060d 100644 (file)
@@ -22,7 +22,6 @@
 #include <linux/leds.h>
 #include <linux/workqueue.h>
 #include <linux/mfd/mc13783.h>
-#include <linux/mfd/core.h>
 #include <linux/slab.h>
 
 struct mc13783_led {
@@ -184,7 +183,7 @@ static int __devinit mc13783_led_setup(struct mc13783_led *led, int max_current)
 
 static int __devinit mc13783_leds_prepare(struct platform_device *pdev)
 {
-       struct mc13783_leds_platform_data *pdata = mfd_get_data(pdev);
+       struct mc13783_leds_platform_data *pdata = dev_get_platdata(&pdev->dev);
        struct mc13783 *dev = dev_get_drvdata(pdev->dev.parent);
        int ret = 0;
        int reg = 0;
@@ -265,7 +264,7 @@ out:
 
 static int __devinit mc13783_led_probe(struct platform_device *pdev)
 {
-       struct mc13783_leds_platform_data *pdata = mfd_get_data(pdev);
+       struct mc13783_leds_platform_data *pdata = dev_get_platdata(&pdev->dev);
        struct mc13783_led_platform_data *led_cur;
        struct mc13783_led *led, *led_dat;
        int ret, i;
@@ -352,7 +351,7 @@ err_free:
 
 static int __devexit mc13783_led_remove(struct platform_device *pdev)
 {
-       struct mc13783_leds_platform_data *pdata = mfd_get_data(pdev);
+       struct mc13783_leds_platform_data *pdata = dev_get_platdata(&pdev->dev);
        struct mc13783_led *led = platform_get_drvdata(pdev);
        struct mc13783 *dev = dev_get_drvdata(pdev->dev.parent);
        int i;
index 668634e89e81e1e616bbdab7562db258de72c8a0..7e4d44bf92ab90b10725ac14310782b1b6143e31 100644 (file)
@@ -683,13 +683,14 @@ out:
 EXPORT_SYMBOL_GPL(mc13783_adc_do_conversion);
 
 static int mc13xxx_add_subdevice_pdata(struct mc13xxx *mc13xxx,
-               const char *format, void *pdata)
+               const char *format, void *pdata, size_t pdata_size)
 {
        char buf[30];
        const char *name = mc13xxx_get_chipname(mc13xxx);
 
        struct mfd_cell cell = {
-               .mfd_data = pdata,
+               .platform_data = pdata,
+               .pdata_size = pdata_size,
        };
 
        /* there is no asnprintf in the kernel :-( */
@@ -705,7 +706,7 @@ static int mc13xxx_add_subdevice_pdata(struct mc13xxx *mc13xxx,
 
 static int mc13xxx_add_subdevice(struct mc13xxx *mc13xxx, const char *format)
 {
-       return mc13xxx_add_subdevice_pdata(mc13xxx, format, NULL);
+       return mc13xxx_add_subdevice_pdata(mc13xxx, format, NULL, 0);
 }
 
 static int mc13xxx_probe(struct spi_device *spi)
@@ -764,7 +765,7 @@ err_revision:
 
        if (pdata->flags & MC13XXX_USE_REGULATOR) {
                mc13xxx_add_subdevice_pdata(mc13xxx, "%s-regulator",
-                               &pdata->regulators);
+                               &pdata->regulators, sizeof(pdata->regulators));
        }
 
        if (pdata->flags & MC13XXX_USE_RTC)
@@ -774,7 +775,8 @@ err_revision:
                mc13xxx_add_subdevice(mc13xxx, "%s-ts");
 
        if (pdata->flags & MC13XXX_USE_LED)
-               mc13xxx_add_subdevice_pdata(mc13xxx, "%s-led", pdata->leds);
+               mc13xxx_add_subdevice_pdata(mc13xxx, "%s-led",
+                               pdata->leds, sizeof(*pdata->leds));
 
        return 0;
 }
index b8a00c7fa4418719c26e8760d61fcd6b561e6def..730f43ad415b11fb83803f84577eb1e5d7c4c738 100644 (file)
@@ -15,7 +15,6 @@
 #include <linux/regulator/driver.h>
 #include <linux/platform_device.h>
 #include <linux/kernel.h>
-#include <linux/mfd/core.h>
 #include <linux/slab.h>
 #include <linux/init.h>
 #include <linux/err.h>
@@ -337,7 +336,8 @@ static int __devinit mc13783_regulator_probe(struct platform_device *pdev)
 {
        struct mc13xxx_regulator_priv *priv;
        struct mc13xxx *mc13783 = dev_get_drvdata(pdev->dev.parent);
-       struct mc13783_regulator_platform_data *pdata = mfd_get_data(pdev);
+       struct mc13783_regulator_platform_data *pdata =
+               dev_get_platdata(&pdev->dev);
        struct mc13783_regulator_init_data *init_data;
        int i, ret;
 
@@ -381,7 +381,8 @@ err:
 static int __devexit mc13783_regulator_remove(struct platform_device *pdev)
 {
        struct mc13xxx_regulator_priv *priv = platform_get_drvdata(pdev);
-       struct mc13783_regulator_platform_data *pdata = mfd_get_data(pdev);
+       struct mc13783_regulator_platform_data *pdata =
+               dev_get_platdata(&pdev->dev);
        int i;
 
        platform_set_drvdata(pdev, NULL);
index 6f15168e5ed494e04cbc4d38a9589bdc0847c97c..1b8f7398a4a8f9709a17d17463be54afcbda9ae4 100644 (file)
@@ -15,7 +15,6 @@
 #include <linux/regulator/driver.h>
 #include <linux/platform_device.h>
 #include <linux/kernel.h>
-#include <linux/mfd/core.h>
 #include <linux/slab.h>
 #include <linux/init.h>
 #include <linux/err.h>
@@ -521,7 +520,8 @@ static int __devinit mc13892_regulator_probe(struct platform_device *pdev)
 {
        struct mc13xxx_regulator_priv *priv;
        struct mc13xxx *mc13892 = dev_get_drvdata(pdev->dev.parent);
-       struct mc13xxx_regulator_platform_data *pdata = mfd_get_data(pdev);
+       struct mc13xxx_regulator_platform_data *pdata =
+               dev_get_platdata(&pdev->dev);
        struct mc13xxx_regulator_init_data *init_data;
        int i, ret;
        u32 val;
@@ -595,7 +595,8 @@ err_free:
 static int __devexit mc13892_regulator_remove(struct platform_device *pdev)
 {
        struct mc13xxx_regulator_priv *priv = platform_get_drvdata(pdev);
-       struct mc13xxx_regulator_platform_data *pdata = mfd_get_data(pdev);
+       struct mc13xxx_regulator_platform_data *pdata =
+               dev_get_platdata(&pdev->dev);
        int i;
 
        platform_set_drvdata(pdev, NULL);