linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/15] make more driver use devm_of_platform_populate()
@ 2017-05-29 15:45 Benjamin Gaignard
  2017-05-29 15:45 ` [PATCH 01/15] iio: adc: stm32: " Benjamin Gaignard
                   ` (5 more replies)
  0 siblings, 6 replies; 13+ messages in thread
From: Benjamin Gaignard @ 2017-05-29 15:45 UTC (permalink / raw)
  To: linux-arm-kernel

Number of calls to of_platform_populate() aren't unbalanced by a call to
of_platform_depopulate() that could generate issue will loading/unloading
the drivers. Make those drivers use devm_of_platform_populate() fix the problem
without need to add remove function.

In some case replacing of_platform_populate() by devm_of_platform_populate()
allow to delete driver remove function and save some lines of code.

This series of patches based on v4.12-rc3 tag.

CC: Alexandre Torgue <alexandre.torgue@st.com>
CC: David Airlie <airlied@linux.ie>
CC: Fabrice Gasnier <fabrice.gasnier@st.com>
CC: Hartmut Knaack <knaack.h@gmx.de>
CC: Jaroslav Kysela <perex@perex.cz>
CC: Javier Martinez Canillas <javier@osg.samsung.com>
CC: Jonathan Cameron <jic23@kernel.org>
CC: Krzysztof Kozlowski <krzk@kernel.org>
CC: Kukjin Kim <kgene@kernel.org>
CC: Kyungmin Park <kyungmin.park@samsung.com>
CC: Lars-Peter Clausen <lars@metafoo.de>
CC: Lee Jones <lee.jones@linaro.org>
CC: Liam Girdwood <lgirdwood@gmail.com>
CC: Mark Brown <broonie@kernel.org>
CC: Mauro Carvalho Chehab <mchehab@kernel.org>
CC: Olivier Moysan <olivier.moysan@st.com>
CC: Rob Clark <robdclark@gmail.com>
CC: Shawn Guo <shawnguo@kernel.org>
CC: Sylwester Nawrocki <s.nawrocki@samsung.com>
CC: Takashi Iwai <tiwai@suse.com>
CC: Tony Lindgren <tony@atomide.com>

CC: linux-iio at vger.kernel.org
CC: linux-arm-kernel at lists.infradead.org
CC: linux-kernel at vger.kernel.org
CC: dri-devel at lists.freedesktop.org
CC: linux-arm-msm at vger.kernel.org
CC: freedreno at lists.freedesktop.org
CC: linux-samsung-soc at vger.kernel.org
CC: alsa-devel at alsa-project.org
CC: linux-media at vger.kernel.org

Benjamin Gaignard (15):
  iio: adc: stm32: use devm_of_platform_populate()
  iio: dac: stm32: use devm_of_platform_populate()
  drm: zte: use devm_of_platform_populate()
  drm: msm: use devm_of_platform_populate()
  mfd: stm32-timers: use devm_of_platform_populate
  mfd: atmel: use devm_of_platform_populate()
  mfd: cros_ec: use devm_of_platform_populate()
  mfd: exynos: use devm_of_platform_populate()
  mfd: fsl-imx25: use devm_of_platform_populate()
  mfd: motorola-cpcap: use devm_of_platform_populate()
  mfd: palmas: use devm_of_platform_populate()
  mfd: qcom-spmi-pmic: use devm_of_platform_populate()
  mfd: smsc-ece: use devm_of_platform_populate()
  sound: stm32: use devm_of_platform_populate()
  media: exynos4-is: use devm_of_platform_populate()

 drivers/gpu/drm/msm/msm_drv.c               | 10 ++--------
 drivers/gpu/drm/zte/zx_drm_drv.c            |  2 +-
 drivers/iio/adc/stm32-adc-core.c            |  4 +---
 drivers/iio/dac/stm32-dac-core.c            |  3 +--
 drivers/media/platform/exynos4-is/fimc-is.c |  7 ++-----
 drivers/mfd/atmel-flexcom.c                 |  2 +-
 drivers/mfd/cros_ec.c                       |  2 +-
 drivers/mfd/exynos-lpass.c                  |  2 +-
 drivers/mfd/fsl-imx25-tsadc.c               |  5 +----
 drivers/mfd/motorola-cpcap.c                | 13 +------------
 drivers/mfd/palmas.c                        |  2 +-
 drivers/mfd/qcom-spmi-pmic.c                |  9 +--------
 drivers/mfd/smsc-ece1099.c                  |  3 +--
 drivers/mfd/stm32-timers.c                  | 10 +---------
 sound/soc/stm/stm32_sai.c                   | 11 +----------
 15 files changed, 17 insertions(+), 68 deletions(-)

