diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2010-02-17 13:45:25 -0500 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2010-03-07 16:17:29 -0500 |
commit | f92e8f8144243a3651b2e350b706ea2d04931f8c (patch) | |
tree | e008f4b0896cdeb2fb354a1e1babd2a568172498 /drivers/mfd | |
parent | 6b8274fafeec9b112cee5b6ced5f9189957c889f (diff) |
mfd: Add WM831x revision B support
Revision B of the WM831x devices changes the sense of the tristate
bit for GPIO configuration, inverting it to become an enable instead.
Take account of this in the gpiolib driver.
A current sink regulation status bit has also been added in revision B,
add a flag indicating if it's present but don't use it yet.
This revision also adds an interrupt on key up for the ON pin event
which the existing code is able to take advantage of.
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 | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/mfd/wm831x-core.c b/drivers/mfd/wm831x-core.c index 4b2021af1d96..c428d9f918fc 100644 --- a/drivers/mfd/wm831x-core.c +++ b/drivers/mfd/wm831x-core.c | |||
@@ -1449,18 +1449,33 @@ static int wm831x_device_init(struct wm831x *wm831x, unsigned long id, int irq) | |||
1449 | case WM8310: | 1449 | case WM8310: |
1450 | parent = WM8310; | 1450 | parent = WM8310; |
1451 | wm831x->num_gpio = 16; | 1451 | wm831x->num_gpio = 16; |
1452 | if (rev > 0) { | ||
1453 | wm831x->has_gpio_ena = 1; | ||
1454 | wm831x->has_cs_sts = 1; | ||
1455 | } | ||
1456 | |||
1452 | dev_info(wm831x->dev, "WM8310 revision %c\n", 'A' + rev); | 1457 | dev_info(wm831x->dev, "WM8310 revision %c\n", 'A' + rev); |
1453 | break; | 1458 | break; |
1454 | 1459 | ||
1455 | case WM8311: | 1460 | case WM8311: |
1456 | parent = WM8311; | 1461 | parent = WM8311; |
1457 | wm831x->num_gpio = 16; | 1462 | wm831x->num_gpio = 16; |
1463 | if (rev > 0) { | ||
1464 | wm831x->has_gpio_ena = 1; | ||
1465 | wm831x->has_cs_sts = 1; | ||
1466 | } | ||
1467 | |||
1458 | dev_info(wm831x->dev, "WM8311 revision %c\n", 'A' + rev); | 1468 | dev_info(wm831x->dev, "WM8311 revision %c\n", 'A' + rev); |
1459 | break; | 1469 | break; |
1460 | 1470 | ||
1461 | case WM8312: | 1471 | case WM8312: |
1462 | parent = WM8312; | 1472 | parent = WM8312; |
1463 | wm831x->num_gpio = 16; | 1473 | wm831x->num_gpio = 16; |
1474 | if (rev > 0) { | ||
1475 | wm831x->has_gpio_ena = 1; | ||
1476 | wm831x->has_cs_sts = 1; | ||
1477 | } | ||
1478 | |||
1464 | dev_info(wm831x->dev, "WM8312 revision %c\n", 'A' + rev); | 1479 | dev_info(wm831x->dev, "WM8312 revision %c\n", 'A' + rev); |
1465 | break; | 1480 | break; |
1466 | 1481 | ||