[PATCH 2/9] mfd: max8925: remove array in regulator platform data

2012-09-16 Thread Haojian Zhuang
Remove array in parent's platform data. Use struct regulator_init_data
as regulator device's platform data directly. So a lot of pdata are
added into parent's platform data. And voltage out register offset
is used as IORESOURCE_REG to distinguish different regualtor devices.

Signed-off-by: Haojian Zhuang 
---
 drivers/mfd/max8925-core.c|  388 +++--
 drivers/regulator/max8925-regulator.c |   35 ++-
 include/linux/mfd/max8925.h   |   26 ++-
 3 files changed, 356 insertions(+), 93 deletions(-)

diff --git a/drivers/mfd/max8925-core.c b/drivers/mfd/max8925-core.c
index b9f1d5c..1e0ab0a 100644
--- a/drivers/mfd/max8925-core.c
+++ b/drivers/mfd/max8925-core.c
@@ -15,6 +15,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 
@@ -109,71 +110,215 @@ static struct mfd_cell onkey_devs[] = {
},
 };
 
-#define MAX8925_REG_RESOURCE(_start, _end) \
-{  \
-   .start  = MAX8925_##_start, \
-   .end= MAX8925_##_end,   \
-   .flags  = IORESOURCE_REG,   \
-}
+static struct resource sd1_resources[] __devinitdata = {
+   {0x06, 0x06, "sdv", IORESOURCE_REG, },
+};
 
