diff options
| -rw-r--r-- | drivers/mfd/wm831x-core.c | 13 | ||||
| -rw-r--r-- | include/linux/mfd/wm831x/pdata.h | 4 |
2 files changed, 16 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; |
diff --git a/include/linux/mfd/wm831x/pdata.h b/include/linux/mfd/wm831x/pdata.h index 632d1567a1b6..ff42d700293f 100644 --- a/include/linux/mfd/wm831x/pdata.h +++ b/include/linux/mfd/wm831x/pdata.h | |||
| @@ -105,6 +105,9 @@ struct wm831x_watchdog_pdata { | |||
| 105 | #define WM831X_MAX_LDO 11 | 105 | #define WM831X_MAX_LDO 11 |
| 106 | #define WM831X_MAX_ISINK 2 | 106 | #define WM831X_MAX_ISINK 2 |
| 107 | 107 | ||
| 108 | #define WM831X_GPIO_CONFIGURE 0x10000 | ||
| 109 | #define WM831X_GPIO_NUM 16 | ||
| 110 | |||
| 108 | struct wm831x_pdata { | 111 | struct wm831x_pdata { |
| 109 | /** Used to distinguish multiple WM831x chips */ | 112 | /** Used to distinguish multiple WM831x chips */ |
| 110 | int wm831x_num; | 113 | int wm831x_num; |
| @@ -119,6 +122,7 @@ struct wm831x_pdata { | |||
| 119 | 122 | ||
| 120 | int irq_base; | 123 | int irq_base; |
| 121 | int gpio_base; | 124 | int gpio_base; |
| 125 | int gpio_defaults[WM831X_GPIO_NUM]; | ||
| 122 | struct wm831x_backlight_pdata *backlight; | 126 | struct wm831x_backlight_pdata *backlight; |
| 123 | struct wm831x_backup_pdata *backup; | 127 | struct wm831x_backup_pdata *backup; |
| 124 | struct wm831x_battery_pdata *battery; | 128 | struct wm831x_battery_pdata *battery; |
