All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 16/17] mc13xxx: mfd_cell is now implicitly available to drivers
@ 2011-02-12  2:19 ` Andres Salomon
  0 siblings, 0 replies; 18+ messages in thread
From: Andres Salomon @ 2011-02-12  2:19 UTC (permalink / raw)
  To: Samuel Ortiz
  Cc: linux-kernel, Mark Brown, Russell King, Sascha Hauer,
	Richard Purdie, Liam Girdwood, Uwe Kleine-König,
	linux-arm-kernel


The cell's platform_data is now accessed with a helper function;
change clients to use that, and remove the now-unused data_size.

Note that mfd-core no longer makes a copy of platform_data, but the
mc13xxx-core driver creates the pdata structures on the stack.  In
order to get around that, the various ARM mach types that set the
pdata have been changed to hold the variable in static (global) memory.
Also note that __initdata references in aforementioned pdata structs
have been dropped.

Signed-off-by: Andres Salomon <dilinger@queued.net>
---
 arch/arm/mach-imx/mach-mx27_3ds.c     |    6 +++++-
 arch/arm/mach-imx/mach-pcm038.c       |    6 +++++-
 arch/arm/mach-mx3/mach-mx31_3ds.c     |    6 +++++-
 arch/arm/mach-mx3/mach-mx31moboard.c  |    6 +++++-
 drivers/leds/leds-mc13783.c           |    6 +++---
 drivers/mfd/mc13xxx-core.c            |   18 +++++-------------
 drivers/regulator/mc13783-regulator.c |    6 ++----
 drivers/regulator/mc13892-regulator.c |    6 ++----
 include/linux/mfd/mc13xxx.h           |    3 +--
 9 files changed, 33 insertions(+), 30 deletions(-)

diff --git a/arch/arm/mach-imx/mach-mx27_3ds.c b/arch/arm/mach-imx/mach-mx27_3ds.c
index 1643315..f223371 100644
--- a/arch/arm/mach-imx/mach-mx27_3ds.c
+++ b/arch/arm/mach-imx/mach-mx27_3ds.c
@@ -227,9 +227,13 @@ static struct mc13783_regulator_init_data mx27_3ds_regulators[] = {
 };
 
 /* MC13783 */
-static struct mc13783_platform_data mc13783_pdata __initdata = {
+static struct mc13783_regulator_platform_data mx27_3ds_regs = {
 	.regulators = mx27_3ds_regulators,
 	.num_regulators = ARRAY_SIZE(mx27_3ds_regulators),
+};
+
+static struct mc13783_platform_data mc13783_pdata = {
+	.regulators = &mx27_3ds_regs,
 	.flags  = MC13783_USE_REGULATOR,
 };
 
diff --git a/arch/arm/mach-imx/mach-pcm038.c b/arch/arm/mach-imx/mach-pcm038.c
index 5056148..4b37494 100644
--- a/arch/arm/mach-imx/mach-pcm038.c
+++ b/arch/arm/mach-imx/mach-pcm038.c
@@ -262,9 +262,13 @@ static struct mc13783_regulator_init_data pcm038_regulators[] = {
 	},
 };
 
-static struct mc13783_platform_data pcm038_pmic = {
+static struct mc13783_regulator_platform_data pcm038_pmic_regs = {
 	.regulators = pcm038_regulators,
 	.num_regulators = ARRAY_SIZE(pcm038_regulators),
+};
+
+static struct mc13783_platform_data pcm038_pmic = {
+	.regulators = &pcm038_pmic_regs,
 	.flags = MC13783_USE_ADC | MC13783_USE_REGULATOR |
 		 MC13783_USE_TOUCHSCREEN,
 };
diff --git a/arch/arm/mach-mx3/mach-mx31_3ds.c b/arch/arm/mach-mx3/mach-mx31_3ds.c
index 0d65db8..8005788 100644
--- a/arch/arm/mach-mx3/mach-mx31_3ds.c
+++ b/arch/arm/mach-mx3/mach-mx31_3ds.c
@@ -156,9 +156,13 @@ static struct mc13783_regulator_init_data mx31_3ds_regulators[] = {
 };
 
 /* MC13783 */
-static struct mc13783_platform_data mc13783_pdata __initdata = {
+static struct mc13783_regulator_platform_data mx31_3ds_regs = {
 	.regulators = mx31_3ds_regulators,
 	.num_regulators = ARRAY_SIZE(mx31_3ds_regulators),
+};
+
+static struct mc13783_platform_data mc13783_pdata = {
+	.regulators = &mx31_3ds_regs,
 	.flags  = MC13783_USE_REGULATOR | MC13783_USE_TOUCHSCREEN,
 };
 
diff --git a/arch/arm/mach-mx3/mach-mx31moboard.c b/arch/arm/mach-mx3/mach-mx31moboard.c
index 1aa8d65..e824d2e 100644
--- a/arch/arm/mach-mx3/mach-mx31moboard.c
+++ b/arch/arm/mach-mx3/mach-mx31moboard.c
@@ -267,9 +267,13 @@ static struct mc13783_leds_platform_data moboard_leds = {
 	.tc2_period = MC13783_LED_PERIOD_10MS,
 };
 
-static struct mc13783_platform_data moboard_pmic = {
+static struct mc13783_regulator_platform_data moboard_pmic_regs = {
 	.regulators = moboard_regulators,
 	.num_regulators = ARRAY_SIZE(moboard_regulators),
+};
+
+static struct mc13783_platform_data moboard_pmic = {
+	.regulators = &moboard_pmic_regs,
 	.leds = &moboard_leds,
 	.flags = MC13783_USE_REGULATOR | MC13783_USE_RTC |
 		MC13783_USE_ADC | MC13783_USE_LED,
diff --git a/drivers/leds/leds-mc13783.c b/drivers/leds/leds-mc13783.c
index f05bb08..0d87477 100644
--- a/drivers/leds/leds-mc13783.c
+++ b/drivers/leds/leds-mc13783.c
@@ -183,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 = dev_get_platdata(&pdev->dev);
+	struct mc13783_leds_platform_data *pdata = mfd_get_data(pdev);
 	struct mc13783 *dev = dev_get_drvdata(pdev->dev.parent);
 	int ret = 0;
 	int reg = 0;
@@ -264,7 +264,7 @@ out:
 
 static int __devinit mc13783_led_probe(struct platform_device *pdev)
 {
-	struct mc13783_leds_platform_data *pdata = dev_get_platdata(&pdev->dev);
+	struct mc13783_leds_platform_data *pdata = mfd_get_data(pdev);
 	struct mc13783_led_platform_data *led_cur;
 	struct mc13783_led *led, *led_dat;
 	int ret, i;
@@ -351,7 +351,7 @@ err_free:
 
 static int __devexit mc13783_led_remove(struct platform_device *pdev)
 {
-	struct mc13783_leds_platform_data *pdata = dev_get_platdata(&pdev->dev);
+	struct mc13783_leds_platform_data *pdata = mfd_get_data(pdev);
 	struct mc13783_led *led = platform_get_drvdata(pdev);
 	struct mc13783 *dev = dev_get_drvdata(pdev->dev.parent);
 	int i;
diff --git a/drivers/mfd/mc13xxx-core.c b/drivers/mfd/mc13xxx-core.c
index b9fcaf0..00c5490 100644
--- a/drivers/mfd/mc13xxx-core.c
+++ b/drivers/mfd/mc13xxx-core.c
@@ -683,14 +683,13 @@ out:
 EXPORT_SYMBOL_GPL(mc13783_adc_do_conversion);
 
 static int mc13xxx_add_subdevice_pdata(struct mc13xxx *mc13xxx,
-		const char *format, void *pdata, size_t pdata_size)
+		const char *format, void *pdata)
 {
 	char buf[30];
 	const char *name = mc13xxx_get_chipname(mc13xxx);
 
 	struct mfd_cell cell = {
 		.platform_data = pdata,
-		.data_size = pdata_size,
 	};
 
 	/* there is no asnprintf in the kernel :-( */
@@ -706,7 +705,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, 0);
+	return mc13xxx_add_subdevice_pdata(mc13xxx, format, NULL);
 }
 
 static int mc13xxx_probe(struct spi_device *spi)
@@ -764,13 +763,8 @@ err_revision:
 		mc13xxx_add_subdevice(mc13xxx, "%s-codec");
 
 	if (pdata->flags & MC13XXX_USE_REGULATOR) {
-		struct mc13xxx_regulator_platform_data regulator_pdata = {
-			.num_regulators = pdata->num_regulators,
-			.regulators = pdata->regulators,
-		};
-
 		mc13xxx_add_subdevice_pdata(mc13xxx, "%s-regulator",
-				&regulator_pdata, sizeof(regulator_pdata));
+				pdata->regulators);
 	}
 
 	if (pdata->flags & MC13XXX_USE_RTC)
@@ -779,10 +773,8 @@ err_revision:
 	if (pdata->flags & MC13XXX_USE_TOUCHSCREEN)
 		mc13xxx_add_subdevice(mc13xxx, "%s-ts");
 
-	if (pdata->flags & MC13XXX_USE_LED) {
-		mc13xxx_add_subdevice_pdata(mc13xxx, "%s-led",
-					pdata->leds, sizeof(*pdata->leds));
-	}
+	if (pdata->flags & MC13XXX_USE_LED)
+		mc13xxx_add_subdevice_pdata(mc13xxx, "%s-led", pdata->leds);
 
 	return 0;
 }
diff --git a/drivers/regulator/mc13783-regulator.c b/drivers/regulator/mc13783-regulator.c
index 3e5d0c3..1b7cc16 100644
--- a/drivers/regulator/mc13783-regulator.c
+++ b/drivers/regulator/mc13783-regulator.c
@@ -336,8 +336,7 @@ 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 =
-		dev_get_platdata(&pdev->dev);
+	struct mc13783_regulator_platform_data *pdata = mfd_get_data(pdev);
 	struct mc13783_regulator_init_data *init_data;
 	int i, ret;
 
@@ -381,8 +380,7 @@ 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 =
-		dev_get_platdata(&pdev->dev);
+	struct mc13783_regulator_platform_data *pdata = mfd_get_data(pdev);
 	int i;
 
 	platform_set_drvdata(pdev, NULL);
diff --git a/drivers/regulator/mc13892-regulator.c b/drivers/regulator/mc13892-regulator.c
index 1b8f739..e23578a 100644
--- a/drivers/regulator/mc13892-regulator.c
+++ b/drivers/regulator/mc13892-regulator.c
@@ -520,8 +520,7 @@ 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 =
-		dev_get_platdata(&pdev->dev);
+	struct mc13xxx_regulator_platform_data *pdata = mfd_get_data(pdev);
 	struct mc13xxx_regulator_init_data *init_data;
 	int i, ret;
 	u32 val;
@@ -595,8 +594,7 @@ 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 =
-		dev_get_platdata(&pdev->dev);
+	struct mc13xxx_regulator_platform_data *pdata = mfd_get_data(pdev);
 	int i;
 
 	platform_set_drvdata(pdev, NULL);
diff --git a/include/linux/mfd/mc13xxx.h b/include/linux/mfd/mc13xxx.h
index a1d391b..052b133 100644
--- a/include/linux/mfd/mc13xxx.h
+++ b/include/linux/mfd/mc13xxx.h
@@ -146,8 +146,7 @@ struct mc13xxx_platform_data {
 #define MC13XXX_USE_LED		(1 << 5)
 	unsigned int flags;
 
-	int num_regulators;
-	struct mc13xxx_regulator_init_data *regulators;
+	struct mc13xxx_regulator_platform_data *regulators;
 	struct mc13xxx_leds_platform_data *leds;
 };
 
-- 
1.7.2.3


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH 16/17] mc13xxx: mfd_cell is now implicitly available to drivers
@ 2011-02-12  2:19 ` Andres Salomon
  0 siblings, 0 replies; 18+ messages in thread