-- 
1.9.1

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

* [PATCH 01/15] iio: adc: stm32: use devm_of_platform_populate()
  2017-05-29 15:45 [PATCH 00/15] make more driver use devm_of_platform_populate() Benjamin Gaignard
@ 2017-05-29 15:45 ` Benjamin Gaignard
  2017-05-29 16:00   ` Jonathan Cameron
  2017-05-29 16:03   ` Fabrice Gasnier
  2017-05-29 15:45 ` [PATCH 02/15] iio: dac: " Benjamin Gaignard
                   ` (4 subsequent siblings)
  5 siblings, 2 replies; 13+ messages in thread
From: Benjamin Gaignard @ 2017-05-29 15:45 UTC (permalink / raw)
  To: linux-arm-kernel

Use devm_of_platform_populate() instead of of_platform_populate and
of_platform_depopulate to simplify driver code

Signed-off-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>

CC: Jonathan Cameron <jic23@kernel.org>
CC: Hartmut Knaack <knaack.h@gmx.de>
CC: Lars-Peter Clausen <lars@metafoo.de>
CC: Alexandre Torgue <alexandre.torgue@st.com>
CC: Fabrice Gasnier <fabrice.gasnier@st.com>
CC: linux-iio at vger.kernel.org
CC: linux-arm-kernel at lists.infradead.org
CC: linux-kernel at vger.kernel.org
---
 drivers/iio/adc/stm32-adc-core.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/iio/adc/stm32-adc-core.c b/drivers/iio/adc/stm32-adc-core.c
index 22b7c93..46e41dc5 100644
--- a/drivers/iio/adc/stm32-adc-core.c
+++ b/drivers/iio/adc/stm32-adc-core.c
@@ -186,7 +186,6 @@ static void stm32_adc_irq_remove(struct platform_device *pdev,
 static int stm32_adc_probe(struct platform_device *pdev)
 {
 	struct stm32_adc_priv *priv;
-	struct device_node *np = pdev->dev.of_node;
 	struct resource *res;
 	int ret;
 
@@ -249,7 +248,7 @@ static int stm32_adc_probe(struct platform_device *pdev)
 
 	platform_set_drvdata(pdev, &priv->common);
 
-	ret = of_platform_populate(np, NULL, NULL, &pdev->dev);
+	ret = devm_of_platform_populate(&pdev->dev);
 	if (ret < 0) {
 		dev_err(&pdev->dev, "failed to populate DT children\n");
 		goto err_irq_remove;
@@ -274,7 +273,6 @@ static int stm32_adc_remove(struct platform_device *pdev)
 	struct stm32_adc_common *common = platform_get_drvdata(pdev);
 	struct stm32_adc_priv *priv = to_stm32_adc_priv(common);
 
-	of_platform_depopulate(&pdev->dev);
 	stm32_adc_irq_remove(pdev, priv);
 	clk_disable_unprepare(priv->aclk);
 	regulator_disable(priv->vref);
-- 
1.9.1

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

* [PATCH 02/15] iio: dac: stm32: use devm_of_platform_populate()
  2017-05-29 15:45 [PATCH 00/15] make more driver use devm_of_platform_populate() Benjamin Gaignard
  2017-05-29 15:45 ` [PATCH 01/15] iio: adc: stm32: " Benjamin Gaignard
