summaryrefslogtreecommitdiffstats
path: root/drivers/mfd
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2009-07-27 15:45:55 +0200
committerSamuel Ortiz <sameo@linux.intel.com>2009-09-17 09:46:58 +0200
commit63aed85e3535b4603798184cc941e49de386d354 (patch)
tree9fadb2c68ec7702327b725043c2e214e0263a154 /drivers/mfd
parentmfd: Add WM831x AUXADC support (diff)
downloadlinux-63aed85e3535b4603798184cc941e49de386d354.tar.xz
linux-63aed85e3535b4603798184cc941e49de386d354.zip
mfd: Conditionally add WM831x backlight subdevice
The WM831x backlight driver requires at least the specification of the current sink to use and a maximum current to allow them to function and will actively interfere with other users of the regulators it uses if misconfigured so only register the subdevice for it if this platform data has been supplied. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'drivers/mfd')
-rw-r--r--drivers/mfd/wm831x-core.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/mfd/wm831x-core.c b/drivers/mfd/wm831x-core.c
index 42bef1dd2ca1..bc40ea315cc0 100644
--- a/drivers/mfd/wm831x-core.c
+++ b/drivers/mfd/wm831x-core.c
@@ -1172,6 +1172,12 @@ static struct mfd_cell wm8312_devs[] = {
},
};
+static struct mfd_cell backlight_devs[] = {
+ {
+ .name = "wm831x-backlight",
+ },
+};
+
/*
* Instantiate the generic non-control parts of the device.
*/
@@ -1325,6 +1331,15 @@ static int wm831x_device_init(struct wm831x *wm831x, unsigned long id, int irq)
goto err_irq;
}
+ if (pdata && pdata->backlight) {
+ /* Treat errors as non-critical */
+ ret = mfd_add_devices(wm831x->dev, -1, backlight_devs,
+ ARRAY_SIZE(backlight_devs), NULL, 0);
+ if (ret < 0)
+ dev_err(wm831x->dev, "Failed to add backlight: %d\n",
+ ret);
+ }
+
if (pdata && pdata->post_init) {
ret = pdata->post_init(wm831x);
if (ret != 0) {