From: Andres Salomon @ 2011-02-12  2:19 UTC (permalink / raw)
  To: linux-arm-kernel


The cell's platform_data is now accessed with a helper function;
change clients to use that, and remove the now-unused data_size.

Note that mfd-core no longer makes a copy of platform_data, but the
mc13xxx-core driver creates the pdata structures on the stack.  In
order to get around that, the various ARM mach types that set the
pdata have been changed to hold the variable in static (global) memory.
Also note that __initdata references in aforementioned pdata structs
have been dropped.

Signed-off-by: Andres Salomon <dilinger@queued.net>
---
 arch/arm/mach-imx/mach-mx27_3ds.c     |    6 +++++-
 arch/arm/mach-imx/mach-pcm038.c       |    6 +++++-
 arch/arm/mach-mx3/mach-mx31_3ds.c     |    6 +++++-
 arch/arm/mach-mx3/mach-mx31moboard.c  |    6 +++++-
 drivers/leds/leds-mc13783.c           |    6 +++---
 drivers/mfd/mc13xxx-core.c            |   18 +++++-------------
 drivers/regulator/mc13783-regulator.c |    6 ++----
 drivers/regulator/mc13892-regulator.c |    6 ++----
 include/linux/mfd/mc13xxx.h           |    3 +--
 9 files changed, 33 insertions(+), 30 deletions(-)

