linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/20] mfd: Add devm_ apis for mfd_add_devices and mfd_release_devices
@ 2016-04-05 11:48 Laxman Dewangan
  2016-04-05 11:48 ` [PATCH 01/20] " Laxman Dewangan
                   ` (19 more replies)
  0 siblings, 20 replies; 32+ messages in thread
From: Laxman Dewangan @ 2016-04-05 11:48 UTC (permalink / raw)
  To: lee.jones, corbet
  Cc: andreas.werner, tony, linux-doc, linux-kernel, linux-omap,
	patches, Laxman Dewangan

This series add devm_ version of the APIs mfd_add_devices() and
mfd_release_devices() and get rid of call for mfd_release_devices()
some places and also remove the need of .remove callbacks as this
is not needed.

Laxman Dewangan (20):
  mfd: Add devm_ apis for mfd_add_devices and mfd_release_devices
  mfd: Add resource management devm_mfd_{add,remove}_devices
  mfd: act8945a: Use devm_mfd_add_devices() for mfd_device registration
  mfd: as3711: Use devm_mfd_add_devices() for mfd_device registration
  mfd: atmel-hlcdc: Use devm_mfd_add_devices() for mfd_device
    registration
  mfd: bcm590xx: Use devm_mfd_add_devices() for mfd_device registration
  mfd: hi6421-pmic: Use devm_mfd_add_devices() for mfd_device
    registration
  mfd: lp3943: Use devm_mfd_add_devices() for mfd_device registration
  mfd: menf21bmc: Use devm_mfd_add_devices() for mfd_device registration
  mfd: mt6397: Use devm_mfd_add_devices() for mfd_device registration
  mfd: rdc321x: Use devm_mfd_add_devices() for mfd_device registration
  mfd: rk808: Use devm_mfd_add_devices() for mfd_device registration
  mfd: rn5t618: Use devm_mfd_add_devices() for mfd_device registration
  mfd: rt5033: Use devm_mfd_add_devices() for mfd_device registration
  mfd: sky81452: Use devm_mfd_add_devices() for mfd_device registration
  mfd: stw481x: Use devm_mfd_add_devices() for mfd_device registration
  mfd: tps6507x: Use devm_mfd_add_devices() for mfd_device registration
  mfd: tps65217: Use devm_mfd_add_devices() for mfd_device registration
  mfd: tps65910: Use devm_mfd_add_devices() for mfd_device registration
  mfd: wm8400: Use devm_mfd_add_devices() for mfd_device registration

 Documentation/driver-model/devres.txt |  4 +++
 drivers/mfd/act8945a.c                | 13 ++------
 drivers/mfd/as3711.c                  | 11 +------
 drivers/mfd/atmel-hlcdc.c             | 10 +-----
 drivers/mfd/bcm590xx.c                |  9 +----
 drivers/mfd/hi6421-pmic-core.c        | 10 +-----
 drivers/mfd/lp3943.c                  | 14 ++------
 drivers/mfd/menf21bmc.c               |  9 +----
 drivers/mfd/mfd-core.c                | 62 +++++++++++++++++++++++++++++++++++
 drivers/mfd/mt6397-core.c             | 12 ++-----
 drivers/mfd/rdc321x-southbridge.c     |  8 +----
 drivers/mfd/rk808.c                   |  3 +-
 drivers/mfd/rn5t618.c                 |  3 +-
 drivers/mfd/rt5033.c                  | 10 +-----
 drivers/mfd/sky81452.c                | 10 ++----
 drivers/mfd/stw481x.c                 |  9 +----
 drivers/mfd/tps6507x.c                | 11 +------
 drivers/mfd/tps65217.c                | 12 +------
 drivers/mfd/tps65910.c                |  3 +-
 drivers/mfd/wm8400-core.c             | 25 ++------------
 include/linux/mfd/core.h              |  7 ++++
 21 files changed, 99 insertions(+), 156 deletions(-)

-- 
2.1.4

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

* [PATCH 01/20] mfd: Add devm_ apis for mfd_add_devices and mfd_release_devices
  2016-04-05 11:48 [PATCH 00/20] mfd: Add devm_ apis for mfd_add_devices and mfd_release_devices Laxman Dewangan
@ 2016-04-05 11:48 ` Laxman Dewangan
  2016-04-07 10:44   ` Lee Jones
  2016-04-05 11:48 ` [PATCH 02/20] mfd: Add resource management devm_mfd_{add,remove}_devices Laxman Dewangan
                   ` (18 subsequent siblings)
  19 siblings, 1 reply; 32+ messages in thread
From: Laxman Dewangan @ 2016-04-05 11:48 UTC (permalink / raw)
  To: lee.jones, corbet
  Cc: andreas.werner, tony, linux-doc, linux-kernel, linux-omap,
	patches, Laxman Dewangan

Add device managed APIs devm_mfd_add_devices() and
devm_mfd_remove_devices() for the APIs mfd_add_devices()
and mfd_remove_devices().

This helps in reducing code in error path and sometimes
removal of .remove callback for driver unbind.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
---
 drivers/mfd/mfd-core.c   | 62 ++++++++++++++++++++++++++++++++++++++++++++++++
 include/linux/mfd/core.h |  7 ++++++
 2 files changed, 69 insertions(+)

diff --git a/drivers/mfd/mfd-core.c b/drivers/mfd/mfd-core.c
index 409da01..145712e 100644
--- a/drivers/mfd/mfd-core.c
+++ b/drivers/mfd/mfd-core.c
@@ -334,6 +334,68 @@ void mfd_remove_devices(struct device *parent)
 }
 EXPORT_SYMBOL(mfd_remove_devices);
 