-static struct resource regulator_resources[] = {
-   MAX8925_REG_RESOURCE(SDCTL1, SDCTL1),
-   MAX8925_REG_RESOURCE(SDCTL2, SDCTL2),
-   MAX8925_REG_RESOURCE(SDCTL3, SDCTL3),
-   MAX8925_REG_RESOURCE(LDOCTL1, LDOCTL1),
-   MAX8925_REG_RESOURCE(LDOCTL2, LDOCTL2),
-   MAX8925_REG_RESOURCE(LDOCTL3, LDOCTL3),
-   MAX8925_REG_RESOURCE(LDOCTL4, LDOCTL4),
-   MAX8925_REG_RESOURCE(LDOCTL5, LDOCTL5),
-   MAX8925_REG_RESOURCE(LDOCTL6, LDOCTL6),
-   MAX8925_REG_RESOURCE(LDOCTL7, LDOCTL7),
-   MAX8925_REG_RESOURCE(LDOCTL8, LDOCTL8),
-   MAX8925_REG_RESOURCE(LDOCTL9, LDOCTL9),
-   MAX8925_REG_RESOURCE(LDOCTL10, LDOCTL10),
-   MAX8925_REG_RESOURCE(LDOCTL11, LDOCTL11),
-   MAX8925_REG_RESOURCE(LDOCTL12, LDOCTL12),
-   MAX8925_REG_RESOURCE(LDOCTL13, LDOCTL13),
-   MAX8925_REG_RESOURCE(LDOCTL14, LDOCTL14),
-   MAX8925_REG_RESOURCE(LDOCTL15, LDOCTL15),
-   MAX8925_REG_RESOURCE(LDOCTL16, LDOCTL16),
-   MAX8925_REG_RESOURCE(LDOCTL17, LDOCTL17),
-   MAX8925_REG_RESOURCE(LDOCTL18, LDOCTL18),
-   MAX8925_REG_RESOURCE(LDOCTL19, LDOCTL19),
-   MAX8925_REG_RESOURCE(LDOCTL20, LDOCTL20),
-};
-
-#define MAX8925_REG_DEVS(_id)  \
-{  \
-   .name   = "max8925-regulator",  \
-   .num_resources  = 1,\
-   .resources  = _resources[MAX8925_ID_##_id],   \
-   .id = MAX8925_ID_##_id, \
-}
+static struct resource sd2_resources[] __devinitdata = {
+   {0x09, 0x09, "sdv", IORESOURCE_REG, },
+};
+
+static struct resource sd3_resources[] __devinitdata = {
+   {0x0c, 0x0c, "sdv", IORESOURCE_REG, },
+};
+
+static struct resource ldo1_resources[] __devinitdata = {
+   {0x1a, 0x1a, "ldov", IORESOURCE_REG, },
+};
+
+static struct resource ldo2_resources[] __devinitdata = {
+   {0x1e, 0x1e, "ldov", IORESOURCE_REG, },
+};
+
+static struct resource ldo3_resources[] __devinitdata = {
+   {0x22, 0x22, "ldov", IORESOURCE_REG, },
+};
+
+static struct resource ldo4_resources[] __devinitdata = {
+   {0x26, 0x26, "ldov", IORESOURCE_REG, },
+};
 
-static struct mfd_cell regulator_devs[] = {
-   MAX8925_REG_DEVS(SD1),
-   MAX8925_REG_DEVS(SD2),
-   MAX8925_REG_DEVS(SD3),
-   MAX8925_REG_DEVS(LDO1),
-   MAX8925_REG_DEVS(LDO2),
-   MAX8925_REG_DEVS(LDO3),
-   MAX8925_REG_DEVS(LDO4),
-   MAX8925_REG_DEVS(LDO5),
-   MAX8925_REG_DEVS(LDO6),
-   MAX8925_REG_DEVS(LDO7),
-   MAX8925_REG_DEVS(LDO8),
-   MAX8925_REG_DEVS(LDO9),
-   MAX8925_REG_DEVS(LDO10),
-   MAX8925_REG_DEVS(LDO11),
-   MAX8925_REG_DEVS(LDO12),
-   MAX8925_REG_DEVS(LDO13),
-   MAX8925_REG_DEVS(LDO14),
-   MAX8925_REG_DEVS(LDO15),
-   MAX8925_REG_DEVS(LDO16),
-   MAX8925_REG_DEVS(LDO17),
-   MAX8925_REG_DEVS(LDO18),
-   MAX8925_REG_DEVS(LDO19),
-   MAX8925_REG_DEVS(LDO20),
+static struct resource ldo5_resources[] __devinitdata = {
+   {0x2a, 0x2a, "ldov", IORESOURCE_REG, },
+};
+
+static struct resource ldo6_resources[] __devinitdata = {
+   {0x2e, 0x2e, "ldov", IORESOURCE_REG, },
+};
+
+static struct resource ldo7_resources[] __devinitdata = {
+   {0x32, 0x32, "ldov", IORESOURCE_REG, },
+};
+
+static struct resource ldo8_resources[] __devinitdata = {
+   {0x36, 0x36, "ldov", IORESOURCE_REG, },
+};
+
+static struct resource ldo9_resources[] __devinitdata = {
+   {0x3a, 0x3a, "ldov", IORESOURCE_REG, },
+};
+
+static struct resource ldo10_resources[] __devinitdata = {
+   {0x3e, 0x3e, "ldov", IORESOURCE_REG, },
+};
+

[PATCH 2/9] mfd: max8925: remove array in regulator platform data

2012-09-16 Thread Haojian Zhuang
Remove array in parent's platform data. Use struct regulator_init_data
as regulator device's platform data directly. So a lot of pdata are
added into parent's platform data. And voltage out register offset
is used as IORESOURCE_REG to distinguish different regualtor devices.

Signed-off-by: Haojian Zhuang haojian.zhu...@gmail.com
---
 drivers/mfd/max8925-core.c|  388 +++--
 drivers/regulator/max8925-regulator.c |   35 ++-
 include/linux/mfd/max8925.h   |   26 ++-
 3 files changed, 356 insertions(+), 93 deletions(-)

diff --git a/drivers/mfd/max8925-core.c b/drivers/mfd/max8925-core.c
index b9f1d5c..1e0ab0a 100644
--- a/drivers/mfd/max8925-core.c
+++ b/drivers/mfd/max8925-core.c
@@ -15,6 +15,7 @@
 #include linux/irq.h
 #include linux/interrupt.h
 #include linux/platform_device.h
+#include linux/regulator/machine.h
 #include linux/mfd/core.h
 #include linux/mfd/max8925.h
 
@@ -109,71 +110,215 @@ static struct mfd_cell onkey_devs[] = {
},
 };
 
-#define MAX8925_REG_RESOURCE(_start, _end) \
-{  \
-   .start  = MAX8925_##_start, \
-   .end= MAX8925_##_end,   \
-   .flags  = IORESOURCE_REG,   \
-}
+static struct resource sd1_resources[] __devinitdata = {
+   {0x06, 0x06, sdv, IORESOURCE_REG, },
+};
 
-static struct resource regulator_resources[] = {
-   MAX8925_REG_RESOURCE(SDCTL1, SDCTL1),
-   MAX8925_REG_RESOURCE(SDCTL2, SDCTL2),
-   MAX8925_REG_RESOURCE(SDCTL3, SDCTL3),
-   MAX8925_REG_RESOURCE(LDOCTL1, LDOCTL1),
-   MAX8925_REG_RESOURCE(LDOCTL2, LDOCTL2),
-   MAX8925_REG_RESOURCE(LDOCTL3, LDOCTL3),
-   MAX8925_REG_RESOURCE(LDOCTL4, LDOCTL4),
-   MAX8925_REG_RESOURCE(LDOCTL5, LDOCTL5),
-   MAX8925_REG_RESOURCE(LDOCTL6, LDOCTL6),
-   MAX8925_REG_RESOURCE(LDOCTL7, LDOCTL7),
-   MAX8925_REG_RESOURCE(LDOCTL8, LDOCTL8),
-   MAX8925_REG_RESOURCE(LDOCTL9, LDOCTL9),
-   MAX8925_REG_RESOURCE(LDOCTL10, LDOCTL10),
-   MAX8925_REG_RESOURCE(LDOCTL11, LDOCTL11),
-   MAX8925_REG_RESOURCE(LDOCTL12, LDOCTL12),
-   MAX8925_REG_RESOURCE(LDOCTL13, LDOCTL13),
-   MAX8925_REG_RESOURCE(LDOCTL14, LDOCTL14),
-   MAX8925_REG_RESOURCE(LDOCTL15, LDOCTL15),
-   MAX8925_REG_RESOURCE(LDOCTL16, LDOCTL16),
-   MAX8925_REG_RESOURCE(LDOCTL17, LDOCTL17),
-   MAX8925_REG_RESOURCE(LDOCTL18, LDOCTL18),
-   MAX8925_REG_RESOURCE(LDOCTL19, LDOCTL19),
-   MAX8925_REG_RESOURCE(LDOCTL20, LDOCTL20),
-};
-
-#define MAX8925_REG_DEVS(_id)  \
-{  \
-   .name   = max8925-regulator,  \
-   .num_resources  = 1,\
-   .resources  = regulator_resources[MAX8925_ID_##_id],   \
-   .id = MAX8925_ID_##_id, \
-}
+static struct resource sd2_resources[] __devinitdata = {
+   {0x09, 0x09, sdv, IORESOURCE_REG, },
+};
+
+static struct resource sd3_resources[] __devinitdata = {
+   {0x0c, 0x0c, sdv, IORESOURCE_REG, },
+};
+
+static struct resource ldo1_resources[] __devinitdata = {
+   {0x1a, 0x1a, ldov, IORESOURCE_REG, },
+};
+
+static struct resource ldo2_resources[] __devinitdata = {
+   {0x1e, 0x1e, ldov, IORESOURCE_REG, },
+};
+
+static struct resource ldo3_resources[] __devinitdata = {
+   {0x22, 0x22, ldov, IORESOURCE_REG, },
+};
+
+static struct resource ldo4_resources[] __devinitdata = {
+   {0x26, 0x26, ldov, IORESOURCE_REG, },
+};
 
-static struct mfd_cell regulator_devs[] = {
-   MAX8925_REG_DEVS(SD1),
-   MAX8925_REG_DEVS(SD2),
-   MAX8925_REG_DEVS(SD3),
-   MAX8925_REG_DEVS(LDO1),
-   MAX8925_REG_DEVS(LDO2),
-   MAX8925_REG_DEVS(LDO3),
-   MAX8925_REG_DEVS(LDO4),
-   MAX8925_REG_DEVS(LDO5),
-   MAX8925_REG_DEVS(LDO6),
-   MAX8925_REG_DEVS(LDO7),
-   MAX8925_REG_DEVS(LDO8),
-   MAX8925_REG_DEVS(LDO9),
-   MAX8925_REG_DEVS(LDO10),
-   MAX8925_REG_DEVS(LDO11),
-   MAX8925_REG_DEVS(LDO12),
-   MAX8925_REG_DEVS(LDO13),
-   MAX8925_REG_DEVS(LDO14),
-   MAX8925_REG_DEVS(LDO15),
-   MAX8925_REG_DEVS(LDO16),
-   MAX8925_REG_DEVS(LDO17),
-   MAX8925_REG_DEVS(LDO18),
-   MAX8925_REG_DEVS(LDO19),
-   MAX8925_REG_DEVS(LDO20),
+static struct resource ldo5_resources[] __devinitdata = {
+   {0x2a, 0x2a, ldov, IORESOURCE_REG, },
+};
+
+static struct resource ldo6_resources[] __devinitdata = {
+   {0x2e, 0x2e, ldov, IORESOURCE_REG, },
+};
+
+static struct resource ldo7_resources[] __devinitdata = {
+   {0x32, 0x32, ldov, IORESOURCE_REG, },
+};
+
+static struct resource ldo8_resources[] __devinitdata = {
+   {0x36, 0x36, ldov, IORESOURCE_REG, },
+};
+
+static struct resource ldo9_resources[] __devinitdata = {
+   {0x3a, 0x3a, ldov, IORESOURCE_REG, },
+};