diff --git a/arch/arm/mach-imx/mach-mx27_3ds.c b/arch/arm/mach-imx/mach-mx27_3ds.c
index 1643315..f223371 100644
--- a/arch/arm/mach-imx/mach-mx27_3ds.c
+++ b/arch/arm/mach-imx/mach-mx27_3ds.c
@@ -227,9 +227,13 @@ static struct mc13783_regulator_init_data mx27_3ds_regulators[] = {
 };
 
 /* MC13783 */
-static struct mc13783_platform_data mc13783_pdata __initdata = {
+static struct mc13783_regulator_platform_data mx27_3ds_regs = {
 	.regulators = mx27_3ds_regulators,
 	.num_regulators = ARRAY_SIZE(mx27_3ds_regulators),
+};
+
+static struct mc13783_platform_data mc13783_pdata = {
+	.regulators = &mx27_3ds_regs,
 	.flags  = MC13783_USE_REGULATOR,
 };
 
diff --git a/arch/arm/mach-imx/mach-pcm038.c b/arch/arm/mach-imx/mach-pcm038.c
index 5056148..4b37494 100644
--- a/arch/arm/mach-imx/mach-pcm038.c
+++ b/arch/arm/mach-imx/mach-pcm038.c
@@ -262,9 +262,13 @@ static struct mc13783_regulator_init_data pcm038_regulators[] = {
 	},
 };
 
