From: Mark Brown Date: Fri, 10 Oct 2008 14:58:16 +0000 (+0100) Subject: mfd: Add WM8350 subdevice registration helper X-Git-Tag: v2.6.28-rc1~577^2~3 X-Git-Url: http://www.pilppa.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=9201d38b97c7de1b8e6e40449745acf456cff437;p=linux-2.6-omap-h63xx.git 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 Acked-by: Samuel Ortiz Signed-off-by: Liam Girdwood --- 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) {