+static void devm_mfd_dev_release(struct device *dev, void *res)
+{
+	mfd_remove_devices(dev);
+}
+
+/**
+ * devm_mfd_add_devices - Resource managed version of mfd_add_devices()
+ *
+ * This returns the 0 on success otherwise error number in the failure.
+ * The allocated mfd devices will automatically be released when the
+ * device is unbound.
+ */
+int devm_mfd_add_devices(struct device *dev, int id,
+		    const struct mfd_cell *cells, int n_devs,
+		    struct resource *mem_base,
+		    int irq_base, struct irq_domain *domain)
+{
+	struct device **ptr;
+	int ret;
+
+	ptr = devres_alloc(devm_mfd_dev_release, sizeof(*ptr), GFP_KERNEL);
+	if (!ptr)
+		return -ENOMEM;
+
+	ret = mfd_add_devices(dev, id, cells, n_devs, mem_base,
+			      irq_base, domain);
+	if (!ret) {
+		*ptr = dev;
+		devres_add(dev, ptr);
+	} else {
+		devres_free(ptr);
+	}
+
+	return ret;
+}
+EXPORT_SYMBOL(devm_mfd_add_devices);
+
+static int devm_mfd_devs_match(struct device *dev, void *res, void *data)
+{
+	struct device **r = res;
+
+	if (WARN_ON(!r || !*r))
+		return 0;
+
+	return *r == data;
+}
+
+/**
+ * devm_mfd_remove_device - Resource managed version of mfd_remove_devices()
+ * @dev: Device for which which resource was allocated.
+ *
+ * Remove all mfd devices added on the device.
+ * Normally this function will not need to be called and the resource
+ * management code will ensure that the resource is freed.
+ */
+void devm_mfd_remove_devices(struct device *dev)
+{
+	WARN_ON(devres_release(dev, devm_mfd_dev_release,
+			       devm_mfd_devs_match, dev));
+}
+EXPORT_SYMBOL(devm_mfd_remove_devices);
+
 int mfd_clone_cell(const char *cell, const char **clones, size_t n_clones)
 {
 	struct mfd_cell cell_entry;
diff --git a/include/linux/mfd/core.h b/include/linux/mfd/core.h
index bc6f7e0..d658d7f 100644
--- a/include/linux/mfd/core.h
+++ b/include/linux/mfd/core.h
@@ -131,4 +131,11 @@ static inline int mfd_add_hotplug_devices(struct device *parent,
 
 extern void mfd_remove_devices(struct device *parent);
 
+extern int devm_mfd_add_devices(struct device *dev, int id,
+			   const struct mfd_cell *cells, int n_devs,
+			   struct resource *mem_base,
+			   int irq_base, struct irq_domain *irq_domain);
+
+extern void devm_mfd_remove_devices(struct device *dev);
+
 #endif
-- 
2.1.4

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

* [PATCH 02/20] mfd: Add resource management devm_mfd_{add,remove}_devices
  2016-04-05 11:48 [PATCH 00/20] mfd: Add devm_ apis for mfd_add_devices and mfd_release_devices Laxman Dewangan
  2016-04-05 11:48 ` [PATCH 01/20] " Laxman Dewangan
@ 2016-04-05 11:48 ` Laxman Dewangan
  2016-04-05 11:48 ` [PATCH 03/20] mfd: act8945a: Use devm_mfd_add_devices() for mfd_device registration Laxman Dewangan
                   ` (17 subsequent siblings)
  19 siblings, 0 replies; 32+ messages in thread
From: Laxman Dewangan @ 2016-04-05 11:48 UTC (permalink / raw)
  To: lee.jones, corbet
  Cc: andreas.werner, tony, linux-doc, linux-kernel, linux-omap,
	patches, Laxman Dewangan

Add devm wrappers for the mfd_add_devices() and mfd_remove_devices()
in the list of managed interfaces.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
---
 Documentation/driver-model/devres.txt | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/Documentation/driver-model/devres.txt b/Documentation/driver-model/devres.txt
index 73b98df..f752169 100644
--- a/Documentation/driver-model/devres.txt
+++ b/Documentation/driver-model/devres.txt
@@ -317,6 +317,10 @@ MEM
   devm_kvasprintf()
   devm_kzalloc()
 
+MFD
+ devm_mfd_add_devices()
+ devm_mfd_remove_devices()
+
 PCI
   pcim_enable_device()	: after success, all PCI ops become managed
   pcim_pin_device()	: keep PCI device enabled after release
-- 
2.1.4

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

* [PATCH 03/20] mfd: act8945a: Use devm_mfd_add_devices() for mfd_device registration
  2016-04-05 11:48 [PATCH 00/20] mfd: Add devm_ apis for mfd_add_devices and mfd_release_devices Laxman Dewangan
  2016-04-05 11:48 ` [PATCH 01/20] " Laxman Dewangan
  2016-04-05 11:48 ` [PATCH 02/20] mfd: Add resource management devm_mfd_{add,remove}_devices Laxman Dewangan
@ 2016-04-05 11:48 ` Laxman Dewangan
  2016-04-05 11:48 ` [PATCH 04/20] mfd: as3711: " Laxman Dewangan
                   ` (16 subsequent siblings)
  19 siblings, 0 replies; 32+ messages in thread
From: Laxman Dewangan @ 2016-04-05 11:48 UTC (permalink / raw)
  To: lee.jones, corbet
  Cc: andreas.werner, tony, linux-doc, linux-kernel, linux-omap,
	patches, Laxman Dewangan, Wenyou Yang, Krzysztof Kozlowski

Use devm_mfd_add_devices() for mfd devices registration and get
rid of .remove callback to remove mfd devices. This is done
by managed device framework.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
CC: Wenyou Yang <wenyou.yang@atmel.com>
CC: Krzysztof Kozlowski <k.kozlowski@samsung.com>
---
 drivers/mfd/act8945a.c | 13 +++----------
 1 file changed, 3 insertions(+), 10 deletions(-)

diff --git a/drivers/mfd/act8945a.c b/drivers/mfd/act8945a.c
index 525b546..10c6d2d 100644
--- a/drivers/mfd/act8945a.c
+++ b/drivers/mfd/act8945a.c
@@ -46,8 +46,9 @@ static int act8945a_i2c_probe(struct i2c_client *i2c,
 
 	i2c_set_clientdata(i2c, regmap);
 
-	ret = mfd_add_devices(&i2c->dev, PLATFORM_DEVID_NONE, act8945a_devs,
-			      ARRAY_SIZE(act8945a_devs), NULL, 0, NULL);
+	ret = devm_mfd_add_devices(&i2c->dev, PLATFORM_DEVID_NONE,
+				   act8945a_devs, ARRAY_SIZE(act8945a_devs),
+				   NULL, 0, NULL);
 	if (ret) {
 		dev_err(&i2c->dev, "Failed to add sub devices\n");
 		return ret;
@@ -56,13 +57,6 @@ static int act8945a_i2c_probe(struct i2c_client *i2c,
 	return 0;
 }
 
-static int act8945a_i2c_remove(struct i2c_client *i2c)
-{
-	mfd_remove_devices(&i2c->dev);
-
-	return 0;
-}
-
 static const struct i2c_device_id act8945a_i2c_id[] = {
 	{ "act8945a", 0 },
 	{}
@@ -81,7 +75,6 @@ static struct i2c_driver act8945a_i2c_driver = {
 		   .of_match_table = of_match_ptr(act8945a_of_match),
 	},
 	.probe = act8945a_i2c_probe,
-	.remove = act8945a_i2c_remove,
 	.id_table = act8945a_i2c_id,
 };
 
-- 
2.1.4

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

* [PATCH 04/20] mfd: as3711: Use devm_mfd_add_devices() for mfd_device registration
  2016-04-05 11:48 [PATCH 00/20] mfd: Add devm_ apis for mfd_add_devices and mfd_release_devices Laxman Dewangan
                   ` (2 preceding siblings ...)
  2016-04-05 11:48 ` [PATCH 03/20] mfd: act8945a: Use devm_mfd_add_devices() for mfd_device registration Laxman Dewangan
@ 2016-04-05 11:48 ` Laxman Dewangan
  2016-04-05 11:48 ` [PATCH 05/20] mfd: atmel-hlcdc: " Laxman Dewangan
                   ` (15 subsequent siblings)
  19 siblings, 0 replies; 32+ messages in thread
From: Laxman Dewangan @ 2016-04-05 11:48 UTC (permalink / raw)
  To: lee.jones, corbet
  Cc: andreas.werner, tony, linux-doc, linux-kernel, linux-omap,
	patches, Laxman Dewangan, Guennadi Liakhovetski

Use devm_mfd_add_devices() for mfd devices registration and get
rid of .remove callback to remove mfd devices. This is done
by managed device framework.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
CC: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
---
 drivers/mfd/as3711.c | 11 +----------
 1 file changed, 1 insertion(+), 10 deletions(-)

diff --git a/drivers/mfd/as3711.c b/drivers/mfd/as3711.c
index 09e1483..435bfa6 100644
--- a/drivers/mfd/as3711.c
+++ b/drivers/mfd/as3711.c
@@ -189,7 +189,7 @@ static int as3711_i2c_probe(struct i2c_client *client,
 		as3711_subdevs[AS3711_BACKLIGHT].pdata_size = 0;
 	}
 
-	ret = mfd_add_devices(as3711->dev, -1, as3711_subdevs,
+	ret = devm_mfd_add_devices(as3711->dev, -1, as3711_subdevs,
 			      ARRAY_SIZE(as3711_subdevs), NULL, 0, NULL);
 	if (ret < 0)
 		dev_err(&client->dev, "add mfd devices failed: %d\n", ret);
@@ -197,14 +197,6 @@ static int as3711_i2c_probe(struct i2c_client *client,
 	return ret;
 }
 
-static int as3711_i2c_remove(struct i2c_client *client)
-{
-	struct as3711 *as3711 = i2c_get_clientdata(client);
-
-	mfd_remove_devices(as3711->dev);
-	return 0;
-}
-
 static const struct i2c_device_id as3711_i2c_id[] = {
 	{.name = "as3711", .driver_data = 0},
 	{}
@@ -218,7 +210,6 @@ static struct i2c_driver as3711_i2c_driver = {
 		   .of_match_table = of_match_ptr(as3711_of_match),
 	},
 	.probe = as3711_i2c_probe,
-	.remove = as3711_i2c_remove,
 	.id_table = as3711_i2c_id,
 };
 
-- 
2.1.4

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

* [PATCH 05/20] mfd: atmel-hlcdc: Use devm_mfd_add_devices() for mfd_device registration
  2016-04-05 11:48 [PATCH 00/20] mfd: Add devm_ apis for mfd_add_devices and mfd_release_devices Laxman Dewangan
                   ` (3 preceding siblings ...)
  2016-04-05 11:48 ` [PATCH 04/20] mfd: as3711: " Laxman Dewangan
@ 2016-04-05 11:48 ` Laxman Dewangan
  2016-04-05 17:09   ` Boris Brezillon
  2016-04-05 11:48 ` [PATCH 06/20] mfd: bcm590xx: " Laxman Dewangan
                   ` (14 subsequent siblings)
  19 siblings, 1 reply; 32+ messages in thread
From: Laxman Dewangan @ 2016-04-05 11:48 UTC (permalink / raw)
  To: lee.jones, corbet
  Cc: andreas.werner, tony, linux-doc, linux-kernel, linux-omap,
	patches, Laxman Dewangan, Boris Brezillon

Use devm_mfd_add_devices() for mfd devices registration and get
rid of .remove callback to remove mfd devices. This is done
by managed device framework.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
CC: Boris Brezillon <boris.brezillon@free-electrons.com>
---
 drivers/mfd/atmel-hlcdc.c | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/drivers/mfd/atmel-hlcdc.c b/drivers/mfd/atmel-hlcdc.c
index 06c2058..653bf261 100644
--- a/drivers/mfd/atmel-hlcdc.c
+++ b/drivers/mfd/atmel-hlcdc.c
@@ -128,18 +128,11 @@ static int atmel_hlcdc_probe(struct platform_device *pdev)
 
 	dev_set_drvdata(dev, hlcdc);
 
-	return mfd_add_devices(dev, -1, atmel_hlcdc_cells,
+	return devm_mfd_add_devices(dev, -1, atmel_hlcdc_cells,
 			       ARRAY_SIZE(atmel_hlcdc_cells),
 			       NULL, 0, NULL);
 }
 
-static int atmel_hlcdc_remove(struct platform_device *pdev)
-{
-	mfd_remove_devices(&pdev->dev);
-
-	return 0;
-}
-
 static const struct of_device_id atmel_hlcdc_match[] = {
 	{ .compatible = "atmel,at91sam9n12-hlcdc" },
 	{ .compatible = "atmel,at91sam9x5-hlcdc" },
@@ -152,7 +145,6 @@ MODULE_DEVICE_TABLE(of, atmel_hlcdc_match);
 
 static struct platform_driver atmel_hlcdc_driver = {
 	.probe = atmel_hlcdc_probe,
-	.remove = atmel_hlcdc_remove,
 	.driver = {
 		.name = "atmel-hlcdc",
 		.of_match_table = atmel_hlcdc_match,
-- 
2.1.4

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

* [PATCH 06/20] mfd: bcm590xx: Use devm_mfd_add_devices() for mfd_device registration
  2016-04-05 11:48 [PATCH 00/20] mfd: Add devm_ apis for mfd_add_devices and mfd_release_devices Laxman Dewangan
                   ` (4 preceding siblings ...)
  2016-04-05 11:48 ` [PATCH 05/20] mfd: atmel-hlcdc: " Laxman Dewangan
@ 2016-04-05 11:48 ` Laxman Dewangan
  2016-04-05 11:48 ` [PATCH 07/20] mfd: hi6421-pmic: " Laxman Dewangan
                   ` (13 subsequent siblings)
  19 siblings, 0 replies; 32+ messages in thread
From: Laxman Dewangan @ 2016-04-05 11:48 UTC (permalink / raw)
  To: lee.jones, corbet
  Cc: andreas.werner, tony, linux-doc, linux-kernel, linux-omap,
	patches, Laxman Dewangan, Matt Porter

Use devm_mfd_add_devices() for mfd devices registration and get
rid of .remove callback to remove mfd devices. This is done
by managed device framework.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
CC: Matt Porter <mporter@linaro.org>
---
 drivers/mfd/bcm590xx.c | 9 +--------
 1 file changed, 1 insertion(+), 8 deletions(-)

diff --git a/drivers/mfd/bcm590xx.c b/drivers/mfd/bcm590xx.c
index 320aaef..eeb8bdf 100644
--- a/drivers/mfd/bcm590xx.c
+++ b/drivers/mfd/bcm590xx.c
@@ -82,7 +82,7 @@ static int bcm590xx_i2c_probe(struct i2c_client *i2c_pri,
 		goto err;
 	}
 
-	ret = mfd_add_devices(&i2c_pri->dev, -1, bcm590xx_devs,
+	ret = devm_mfd_add_devices(&i2c_pri->dev, -1, bcm590xx_devs,
 			      ARRAY_SIZE(bcm590xx_devs), NULL, 0, NULL);
 	if (ret < 0) {
 		dev_err(&i2c_pri->dev, "failed to add sub-devices: %d\n", ret);
@@ -96,12 +96,6 @@ err:
 	return ret;
 }
 
-static int bcm590xx_i2c_remove(struct i2c_client *i2c)
-{
-	mfd_remove_devices(&i2c->dev);
-	return 0;
-}
-
 static const struct of_device_id bcm590xx_of_match[] = {
 	{ .compatible = "brcm,bcm59056" },
 	{ }
@@ -120,7 +114,6 @@ static struct i2c_driver bcm590xx_i2c_driver = {
 		   .of_match_table = of_match_ptr(bcm590xx_of_match),
 	},
 	.probe = bcm590xx_i2c_probe,
-	.remove = bcm590xx_i2c_remove,
 	.id_table = bcm590xx_i2c_id,
 };
 module_i2c_driver(bcm590xx_i2c_driver);
-- 
2.1.4

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

* [PATCH 07/20] mfd: hi6421-pmic: Use devm_mfd_add_devices() for mfd_device registration
  2016-04-05 11:48 [PATCH 00/20] mfd: Add devm_ apis for mfd_add_devices and mfd_release_devices Laxman Dewangan
                   ` (5 preceding siblings ...)
  2016-04-05 11:48 ` [PATCH 06/20] mfd: bcm590xx: " Laxman Dewangan
@ 2016-04-05 11:48 ` Laxman Dewangan
  2016-04-05 11:48 ` [PATCH 08/20] mfd: lp3943: " Laxman Dewangan
                   ` (12 subsequent siblings)
  19 siblings, 0 replies; 32+ messages in thread
From: Laxman Dewangan @ 2016-04-05 11:48 UTC (permalink / raw)
  To: lee.jones, corbet
  Cc: andreas.werner, tony, linux-doc, linux-kernel, linux-omap,
	patches, Laxman Dewangan, Guodong Xu

Use devm_mfd_add_devices() for mfd devices registration and get
rid of .remove callback to remove mfd devices. This is done
by managed device framework.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
CC: Guodong Xu <guodong.xu@linaro.org>
---
 drivers/mfd/hi6421-pmic-core.c | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/drivers/mfd/hi6421-pmic-core.c b/drivers/mfd/hi6421-pmic-core.c
index f9ded45..74ffff6 100644
--- a/drivers/mfd/hi6421-pmic-core.c
+++ b/drivers/mfd/hi6421-pmic-core.c
@@ -76,7 +76,7 @@ static int hi6421_pmic_probe(struct platform_device *pdev)
 
 	platform_set_drvdata(pdev, pmic);
 
-	ret = mfd_add_devices(&pdev->dev, 0, hi6421_devs,
+	ret = devm_mfd_add_devices(&pdev->dev, 0, hi6421_devs,
 			ARRAY_SIZE(hi6421_devs), NULL, 0, NULL);
 	if (ret) {
 		dev_err(&pdev->dev, "add mfd devices failed: %d\n", ret);
@@ -86,13 +86,6 @@ static int hi6421_pmic_probe(struct platform_device *pdev)
 	return 0;
 }
 
-static int hi6421_pmic_remove(struct platform_device *pdev)
-{
-	mfd_remove_devices(&pdev->dev);
-
-	return 0;
-}
-
 static const struct of_device_id of_hi6421_pmic_match_tbl[] = {
 	{ .compatible = "hisilicon,hi6421-pmic", },
 	{ },
@@ -105,7 +98,6 @@ static struct platform_driver hi6421_pmic_driver = {
 		.of_match_table = of_hi6421_pmic_match_tbl,
 	},
 	.probe	= hi6421_pmic_probe,
-	.remove	= hi6421_pmic_remove,
 };
 module_platform_driver(hi6421_pmic_driver);
 
-- 
2.1.4

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

* [PATCH 08/20] mfd: lp3943: Use devm_mfd_add_devices() for mfd_device registration
  2016-04-05 11:48 [PATCH 00/20] mfd: Add devm_ apis for mfd_add_devices and mfd_release_devices Laxman Dewangan
                   ` (6 preceding siblings ...)
  2016-04-05 11:48 ` [PATCH 07/20] mfd: hi6421-pmic: " Laxman Dewangan
@ 2016-04-05 11:48 ` Laxman Dewangan
  2016-04-05 23:59   ` Kim, Milo
  2016-04-05 11:48 ` [PATCH 09/20] mfd: menf21bmc: " Laxman Dewangan
                   ` (11 subsequent siblings)
  19 siblings, 1 reply; 32+ messages in thread
From: Laxman Dewangan @ 2016-04-05 11:48 UTC (permalink / raw)
  To: lee.jones, corbet
  Cc: andreas.werner, tony, linux-doc, linux-kernel, linux-omap,
	patches, Laxman Dewangan, Milo Kim

Use devm_mfd_add_devices() for mfd devices registration and get
rid of .remove callback to remove mfd devices. This is done
by managed device framework.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
CC: Milo Kim <milo.kim@ti.com>
---
 drivers/mfd/lp3943.c | 14 +++-----------
 1 file changed, 3 insertions(+), 11 deletions(-)

diff --git a/drivers/mfd/lp3943.c b/drivers/mfd/lp3943.c
index eecbb13..65a2a8f1 100644
--- a/drivers/mfd/lp3943.c
+++ b/drivers/mfd/lp3943.c
@@ -123,16 +123,9 @@ static int lp3943_probe(struct i2c_client *cl, const struct i2c_device_id *id)
 	lp3943->mux_cfg = lp3943_mux_cfg;
 	i2c_set_clientdata(cl, lp3943);
 
-	return mfd_add_devices(dev, -1, lp3943_devs, ARRAY_SIZE(lp3943_devs),
-			       NULL, 0, NULL);
-}
-
-static int lp3943_remove(struct i2c_client *cl)
-{
-	struct lp3943 *lp3943 = i2c_get_clientdata(cl);
-
-	mfd_remove_devices(lp3943->dev);
-	return 0;
+	return devm_mfd_add_devices(dev, -1, lp3943_devs,
+				    ARRAY_SIZE(lp3943_devs),
+				    NULL, 0, NULL);
 }
 
 static const struct i2c_device_id lp3943_ids[] = {
@@ -151,7 +144,6 @@ MODULE_DEVICE_TABLE(of, lp3943_of_match);
 
 static struct i2c_driver lp3943_driver = {
 	.probe = lp3943_probe,
-	.remove = lp3943_remove,
 	.driver = {
 		.name = "lp3943",
 		.of_match_table = of_match_ptr(lp3943_of_match),
-- 
2.1.4

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

* [PATCH 09/20] mfd: menf21bmc: Use devm_mfd_add_devices() for mfd_device registration
  2016-04-05 11:48 [PATCH 00/20] mfd: Add devm_ apis for mfd_add_devices and mfd_release_devices Laxman Dewangan
                   ` (7 preceding siblings ...)
  2016-04-05 11:48 ` [PATCH 08/20] mfd: lp3943: " Laxman Dewangan
@ 2016-04-05 11:48 ` Laxman Dewangan
  2016-04-05 13:00   ` Andreas Werner
  2016-04-05 11:48 ` [PATCH 10/20] mfd: mt6397: " Laxman Dewangan
                   ` (10 subsequent siblings)
  19 siblings, 1 reply; 32+ messages in thread
From: Laxman Dewangan @ 2016-04-05 11:48 UTC (permalink / raw)
  To: lee.jones, corbet
  Cc: andreas.werner, tony, linux-doc, linux-kernel, linux-omap,
	patches, Laxman Dewangan

Use devm_mfd_add_devices() for mfd devices registration and get
rid of .remove callback to remove mfd devices. This is done
by managed device framework.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
CC: Andreas Werner <andreas.werner@men.de>
---
 drivers/mfd/menf21bmc.c | 9 +--------
 1 file changed, 1 insertion(+), 8 deletions(-)

diff --git a/drivers/mfd/menf21bmc.c b/drivers/mfd/menf21bmc.c
index 1c27434..b43873f 100644
--- a/drivers/mfd/menf21bmc.c
+++ b/drivers/mfd/menf21bmc.c
@@ -96,7 +96,7 @@ menf21bmc_probe(struct i2c_client *client, const struct i2c_device_id *ids)
 		return ret;
 	}
 
-	ret = mfd_add_devices(&client->dev, 0, menf21bmc_cell,
+	ret = devm_mfd_add_devices(&client->dev, 0, menf21bmc_cell,
 			      ARRAY_SIZE(menf21bmc_cell), NULL, 0, NULL);
 	if (ret < 0) {
 		dev_err(&client->dev, "failed to add BMC sub-devices\n");
@@ -106,12 +106,6 @@ menf21bmc_probe(struct i2c_client *client, const struct i2c_device_id *ids)
 	return 0;
 }
 
-static int menf21bmc_remove(struct i2c_client *client)
-{
-	mfd_remove_devices(&client->dev);
-	return 0;
-}
-
 static const struct i2c_device_id menf21bmc_id_table[] = {
 	{ "menf21bmc" },
 	{ }
@@ -122,7 +116,6 @@ static struct i2c_driver menf21bmc_driver = {
 	.driver.name	= "menf21bmc",
 	.id_table	= menf21bmc_id_table,
 	.probe		= menf21bmc_probe,
-	.remove		= menf21bmc_remove,
 };
 
 module_i2c_driver(menf21bmc_driver);
-- 
2.1.4

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

* [PATCH 10/20] mfd: mt6397: Use devm_mfd_add_devices() for mfd_device registration
  2016-04-05 11:48 [PATCH 00/20] mfd: Add devm_ apis for mfd_add_devices and mfd_release_devices Laxman Dewangan
                   ` (8 preceding siblings ...)
  2016-04-05 11:48 ` [PATCH 09/20] mfd: menf21bmc: " Laxman Dewangan
@ 2016-04-05 11:48 ` Laxman Dewangan
  2016-04-05 12:53   ` Javier Martinez Canillas
  2016-04-05 11:48 ` [PATCH 11/20] mfd: rdc321x: " Laxman Dewangan
                   ` (9 subsequent siblings)
  19 siblings, 1 reply; 32+ messages in thread
From: Laxman Dewangan @ 2016-04-05 11:48 UTC (permalink / raw)
  To: lee.jones, corbet
  Cc: andreas.werner, tony, linux-doc, linux-kernel, linux-omap,
	patches, Laxman Dewangan, John Crispin, Javier Martinez Canillas

Use devm_mfd_add_devices() for mfd devices registration and get
rid of .remove callback to remove mfd devices. This is done
by managed device framework.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
CC: John Crispin <blogic@openwrt.org>
CC: Javier Martinez Canillas <javier@osg.samsung.com>
---
 drivers/mfd/mt6397-core.c | 12 ++----------
 1 file changed, 2 insertions(+), 10 deletions(-)

diff --git a/drivers/mfd/mt6397-core.c b/drivers/mfd/mt6397-core.c
index 8e8d932..2ea7788 100644
--- a/drivers/mfd/mt6397-core.c
+++ b/drivers/mfd/mt6397-core.c
@@ -276,7 +276,7 @@ static int mt6397_probe(struct platform_device *pdev)
 		pmic->int_con[1] = MT6323_INT_CON1;
 		pmic->int_status[0] = MT6323_INT_STATUS0;
 		pmic->int_status[1] = MT6323_INT_STATUS1;
-		ret = mfd_add_devices(&pdev->dev, -1, mt6323_devs,
+		ret = devm_mfd_add_devices(&pdev->dev, -1, mt6323_devs,
 				ARRAY_SIZE(mt6323_devs), NULL, 0, NULL);
 		break;
 
@@ -286,7 +286,7 @@ static int mt6397_probe(struct platform_device *pdev)
 		pmic->int_con[1] = MT6397_INT_CON1;
 		pmic->int_status[0] = MT6397_INT_STATUS0;
 		pmic->int_status[1] = MT6397_INT_STATUS1;
-		ret = mfd_add_devices(&pdev->dev, -1, mt6397_devs,
+		ret = devm_mfd_add_devices(&pdev->dev, -1, mt6397_devs,
 				ARRAY_SIZE(mt6397_devs), NULL, 0, NULL);
 		break;
 
@@ -312,13 +312,6 @@ fail_irq:
 	return ret;
 }
 
-static int mt6397_remove(struct platform_device *pdev)
-{
-	mfd_remove_devices(&pdev->dev);
-
-	return 0;
-}
-
 static const struct of_device_id mt6397_of_match[] = {
 	{ .compatible = "mediatek,mt6397" },
 	{ .compatible = "mediatek,mt6323" },
@@ -334,7 +327,6 @@ MODULE_DEVICE_TABLE(platform, mt6397_id);
 
 static struct platform_driver mt6397_driver = {
 	.probe = mt6397_probe,
-	.remove = mt6397_remove,
 	.driver = {
 		.name = "mt6397",
 		.of_match_table = of_match_ptr(mt6397_of_match),
-- 
2.1.4

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

* [PATCH 11/20] mfd: rdc321x: Use devm_mfd_add_devices() for mfd_device registration
  2016-04-05 11:48 [PATCH 00/20] mfd: Add devm_ apis for mfd_add_devices and mfd_release_devices Laxman Dewangan
                   ` (9 preceding siblings ...)
  2016-04-05 11:48 ` [PATCH 10/20] mfd: mt6397: " Laxman Dewangan
@ 2016-04-05 11:48 ` Laxman Dewangan
  2016-04-05 11:48 ` [PATCH 12/20] mfd: rk808: " Laxman Dewangan
                   ` (8 subsequent siblings)
  19 siblings, 0 replies; 32+ messages in thread
From: Laxman Dewangan @ 2016-04-05 11:48 UTC (permalink / raw)
  To: lee.jones, corbet
  Cc: andreas.werner, tony, linux-doc, linux-kernel, linux-omap,
	patches, Laxman Dewangan, Florian Fainelli

Use devm_mfd_add_devices() for mfd devices registration and get
rid of .remove callback to remove mfd devices. This is done
by managed device framework.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
CC: Florian Fainelli <florian@openwrt.org>
---
 drivers/mfd/rdc321x-southbridge.c | 8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)

diff --git a/drivers/mfd/rdc321x-southbridge.c b/drivers/mfd/rdc321x-southbridge.c
index 6575585..3ddb644 100644
--- a/drivers/mfd/rdc321x-southbridge.c
+++ b/drivers/mfd/rdc321x-southbridge.c
@@ -85,16 +85,11 @@ static int rdc321x_sb_probe(struct pci_dev *pdev,
 	rdc321x_gpio_pdata.sb_pdev = pdev;
 	rdc321x_wdt_pdata.sb_pdev = pdev;
 
-	return mfd_add_devices(&pdev->dev, -1,
+	return devm_mfd_add_devices(&pdev->dev, -1,
 			       rdc321x_sb_cells, ARRAY_SIZE(rdc321x_sb_cells),
 			       NULL, 0, NULL);
 }
 
-static void rdc321x_sb_remove(struct pci_dev *pdev)
-{
-	mfd_remove_devices(&pdev->dev);
-}
-
 static const struct pci_device_id rdc321x_sb_table[] = {
 	{ PCI_DEVICE(PCI_VENDOR_ID_RDC, PCI_DEVICE_ID_RDC_R6030) },
 	{}
@@ -105,7 +100,6 @@ static struct pci_driver rdc321x_sb_driver = {
 	.name		= "RDC321x Southbridge",
 	.id_table	= rdc321x_sb_table,
 	.probe		= rdc321x_sb_probe,
-	.remove		= rdc321x_sb_remove,
 };
 
 module_pci_driver(rdc321x_sb_driver);
-- 
2.1.4

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

* [PATCH 12/20] mfd: rk808: Use devm_mfd_add_devices() for mfd_device registration
  2016-04-05 11:48 [PATCH 00/20] mfd: Add devm_ apis for mfd_add_devices and mfd_release_devices Laxman Dewangan
                   ` (10 preceding siblings ...)
  2016-04-05 11:48 ` [PATCH 11/20] mfd: rdc321x: " Laxman Dewangan
@ 2016-04-05 11:48 ` Laxman Dewangan
  2016-04-05 11:48 ` [PATCH 13/20] mfd: rn5t618: " Laxman Dewangan
                   ` (7 subsequent siblings)
  19 siblings, 0 replies; 32+ messages in thread
From: Laxman Dewangan @ 2016-04-05 11:48 UTC (permalink / raw)
  To: lee.jones, corbet
  Cc: andreas.werner, tony, linux-doc, linux-kernel, linux-omap,
	patches, Laxman Dewangan, Chris Zhong

Use devm_mfd_add_devices() for mfd devices registration and remove
the call of mfd_remove_devices() from .remove callback to remove
mfd devices. This is done by managed device framework.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
CC: Chris Zhong <zyw@rock-chips.com>
---
 drivers/mfd/rk808.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/mfd/rk808.c b/drivers/mfd/rk808.c
index 4b1e439..a3026ca 100644
--- a/drivers/mfd/rk808.c
+++ b/drivers/mfd/rk808.c
@@ -213,7 +213,7 @@ static int rk808_probe(struct i2c_client *client,
 	rk808->i2c = client;
 	i2c_set_clientdata(client, rk808);
 
-	ret = mfd_add_devices(&client->dev, -1,
+	ret = devm_mfd_add_devices(&client->dev, -1,
 			      rk808s, ARRAY_SIZE(rk808s),
 			      NULL, 0, regmap_irq_get_domain(rk808->irq_data));
 	if (ret) {
@@ -240,7 +240,6 @@ static int rk808_remove(struct i2c_client *client)
 	struct rk808 *rk808 = i2c_get_clientdata(client);
 
 	regmap_del_irq_chip(client->irq, rk808->irq_data);
-	mfd_remove_devices(&client->dev);
 	pm_power_off = NULL;
 
 	return 0;
-- 
2.1.4

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

* [PATCH 13/20] mfd: rn5t618: Use devm_mfd_add_devices() for mfd_device registration
  2016-04-05 11:48 [PATCH 00/20] mfd: Add devm_ apis for mfd_add_devices and mfd_release_devices Laxman Dewangan
                   ` (11 preceding siblings ...)
  2016-04-05 11:48 ` [PATCH 12/20] mfd: rk808: " Laxman Dewangan
@ 2016-04-05 11:48 ` Laxman Dewangan
  2016-04-05 11:48 ` [PATCH 14/20] mfd: rt5033: " Laxman Dewangan
                   ` (6 subsequent siblings)
  19 siblings, 0 replies; 32+ messages in thread
From: Laxman Dewangan @ 2016-04-05 11:48 UTC (permalink / raw)
  To: lee.jones, corbet
  Cc: andreas.werner, tony, linux-doc, linux-kernel, linux-omap,
	patches, Laxman Dewangan, Beniamino Galvani

Use devm_mfd_add_devices() for mfd devices registration and remove
the call of mfd_remove_devices() from .remove callback to remove
mfd devices. This is done by managed device framework.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
CC: Beniamino Galvani <b.galvani@gmail.com>
---
 drivers/mfd/rn5t618.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/mfd/rn5t618.c b/drivers/mfd/rn5t618.c
index 6668571..bbc7eca 100644
--- a/drivers/mfd/rn5t618.c
+++ b/drivers/mfd/rn5t618.c
@@ -78,7 +78,7 @@ static int rn5t618_i2c_probe(struct i2c_client *i2c,
 		return ret;
 	}
 
-	ret = mfd_add_devices(&i2c->dev, -1, rn5t618_cells,
+	ret = devm_mfd_add_devices(&i2c->dev, -1, rn5t618_cells,
 			      ARRAY_SIZE(rn5t618_cells), NULL, 0, NULL);
 	if (ret) {
 		dev_err(&i2c->dev, "failed to add sub-devices: %d\n", ret);
@@ -102,7 +102,6 @@ static int rn5t618_i2c_remove(struct i2c_client *i2c)
 		pm_power_off = NULL;
 	}
 
-	mfd_remove_devices(&i2c->dev);
 	return 0;
 }
 
-- 
2.1.4

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

* [PATCH 14/20] mfd: rt5033: Use devm_mfd_add_devices() for mfd_device registration
  2016-04-05 11:48 [PATCH 00/20] mfd: Add devm_ apis for mfd_add_devices and mfd_release_devices Laxman Dewangan
                   ` (12 preceding siblings ...)
  2016-04-05 11:48 ` [PATCH 13/20] mfd: rn5t618: " Laxman Dewangan
@ 2016-04-05 11:48 ` Laxman Dewangan
  2016-04-05 12:54   ` Javier Martinez Canillas
  2016-04-05 11:48 ` [PATCH 15/20] mfd: sky81452: " Laxman Dewangan
                   ` (5 subsequent siblings)
  19 siblings, 1 reply; 32+ messages in thread
From: Laxman Dewangan @ 2016-04-05 11:48 UTC (permalink / raw)
  To: lee.jones, corbet
  Cc: andreas.werner, tony, linux-doc, linux-kernel, linux-omap,
	patches, Laxman Dewangan, Ingi Kim, Javier Martinez Canillas

Use devm_mfd_add_devices() for mfd devices registration and get
rid of .remove callback to remove mfd devices. This is done
by managed device framework.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
CC: Ingi Kim <ingi2.kim@samsung.com>
CC: Javier Martinez Canillas <javier@osg.samsung.com>
---
 drivers/mfd/rt5033.c | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/drivers/mfd/rt5033.c b/drivers/mfd/rt5033.c
index 2b95485..9320684 100644
--- a/drivers/mfd/rt5033.c
+++ b/drivers/mfd/rt5033.c
@@ -97,7 +97,7 @@ static int rt5033_i2c_probe(struct i2c_client *i2c,
 		return ret;
 	}
 
-	ret = mfd_add_devices(rt5033->dev, -1, rt5033_devs,
+	ret = devm_mfd_add_devices(rt5033->dev, -1, rt5033_devs,
 			ARRAY_SIZE(rt5033_devs), NULL, 0,
 			regmap_irq_get_domain(rt5033->irq_data));
 	if (ret < 0) {
@@ -110,13 +110,6 @@ static int rt5033_i2c_probe(struct i2c_client *i2c,
 	return 0;
 }
 
-static int rt5033_i2c_remove(struct i2c_client *i2c)
-{
-	mfd_remove_devices(&i2c->dev);
-
-	return 0;
-}
-
 static const struct i2c_device_id rt5033_i2c_id[] = {
 	{ "rt5033", },
 	{ }
@@ -135,7 +128,6 @@ static struct i2c_driver rt5033_driver = {
 		.of_match_table = of_match_ptr(rt5033_dt_match),
 	},
 	.probe = rt5033_i2c_probe,
-	.remove = rt5033_i2c_remove,
 	.id_table = rt5033_i2c_id,
 };
 module_i2c_driver(rt5033_driver);
-- 
2.1.4

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

* [PATCH 15/20] mfd: sky81452: Use devm_mfd_add_devices() for mfd_device registration
  2016-04-05 11:48 [PATCH 00/20] mfd: Add devm_ apis for mfd_add_devices and mfd_release_devices Laxman Dewangan
                   ` (13 preceding siblings ...)
  2016-04-05 11:48 ` [PATCH 14/20] mfd: rt5033: " Laxman Dewangan
@ 2016-04-05 11:48 ` Laxman Dewangan
  2016-04-05 11:48 ` [PATCH 16/20] mfd: stw481x: " Laxman Dewangan
                   ` (4 subsequent siblings)
  19 siblings, 0 replies; 32+ messages in thread
From: Laxman Dewangan @ 2016-04-05 11:48 UTC (permalink / raw)
  To: lee.jones, corbet
  Cc: andreas.werner, tony, linux-doc, linux-kernel, linux-omap,
	patches, Laxman Dewangan, Gyungoh Yoo

Use devm_mfd_add_devices() for mfd devices registration and get
rid of .remove callback to remove mfd devices. This is done
by managed device framework.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
CC: Gyungoh Yoo <jack.yoo@skyworksinc.com>
---
 drivers/mfd/sky81452.c | 10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)

diff --git a/drivers/mfd/sky81452.c b/drivers/mfd/sky81452.c
index b0c9b04..30a2a67 100644
--- a/drivers/mfd/sky81452.c
+++ b/drivers/mfd/sky81452.c
@@ -64,19 +64,14 @@ static int sky81452_probe(struct i2c_client *client,
 	cells[1].platform_data = pdata->regulator_init_data;
 	cells[1].pdata_size = sizeof(*pdata->regulator_init_data);
 
-	ret = mfd_add_devices(dev, -1, cells, ARRAY_SIZE(cells), NULL, 0, NULL);
+	ret = devm_mfd_add_devices(dev, -1, cells, ARRAY_SIZE(cells),
+				   NULL, 0, NULL);
 	if (ret)
 		dev_err(dev, "failed to add child devices. err=%d\n", ret);
 
 	return ret;
 }
 
-static int sky81452_remove(struct i2c_client *client)
-{
-	mfd_remove_devices(&client->dev);
-	return 0;
-}
-
 static const struct i2c_device_id sky81452_ids[] = {
 	{ "sky81452" },
 	{ }
@@ -97,7 +92,6 @@ static struct i2c_driver sky81452_driver = {
 		.of_match_table = of_match_ptr(sky81452_of_match),
 	},
 	.probe = sky81452_probe,
-	.remove = sky81452_remove,
 	.id_table = sky81452_ids,
 };
 
-- 
2.1.4

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

* [PATCH 16/20] mfd: stw481x: Use devm_mfd_add_devices() for mfd_device registration
  2016-04-05 11:48 [PATCH 00/20] mfd: Add devm_ apis for mfd_add_devices and mfd_release_devices Laxman Dewangan
                   ` (14 preceding siblings ...)
  2016-04-05 11:48 ` [PATCH 15/20] mfd: sky81452: " Laxman Dewangan
@ 2016-04-05 11:48 ` Laxman Dewangan
  2016-04-05 13:18   ` Linus Walleij
  2016-04-05 11:48 ` [PATCH 17/20] mfd: tps6507x: " Laxman Dewangan
                   ` (3 subsequent siblings)
  19 siblings, 1 reply; 32+ messages in thread
From: Laxman Dewangan @ 2016-04-05 11:48 UTC (permalink / raw)
  To: lee.jones, corbet
  Cc: andreas.werner, tony, linux-doc, linux-kernel, linux-omap,
	patches, Laxman Dewangan, Linus Walleij

Use devm_mfd_add_devices() for mfd devices registration and get
rid of .remove callback to remove mfd devices. This is done
by managed device framework.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
CC: Linus Walleij <linus.walleij@linaro.org>
---
 drivers/mfd/stw481x.c | 9 +--------
 1 file changed, 1 insertion(+), 8 deletions(-)

diff --git a/drivers/mfd/stw481x.c b/drivers/mfd/stw481x.c
index ca613df..3f7ef6a 100644
--- a/drivers/mfd/stw481x.c
+++ b/drivers/mfd/stw481x.c
@@ -206,7 +206,7 @@ static int stw481x_probe(struct i2c_client *client,
 		stw481x_cells[i].pdata_size = sizeof(*stw481x);
 	}
 
-	ret = mfd_add_devices(&client->dev, 0, stw481x_cells,
+	ret = devm_mfd_add_devices(&client->dev, 0, stw481x_cells,
 			ARRAY_SIZE(stw481x_cells), NULL, 0, NULL);
 	if (ret)
 		return ret;
@@ -216,12 +216,6 @@ static int stw481x_probe(struct i2c_client *client,
 	return ret;
 }
 
-static int stw481x_remove(struct i2c_client *client)
-{
-	mfd_remove_devices(&client->dev);
-	return 0;
-}
-
 /*
  * This ID table is completely unused, as this is a pure
  * device-tree probed driver, but it has to be here due to
@@ -246,7 +240,6 @@ static struct i2c_driver stw481x_driver = {
 		.of_match_table = stw481x_match,
 	},
 	.probe		= stw481x_probe,
-	.remove		= stw481x_remove,
 	.id_table	= stw481x_id,
 };
 
-- 
2.1.4

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

* [PATCH 17/20] mfd: tps6507x: Use devm_mfd_add_devices() for mfd_device registration
  2016-04-05 11:48 [PATCH 00/20] mfd: Add devm_ apis for mfd_add_devices and mfd_release_devices Laxman Dewangan
                   ` (15 preceding siblings ...)
  2016-04-05 11:48 ` [PATCH 16/20] mfd: stw481x: " Laxman Dewangan
@ 2016-04-05 11:48 ` Laxman Dewangan
  2016-04-05 11:48 ` [PATCH 18/20] mfd: tps65217: " Laxman Dewangan
                   ` (2 subsequent siblings)
  19 siblings, 0 replies; 32+ messages in thread
From: Laxman Dewangan @ 2016-04-05 11:48 UTC (permalink / raw)
  To: lee.jones, corbet
  Cc: andreas.werner, tony, linux-doc, linux-kernel, linux-omap,
	patches, Laxman Dewangan, Todd Fischer

Use devm_mfd_add_devices() for mfd devices registration and get
rid of .remove callback to remove mfd devices. This is done
by managed device framework.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
CC: Todd Fischer <todd.fischer@ridgerun.com>
---
 drivers/mfd/tps6507x.c | 11 +----------
 1 file changed, 1 insertion(+), 10 deletions(-)

diff --git a/drivers/mfd/tps6507x.c b/drivers/mfd/tps6507x.c
index 1ab3dd6..e74239b 100644
--- a/drivers/mfd/tps6507x.c
+++ b/drivers/mfd/tps6507x.c
@@ -100,18 +100,10 @@ static int tps6507x_i2c_probe(struct i2c_client *i2c,
 	tps6507x->read_dev = tps6507x_i2c_read_device;
 	tps6507x->write_dev = tps6507x_i2c_write_device;
 
-	return mfd_add_devices(tps6507x->dev, -1, tps6507x_devs,
+	return devm_mfd_add_devices(tps6507x->dev, -1, tps6507x_devs,
 			       ARRAY_SIZE(tps6507x_devs), NULL, 0, NULL);
 }
 
-static int tps6507x_i2c_remove(struct i2c_client *i2c)
-{
-	struct tps6507x_dev *tps6507x = i2c_get_clientdata(i2c);
-
-	mfd_remove_devices(tps6507x->dev);
-	return 0;
-}
-
 static const struct i2c_device_id tps6507x_i2c_id[] = {
        { "tps6507x", 0 },
        { }
@@ -132,7 +124,6 @@ static struct i2c_driver tps6507x_i2c_driver = {
 		   .of_match_table = of_match_ptr(tps6507x_of_match),
 	},
 	.probe = tps6507x_i2c_probe,
-	.remove = tps6507x_i2c_remove,
 	.id_table = tps6507x_i2c_id,
 };
 
-- 
2.1.4

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

* [PATCH 18/20] mfd: tps65217: Use devm_mfd_add_devices() for mfd_device registration
  2016-04-05 11:48 [PATCH 00/20] mfd: Add devm_ apis for mfd_add_devices and mfd_release_devices Laxman Dewangan
                   ` (16 preceding siblings ...)
  2016-04-05 11:48 ` [PATCH 17/20] mfd: tps6507x: " Laxman Dewangan
@ 2016-04-05 11:48 ` Laxman Dewangan
  2016-04-05 11:48 ` [PATCH 19/20] mfd: tps65910: " Laxman Dewangan
  2016-04-05 11:48 ` [PATCH 20/20] mfd: wm8400: " Laxman Dewangan
  19 siblings, 0 replies; 32+ messages in thread
From: Laxman Dewangan @ 2016-04-05 11:48 UTC (permalink / raw)
  To: lee.jones, corbet
  Cc: andreas.werner, tony, linux-doc, linux-kernel, linux-omap,
	patches, Laxman Dewangan

Use devm_mfd_add_devices() for mfd devices registration and get
rid of .remove callback to remove mfd devices. This is done
by managed device framework.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
CC: Tony Lindgren <tony@atomide.com>
---
 drivers/mfd/tps65217.c | 12 +-----------
 1 file changed, 1 insertion(+), 11 deletions(-)

diff --git a/drivers/mfd/tps65217.c b/drivers/mfd/tps65217.c
index d32b5442..25009da 100644
--- a/drivers/mfd/tps65217.c
+++ b/drivers/mfd/tps65217.c
@@ -205,7 +205,7 @@ static int tps65217_probe(struct i2c_client *client,
 		return ret;
 	}
 
-	ret = mfd_add_devices(tps->dev, -1, tps65217s,
+	ret = devm_mfd_add_devices(tps->dev, -1, tps65217s,
 			      ARRAY_SIZE(tps65217s), NULL, 0, NULL);
 	if (ret < 0) {
 		dev_err(tps->dev, "mfd_add_devices failed: %d\n", ret);
@@ -235,15 +235,6 @@ static int tps65217_probe(struct i2c_client *client,
 	return 0;
 }
 
-static int tps65217_remove(struct i2c_client *client)
-{
-	struct tps65217 *tps = i2c_get_clientdata(client);
-
-	mfd_remove_devices(tps->dev);
-
-	return 0;
-}
-
 static const struct i2c_device_id tps65217_id_table[] = {
 	{"tps65217", TPS65217},
 	{ /* sentinel */ }
@@ -257,7 +248,6 @@ static struct i2c_driver tps65217_driver = {
 	},
 	.id_table	= tps65217_id_table,
 	.probe		= tps65217_probe,
-	.remove		= tps65217_remove,
 };
 
 static int __init tps65217_init(void)
-- 
2.1.4

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

* [PATCH 19/20] mfd: tps65910: Use devm_mfd_add_devices() for mfd_device registration
  2016-04-05 11:48 [PATCH 00/20] mfd: Add devm_ apis for mfd_add_devices and mfd_release_devices Laxman Dewangan
                   ` (17 preceding siblings ...)
  2016-04-05 11:48 ` [PATCH 18/20] mfd: tps65217: " Laxman Dewangan
@ 2016-04-05 11:48 ` Laxman Dewangan
  2016-04-05 11:48 ` [PATCH 20/20] mfd: wm8400: " Laxman Dewangan
  19 siblings, 0 replies; 32+ messages in thread
From: Laxman Dewangan @ 2016-04-05 11:48 UTC (permalink / raw)
  To: lee.jones, corbet
  Cc: andreas.werner, tony, linux-doc, linux-kernel, linux-omap,
	patches, Laxman Dewangan

Use devm_mfd_add_devices() for mfd devices registration and remove
the call of mfd_remove_devices() from .remove callback to remove
mfd devices. This is done by managed device framework.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
CC: Tony Lindgren <tony@atomide.com>
---
 drivers/mfd/tps65910.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/mfd/tps65910.c b/drivers/mfd/tps65910.c
index f7ab115..37ef804 100644
--- a/drivers/mfd/tps65910.c
+++ b/drivers/mfd/tps65910.c
@@ -510,7 +510,7 @@ static int tps65910_i2c_probe(struct i2c_client *i2c,
 		pm_power_off = tps65910_power_off;
 	}
 
-	ret = mfd_add_devices(tps65910->dev, -1,
+	ret = devm_mfd_add_devices(tps65910->dev, -1,
 			      tps65910s, ARRAY_SIZE(tps65910s),
 			      NULL, 0,
 			      regmap_irq_get_domain(tps65910->irq_data));
@@ -528,7 +528,6 @@ static int tps65910_i2c_remove(struct i2c_client *i2c)
 	struct tps65910 *tps65910 = i2c_get_clientdata(i2c);
 
 	tps65910_irq_exit(tps65910);
-	mfd_remove_devices(tps65910->dev);
 
 	return 0;
 }
-- 
2.1.4

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

* [PATCH 20/20] mfd: wm8400: Use devm_mfd_add_devices() for mfd_device registration
  2016-04-05 11:48 [PATCH 00/20] mfd: Add devm_ apis for mfd_add_devices and mfd_release_devices Laxman Dewangan
                   ` (18 preceding siblings ...)
  2016-04-05 11:48 ` [PATCH 19/20] mfd: tps65910: " Laxman Dewangan
@ 2016-04-05 11:48 ` Laxman Dewangan
  2016-04-05 13:38   ` Charles Keepax
  19 siblings, 1 reply; 32+ messages in thread
From: Laxman Dewangan @ 2016-04-05 11:48 UTC (permalink / raw)
  To: lee.jones, corbet
  Cc: andreas.werner, tony, linux-doc, linux-kernel, linux-omap,
	patches, Laxman Dewangan, Mark Brown

Use devm_mfd_add_devices() for mfd devices registration and get
rid of .remove callback to remove mfd devices. This is done
by managed device framework.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
CC: Mark Brown <broonie@kernel.org>
CC: patches@opensource.wolfsonmicro.com
---
 drivers/mfd/wm8400-core.c | 25 +++----------------------
 1 file changed, 3 insertions(+), 22 deletions(-)

diff --git a/drivers/mfd/wm8400-core.c b/drivers/mfd/wm8400-core.c
index 3bd44a4..9fd8230 100644
--- a/drivers/mfd/wm8400-core.c
+++ b/drivers/mfd/wm8400-core.c
@@ -70,7 +70,7 @@ static int wm8400_register_codec(struct wm8400 *wm8400)
 		.pdata_size = sizeof(*wm8400),
 	};
 
-	return mfd_add_devices(wm8400->dev, -1, &cell, 1, NULL, 0, NULL);
+	return devm_mfd_add_devices(wm8400->dev, -1, &cell, 1, NULL, 0, NULL);
 }
 
 /*
@@ -111,7 +111,7 @@ static int wm8400_init(struct wm8400 *wm8400,
 	ret = wm8400_register_codec(wm8400);
 	if (ret != 0) {
 		dev_err(wm8400->dev, "Failed to register codec\n");
-		goto err_children;
+		return ret;
 	}
 
 	if (pdata && pdata->platform_init) {
@@ -119,21 +119,12 @@ static int wm8400_init(struct wm8400 *wm8400,
 		if (ret != 0) {
 			dev_err(wm8400->dev, "Platform init failed: %d\n",
 				ret);
-			goto err_children;
+			return ret;
 		}
 	} else
 		dev_warn(wm8400->dev, "No platform initialisation supplied\n");
 
 	return 0;
-
-err_children:
-	mfd_remove_devices(wm8400->dev);
-	return ret;
-}
-
-static void wm8400_release(struct wm8400 *wm8400)
-{
-	mfd_remove_devices(wm8400->dev);
 }
 
 static const struct regmap_config wm8400_regmap_config = {
@@ -176,15 +167,6 @@ static int wm8400_i2c_probe(struct i2c_client *i2c,
 	return wm8400_init(wm8400, dev_get_platdata(&i2c->dev));
 }
 
-static int wm8400_i2c_remove(struct i2c_client *i2c)
-{
-	struct wm8400 *wm8400 = i2c_get_clientdata(i2c);
-
-	wm8400_release(wm8400);
-
-	return 0;
-}
-
 static const struct i2c_device_id wm8400_i2c_id[] = {
        { "wm8400", 0 },
        { }
@@ -196,7 +178,6 @@ static struct i2c_driver wm8400_i2c_driver = {
 		.name = "WM8400",
 	},
 	.probe    = wm8400_i2c_probe,
-	.remove   = wm8400_i2c_remove,
 	.id_table = wm8400_i2c_id,
 };
 #endif
-- 
2.1.4

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

* Re: [PATCH 10/20] mfd: mt6397: Use devm_mfd_add_devices() for mfd_device registration
  2016-04-05 11:48 ` [PATCH 10/20] mfd: mt6397: " Laxman Dewangan
@ 2016-04-05 12:53   ` Javier Martinez Canillas
  0 siblings, 0 replies; 32+ messages in thread
From: Javier Martinez Canillas @ 2016-04-05 12:53 UTC (permalink / raw)
  To: Laxman Dewangan, lee.jones, corbet
  Cc: andreas.werner, tony, linux-doc, linux-kernel, linux-omap,
	patches, John Crispin

Hello Laxman,

On 04/05/2016 07:48 AM, Laxman Dewangan wrote:
> Use devm_mfd_add_devices() for mfd devices registration and get
> rid of .remove callback to remove mfd devices. This is done
> by managed device framework.
> 
> Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
> CC: John Crispin <blogic@openwrt.org>
> CC: Javier Martinez Canillas <javier@osg.samsung.com>
> ---

Patch looks good to me.

Reviewed-by: Javier Martinez Canillas <javier@osg.samsung.com>

Best regards,
-- 
Javier Martinez Canillas
Open Source Group
Samsung Research America

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

* Re: [PATCH 14/20] mfd: rt5033: Use devm_mfd_add_devices() for mfd_device registration
  2016-04-05 11:48 ` [PATCH 14/20] mfd: rt5033: " Laxman Dewangan
@ 2016-04-05 12:54   ` Javier Martinez Canillas
  0 siblings, 0 replies; 32+ messages in thread
From: Javier Martinez Canillas @ 2016-04-05 12:54 UTC (permalink / raw)
  To: Laxman Dewangan, lee.jones, corbet
  Cc: andreas.werner, tony, linux-doc, linux-kernel, linux-omap,
	patches, Ingi Kim

Hello Laxman,

On 04/05/2016 07:48 AM, Laxman Dewangan wrote:
> Use devm_mfd_add_devices() for mfd devices registration and get
> rid of .remove callback to remove mfd devices. This is done
> by managed device framework.
> 
> Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
> CC: Ingi Kim <ingi2.kim@samsung.com>
> CC: Javier Martinez Canillas <javier@osg.samsung.com>
> ---

Reviewed-by: Javier Martinez Canillas <javier@osg.samsung.com>

Best regards,
-- 
Javier Martinez Canillas
Open Source Group
Samsung Research America

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

* Re: [PATCH 09/20] mfd: menf21bmc: Use devm_mfd_add_devices() for mfd_device registration
  2016-04-05 11:48 ` [PATCH 09/20] mfd: menf21bmc: " Laxman Dewangan
@ 2016-04-05 13:00   ` Andreas Werner
  0 siblings, 0 replies; 32+ messages in thread
From: Andreas Werner @ 2016-04-05 13:00 UTC (permalink / raw)
  To: Laxman Dewangan
  Cc: lee.jones, corbet, andreas.werner, tony, linux-doc, linux-kernel,
	linux-omap, patches

On Tue, Apr 05, 2016 at 05:18:21PM +0530, Laxman Dewangan wrote:
> Use devm_mfd_add_devices() for mfd devices registration and get
> rid of .remove callback to remove mfd devices. This is done
> by managed device framework.
> 
> Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
> CC: Andreas Werner <andreas.werner@men.de>
> ---

Thanks for the Patch, looks good to me.

Reviewed-by: Andreas Werner <andreas.werner@men.de>

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

* Re: [PATCH 16/20] mfd: stw481x: Use devm_mfd_add_devices() for mfd_device registration
  2016-04-05 11:48 ` [PATCH 16/20] mfd: stw481x: " Laxman Dewangan
@ 2016-04-05 13:18   ` Linus Walleij
  0 siblings, 0 replies; 32+ messages in thread
From: Linus Walleij @ 2016-04-05 13:18 UTC (permalink / raw)
  To: Laxman Dewangan
  Cc: Lee Jones, Jon Corbet, Andreas Werner, Tony Lindgren, linux-doc,
	linux-kernel, Linux-OMAP,
	open list:WOLFSON MICROELECTRONICS DRIVERS

On Tue, Apr 5, 2016 at 1:48 PM, Laxman Dewangan <ldewangan@nvidia.com> wrote:

> Use devm_mfd_add_devices() for mfd devices registration and get
> rid of .remove callback to remove mfd devices. This is done
> by managed device framework.
>
> Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
> CC: Linus Walleij <linus.walleij@linaro.org>

Acked-by: Linus Walleij <linus.walleij@linaro.org>

Yours,
Linus Walleij

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

* Re: [PATCH 20/20] mfd: wm8400: Use devm_mfd_add_devices() for mfd_device registration
  2016-04-05 11:48 ` [PATCH 20/20] mfd: wm8400: " Laxman Dewangan
@ 2016-04-05 13:38   ` Charles Keepax
  0 siblings, 0 replies; 32+ messages in thread
From: Charles Keepax @ 2016-04-05 13:38 UTC (permalink / raw)
  To: Laxman Dewangan
  Cc: lee.jones, corbet, andreas.werner, tony, linux-doc, linux-kernel,
	linux-omap, patches, Mark Brown

On Tue, Apr 05, 2016 at 05:18:32PM +0530, Laxman Dewangan wrote:
> Use devm_mfd_add_devices() for mfd devices registration and get
> rid of .remove callback to remove mfd devices. This is done
> by managed device framework.
> 
> Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
> CC: Mark Brown <broonie@kernel.org>
> CC: patches@opensource.wolfsonmicro.com
> ---

Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>

Thanks,
Charles

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

* Re: [PATCH 05/20] mfd: atmel-hlcdc: Use devm_mfd_add_devices() for mfd_device registration
  2016-04-05 11:48 ` [PATCH 05/20] mfd: atmel-hlcdc: " Laxman Dewangan
@ 2016-04-05 17:09   ` Boris Brezillon
  0 siblings, 0 replies; 32+ messages in thread
From: Boris Brezillon @ 2016-04-05 17:09 UTC (permalink / raw)
  To: Laxman Dewangan
  Cc: lee.jones, corbet, andreas.werner, tony, linux-doc, linux-kernel,
	linux-omap, patches

On Tue, 5 Apr 2016 17:18:17 +0530
Laxman Dewangan <ldewangan@nvidia.com> wrote:

> Use devm_mfd_add_devices() for mfd devices registration and get
> rid of .remove callback to remove mfd devices. This is done
> by managed device framework.
> 
> Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
> CC: Boris Brezillon <boris.brezillon@free-electrons.com>

Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com>

> ---
>  drivers/mfd/atmel-hlcdc.c | 10 +---------
>  1 file changed, 1 insertion(+), 9 deletions(-)
> 
> diff --git a/drivers/mfd/atmel-hlcdc.c b/drivers/mfd/atmel-hlcdc.c
> index 06c2058..653bf261 100644
> --- a/drivers/mfd/atmel-hlcdc.c
> +++ b/drivers/mfd/atmel-hlcdc.c
> @@ -128,18 +128,11 @@ static int atmel_hlcdc_probe(struct platform_device *pdev)
>  
>  	dev_set_drvdata(dev, hlcdc);
>  
> -	return mfd_add_devices(dev, -1, atmel_hlcdc_cells,
> +	return devm_mfd_add_devices(dev, -1, atmel_hlcdc_cells,
>  			       ARRAY_SIZE(atmel_hlcdc_cells),
>  			       NULL, 0, NULL);
>  }
>  
> -static int atmel_hlcdc_remove(struct platform_device *pdev)
> -{
> -	mfd_remove_devices(&pdev->dev);
> -
> -	return 0;
> -}
> -
>  static const struct of_device_id atmel_hlcdc_match[] = {
>  	{ .compatible = "atmel,at91sam9n12-hlcdc" },
>  	{ .compatible = "atmel,at91sam9x5-hlcdc" },
> @@ -152,7 +145,6 @@ MODULE_DEVICE_TABLE(of, atmel_hlcdc_match);
>  
>  static struct platform_driver atmel_hlcdc_driver = {
>  	.probe = atmel_hlcdc_probe,
> -	.remove = atmel_hlcdc_remove,
>  	.driver = {
>  		.name = "atmel-hlcdc",
>  		.of_match_table = atmel_hlcdc_match,



-- 
Boris Brezillon, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

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

* Re: [PATCH 08/20] mfd: lp3943: Use devm_mfd_add_devices() for mfd_device registration
  2016-04-05 11:48 ` [PATCH 08/20] mfd: lp3943: " Laxman Dewangan
@ 2016-04-05 23:59   ` Kim, Milo
  0 siblings, 0 replies; 32+ messages in thread
From: Kim, Milo @ 2016-04-05 23:59 UTC (permalink / raw)
  To: Laxman Dewangan
  Cc: lee.jones, corbet, andreas.werner, tony, linux-doc, linux-kernel,
	linux-omap, patches

On 4/5/2016 8:48 PM, Laxman Dewangan wrote:
> Use devm_mfd_add_devices() for mfd devices registration and get
> rid of .remove callback to remove mfd devices. This is done
> by managed device framework.
>
> Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
> CC: Milo Kim <milo.kim@ti.com>

Acked-by: Milo Kim <milo.kim@ti.com>

> ---
>   drivers/mfd/lp3943.c | 14 +++-----------
>   1 file changed, 3 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/mfd/lp3943.c b/drivers/mfd/lp3943.c
> index eecbb13..65a2a8f1 100644
> --- a/drivers/mfd/lp3943.c
> +++ b/drivers/mfd/lp3943.c
> @@ -123,16 +123,9 @@ static int lp3943_probe(struct i2c_client *cl, const struct i2c_device_id *id)
>   	lp3943->mux_cfg = lp3943_mux_cfg;
>   	i2c_set_clientdata(cl, lp3943);
>
> -	return mfd_add_devices(dev, -1, lp3943_devs, ARRAY_SIZE(lp3943_devs),
> -			       NULL, 0, NULL);
> -}
> -
> -static int lp3943_remove(struct i2c_client *cl)
> -{
> -	struct lp3943 *lp3943 = i2c_get_clientdata(cl);
> -
> -	mfd_remove_devices(lp3943->dev);
> -	return 0;
> +	return devm_mfd_add_devices(dev, -1, lp3943_devs,
> +				    ARRAY_SIZE(lp3943_devs),
> +				    NULL, 0, NULL);
>   }
>
>   static const struct i2c_device_id lp3943_ids[] = {
> @@ -151,7 +144,6 @@ MODULE_DEVICE_TABLE(of, lp3943_of_match);
>
>   static struct i2c_driver lp3943_driver = {
>   	.probe = lp3943_probe,
> -	.remove = lp3943_remove,
>   	.driver = {
>   		.name = "lp3943",
>   		.of_match_table = of_match_ptr(lp3943_of_match),
>

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

* Re: [PATCH 01/20] mfd: Add devm_ apis for mfd_add_devices and mfd_release_devices
  2016-04-05 11:48 ` [PATCH 01/20] " Laxman Dewangan
@ 2016-04-07 10:44   ` Lee Jones
  2016-04-07 10:44     ` Laxman Dewangan
  0 siblings, 1 reply; 32+ messages in thread
From: Lee Jones @ 2016-04-07 10:44 UTC (permalink / raw)
  To: Laxman Dewangan
  Cc: corbet, andreas.werner, tony, linux-doc, linux-kernel,
	linux-omap, patches

On Tue, 05 Apr 2016, Laxman Dewangan wrote:

> Add device managed APIs devm_mfd_add_devices() and
> devm_mfd_remove_devices() for the APIs mfd_add_devices()
> and mfd_remove_devices().

Nit: Line wrap after "devm_mfd_remove_devices()" instead.

> This helps in reducing code in error path and sometimes
> removal of .remove callback for driver unbind.

s/for/during/

> Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
> ---
>  drivers/mfd/mfd-core.c   | 62 ++++++++++++++++++++++++++++++++++++++++++++++++
>  include/linux/mfd/core.h |  7 ++++++
>  2 files changed, 69 insertions(+)
> 
> diff --git a/drivers/mfd/mfd-core.c b/drivers/mfd/mfd-core.c
> index 409da01..145712e 100644
> --- a/drivers/mfd/mfd-core.c
> +++ b/drivers/mfd/mfd-core.c
> @@ -334,6 +334,68 @@ void mfd_remove_devices(struct device *parent)
>  }
>  EXPORT_SYMBOL(mfd_remove_devices);
>  
> +static void devm_mfd_dev_release(struct device *dev, void *res)
> +{
> +	mfd_remove_devices(dev);
> +}
> +
> +/**
> + * devm_mfd_add_devices - Resource managed version of mfd_add_devices()
> + *
> + * This returns the 0 on success otherwise error number in the failure.

"Returns 0 on success or an appropriate negative error number on failure."

> + * The allocated mfd devices will automatically be released when the

s/mfd/MFD/

> + * device is unbound.
> + */
> +int devm_mfd_add_devices(struct device *dev, int id,
> +		    const struct mfd_cell *cells, int n_devs,
> +		    struct resource *mem_base,
> +		    int irq_base, struct irq_domain *domain)
> +{
> +	struct device **ptr;
> +	int ret;
> +
> +	ptr = devres_alloc(devm_mfd_dev_release, sizeof(*ptr), GFP_KERNEL);
> +	if (!ptr)
> +		return -ENOMEM;
> +
> +	ret = mfd_add_devices(dev, id, cells, n_devs, mem_base,
> +			      irq_base, domain);
> +	if (!ret) {
> +		*ptr = dev;
> +		devres_add(dev, ptr);
> +	} else {
> +		devres_free(ptr);
> +	}

Switch these round.  If you encounter a problem, free and return.  If
not, skip the error handling and add the device outside of the if().

> +	return ret;
> +}
> +EXPORT_SYMBOL(devm_mfd_add_devices);
> +
> +static int devm_mfd_devs_match(struct device *dev, void *res, void *data)
> +{
> +	struct device **r = res;
> +
> +	if (WARN_ON(!r || !*r))
> +		return 0;
> +
> +	return *r == data;
> +}
> +
> +/**
> + * devm_mfd_remove_device - Resource managed version of mfd_remove_devices()
> + * @dev: Device for which which resource was allocated.

Did you proof read your own writing?  Pleaes re-word.

> + * Remove all mfd devices added on the device.

s/mfd/MFD/

'D' already means devices, so here you are saying "devices devices".
Please re-word.  Besides, you need to be more specific as to which
"devices on the devices" you are detailing, since this sentence
doesn't really make a great deal of sense.

> + * Normally this function will not need to be called and the resource
> + * management code will ensure that the resource is freed.

Then what is the purpose of providing it?  Do you have a user?

> + */
> +void devm_mfd_remove_devices(struct device *dev)
> +{
> +	WARN_ON(devres_release(dev, devm_mfd_dev_release,
> +			       devm_mfd_devs_match, dev));
> +}
> +EXPORT_SYMBOL(devm_mfd_remove_devices);
> +
>  int mfd_clone_cell(const char *cell, const char **clones, size_t n_clones)
>  {
>  	struct mfd_cell cell_entry;
> diff --git a/include/linux/mfd/core.h b/include/linux/mfd/core.h
> index bc6f7e0..d658d7f 100644
> --- a/include/linux/mfd/core.h
> +++ b/include/linux/mfd/core.h
> @@ -131,4 +131,11 @@ static inline int mfd_add_hotplug_devices(struct device *parent,
>  
>  extern void mfd_remove_devices(struct device *parent);
>  
> +extern int devm_mfd_add_devices(struct device *dev, int id,
> +			   const struct mfd_cell *cells, int n_devs,
> +			   struct resource *mem_base,
> +			   int irq_base, struct irq_domain *irq_domain);
> +
> +extern void devm_mfd_remove_devices(struct device *dev);
> +
>  #endif

-- 
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] 32+ messages in thread

* Re: [PATCH 01/20] mfd: Add devm_ apis for mfd_add_devices and mfd_release_devices
  2016-04-07 10:44   ` Lee Jones
@ 2016-04-07 10:44     ` Laxman Dewangan
  2016-04-07 11:42       ` Lee Jones
  0 siblings, 1 reply; 32+ messages in thread
From: Laxman Dewangan @ 2016-04-07 10:44 UTC (permalink / raw)
  To: Lee Jones
  Cc: corbet, andreas.werner, tony, linux-doc, linux-kernel,
	linux-omap, patches

Hi Lee,
Thanks for review.
I will send another patch with incorporating your comments.


On Thursday 07 April 2016 04:14 PM, Lee Jones wrote:
> On Tue, 05 Apr 2016, Laxman Dewangan wrote:
>
> +	if (!ret) {
> +		*ptr = dev;
> +		devres_add(dev, ptr);
> +	} else {
> +		devres_free(ptr);
> +	}
> Switch these round.  If you encounter a problem, free and return.  If
> not, skip the error handling and add the device outside of the if().

Like below?

if (ret) {
      devres_free(ptr);
      return ret;
}

*ptr = dev;
devres_add(dev, ptr);

return ret;

>> + * Remove all mfd devices added on the device.
> s/mfd/MFD/
>
> 'D' already means devices, so here you are saying "devices devices".
> Please re-word.  Besides, you need to be more specific as to which
> "devices on the devices" you are detailing, since this sentence
> doesn't really make a great deal of sense.
Wanted to say
Remove all devices added by mfd_add_devices()  from parent device.


>> + * Normally this function will not need to be called and the resource
>> + * management code will ensure that the resource is freed.
> Then what is the purpose of providing it?  Do you have a user?

To have pair of release. I have not seen the usage of most of 
devm_*_release() function other than devm_kfree().

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

* Re: [PATCH 01/20] mfd: Add devm_ apis for mfd_add_devices and mfd_release_devices
  2016-04-07 10:44     ` Laxman Dewangan
@ 2016-04-07 11:42       ` Lee Jones
  2016-04-07 11:42         ` Laxman Dewangan
  0 siblings, 1 reply; 32+ messages in thread
From: Lee Jones @ 2016-04-07 11:42 UTC (permalink / raw)
  To: Laxman Dewangan
  Cc: corbet, andreas.werner, tony, linux-doc, linux-kernel,
	linux-omap, patches

On Thu, 07 Apr 2016, Laxman Dewangan wrote:

> Hi Lee,
> Thanks for review.
> I will send another patch with incorporating your comments.
> 
> 
> On Thursday 07 April 2016 04:14 PM, Lee Jones wrote:
> >On Tue, 05 Apr 2016, Laxman Dewangan wrote:
> >
> >+	if (!ret) {
> >+		*ptr = dev;
> >+		devres_add(dev, ptr);
> >+	} else {
> >+		devres_free(ptr);
> >+	}
> >Switch these round.  If you encounter a problem, free and return.  If
> >not, skip the error handling and add the device outside of the if().
> 
> Like below?
> 
> if (ret) {
>      devres_free(ptr);
>      return ret;
> }
> 
> *ptr = dev;
> devres_add(dev, ptr);
> 
> return ret;

This is more in line with what I expect, yes.

> >>+ * Remove all mfd devices added on the device.
> >s/mfd/MFD/
> >
> >'D' already means devices, so here you are saying "devices devices".
> >Please re-word.  Besides, you need to be more specific as to which
> >"devices on the devices" you are detailing, since this sentence
> >doesn't really make a great deal of sense.
> Wanted to say
> Remove all devices added by mfd_add_devices()  from parent device.

Remove all chlid-devices?

> >>+ * Normally this function will not need to be called and the resource
> >>+ * management code will ensure that the resource is freed.
> >Then what is the purpose of providing it?  Do you have a user?
> 
> To have pair of release. I have not seen the usage of most of
> devm_*_release() function other than devm_kfree().

Unless you have a need or a user, I would omit this for now.

-- 
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] 32+ messages in thread

* Re: [PATCH 01/20] mfd: Add devm_ apis for mfd_add_devices and mfd_release_devices
  2016-04-07 11:42       ` Lee Jones
@ 2016-04-07 11:42         ` Laxman Dewangan
  0 siblings, 0 replies; 32+ messages in thread
From: Laxman Dewangan @ 2016-04-07 11:42 UTC (permalink / raw)
  To: Lee Jones
  Cc: corbet, andreas.werner, tony, linux-doc, linux-kernel,
	linux-omap, patches


On Thursday 07 April 2016 05:12 PM, Lee Jones wrote:
> On Thu, 07 Apr 2016, Laxman Dewangan wrote:
>
> + * Normally this function will not need to be called and the resource
> + * management code will ensure that the resource is freed.
>>> Then what is the purpose of providing it?  Do you have a user?
>> To have pair of release. I have not seen the usage of most of
>> devm_*_release() function other than devm_kfree().
> Unless you have a need or a user, I would omit this for now.
>
OK, I will remove it.

BTW, I have collected all acks and reviewed by which I got from this series.
So I can send this series with all acks/reviewed by.

If you want me to provide the git location for these patchs then I can 
do it also. For this I will need base from where I need to take branch.

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

end of thread, other threads:[~2016-04-07 11:53 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-05 11:48 [PATCH 00/20] mfd: Add devm_ apis for mfd_add_devices and mfd_release_devices Laxman Dewangan
2016-04-05 11:48 ` [PATCH 01/20] " Laxman Dewangan
2016-04-07 10:44   ` Lee Jones
2016-04-07 10:44     ` Laxman Dewangan
2016-04-07 11:42       ` Lee Jones
2016-04-07 11:42         ` Laxman Dewangan
2016-04-05 11:48 ` [PATCH 02/20] mfd: Add resource management devm_mfd_{add,remove}_devices Laxman Dewangan
2016-04-05 11:48 ` [PATCH 03/20] mfd: act8945a: Use devm_mfd_add_devices() for mfd_device registration Laxman Dewangan
2016-04-05 11:48 ` [PATCH 04/20] mfd: as3711: " Laxman Dewangan
2016-04-05 11:48 ` [PATCH 05/20] mfd: atmel-hlcdc: " Laxman Dewangan
2016-04-05 17:09   ` Boris Brezillon
2016-04-05 11:48 ` [PATCH 06/20] mfd: bcm590xx: " Laxman Dewangan
2016-04-05 11:48 ` [PATCH 07/20] mfd: hi6421-pmic: " Laxman Dewangan
2016-04-05 11:48 ` [PATCH 08/20] mfd: lp3943: " Laxman Dewangan
2016-04-05 23:59   ` Kim, Milo
2016-04-05 11:48 ` [PATCH 09/20] mfd: menf21bmc: " Laxman Dewangan
2016-04-05 13:00   ` Andreas Werner
2016-04-05 11:48 ` [PATCH 10/20] mfd: mt6397: " Laxman Dewangan
2016-04-05 12:53   ` Javier Martinez Canillas
2016-04-05 11:48 ` [PATCH 11/20] mfd: rdc321x: " Laxman Dewangan
2016-04-05 11:48 ` [PATCH 12/20] mfd: rk808: " Laxman Dewangan
2016-04-05 11:48 ` [PATCH 13/20] mfd: rn5t618: " Laxman Dewangan
2016-04-05 11:48 ` [PATCH 14/20] mfd: rt5033: " Laxman Dewangan
2016-04-05 12:54   ` Javier Martinez Canillas
2016-04-05 11:48 ` [PATCH 15/20] mfd: sky81452: " Laxman Dewangan
2016-04-05 11:48 ` [PATCH 16/20] mfd: stw481x: " Laxman Dewangan
2016-04-05 13:18   ` Linus Walleij
2016-04-05 11:48 ` [PATCH 17/20] mfd: tps6507x: " Laxman Dewangan
2016-04-05 11:48 ` [PATCH 18/20] mfd: tps65217: " Laxman Dewangan
2016-04-05 11:48 ` [PATCH 19/20] mfd: tps65910: " Laxman Dewangan
2016-04-05 11:48 ` [PATCH 20/20] mfd: wm8400: " Laxman Dewangan
2016-04-05 13:38   ` Charles Keepax

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).