diff options
Diffstat (limited to 'drivers/mfd')
-rw-r--r-- | drivers/mfd/wm831x-core.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/mfd/wm831x-core.c b/drivers/mfd/wm831x-core.c index 3fe9a58fe6c7..265f75fc6a25 100644 --- a/drivers/mfd/wm831x-core.c +++ b/drivers/mfd/wm831x-core.c | |||
@@ -1442,7 +1442,7 @@ int wm831x_device_init(struct wm831x *wm831x, unsigned long id, int irq) | |||
1442 | struct wm831x_pdata *pdata = wm831x->dev->platform_data; | 1442 | struct wm831x_pdata *pdata = wm831x->dev->platform_data; |
1443 | int rev; | 1443 | int rev; |
1444 | enum wm831x_parent parent; | 1444 | enum wm831x_parent parent; |
1445 | int ret; | 1445 | int ret, i; |
1446 | 1446 | ||
1447 | mutex_init(&wm831x->io_lock); | 1447 | mutex_init(&wm831x->io_lock); |
1448 | mutex_init(&wm831x->key_lock); | 1448 | mutex_init(&wm831x->key_lock); |
@@ -1581,6 +1581,17 @@ int wm831x_device_init(struct wm831x *wm831x, unsigned long id, int irq) | |||
1581 | } | 1581 | } |
1582 | } | 1582 | } |
1583 | 1583 | ||
1584 | if (pdata) { | ||
1585 | for (i = 0; i < ARRAY_SIZE(pdata->gpio_defaults); i++) { | ||
1586 | if (!pdata->gpio_defaults[i]) | ||
1587 | continue; | ||
1588 | |||
1589 | wm831x_reg_write(wm831x, | ||
1590 | WM831X_GPIO1_CONTROL + i, | ||
1591 | pdata->gpio_defaults[i] & 0xffff); | ||
1592 | } | ||
1593 | } | ||
1594 | |||
1584 | ret = wm831x_irq_init(wm831x, irq); | 1595 | ret = wm831x_irq_init(wm831x, irq); |
1585 | if (ret != 0) | 1596 | if (ret != 0) |
1586 | goto err; | 1597 | goto err; |