diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2008-10-10 15:58:16 +0100 |
---|---|---|
committer | Liam Girdwood <lrg@slimlogic.co.uk> | 2008-10-13 21:51:56 +0100 |
commit | 9201d38b97c7de1b8e6e40449745acf456cff437 (patch) | |
tree | 66e9ff8078e4cf7ea7cc8df047fc356b29fb8bf3 | |
parent | da09155ac8d3f04c299b3d82a6ab0df8d03da632 (diff) |
mfd: Add WM8350 subdevice registration helper
Most of the subdevices for the WM8350 code are registered in the same
fashion so factor out the code to do the initial registration.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Samuel Ortiz <sameo@openedhand.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
-rw-r--r-- | drivers/mfd/wm8350-core.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/drivers/mfd/wm8350-core.c b/drivers/mfd/wm8350-core.c index 9a1a0b2b581..cd1f76efed4 100644 --- a/drivers/mfd/wm8350-core.c +++ b/drivers/mfd/wm8350-core.c @@ -1130,6 +1130,32 @@ out: } EXPORT_SYMBOL_GPL(wm8350_create_cache); +/* + * Register a client device. This is non-fatal since there is no need to + * fail the entire device init due to a single platform device failing. + */ +static void wm8350_client_dev_register(struct wm8350 *wm8350, + const char *name, + struct platform_device **pdev) +{ + int ret; + + *pdev = platform_device_alloc(name, -1); + if (pdev == NULL) { + dev_err(wm8350->dev, "Failed to allocate %s\n", name); + return; + } + + (*pdev)->dev.parent = wm8350->dev; + platform_set_drvdata(*pdev, wm8350); + ret = platform_device_add(*pdev); + if (ret != 0) { + dev_err(wm8350->dev, "Failed to register %s: %d\n", name, ret); + platform_device_put(*pdev); + *pdev = NULL; + } +} + int wm8350_device_init(struct wm8350 *wm8350, int irq, struct wm8350_platform_data *pdata) { |