-static struct mc13783_platform_data pcm038_pmic = {
+static struct mc13783_regulator_platform_data pcm038_pmic_regs = {
 	.regulators = pcm038_regulators,
 	.num_regulators = ARRAY_SIZE(pcm038_regulators),
+};
+
+static struct mc13783_platform_data pcm038_pmic = {
+	.regulators = &pcm038_pmic_regs,
 	.flags = MC13783_USE_ADC | MC13783_USE_REGULATOR |
 		 MC13783_USE_TOUCHSCREEN,
 };
diff --git a/arch/arm/mach-mx3/mach-mx31_3ds.c b/arch/arm/mach-mx3/mach-mx31_3ds.c
index 0d65db8..8005788 100644
--- a/arch/arm/mach-mx3/mach-mx31_3ds.c
+++ b/arch/arm/mach-mx3/mach-mx31_3ds.c
@@ -156,9 +156,13 @@ static struct mc13783_regulator_init_data mx31_3ds_regulators[] = {
 };
 
 /* MC13783 */
-static struct mc13783_platform_data mc13783_pdata __initdata = {
+static struct mc13783_regulator_platform_data mx31_3ds_regs = {
 	.regulators = mx31_3ds_regulators,
 	.num_regulators = ARRAY_SIZE(mx31_3ds_regulators),
+};
+
+static struct mc13783_platform_data mc13783_pdata = {
+	.regulators = &mx31_3ds_regs,
 	.flags  = MC13783_USE_REGULATOR | MC13783_USE_TOUCHSCREEN,
 };
 
diff --git a/arch/arm/mach-mx3/mach-mx31moboard.c b/arch/arm/mach-mx3/mach-mx31moboard.c
index 1aa8d65..e824d2e 100644
--- a/arch/arm/mach-mx3/mach-mx31moboard.c
+++ b/arch/arm/mach-mx3/mach-mx31moboard.c
@@ -267,9 +267,13 @@ static struct mc13783_leds_platform_data moboard_leds = {
 	.tc2_period = MC13783_LED_PERIOD_10MS,
 };
 
-static struct mc13783_platform_data moboard_pmic = {
+static struct mc13783_regulator_platform_data moboard_pmic_regs = {
 	.regulators = moboard_regulators,
 	.num_regulators = ARRAY_SIZE(moboard_regulators),
+};
+
+static struct mc13783_platform_data moboard_pmic = {
+	.regulators = &moboard_pmic_regs,
 	.leds = &moboard_leds,
 	.flags = MC13783_USE_REGULATOR | MC13783_USE_RTC |
 		MC13783_USE_ADC | MC13783_USE_LED,
diff --git a/drivers/leds/leds-mc13783.c b/drivers/leds/leds-mc13783.c
index f05bb08..0d87477 100644
--- a/drivers/leds/leds-mc13783.c
+++ b/drivers/leds/leds-mc13783.c
@@ -183,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 = dev_get_platdata(&pdev->dev);
+	struct mc13783_leds_platform_data *pdata = mfd_get_data(pdev);
 	struct mc13783 *dev = dev_get_drvdata(pdev->dev.parent);
 	int ret = 0;
 	int reg = 0;
@@ -264,7 +264,7 @@ out:
 
 static int __devinit mc13783_led_probe(struct platform_device *pdev)
 {
-	struct mc13783_leds_platform_data *pdata = dev_get_platdata(&pdev->dev);
+	struct mc13783_leds_platform_data *pdata = mfd_get_data(pdev);
 	struct mc13783_led_platform_data *led_cur;
 	struct mc13783_led *led, *led_dat;
 	int ret, i;
@@ -351,7 +351,7 @@ err_free:
 
 static int __devexit mc13783_led_remove(struct platform_device *pdev)
 {
-	struct mc13783_leds_platform_data *pdata = dev_get_platdata(&pdev->dev);
+	struct mc13783_leds_platform_data *pdata = mfd_get_data(pdev);
 	struct mc13783_led *led = platform_get_drvdata(pdev);
 	struct mc13783 *dev = dev_get_drvdata(pdev->dev.parent);
 	int i;
diff --git a/drivers/mfd/mc13xxx-core.c b/drivers/mfd/mc13xxx-core.c
index b9fcaf0..00c5490 100644
--- a/drivers/mfd/mc13xxx-core.c
+++ b/drivers/mfd/mc13xxx-core.c
@@ -683,14 +683,13 @@ out:
 EXPORT_SYMBOL_GPL(mc13783_adc_do_conversion);
 
 static int mc13xxx_add_subdevice_pdata(struct mc13xxx *mc13xxx,
-		const char *format, void *pdata, size_t pdata_size)
+		const char *format, void *pdata)
 {
 	char buf[30];
 	const char *name = mc13xxx_get_chipname(mc13xxx);
 
 	struct mfd_cell cell = {
 		.platform_data = pdata,
-		.data_size = pdata_size,
 	};
 
 	/* there is no asnprintf in the kernel :-( */
@@ -706,7 +705,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, 0);
+	return mc13xxx_add_subdevice_pdata(mc13xxx, format, NULL);
 }
 
 static int mc13xxx_probe(struct spi_device *spi)
@@ -764,13 +763,8 @@ err_revision:
 		mc13xxx_add_subdevice(mc13xxx, "%s-codec");
 
 	if (pdata->flags & MC13XXX_USE_REGULATOR) {
-		struct mc13xxx_regulator_platform_data regulator_pdata = {
-			.num_regulators = pdata->num_regulators,
-			.regulators = pdata->regulators,
-		};
-
 		mc13xxx_add_subdevice_pdata(mc13xxx, "%s-regulator",
-				&regulator_pdata, sizeof(regulator_pdata));
+				pdata->regulators);
 	}
 
 	if (pdata->flags & MC13XXX_USE_RTC)
@@ -779,10 +773,8 @@ err_revision:
 	if (pdata->flags & MC13XXX_USE_TOUCHSCREEN)
 		mc13xxx_add_subdevice(mc13xxx, "%s-ts");
 
-	if (pdata->flags & MC13XXX_USE_LED) {
-		mc13xxx_add_subdevice_pdata(mc13xxx, "%s-led",
-					pdata->leds, sizeof(*pdata->leds));
-	}
+	if (pdata->flags & MC13XXX_USE_LED)
+		mc13xxx_add_subdevice_pdata(mc13xxx, "%s-led", pdata->leds);
 
 	return 0;
 }
diff --git a/drivers/regulator/mc13783-regulator.c b/drivers/regulator/mc13783-regulator.c
index 3e5d0c3..1b7cc16 100644
--- a/drivers/regulator/mc13783-regulator.c
+++ b/drivers/regulator/mc13783-regulator.c
@@ -336,8 +336,7 @@ 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 =
-		dev_get_platdata(&pdev->dev);
+	struct mc13783_regulator_platform_data *pdata = mfd_get_data(pdev);
 	struct mc13783_regulator_init_data *init_data;
 	int i, ret;
 
@@ -381,8 +380,7 @@ 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 =
-		dev_get_platdata(&pdev->dev);
+	struct mc13783_regulator_platform_data *pdata = mfd_get_data(pdev);
 	int i;
 
 	platform_set_drvdata(pdev, NULL);
diff --git a/drivers/regulator/mc13892-regulator.c b/drivers/regulator/mc13892-regulator.c
index 1b8f739..e23578a 100644
--- a/drivers/regulator/mc13892-regulator.c
+++ b/drivers/regulator/mc13892-regulator.c
@@ -520,8 +520,7 @@ 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 =
-		dev_get_platdata(&pdev->dev);
+	struct mc13xxx_regulator_platform_data *pdata = mfd_get_data(pdev);
 	struct mc13xxx_regulator_init_data *init_data;
 	int i, ret;
 	u32 val;
@@ -595,8 +594,7 @@ 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 =
-		dev_get_platdata(&pdev->dev);
+	struct mc13xxx_regulator_platform_data *pdata = mfd_get_data(pdev);
 	int i;
 
 	platform_set_drvdata(pdev, NULL);
diff --git a/include/linux/mfd/mc13xxx.h b/include/linux/mfd/mc13xxx.h
index a1d391b..052b133 100644
--- a/include/linux/mfd/mc13xxx.h
+++ b/include/linux/mfd/mc13xxx.h
@@ -146,8 +146,7 @@ struct mc13xxx_platform_data {
 #define MC13XXX_USE_LED		(1 << 5)
 	unsigned int flags;
 
-	int num_regulators;
-	struct mc13xxx_regulator_init_data *regulators;
+	struct mc13xxx_regulator_platform_data *regulators;
 	struct mc13xxx_leds_platform_data *leds;
 };
 
-- 
1.7.2.3

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* Re: [PATCH 16/17] mc13xxx: mfd_cell is now implicitly available to drivers
  2011-02-12  2:19 ` Andres Salomon
@ 2011-02-16  9:41   ` Uwe Kleine-König
  -1 siblings, 0 replies; 18+ messages in thread
From: Uwe Kleine-König @ 2011-02-16  9:41 UTC (permalink / raw)
  To: Andres Salomon
  Cc: Samuel Ortiz, linux-kernel, Mark Brown, Russell King,
	Sascha Hauer, Richard Purdie, Liam Girdwood, linux-arm-kernel,
	Fabio Estevam

On Fri, Feb 11, 2011 at 06:19:21PM -0800, Andres Salomon wrote:
> 
> The cell's platform_data is now accessed with a helper function;
> change clients to use that, and remove the now-unused data_size.
> 
> Note that mfd-core no longer makes a copy of platform_data, but the
why was this changed and where?  I'm not able to find your complete
series via gmane.

> mc13xxx-core driver creates the pdata structures on the stack.  In
> order to get around that, the various ARM mach types that set the
> pdata have been changed to hold the variable in static (global) memory.
> Also note that __initdata references in aforementioned pdata structs
> have been dropped.
> 
> Signed-off-by: Andres Salomon <dilinger@queued.net>
> ---
>  arch/arm/mach-imx/mach-mx27_3ds.c     |    6 +++++-
>  arch/arm/mach-imx/mach-pcm038.c       |    6 +++++-
>  arch/arm/mach-mx3/mach-mx31_3ds.c     |    6 +++++-
>  arch/arm/mach-mx3/mach-mx31moboard.c  |    6 +++++-
>  drivers/leds/leds-mc13783.c           |    6 +++---
>  drivers/mfd/mc13xxx-core.c            |   18 +++++-------------
>  drivers/regulator/mc13783-regulator.c |    6 ++----
>  drivers/regulator/mc13892-regulator.c |    6 ++----
>  include/linux/mfd/mc13xxx.h           |    3 +--
>  9 files changed, 33 insertions(+), 30 deletions(-)
> 
> diff --git a/arch/arm/mach-imx/mach-mx27_3ds.c b/arch/arm/mach-imx/mach-mx27_3ds.c
> index 1643315..f223371 100644
> --- a/arch/arm/mach-imx/mach-mx27_3ds.c
> +++ b/arch/arm/mach-imx/mach-mx27_3ds.c
> @@ -227,9 +227,13 @@ static struct mc13783_regulator_init_data mx27_3ds_regulators[] = {
>  };
>  
>  /* MC13783 */
> -static struct mc13783_platform_data mc13783_pdata __initdata = {
isn't using __initdata here broken already before your patch?  Was
introduced in c67a3e09.  Fabio?

But in general I'd prefer to keep as much __initdata as possible because
this occupies less memory when using a multi-machine kernel.

> diff --git a/include/linux/mfd/mc13xxx.h b/include/linux/mfd/mc13xxx.h
> index a1d391b..052b133 100644
> --- a/include/linux/mfd/mc13xxx.h
> +++ b/include/linux/mfd/mc13xxx.h
> @@ -146,8 +146,7 @@ struct mc13xxx_platform_data {
>  #define MC13XXX_USE_LED		(1 << 5)
>  	unsigned int flags;
>  
> -	int num_regulators;
> -	struct mc13xxx_regulator_init_data *regulators;
> +	struct mc13xxx_regulator_platform_data *regulators;
>  	struct mc13xxx_leds_platform_data *leds;
>  };
... so I'd prefer to embed a struct mc13xxx_regulator_platform_data into
mc13xxx_platform_data, not a pointer to it.  This makes initialisation a
bit easier, too.

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [PATCH 16/17] mc13xxx: mfd_cell is now implicitly available to drivers
@ 2011-02-16  9:41   ` Uwe Kleine-König
  0 siblings, 0 replies; 18+ messages in thread
From: Uwe Kleine-König @ 2011-02-16  9:41 UTC (permalink / raw)
  To: linux-arm-kernel

On Fri, Feb 11, 2011 at 06:19:21PM -0800, Andres Salomon wrote:
> 
> The cell's platform_data is now accessed with a helper function;
> change clients to use that, and remove the now-unused data_size.
> 
> Note that mfd-core no longer makes a copy of platform_data, but the
why was this changed and where?  I'm not able to find your complete
series via gmane.

> mc13xxx-core driver creates the pdata structures on the stack.  In
> order to get around that, the various ARM mach types that set the
> pdata have been changed to hold the variable in static (global) memory.
> Also note that __initdata references in aforementioned pdata structs
> have been dropped.
> 
> Signed-off-by: Andres Salomon <dilinger@queued.net>
> ---
>  arch/arm/mach-imx/mach-mx27_3ds.c     |    6 +++++-
>  arch/arm/mach-imx/mach-pcm038.c       |    6 +++++-
>  arch/arm/mach-mx3/mach-mx31_3ds.c     |    6 +++++-
>  arch/arm/mach-mx3/mach-mx31moboard.c  |    6 +++++-
>  drivers/leds/leds-mc13783.c           |    6 +++---
>  drivers/mfd/mc13xxx-core.c            |   18 +++++-------------
>  drivers/regulator/mc13783-regulator.c |    6 ++----
>  drivers/regulator/mc13892-regulator.c |    6 ++----
>  include/linux/mfd/mc13xxx.h           |    3 +--
>  9 files changed, 33 insertions(+), 30 deletions(-)
> 
> diff --git a/arch/arm/mach-imx/mach-mx27_3ds.c b/arch/arm/mach-imx/mach-mx27_3ds.c
> index 1643315..f223371 100644
> --- a/arch/arm/mach-imx/mach-mx27_3ds.c
> +++ b/arch/arm/mach-imx/mach-mx27_3ds.c
> @@ -227,9 +227,13 @@ static struct mc13783_regulator_init_data mx27_3ds_regulators[] = {
>  };
>  
>  /* MC13783 */
> -static struct mc13783_platform_data mc13783_pdata __initdata = {
isn't using __initdata here broken already before your patch?  Was
introduced in c67a3e09.  Fabio?

But in general I'd prefer to keep as much __initdata as possible because
this occupies less memory when using a multi-machine kernel.

> diff --git a/include/linux/mfd/mc13xxx.h b/include/linux/mfd/mc13xxx.h
> index a1d391b..052b133 100644
> --- a/include/linux/mfd/mc13xxx.h
> +++ b/include/linux/mfd/mc13xxx.h
> @@ -146,8 +146,7 @@ struct mc13xxx_platform_data {
>  #define MC13XXX_USE_LED		(1 << 5)
>  	unsigned int flags;
>  
> -	int num_regulators;
> -	struct mc13xxx_regulator_init_data *regulators;
> +	struct mc13xxx_regulator_platform_data *regulators;
>  	struct mc13xxx_leds_platform_data *leds;
>  };
... so I'd prefer to embed a struct mc13xxx_regulator_platform_data into
mc13xxx_platform_data, not a pointer to it.  This makes initialisation a
bit easier, too.

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-K?nig            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 16/17] mc13xxx: mfd_cell is now implicitly available to drivers
  2011-02-16  9:41   ` Uwe Kleine-König
@ 2011-02-16 12:26     ` Fabio Estevam
  -1 siblings, 0 replies; 18+ messages in thread
From: Fabio Estevam @ 2011-02-16 12:26 UTC (permalink / raw)
  To: Uwe Kleine-König
  Cc: Andres Salomon, Samuel Ortiz, linux-kernel, Mark Brown,
	Russell King, Sascha Hauer, Richard Purdie, Liam Girdwood,
	linux-arm-kernel

Hi Uwe,

On 2/16/2011 7:41 AM, Uwe Kleine-König wrote:
...
>>  
>>  /* MC13783 */
>> -static struct mc13783_platform_data mc13783_pdata __initdata = {
> isn't using __initdata here broken already before your patch?  Was
> introduced in c67a3e09.  Fabio?

I followed the same approach as in the mx31_3ds.c file.

> But in general I'd prefer to keep as much __initdata as possible because
> this occupies less memory when using a multi-machine kernel.

So keeping __initdata is OK then? Let me know and I can fix it needed.

Regards,

Fabio Estevam



^ permalink raw reply	[flat|nested] 18+ messages in thread

* [PATCH 16/17] mc13xxx: mfd_cell is now implicitly available to drivers
@ 2011-02-16 12:26     ` Fabio Estevam
  0 siblings, 0 replies; 18+ messages in thread
From: Fabio Estevam @ 2011-02-16 12:26 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Uwe,

On 2/16/2011 7:41 AM, Uwe Kleine-K?nig wrote:
...
>>  
>>  /* MC13783 */
>> -static struct mc13783_platform_data mc13783_pdata __initdata = {
> isn't using __initdata here broken already before your patch?  Was
> introduced in c67a3e09.  Fabio?

I followed the same approach as in the mx31_3ds.c file.

> But in general I'd prefer to keep as much __initdata as possible because
> this occupies less memory when using a multi-machine kernel.

So keeping __initdata is OK then? Let me know and I can fix it needed.

Regards,

Fabio Estevam

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 16/17] mc13xxx: mfd_cell is now implicitly available to drivers
  2011-02-16  9:41   ` Uwe Kleine-König
@ 2011-02-16 12:31     ` Fabio Estevam
  -1 siblings, 0 replies; 18+ messages in thread
From: Fabio Estevam @ 2011-02-16 12:31 UTC (permalink / raw)
  To: Uwe Kleine-König
  Cc: Andres Salomon, Samuel Ortiz, linux-kernel, Mark Brown,
	Russell King, Sascha Hauer, Richard Purdie, Liam Girdwood,
	linux-arm-kernel

Hi Uwe,

On 2/16/2011 7:41 AM, Uwe Kleine-König wrote:
... 
>>  /* MC13783 */
>> -static struct mc13783_platform_data mc13783_pdata __initdata = {
> isn't using __initdata here broken already before your patch?  Was
> introduced in c67a3e09.  Fabio?

I followed the same approach as in mx31_3ds.c file.
 
> But in general I'd prefer to keep as much __initdata as possible because
> this occupies less memory when using a multi-machine kernel.

Ok, is the __initdata usage correct then? If not, I can change it. Just let me know.

Regards,

Fabio Estevam



^ permalink raw reply	[flat|nested] 18+ messages in thread

* [PATCH 16/17] mc13xxx: mfd_cell is now implicitly available to drivers
@ 2011-02-16 12:31     ` Fabio Estevam
  0 siblings, 0 replies; 18+ messages in thread
From: Fabio Estevam @ 2011-02-16 12:31 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Uwe,

On 2/16/2011 7:41 AM, Uwe Kleine-K?nig wrote:
... 
>>  /* MC13783 */
>> -static struct mc13783_platform_data mc13783_pdata __initdata = {
> isn't using __initdata here broken already before your patch?  Was
> introduced in c67a3e09.  Fabio?

I followed the same approach as in mx31_3ds.c file.
 
> But in general I'd prefer to keep as much __initdata as possible because
> this occupies less memory when using a multi-machine kernel.

Ok, is the __initdata usage correct then? If not, I can change it. Just let me know.

Regards,

Fabio Estevam

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [PATCH 16/17] mc13xxx: mfd_cell is now implicitly available to drivers
  2011-02-16 12:31     ` Fabio Estevam
  (?)
@ 2011-02-16 12:58     ` Uwe Kleine-König
  2011-02-17 11:53       ` Fabio Estevam
  -1 siblings, 1 reply; 18+ messages in thread
From: Uwe Kleine-König @ 2011-02-16 12:58 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, Feb 16, 2011 at 10:31:10AM -0200, Fabio Estevam wrote:
> Hi Uwe,
> 
> On 2/16/2011 7:41 AM, Uwe Kleine-K?nig wrote:
> ... 
> >>  /* MC13783 */
> >> -static struct mc13783_platform_data mc13783_pdata __initdata = {
> > isn't using __initdata here broken already before your patch?  Was
> > introduced in c67a3e09.  Fabio?
> 
> I followed the same approach as in mx31_3ds.c file.
>  
> > But in general I'd prefer to keep as much __initdata as possible because
> > this occupies less memory when using a multi-machine kernel.
> 
> Ok, is the __initdata usage correct then? If not, I can change it. Just let me know.
I guess that if you compile mc13xxx support as module it won't work.

Try that, and if it breaks, send a patch fixing mx31_3ds.c, too.

Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-K?nig            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 16/17] mc13xxx: mfd_cell is now implicitly available to drivers
  2011-02-16  9:41   ` Uwe Kleine-König
@ 2011-02-16 17:00     ` Andres Salomon
  -1 siblings, 0 replies; 18+ messages in thread
From: Andres Salomon @ 2011-02-16 17:00 UTC (permalink / raw)
  To: Uwe Kleine-König
  Cc: Samuel Ortiz, linux-kernel, Mark Brown, Russell King,
	Sascha Hauer, Richard Purdie, Liam Girdwood, linux-arm-kernel,
	Fabio Estevam

On Wed, 16 Feb 2011 10:41:54 +0100
Uwe Kleine-König <u.kleine-koenig@pengutronix.de> wrote:

> On Fri, Feb 11, 2011 at 06:19:21PM -0800, Andres Salomon wrote:
> > 
> > The cell's platform_data is now accessed with a helper function;
> > change clients to use that, and remove the now-unused data_size.
> > 
> > Note that mfd-core no longer makes a copy of platform_data, but the
> why was this changed and where?  I'm not able to find your complete
> series via gmane.

http://permalink.gmane.org/gmane.linux.kernel/1099164
I screwed up the threading, so the patches aren't underneath that
one.  Patchwork provides them nicely, though.

Here are the relevant patches:
https://patchwork.kernel.org/patch/551241/
https://patchwork.kernel.org/patch/551251/
https://patchwork.kernel.org/patch/551261/
..through
https://patchwork.kernel.org/patch/551451/

The next series is here:
http://thread.gmane.org/gmane.linux.kernel/1100514/focus=6046


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [PATCH 16/17] mc13xxx: mfd_cell is now implicitly available to drivers
@ 2011-02-16 17:00     ` Andres Salomon
  0 siblings, 0 replies; 18+ messages in thread
From: Andres Salomon @ 2011-02-16 17:00 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, 16 Feb 2011 10:41:54 +0100
Uwe Kleine-K?nig <u.kleine-koenig@pengutronix.de> wrote:

> On Fri, Feb 11, 2011 at 06:19:21PM -0800, Andres Salomon wrote:
> > 
> > The cell's platform_data is now accessed with a helper function;
> > change clients to use that, and remove the now-unused data_size.
> > 
> > Note that mfd-core no longer makes a copy of platform_data, but the
> why was this changed and where?  I'm not able to find your complete
> series via gmane.

http://permalink.gmane.org/gmane.linux.kernel/1099164
I screwed up the threading, so the patches aren't underneath that
one.  Patchwork provides them nicely, though.

Here are the relevant patches:
https://patchwork.kernel.org/patch/551241/
https://patchwork.kernel.org/patch/551251/
https://patchwork.kernel.org/patch/551261/
..through
https://patchwork.kernel.org/patch/551451/

The next series is here:
http://thread.gmane.org/gmane.linux.kernel/1100514/focus=6046

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [PATCH 16/17] mc13xxx: mfd_cell is now implicitly available to drivers
  2011-02-16 12:58     ` Uwe Kleine-König
@ 2011-02-17 11:53       ` Fabio Estevam
  2011-02-17 13:10         ` Uwe Kleine-König
  0 siblings, 1 reply; 18+ messages in thread
From: Fabio Estevam @ 2011-02-17 11:53 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Uwe,

2011/2/16 Uwe Kleine-K?nig <u.kleine-koenig@pengutronix.de>:
> On Wed, Feb 16, 2011 at 10:31:10AM -0200, Fabio Estevam wrote:
>> Hi Uwe,
>>
>> On 2/16/2011 7:41 AM, Uwe Kleine-K?nig wrote:
>> ...
>> >> ?/* MC13783 */
>> >> -static struct mc13783_platform_data mc13783_pdata __initdata = {
>> > isn't using __initdata here broken already before your patch? ?Was
>> > introduced in c67a3e09. ?Fabio?
>>
>> I followed the same approach as in mx31_3ds.c file.
>>
>> > But in general I'd prefer to keep as much __initdata as possible because
>> > this occupies less memory when using a multi-machine kernel.
>>
>> Ok, is the __initdata usage correct then? If not, I can change it. Just let me know.
> I guess that if you compile mc13xxx support as module it won't work.
>
> Try that, and if it breaks, send a patch fixing mx31_3ds.c, too.

I built it as module and the build went fine.

Regards,

Fabio Estevam

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [PATCH 16/17] mc13xxx: mfd_cell is now implicitly available to drivers
  2011-02-17 11:53       ` Fabio Estevam
@ 2011-02-17 13:10         ` Uwe Kleine-König
  2011-02-19  3:31           ` Fabio Estevam
  0 siblings, 1 reply; 18+ messages in thread
From: Uwe Kleine-König @ 2011-02-17 13:10 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Feb 17, 2011 at 09:53:56AM -0200, Fabio Estevam wrote:
> Hi Uwe,
> 
> 2011/2/16 Uwe Kleine-K?nig <u.kleine-koenig@pengutronix.de>:
> > On Wed, Feb 16, 2011 at 10:31:10AM -0200, Fabio Estevam wrote:
> >> Hi Uwe,
> >>
> >> On 2/16/2011 7:41 AM, Uwe Kleine-K?nig wrote:
> >> ...
> >> >> ?/* MC13783 */
> >> >> -static struct mc13783_platform_data mc13783_pdata __initdata = {
> >> > isn't using __initdata here broken already before your patch? ?Was
> >> > introduced in c67a3e09. ?Fabio?
> >>
> >> I followed the same approach as in mx31_3ds.c file.
> >>
> >> > But in general I'd prefer to keep as much __initdata as possible because
> >> > this occupies less memory when using a multi-machine kernel.
> >>
> >> Ok, is the __initdata usage correct then? If not, I can change it. Just let me know.
> > I guess that if you compile mc13xxx support as module it won't work.
> >
> > Try that, and if it breaks, send a patch fixing mx31_3ds.c, too.
> 
> I built it as module and the build went fine.
And you did a runtime test, too?

If you did and that went smooth, I'll take a look again, because I
expected it to barf.

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-K?nig            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 16/17] mc13xxx: mfd_cell is now implicitly available to drivers
  2011-02-16 17:00     ` Andres Salomon
@ 2011-02-18  8:39       ` Uwe Kleine-König
  -1 siblings, 0 replies; 18+ messages in thread
From: Uwe Kleine-König @ 2011-02-18  8:39 UTC (permalink / raw)
  To: Andres Salomon
  Cc: Fabio Estevam, Russell King, Samuel Ortiz, Mark Brown,
	linux-kernel, Richard Purdie, Sascha Hauer, linux-arm-kernel,
	Liam Girdwood

On Wed, Feb 16, 2011 at 09:00:36AM -0800, Andres Salomon wrote:
> On Wed, 16 Feb 2011 10:41:54 +0100
> Uwe Kleine-König <u.kleine-koenig@pengutronix.de> wrote:
> 
> > On Fri, Feb 11, 2011 at 06:19:21PM -0800, Andres Salomon wrote:
> > > 
> > > The cell's platform_data is now accessed with a helper function;
> > > change clients to use that, and remove the now-unused data_size.
> > > 
> > > Note that mfd-core no longer makes a copy of platform_data, but the
> > why was this changed and where?  I'm not able to find your complete
> > series via gmane.
> 
> http://permalink.gmane.org/gmane.linux.kernel/1099164
I still don't get the motivation of your patch set.  For drivers that
don't need the mfd_cells you introduce another level of indirection.
And drivers that want to use mfd_cells as platform_data, they can
already now.

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [PATCH 16/17] mc13xxx: mfd_cell is now implicitly available to drivers
@ 2011-02-18  8:39       ` Uwe Kleine-König
  0 siblings, 0 replies; 18+ messages in thread
From: Uwe Kleine-König @ 2011-02-18  8:39 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, Feb 16, 2011 at 09:00:36AM -0800, Andres Salomon wrote:
> On Wed, 16 Feb 2011 10:41:54 +0100
> Uwe Kleine-K?nig <u.kleine-koenig@pengutronix.de> wrote:
> 
> > On Fri, Feb 11, 2011 at 06:19:21PM -0800, Andres Salomon wrote:
> > > 
> > > The cell's platform_data is now accessed with a helper function;
> > > change clients to use that, and remove the now-unused data_size.
> > > 
> > > Note that mfd-core no longer makes a copy of platform_data, but the
> > why was this changed and where?  I'm not able to find your complete
> > series via gmane.
> 
> http://permalink.gmane.org/gmane.linux.kernel/1099164
I still don't get the motivation of your patch set.  For drivers that
don't need the mfd_cells you introduce another level of indirection.
And drivers that want to use mfd_cells as platform_data, they can
already now.

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-K?nig            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 16/17] mc13xxx: mfd_cell is now implicitly available to drivers
  2011-02-18  8:39       ` Uwe Kleine-König
@ 2011-02-18 17:50         ` Andres Salomon
  -1 siblings, 0 replies; 18+ messages in thread
From: Andres Salomon @ 2011-02-18 17:50 UTC (permalink / raw)
  To: Uwe Kleine-König
  Cc: Fabio Estevam, Russell King, Samuel Ortiz, Mark Brown,
	linux-kernel, Richard Purdie, Sascha Hauer, linux-arm-kernel,
	Liam Girdwood

On Fri, 18 Feb 2011 09:39:28 +0100
Uwe Kleine-König <u.kleine-koenig@pengutronix.de> wrote:

> On Wed, Feb 16, 2011 at 09:00:36AM -0800, Andres Salomon wrote:
> > On Wed, 16 Feb 2011 10:41:54 +0100
> > Uwe Kleine-König <u.kleine-koenig@pengutronix.de> wrote:
> > 
> > > On Fri, Feb 11, 2011 at 06:19:21PM -0800, Andres Salomon wrote:
> > > > 
> > > > The cell's platform_data is now accessed with a helper function;
> > > > change clients to use that, and remove the now-unused data_size.
> > > > 
> > > > Note that mfd-core no longer makes a copy of platform_data, but
> > > > the
> > > why was this changed and where?  I'm not able to find your
> > > complete series via gmane.
> > 
> > http://permalink.gmane.org/gmane.linux.kernel/1099164
> I still don't get the motivation of your patch set.  For drivers that
> don't need the mfd_cells you introduce another level of indirection.
> And drivers that want to use mfd_cells as platform_data, they can
> already now.
> 
> Best regards
> Uwe
> 

The main motivation for making mfd_cell available to all was to be able
to provide functions within mfd-core (introduced in later
patches/patchsets) that accept platform devices and operate on their
mfd_cells.  The mfd_cell used to be automatically carried by the pdevs,
and I'm not entirely sure the reason for getting rid of that.  It also
(imo) cleans up a lot of things.  For example, the mfd_cell API
platform_data/driver_data stuff was unclear when I first
encountered it, as various drivers were doing things completely
differently (some incorrectly, as witnessed by some of the drivers
that I modified that were using driver_data and had clients later
calling set_drvdata on the same pdev).   This is clearer, and provides
a uniform way to do things that, afaict, sacrifices absolutely no
flexibility or functionality.  Yes, it adds some overhead by having a
copy of the mfd_cell around in memory, but if that's really an issue it
could be optimized further by not making a full copy of the mfd_cell.
With the new wrappers (mfd_get_data/mfd_get_cell), this could be done
without having to mess with drivers.



^ permalink raw reply	[flat|nested] 18+ messages in thread

* [PATCH 16/17] mc13xxx: mfd_cell is now implicitly available to drivers
@ 2011-02-18 17:50         ` Andres Salomon
  0 siblings, 0 replies; 18+ messages in thread
From: Andres Salomon @ 2011-02-18 17:50 UTC (permalink / raw)
  To: linux-arm-kernel

On Fri, 18 Feb 2011 09:39:28 +0100
Uwe Kleine-K?nig <u.kleine-koenig@pengutronix.de> wrote:

> On Wed, Feb 16, 2011 at 09:00:36AM -0800, Andres Salomon wrote:
> > On Wed, 16 Feb 2011 10:41:54 +0100
> > Uwe Kleine-K?nig <u.kleine-koenig@pengutronix.de> wrote:
> > 
> > > On Fri, Feb 11, 2011 at 06:19:21PM -0800, Andres Salomon wrote:
> > > > 
> > > > The cell's platform_data is now accessed with a helper function;
> > > > change clients to use that, and remove the now-unused data_size.
> > > > 
> > > > Note that mfd-core no longer makes a copy of platform_data, but
> > > > the
> > > why was this changed and where?  I'm not able to find your
> > > complete series via gmane.
> > 
> > http://permalink.gmane.org/gmane.linux.kernel/1099164
> I still don't get the motivation of your patch set.  For drivers that
> don't need the mfd_cells you introduce another level of indirection.
> And drivers that want to use mfd_cells as platform_data, they can
> already now.
> 
> Best regards
> Uwe
> 

The main motivation for making mfd_cell available to all was to be able
to provide functions within mfd-core (introduced in later
patches/patchsets) that accept platform devices and operate on their
mfd_cells.  The mfd_cell used to be automatically carried by the pdevs,
and I'm not entirely sure the reason for getting rid of that.  It also
(imo) cleans up a lot of things.  For example, the mfd_cell API
platform_data/driver_data stuff was unclear when I first
encountered it, as various drivers were doing things completely
differently (some incorrectly, as witnessed by some of the drivers
that I modified that were using driver_data and had clients later
calling set_drvdata on the same pdev).   This is clearer, and provides
a uniform way to do things that, afaict, sacrifices absolutely no
flexibility or functionality.  Yes, it adds some overhead by having a
copy of the mfd_cell around in memory, but if that's really an issue it
could be optimized further by not making a full copy of the mfd_cell.
With the new wrappers (mfd_get_data/mfd_get_cell), this could be done
without having to mess with drivers.

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [PATCH 16/17] mc13xxx: mfd_cell is now implicitly available to drivers
  2011-02-17 13:10         ` Uwe Kleine-König
@ 2011-02-19  3:31           ` Fabio Estevam
  0 siblings, 0 replies; 18+ messages in thread
From: Fabio Estevam @ 2011-02-19  3:31 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Uwe,

2011/2/17 Uwe Kleine-K?nig <u.kleine-koenig@pengutronix.de>:
...
>> I built it as module and the build went fine.
> And you did a runtime test, too?
>
> If you did and that went smooth, I'll take a look again, because I
> expected it to barf.

I haven?t performed a runtime test yet. I am travelling today and will
be one week out of the office, but I can test it when I return.

Regards,

Fabio Estevam

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2011-02-19  3:31 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-02-12  2:19 [PATCH 16/17] mc13xxx: mfd_cell is now implicitly available to drivers Andres Salomon
2011-02-12  2:19 ` Andres Salomon
2011-02-16  9:41 ` Uwe Kleine-König
2011-02-16  9:41   ` Uwe Kleine-König
2011-02-16 12:26   ` Fabio Estevam
2011-02-16 12:26     ` Fabio Estevam
2011-02-16 12:31   ` Fabio Estevam
2011-02-16 12:31     ` Fabio Estevam
2011-02-16 12:58     ` Uwe Kleine-König
2011-02-17 11:53       ` Fabio Estevam
2011-02-17 13:10         ` Uwe Kleine-König
2011-02-19  3:31           ` Fabio Estevam
2011-02-16 17:00   ` Andres Salomon
2011-02-16 17:00     ` Andres Salomon
2011-02-18  8:39     ` Uwe Kleine-König
2011-02-18  8:39       ` Uwe Kleine-König
2011-02-18 17:50       ` Andres Salomon
2011-02-18 17:50         ` Andres Salomon

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.