diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2010-07-21 09:23:37 -0400 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2010-08-12 05:28:00 -0400 |
commit | 889135210b794df9cea4b1e94dff78c264edc5e7 (patch) | |
tree | 94888ea86f656c8e135633ce6f6bffd3e6b52658 /drivers/mfd | |
parent | 5981f4e65cb455a820b3d07b8e4bac506233f3ea (diff) |
mfd: Add WM8321 support
The WM8321 is a PMIC for low power, high performance applications. From a
software point of view the device is identical to the WM8320, all the
differences between the two devices are visible only in hardware.
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.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/mfd/wm831x-core.c b/drivers/mfd/wm831x-core.c index 1a968f34d679..cb94e7e1e6ea 100644 --- a/drivers/mfd/wm831x-core.c +++ b/drivers/mfd/wm831x-core.c | |||
@@ -95,6 +95,7 @@ enum wm831x_parent { | |||
95 | WM8311 = 0x8311, | 95 | WM8311 = 0x8311, |
96 | WM8312 = 0x8312, | 96 | WM8312 = 0x8312, |
97 | WM8320 = 0x8320, | 97 | WM8320 = 0x8320, |
98 | WM8321 = 0x8321, | ||
98 | }; | 99 | }; |
99 | 100 | ||
100 | static int wm831x_reg_locked(struct wm831x *wm831x, unsigned short reg) | 101 | static int wm831x_reg_locked(struct wm831x *wm831x, unsigned short reg) |
@@ -1533,6 +1534,12 @@ static int wm831x_device_init(struct wm831x *wm831x, unsigned long id, int irq) | |||
1533 | dev_info(wm831x->dev, "WM8320 revision %c\n", 'A' + rev); | 1534 | dev_info(wm831x->dev, "WM8320 revision %c\n", 'A' + rev); |
1534 | break; | 1535 | break; |
1535 | 1536 | ||
1537 | case WM8321: | ||
1538 | parent = WM8321; | ||
1539 | wm831x->num_gpio = 12; | ||
1540 | dev_info(wm831x->dev, "WM8321 revision %c\n", 'A' + rev); | ||
1541 | break; | ||
1542 | |||
1536 | default: | 1543 | default: |
1537 | dev_err(wm831x->dev, "Unknown WM831x device %04x\n", ret); | 1544 | dev_err(wm831x->dev, "Unknown WM831x device %04x\n", ret); |
1538 | ret = -EINVAL; | 1545 | ret = -EINVAL; |
@@ -1607,6 +1614,12 @@ static int wm831x_device_init(struct wm831x *wm831x, unsigned long id, int irq) | |||
1607 | NULL, 0); | 1614 | NULL, 0); |
1608 | break; | 1615 | break; |
1609 | 1616 | ||
1617 | case WM8321: | ||
1618 | ret = mfd_add_devices(wm831x->dev, -1, | ||
1619 | wm8320_devs, ARRAY_SIZE(wm8320_devs), | ||
1620 | NULL, 0); | ||
1621 | break; | ||
1622 | |||
1610 | default: | 1623 | default: |
1611 | /* If this happens the bus probe function is buggy */ | 1624 | /* If this happens the bus probe function is buggy */ |
1612 | BUG(); | 1625 | BUG(); |
@@ -1779,6 +1792,7 @@ static const struct i2c_device_id wm831x_i2c_id[] = { | |||
1779 | { "wm8311", WM8311 }, | 1792 | { "wm8311", WM8311 }, |
1780 | { "wm8312", WM8312 }, | 1793 | { "wm8312", WM8312 }, |
1781 | { "wm8320", WM8320 }, | 1794 | { "wm8320", WM8320 }, |
1795 | { "wm8321", WM8321 }, | ||
1782 | { } | 1796 | { } |
1783 | }; | 1797 | }; |
1784 | MODULE_DEVICE_TABLE(i2c, wm831x_i2c_id); | 1798 | MODULE_DEVICE_TABLE(i2c, wm831x_i2c_id); |