diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2008-10-10 10:58:13 -0400 |
---|---|---|
committer | Liam Girdwood <lrg@slimlogic.co.uk> | 2008-10-13 16:51:56 -0400 |
commit | bcdd4efc1b6b8b98f30e127115f4bc7bbcd6f7ce (patch) | |
tree | 5f58a36bcfefb07cc9a44faf38c91b8bc7e3c1c1 /drivers/mfd | |
parent | 0e7203933224cbe09b5a9125f55b177b8dd5b1bd (diff) |
mfd: Add initialisation callback for WM8350
Some functions of the WM8350 require board-specific initialisation on
startup. Provide a callback to the WM8350 driver in platform data
for platforms to use to configure the chip. Use of a callback allows
platforms to control the ordering of initialisation which can be
important.
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>
Diffstat (limited to 'drivers/mfd')
-rw-r--r-- | drivers/mfd/wm8350-core.c | 12 | ||||
-rw-r--r-- | drivers/mfd/wm8350-i2c.c | 2 |
2 files changed, 12 insertions, 2 deletions
diff --git a/drivers/mfd/wm8350-core.c b/drivers/mfd/wm8350-core.c index c7552c0b7797..071834ba6954 100644 --- a/drivers/mfd/wm8350-core.c +++ b/drivers/mfd/wm8350-core.c | |||
@@ -388,7 +388,8 @@ out: | |||
388 | } | 388 | } |
389 | EXPORT_SYMBOL_GPL(wm8350_create_cache); | 389 | EXPORT_SYMBOL_GPL(wm8350_create_cache); |
390 | 390 | ||
391 | int wm8350_device_init(struct wm8350 *wm8350) | 391 | int wm8350_device_init(struct wm8350 *wm8350, |
392 | struct wm8350_platform_data *pdata) | ||
392 | { | 393 | { |
393 | int ret = -EINVAL; | 394 | int ret = -EINVAL; |
394 | u16 id1, id2, mask, mode; | 395 | u16 id1, id2, mask, mode; |
@@ -439,6 +440,15 @@ int wm8350_device_init(struct wm8350 *wm8350) | |||
439 | return ret; | 440 | return ret; |
440 | } | 441 | } |
441 | 442 | ||
443 | if (pdata->init) { | ||
444 | ret = pdata->init(wm8350); | ||
445 | if (ret != 0) { | ||
446 | dev_err(wm8350->dev, "Platform init() failed: %d\n", | ||
447 | ret); | ||
448 | goto err; | ||
449 | } | ||
450 | } | ||
451 | |||
442 | return 0; | 452 | return 0; |
443 | 453 | ||
444 | err: | 454 | err: |
diff --git a/drivers/mfd/wm8350-i2c.c b/drivers/mfd/wm8350-i2c.c index 2b0569cf9512..245b790961aa 100644 --- a/drivers/mfd/wm8350-i2c.c +++ b/drivers/mfd/wm8350-i2c.c | |||
@@ -65,7 +65,7 @@ static int wm8350_i2c_probe(struct i2c_client *i2c, | |||
65 | wm8350->read_dev = wm8350_i2c_read_device; | 65 | wm8350->read_dev = wm8350_i2c_read_device; |
66 | wm8350->write_dev = wm8350_i2c_write_device; | 66 | wm8350->write_dev = wm8350_i2c_write_device; |
67 | 67 | ||
68 | ret = wm8350_device_init(wm8350); | 68 | ret = wm8350_device_init(wm8350, i2c->dev.platform_data); |
69 | if (ret < 0) | 69 | if (ret < 0) |
70 | goto err; | 70 | goto err; |
71 | 71 | ||