Message ID | 20191021105822.20271-6-lee.jones@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | Simplify MFD Core | expand |
On Mon, Oct 21, 2019 at 11:58:18AM +0100, Lee Jones wrote: > Providing a subsystem-level API helper seems over-kill just to save a > few lines of C-code. Previous commits saw us convert mfd_clone_cell()'s > only user over to use a more traditional style of MFD child-device > registration. Now we can remove the superfluous helper from the MFD API. > > Signed-off-by: Lee Jones <lee.jones@linaro.org> Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org> > --- > drivers/mfd/mfd-core.c | 33 --------------------------------- > include/linux/mfd/core.h | 18 ------------------ > 2 files changed, 51 deletions(-) > > diff --git a/drivers/mfd/mfd-core.c b/drivers/mfd/mfd-core.c > index 23276a80e3b4..8126665bb2d8 100644 > --- a/drivers/mfd/mfd-core.c > +++ b/drivers/mfd/mfd-core.c > @@ -382,38 +382,5 @@ int devm_mfd_add_devices(struct device *dev, int id, > } > EXPORT_SYMBOL(devm_mfd_add_devices); > > -int mfd_clone_cell(const char *cell, const char **clones, size_t n_clones) > -{ > - struct mfd_cell cell_entry; > - struct device *dev; > - struct platform_device *pdev; > - int i; > - > - /* fetch the parent cell's device (should already be registered!) */ > - dev = bus_find_device_by_name(&platform_bus_type, NULL, cell); > - if (!dev) { > - printk(KERN_ERR "failed to find device for cell %s\n", cell); > - return -ENODEV; > - } > - pdev = to_platform_device(dev); > - memcpy(&cell_entry, mfd_get_cell(pdev), sizeof(cell_entry)); > - > - WARN_ON(!cell_entry.enable); > - > - for (i = 0; i < n_clones; i++) { > - cell_entry.name = clones[i]; > - /* don't give up if a single call fails; just report error */ > - if (mfd_add_device(pdev->dev.parent, -1, &cell_entry, > - cell_entry.usage_count, NULL, 0, NULL)) > - dev_err(dev, "failed to create platform device '%s'\n", > - clones[i]); > - } > - > - put_device(dev); > - > - return 0; > -} > -EXPORT_SYMBOL(mfd_clone_cell); > - > MODULE_LICENSE("GPL"); > MODULE_AUTHOR("Ian Molton, Dmitry Baryshkov"); > diff --git a/include/linux/mfd/core.h b/include/linux/mfd/core.h > index b43fc5773ad7..bd8c0e089164 100644 > --- a/include/linux/mfd/core.h > +++ b/include/linux/mfd/core.h > @@ -86,24 +86,6 @@ struct mfd_cell { > extern int mfd_cell_enable(struct platform_device *pdev); > extern int mfd_cell_disable(struct platform_device *pdev); > > -/* > - * "Clone" multiple platform devices for a single cell. This is to be used > - * for devices that have multiple users of a cell. For example, if an mfd > - * driver wants the cell "foo" to be used by a GPIO driver, an MTD driver, > - * and a platform driver, the following bit of code would be use after first > - * calling mfd_add_devices(): > - * > - * const char *fclones[] = { "foo-gpio", "foo-mtd" }; > - * err = mfd_clone_cells("foo", fclones, ARRAY_SIZE(fclones)); > - * > - * Each driver (MTD, GPIO, and platform driver) would then register > - * platform_drivers for "foo-mtd", "foo-gpio", and "foo", respectively. > - * The cell's .enable/.disable hooks should be used to deal with hardware > - * resource contention. > - */ > -extern int mfd_clone_cell(const char *cell, const char **clones, > - size_t n_clones); > - > /* > * Given a platform device that's been created by mfd_add_devices(), fetch > * the mfd_cell that created it. > -- > 2.17.1 >
diff --git a/drivers/mfd/mfd-core.c b/drivers/mfd/mfd-core.c index 23276a80e3b4..8126665bb2d8 100644 --- a/drivers/mfd/mfd-core.c +++ b/drivers/mfd/mfd-core.c @@ -382,38 +382,5 @@ int devm_mfd_add_devices(struct device *dev, int id, } EXPORT_SYMBOL(devm_mfd_add_devices); -int mfd_clone_cell(const char *cell, const char **clones, size_t n_clones) -{ - struct mfd_cell cell_entry; - struct device *dev; - struct platform_device *pdev; - int i; - - /* fetch the parent cell's device (should already be registered!) */ - dev = bus_find_device_by_name(&platform_bus_type, NULL, cell); - if (!dev) { - printk(KERN_ERR "failed to find device for cell %s\n", cell); - return -ENODEV; - } - pdev = to_platform_device(dev); - memcpy(&cell_entry, mfd_get_cell(pdev), sizeof(cell_entry)); - - WARN_ON(!cell_entry.enable); - - for (i = 0; i < n_clones; i++) { - cell_entry.name = clones[i]; - /* don't give up if a single call fails; just report error */ - if (mfd_add_device(pdev->dev.parent, -1, &cell_entry, - cell_entry.usage_count, NULL, 0, NULL)) - dev_err(dev, "failed to create platform device '%s'\n", - clones[i]); - } - - put_device(dev); - - return 0; -} -EXPORT_SYMBOL(mfd_clone_cell); - MODULE_LICENSE("GPL"); MODULE_AUTHOR("Ian Molton, Dmitry Baryshkov"); diff --git a/include/linux/mfd/core.h b/include/linux/mfd/core.h index b43fc5773ad7..bd8c0e089164 100644 --- a/include/linux/mfd/core.h +++ b/include/linux/mfd/core.h @@ -86,24 +86,6 @@ struct mfd_cell { extern int mfd_cell_enable(struct platform_device *pdev); extern int mfd_cell_disable(struct platform_device *pdev); -/* - * "Clone" multiple platform devices for a single cell. This is to be used - * for devices that have multiple users of a cell. For example, if an mfd - * driver wants the cell "foo" to be used by a GPIO driver, an MTD driver, - * and a platform driver, the following bit of code would be use after first - * calling mfd_add_devices(): - * - * const char *fclones[] = { "foo-gpio", "foo-mtd" }; - * err = mfd_clone_cells("foo", fclones, ARRAY_SIZE(fclones)); - * - * Each driver (MTD, GPIO, and platform driver) would then register - * platform_drivers for "foo-mtd", "foo-gpio", and "foo", respectively. - * The cell's .enable/.disable hooks should be used to deal with hardware - * resource contention. - */ -extern int mfd_clone_cell(const char *cell, const char **clones, - size_t n_clones); - /* * Given a platform device that's been created by mfd_add_devices(), fetch * the mfd_cell that created it.
Providing a subsystem-level API helper seems over-kill just to save a few lines of C-code. Previous commits saw us convert mfd_clone_cell()'s only user over to use a more traditional style of MFD child-device registration. Now we can remove the superfluous helper from the MFD API. Signed-off-by: Lee Jones <lee.jones@linaro.org> --- drivers/mfd/mfd-core.c | 33 --------------------------------- include/linux/mfd/core.h | 18 ------------------ 2 files changed, 51 deletions(-) -- 2.17.1