@ 2017-05-29 15:45 ` Benjamin Gaignard
  2017-05-29 16:10   ` Fabrice Gasnier
  2017-05-29 15:45 ` [PATCH 05/15] mfd: stm32-timers: use devm_of_platform_populate Benjamin Gaignard
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 13+ messages in thread
From: Benjamin Gaignard @ 2017-05-29 15:45 UTC (permalink / raw)
  To: linux-arm-kernel

Use devm_of_platform_populate() instead of of_platform_populate and
of_platform_depopulate to simplify driver code

Signed-off-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>

CC: Jonathan Cameron <jic23@kernel.org>
CC: Hartmut Knaack <knaack.h@gmx.de>
CC: Lars-Peter Clausen <lars@metafoo.de>
CC: Alexandre Torgue <alexandre.torgue@st.com>
CC: Fabrice Gasnier <fabrice.gasnier@st.com>
CC: linux-iio at vger.kernel.org
CC: linux-arm-kernel at lists.infradead.org
CC: linux-kernel at vger.kernel.org
---
 drivers/iio/dac/stm32-dac-core.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/iio/dac/stm32-dac-core.c b/drivers/iio/dac/stm32-dac-core.c
index 75e4878..9c42537 100644
--- a/drivers/iio/dac/stm32-dac-core.c
+++ b/drivers/iio/dac/stm32-dac-core.c
@@ -130,7 +130,7 @@ static int stm32_dac_probe(struct platform_device *pdev)
 
 	platform_set_drvdata(pdev, &priv->common);
 
-	ret = of_platform_populate(pdev->dev.of_node, NULL, NULL, dev);
+	ret = devm_of_platform_populate(&pdev->dev);
 	if (ret < 0) {
 		dev_err(dev, "failed to populate DT children\n");
 		goto err_pclk;
@@ -151,7 +151,6 @@ static int stm32_dac_remove(struct platform_device *pdev)
 	struct stm32_dac_common *common = platform_get_drvdata(pdev);
 	struct stm32_dac_priv *priv = to_stm32_dac_priv(common);
 
-	of_platform_depopulate(&pdev->dev);
 	clk_disable_unprepare(priv->pclk);
 	regulator_disable(priv->vref);
 
-- 
1.9.1

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

* [PATCH 05/15] mfd: stm32-timers: use devm_of_platform_populate
  2017-05-29 15:45 [PATCH 00/15] make more driver use devm_of_platform_populate() Benjamin Gaignard
  2017-05-29 15:45 ` [PATCH 01/15] iio: adc: stm32: " Benjamin Gaignard
  2017-05-29 15:45 ` [PATCH 02/15] iio: dac: " Benjamin Gaignard
@ 2017-05-29 15:45 ` Benjamin Gaignard
  2017-05-30  9:29   ` Lee Jones
  2017-05-29 15:45 ` [PATCH 08/15] mfd: exynos: use devm_of_platform_populate() Benjamin Gaignard
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 13+ messages in thread
From: Benjamin Gaignard @ 2017-05-29 15:45 UTC (permalink / raw)
  To: linux-arm-kernel

Use devm_of_platform_populate() instead of of_platform_populate()
and suppress stm32_timers_remove() which become useless.

Signed-off-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>

CC: Lee Jones <lee.jones@linaro.org>
CC: Alexandre Torgue <alexandre.torgue@st.com>
CC: linux-arm-kernel at lists.infradead.org
CC: linux-kernel at vger.kernel.org
---
 drivers/mfd/stm32-timers.c | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/drivers/mfd/stm32-timers.c b/drivers/mfd/stm32-timers.c
index 2182f00..a6675a4 100644
--- a/drivers/mfd/stm32-timers.c
+++ b/drivers/mfd/stm32-timers.c
@@ -58,14 +58,7 @@ static int stm32_timers_probe(struct platform_device *pdev)
 
 	platform_set_drvdata(pdev, ddata);
 
-	return of_platform_populate(pdev->dev.of_node, NULL, NULL, &pdev->dev);
-}
-
-static int stm32_timers_remove(struct platform_device *pdev)
-{
-	of_platform_depopulate(&pdev->dev);
-
-	return 0;
+	return devm_of_platform_populate(&pdev->dev);
 }
 
 static const struct of_device_id stm32_timers_of_match[] = {
@@ -76,7 +69,6 @@ static int stm32_timers_remove(struct platform_device *pdev)
 
 static struct platform_driver stm32_timers_driver = {
 	.probe = stm32_timers_probe,
-	.remove = stm32_timers_remove,
 	.driver	= {
 		.name = "stm32-timers",
 		.of_match_table = stm32_timers_of_match,
-- 
1.9.1

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

* [PATCH 08/15] mfd: exynos: use devm_of_platform_populate()
  2017-05-29 15:45 [PATCH 00/15] make more driver use devm_of_platform_populate() Benjamin Gaignard
                   ` (2 preceding siblings ...)
  2017-05-29 15:45 ` [PATCH 05/15] mfd: stm32-timers: use devm_of_platform_populate Benjamin Gaignard
@ 2017-05-29 15:45 ` Benjamin Gaignard
  2017-05-30  9:31   ` Lee Jones
  2017-05-29 15:46 ` [PATCH 14/15] sound: stm32: " Benjamin Gaignard
  2017-05-29 15:46 ` [PATCH 15/15] media: exynos4-is: " Benjamin Gaignard
  5 siblings, 1 reply; 13+ messages in thread
From: Benjamin Gaignard @ 2017-05-29 15:45 UTC (permalink / raw)
  To: linux-arm-kernel

Use devm_of_platform_populate() to be sure that of_platform_depopulate
is called when removing the driver.

Signed-off-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>

CC: Lee Jones <lee.jones@linaro.org>
CC: Kukjin Kim <kgene@kernel.org>
CC: Krzysztof Kozlowski <krzk@kernel.org>
CC: Javier Martinez Canillas <javier@osg.samsung.com>
CC: linux-arm-kernel at lists.infradead.org
CC: linux-samsung-soc at vger.kernel.org
CC: linux-kernel at vger.kernel.org
---
 drivers/mfd/exynos-lpass.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/mfd/exynos-lpass.c b/drivers/mfd/exynos-lpass.c
index 0bf3aeb..ca829f8 100644
--- a/drivers/mfd/exynos-lpass.c
+++ b/drivers/mfd/exynos-lpass.c
@@ -138,7 +138,7 @@ static int exynos_lpass_probe(struct platform_device *pdev)
 	pm_runtime_enable(dev);
 	exynos_lpass_enable(lpass);
 
-	return of_platform_populate(dev->of_node, NULL, NULL, dev);
+	return devm_of_platform_populate(dev);
 }
 
 static int exynos_lpass_remove(struct platform_device *pdev)
-- 
1.9.1

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

* [PATCH 14/15] sound: stm32: use devm_of_platform_populate()
  2017-05-29 15:45 [PATCH 00/15] make more driver use devm_of_platform_populate() Benjamin Gaignard
                   ` (3 preceding siblings ...)
  2017-05-29 15:45 ` [PATCH 08/15] mfd: exynos: use devm_of_platform_populate() Benjamin Gaignard
@ 2017-05-29 15:46 ` Benjamin Gaignard
  2017-05-30  9:03   ` Olivier MOYSAN
  2017-05-29 15:46 ` [PATCH 15/15] media: exynos4-is: " Benjamin Gaignard
  5 siblings, 1 reply; 13+ messages in thread
From: Benjamin Gaignard @ 2017-05-29 15:46 UTC (permalink / raw)
  To: linux-arm-kernel

Usage of devm_of_platform_populate() simplify driver code
by allowing to delete stm32_sai_remove().

Signed-off-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>

CC: Liam Girdwood <lgirdwood@gmail.com>
CC: Mark Brown <broonie@kernel.org>
CC: Jaroslav Kysela <perex@perex.cz>
CC: Takashi Iwai <tiwai@suse.com>
CC: Alexandre Torgue <alexandre.torgue@st.com>
CC: Olivier Moysan <olivier.moysan@st.com>
CC: alsa-devel at alsa-project.org
CC: linux-arm-kernel at lists.infradead.org
CC: linux-kernel at vger.kernel.org
---
 sound/soc/stm/stm32_sai.c | 11 +----------
 1 file changed, 1 insertion(+), 10 deletions(-)

diff --git a/sound/soc/stm/stm32_sai.c b/sound/soc/stm/stm32_sai.c
index 2a27a26..25304f8 100644
--- a/sound/soc/stm/stm32_sai.c
+++ b/sound/soc/stm/stm32_sai.c
@@ -34,7 +34,6 @@
 
 static int stm32_sai_probe(struct platform_device *pdev)
 {
-	struct device_node *np = pdev->dev.of_node;
 	struct stm32_sai_data *sai;
 	struct reset_control *rst;
 	struct resource *res;
@@ -86,14 +85,7 @@ static int stm32_sai_probe(struct platform_device *pdev)
 	sai->pdev = pdev;
 	platform_set_drvdata(pdev, sai);
 
-	return of_platform_populate(np, NULL, NULL, &pdev->dev);
-}
-
-static int stm32_sai_remove(struct platform_device *pdev)
-{
-	of_platform_depopulate(&pdev->dev);
-
-	return 0;
+	return devm_of_platform_populate(&pdev->dev);
 }
 
 MODULE_DEVICE_TABLE(of, stm32_sai_ids);
@@ -104,7 +96,6 @@ static int stm32_sai_remove(struct platform_device *pdev)
 		.of_match_table = stm32_sai_ids,
 	},
 	.probe = stm32_sai_probe,
-	.remove = stm32_sai_remove,
 };
 
 module_platform_driver(stm32_sai_driver);
-- 
1.9.1

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

* [PATCH 15/15] media: exynos4-is: use devm_of_platform_populate()
  2017-05-29 15:45 [PATCH 00/15] make more driver use devm_of_platform_populate() Benjamin Gaignard
                   ` (4 preceding siblings ...)
  2017-05-29 15:46 ` [PATCH 14/15] sound: stm32: " Benjamin Gaignard
@ 2017-05-29 15:46 ` Benjamin Gaignard
  5 siblings, 0 replies; 13+ messages in thread
From: Benjamin Gaignard @ 2017-05-29 15:46 UTC (permalink / raw)
  To: linux-arm-kernel

Usage of devm_of_platform_populate() simplify driver code
and save somes lines

Signed-off-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>

CC: Kyungmin Park <kyungmin.park@samsung.com>
CC: Sylwester Nawrocki <s.nawrocki@samsung.com>
CC: Mauro Carvalho Chehab <mchehab@kernel.org>
CC: Kukjin Kim <kgene@kernel.org>
CC: Krzysztof Kozlowski <krzk@kernel.org>
CC: Javier Martinez Canillas <javier@osg.samsung.com>
CC: linux-media at vger.kernel.org
CC: linux-arm-kernel at lists.infradead.org
CC: linux-samsung-soc at vger.kernel.org
CC: linux-kernel at vger.kernel.org
---
 drivers/media/platform/exynos4-is/fimc-is.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/media/platform/exynos4-is/fimc-is.c b/drivers/media/platform/exynos4-is/fimc-is.c
index 7f92144..340d906 100644
--- a/drivers/media/platform/exynos4-is/fimc-is.c
+++ b/drivers/media/platform/exynos4-is/fimc-is.c
@@ -854,7 +854,7 @@ static int fimc_is_probe(struct platform_device *pdev)
 
 	vb2_dma_contig_set_max_seg_size(dev, DMA_BIT_MASK(32));
 
-	ret = of_platform_populate(dev->of_node, NULL, NULL, dev);
+	ret = devm_of_platform_populate(dev);
 	if (ret < 0)
 		goto err_pm;
 
@@ -864,7 +864,7 @@ static int fimc_is_probe(struct platform_device *pdev)
 	 */
 	ret = fimc_is_register_subdevs(is);
 	if (ret < 0)
-		goto err_of_dep;
+		goto err_pm;
 
 	ret = fimc_is_debugfs_create(is);
 	if (ret < 0)
@@ -883,8 +883,6 @@ static int fimc_is_probe(struct platform_device *pdev)
 	fimc_is_debugfs_remove(is);
 err_sd:
 	fimc_is_unregister_subdevs(is);
-err_of_dep:
-	of_platform_depopulate(dev);
 err_pm:
 	if (!pm_runtime_enabled(dev))
 		fimc_is_runtime_suspend(dev);
@@ -946,7 +944,6 @@ static int fimc_is_remove(struct platform_device *pdev)
 	if (!pm_runtime_status_suspended(dev))
 		fimc_is_runtime_suspend(dev);
 	free_irq(is->irq, is);
-	of_platform_depopulate(dev);
 	fimc_is_unregister_subdevs(is);
 	vb2_dma_contig_clear_max_seg_size(dev);
 	fimc_is_put_clocks(is);
-- 
1.9.1

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

* [PATCH 01/15] iio: adc: stm32: use devm_of_platform_populate()
  2017-05-29 15:45 ` [PATCH 01/15] iio: adc: stm32: " Benjamin Gaignard
@ 2017-05-29 16:00   ` Jonathan Cameron
  2017-05-29 16:03   ` Fabrice Gasnier
  1 sibling, 0 replies; 13+ messages in thread
From: Jonathan Cameron @ 2017-05-29 16:00 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, 29 May 2017 17:45:49 +0200
Benjamin Gaignard <benjamin.gaignard@linaro.org> wrote:

> Use devm_of_platform_populate() instead of of_platform_populate and
> of_platform_depopulate to simplify driver code
> 
> Signed-off-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>
My gut feeling is to dislike this particular instance.

It's changing the order of removal of elements to not
be a reverse of the order of them being set up.  That
takes it from obviously correct to something where some thought
is required.  For the trivial saving in lines of code I'm
unconvinced it is a worthwhile change..

Mind you, this particular driver isn't balancing the
probe and remove order anyway (the regulator stuff)
so I guess it's not making it much worse...

Jonathan
> 
> CC: Jonathan Cameron <jic23@kernel.org>
> CC: Hartmut Knaack <knaack.h@gmx.de>
> CC: Lars-Peter Clausen <lars@metafoo.de>
> CC: Alexandre Torgue <alexandre.torgue@st.com>
> CC: Fabrice Gasnier <fabrice.gasnier@st.com>
> CC: linux-iio at vger.kernel.org
> CC: linux-arm-kernel at lists.infradead.org
> CC: linux-kernel at vger.kernel.org
> ---
>  drivers/iio/adc/stm32-adc-core.c | 4 +---
>  1 file changed, 1 insertion(+), 3 deletions(-)
> 
> diff --git a/drivers/iio/adc/stm32-adc-core.c b/drivers/iio/adc/stm32-adc-core.c
> index 22b7c93..46e41dc5 100644
> --- a/drivers/iio/adc/stm32-adc-core.c
> +++ b/drivers/iio/adc/stm32-adc-core.c
> @@ -186,7 +186,6 @@ static void stm32_adc_irq_remove(struct platform_device *pdev,
>  static int stm32_adc_probe(struct platform_device *pdev)
>  {
>  	struct stm32_adc_priv *priv;
> -	struct device_node *np = pdev->dev.of_node;
>  	struct resource *res;
>  	int ret;
>  
> @@ -249,7 +248,7 @@ static int stm32_adc_probe(struct platform_device *pdev)
>  
>  	platform_set_drvdata(pdev, &priv->common);
>  
> -	ret = of_platform_populate(np, NULL, NULL, &pdev->dev);
> +	ret = devm_of_platform_populate(&pdev->dev);
>  	if (ret < 0) {
>  		dev_err(&pdev->dev, "failed to populate DT children\n");
>  		goto err_irq_remove;
> @@ -274,7 +273,6 @@ static int stm32_adc_remove(struct platform_device *pdev)
>  	struct stm32_adc_common *common = platform_get_drvdata(pdev);
>  	struct stm32_adc_priv *priv = to_stm32_adc_priv(common);
>  
> -	of_platform_depopulate(&pdev->dev);
>  	stm32_adc_irq_remove(pdev, priv);
>  	clk_disable_unprepare(priv->aclk);
>  	regulator_disable(priv->vref);

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

* [PATCH 01/15] iio: adc: stm32: use devm_of_platform_populate()
  2017-05-29 15:45 ` [PATCH 01/15] iio: adc: stm32: " Benjamin Gaignard
  2017-05-29 16:00   ` Jonathan Cameron
@ 2017-05-29 16:03   ` Fabrice Gasnier
  1 sibling, 0 replies; 13+ messages in thread
From: Fabrice Gasnier @ 2017-05-29 16:03 UTC (permalink / raw)
  To: linux-arm-kernel

On 05/29/2017 05:45 PM, Benjamin Gaignard wrote:
> Use devm_of_platform_populate() instead of of_platform_populate and
> of_platform_depopulate to simplify driver code
> 
> Signed-off-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>
> 
> CC: Jonathan Cameron <jic23@kernel.org>
> CC: Hartmut Knaack <knaack.h@gmx.de>
> CC: Lars-Peter Clausen <lars@metafoo.de>
> CC: Alexandre Torgue <alexandre.torgue@st.com>
> CC: Fabrice Gasnier <fabrice.gasnier@st.com>
> CC: linux-iio at vger.kernel.org
> CC: linux-arm-kernel at lists.infradead.org
> CC: linux-kernel at vger.kernel.org
> ---
>  drivers/iio/adc/stm32-adc-core.c | 4 +---
>  1 file changed, 1 insertion(+), 3 deletions(-)
> 
> diff --git a/drivers/iio/adc/stm32-adc-core.c b/drivers/iio/adc/stm32-adc-core.c
> index 22b7c93..46e41dc5 100644
> --- a/drivers/iio/adc/stm32-adc-core.c
> +++ b/drivers/iio/adc/stm32-adc-core.c
> @@ -186,7 +186,6 @@ static void stm32_adc_irq_remove(struct platform_device *pdev,
>  static int stm32_adc_probe(struct platform_device *pdev)
>  {
>  	struct stm32_adc_priv *priv;
> -	struct device_node *np = pdev->dev.of_node;
>  	struct resource *res;
>  	int ret;
>  
> @@ -249,7 +248,7 @@ static int stm32_adc_probe(struct platform_device *pdev)
>  
>  	platform_set_drvdata(pdev, &priv->common);
>  
> -	ret = of_platform_populate(np, NULL, NULL, &pdev->dev);
> +	ret = devm_of_platform_populate(&pdev->dev);
>  	if (ret < 0) {
>  		dev_err(&pdev->dev, "failed to populate DT children\n");
>  		goto err_irq_remove;
> @@ -274,7 +273,6 @@ static int stm32_adc_remove(struct platform_device *pdev)
>  	struct stm32_adc_common *common = platform_get_drvdata(pdev);
>  	struct stm32_adc_priv *priv = to_stm32_adc_priv(common);
>  
> -	of_platform_depopulate(&pdev->dev);

Hi Benjamin,

This is going to change order of sub devices removal. It may end-up with
bellow resources being removed while sub-device still needs them.
Not sure this is a good candidate for such a change.

Best Regards,
Fabrice

>  	stm32_adc_irq_remove(pdev, priv);
>  	clk_disable_unprepare(priv->aclk);
>  	regulator_disable(priv->vref);
> 

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

* [PATCH 02/15] iio: dac: stm32: use devm_of_platform_populate()
  2017-05-29 15:45 ` [PATCH 02/15] iio: dac: " Benjamin Gaignard
@ 2017-05-29 16:10   ` Fabrice Gasnier
  0 siblings, 0 replies; 13+ messages in thread
From: Fabrice Gasnier @ 2017-05-29 16:10 UTC (permalink / raw)
  To: linux-arm-kernel

On 05/29/2017 05:45 PM, Benjamin Gaignard wrote:
> Use devm_of_platform_populate() instead of of_platform_populate and
> of_platform_depopulate to simplify driver code
> 
> Signed-off-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>
> 
> CC: Jonathan Cameron <jic23@kernel.org>
> CC: Hartmut Knaack <knaack.h@gmx.de>
> CC: Lars-Peter Clausen <lars@metafoo.de>
> CC: Alexandre Torgue <alexandre.torgue@st.com>
> CC: Fabrice Gasnier <fabrice.gasnier@st.com>
> CC: linux-iio at vger.kernel.org
> CC: linux-arm-kernel at lists.infradead.org
> CC: linux-kernel at vger.kernel.org
> ---
>  drivers/iio/dac/stm32-dac-core.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/drivers/iio/dac/stm32-dac-core.c b/drivers/iio/dac/stm32-dac-core.c
> index 75e4878..9c42537 100644
> --- a/drivers/iio/dac/stm32-dac-core.c
> +++ b/drivers/iio/dac/stm32-dac-core.c
> @@ -130,7 +130,7 @@ static int stm32_dac_probe(struct platform_device *pdev)
>  
>  	platform_set_drvdata(pdev, &priv->common);
>  
> -	ret = of_platform_populate(pdev->dev.of_node, NULL, NULL, dev);
> +	ret = devm_of_platform_populate(&pdev->dev);
>  	if (ret < 0) {
>  		dev_err(dev, "failed to populate DT children\n");
>  		goto err_pclk;
> @@ -151,7 +151,6 @@ static int stm32_dac_remove(struct platform_device *pdev)
>  	struct stm32_dac_common *common = platform_get_drvdata(pdev);
>  	struct stm32_dac_priv *priv = to_stm32_dac_priv(common);
>  
> -	of_platform_depopulate(&pdev->dev);
Hi Benjamin,

Same as patch 1, This is going to change order of sub devices removal.
It may end-up with bellow resources being removed while sub-device still
needs them.
Not sure this is a good candidate for such a change.

Best Regards,
Fabrice
>  	clk_disable_unprepare(priv->pclk);
>  	regulator_disable(priv->vref);
>  
> 

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

* [PATCH 14/15] sound: stm32: use devm_of_platform_populate()
  2017-05-29 15:46 ` [PATCH 14/15] sound: stm32: " Benjamin Gaignard
@ 2017-05-30  9:03   ` Olivier MOYSAN
  0 siblings, 0 replies; 13+ messages in thread
From: Olivier MOYSAN @ 2017-05-30  9:03 UTC (permalink / raw)
  To: linux-arm-kernel


Acked-by: Olivier Moysan <olivier.moysan@st.com>

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

* [PATCH 05/15] mfd: stm32-timers: use devm_of_platform_populate
  2017-05-29 15:45 ` [PATCH 05/15] mfd: stm32-timers: use devm_of_platform_populate Benjamin Gaignard
@ 2017-05-30  9:29   ` Lee Jones
  0 siblings, 0 replies; 13+ messages in thread
From: Lee Jones @ 2017-05-30  9:29 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, 29 May 2017, Benjamin Gaignard wrote:

> Use devm_of_platform_populate() instead of of_platform_populate()
> and suppress stm32_timers_remove() which become useless.
> 
> Signed-off-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>
> 
> CC: Lee Jones <lee.jones@linaro.org>
> CC: Alexandre Torgue <alexandre.torgue@st.com>
> CC: linux-arm-kernel at lists.infradead.org
> CC: linux-kernel at vger.kernel.org
> ---
>  drivers/mfd/stm32-timers.c | 10 +---------
>  1 file changed, 1 insertion(+), 9 deletions(-)

Applied, thanks.

> diff --git a/drivers/mfd/stm32-timers.c b/drivers/mfd/stm32-timers.c
> index 2182f00..a6675a4 100644
> --- a/drivers/mfd/stm32-timers.c
> +++ b/drivers/mfd/stm32-timers.c
> @@ -58,14 +58,7 @@ static int stm32_timers_probe(struct platform_device *pdev)
>  
>  	platform_set_drvdata(pdev, ddata);
>  
> -	return of_platform_populate(pdev->dev.of_node, NULL, NULL, &pdev->dev);
> -}
> -
> -static int stm32_timers_remove(struct platform_device *pdev)
> -{
> -	of_platform_depopulate(&pdev->dev);
> -
> -	return 0;
> +	return devm_of_platform_populate(&pdev->dev);
>  }
>  
>  static const struct of_device_id stm32_timers_of_match[] = {
> @@ -76,7 +69,6 @@ static int stm32_timers_remove(struct platform_device *pdev)
>  
>  static struct platform_driver stm32_timers_driver = {
>  	.probe = stm32_timers_probe,
> -	.remove = stm32_timers_remove,
>  	.driver	= {
>  		.name = "stm32-timers",
>  		.of_match_table = stm32_timers_of_match,

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org ? Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

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

* [PATCH 08/15] mfd: exynos: use devm_of_platform_populate()
  2017-05-29 15:45 ` [PATCH 08/15] mfd: exynos: use devm_of_platform_populate() Benjamin Gaignard
@ 2017-05-30  9:31   ` Lee Jones
  0 siblings, 0 replies; 13+ messages in thread
From: Lee Jones @ 2017-05-30  9:31 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, 29 May 2017, Benjamin Gaignard wrote:

> Use devm_of_platform_populate() to be sure that of_platform_depopulate
> is called when removing the driver.
> 
> Signed-off-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>
> 
> CC: Lee Jones <lee.jones@linaro.org>
> CC: Kukjin Kim <kgene@kernel.org>
> CC: Krzysztof Kozlowski <krzk@kernel.org>
> CC: Javier Martinez Canillas <javier@osg.samsung.com>
> CC: linux-arm-kernel at lists.infradead.org
> CC: linux-samsung-soc at vger.kernel.org
> CC: linux-kernel at vger.kernel.org
> ---
>  drivers/mfd/exynos-lpass.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Applied, thanks.

> diff --git a/drivers/mfd/exynos-lpass.c b/drivers/mfd/exynos-lpass.c
> index 0bf3aeb..ca829f8 100644
> --- a/drivers/mfd/exynos-lpass.c
> +++ b/drivers/mfd/exynos-lpass.c
> @@ -138,7 +138,7 @@ static int exynos_lpass_probe(struct platform_device *pdev)
>  	pm_runtime_enable(dev);
>  	exynos_lpass_enable(lpass);
>  
> -	return of_platform_populate(dev->of_node, NULL, NULL, dev);
> +	return devm_of_platform_populate(dev);
>  }
>  
>  static int exynos_lpass_remove(struct platform_device *pdev)

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org ? Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

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

end of thread, other threads:[~2017-05-30  9:31 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-05-29 15:45 [PATCH 00/15] make more driver use devm_of_platform_populate() Benjamin Gaignard
2017-05-29 15:45 ` [PATCH 01/15] iio: adc: stm32: " Benjamin Gaignard
2017-05-29 16:00   ` Jonathan Cameron
2017-05-29 16:03   ` Fabrice Gasnier
2017-05-29 15:45 ` [PATCH 02/15] iio: dac: " Benjamin Gaignard
2017-05-29 16:10   ` Fabrice Gasnier
2017-05-29 15:45 ` [PATCH 05/15] mfd: stm32-timers: use devm_of_platform_populate Benjamin Gaignard
2017-05-30  9:29   ` Lee Jones
2017-05-29 15:45 ` [PATCH 08/15] mfd: exynos: use devm_of_platform_populate() Benjamin Gaignard
2017-05-30  9:31   ` Lee Jones
2017-05-29 15:46 ` [PATCH 14/15] sound: stm32: " Benjamin Gaignard
2017-05-30  9:03   ` Olivier MOYSAN
2017-05-29 15:46 ` [PATCH 15/15] media: exynos4-is: " Benjamin Gaignard

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).