diff options
author | Martin Blumenstingl <martin.blumenstingl@googlemail.com> | 2016-03-27 11:43:02 -0400 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2016-03-31 05:59:43 -0400 |
commit | 8fccdb580ebec0f5b081d824797911a4c5d91891 (patch) | |
tree | 8dcbb3ffe3d247015b1bdd0856267df1eb8b27d2 | |
parent | 691998fac6f50c9117e279c3fbfa63a23cf7ce2e (diff) |
gpio: gpio-it87: Add support for IT8620 and IT8628
These chips seem to have a 9th GPIO block (thus supporting 72 GPIOs)
which is configured through SuperIO register 0xd2 (output enable) and
0xd3 (simple I/O). This is also the reason why io_size is larger than
on IT8728 / IT8732. Unfortunately I don't have hardware to test this 9th
GPIO block.
I am also not sure about not configuring the Simple I/O registers as the
hardware I have only uses GPIO block 8. Reading back the values of
0xc0-0xc7 (as configured by the BIOS/EFI on my board) shows that all
have 0xff set.
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
-rw-r--r-- | drivers/gpio/Kconfig | 2 | ||||
-rw-r--r-- | drivers/gpio/gpio-it87.c | 10 |
2 files changed, 11 insertions, 1 deletions
diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig index 78898367b34e..08a93e0b35c5 100644 --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig | |||
@@ -558,7 +558,7 @@ config GPIO_IT87 | |||
558 | Say yes here to support GPIO functionality of IT87xx Super I/O chips. | 558 | Say yes here to support GPIO functionality of IT87xx Super I/O chips. |
559 | 559 | ||
560 | This driver is tested with ITE IT8728 and IT8732 Super I/O chips, and | 560 | This driver is tested with ITE IT8728 and IT8732 Super I/O chips, and |
561 | supports the IT8761E Super I/O chip as well. | 561 | supports the IT8761E, IT8620E and IT8628E Super I/O chip as well. |
562 | 562 | ||
563 | To compile this driver as a module, choose M here: the module will | 563 | To compile this driver as a module, choose M here: the module will |
564 | be called gpio_it87 | 564 | be called gpio_it87 |
diff --git a/drivers/gpio/gpio-it87.c b/drivers/gpio/gpio-it87.c index b219c82414bf..63a962d18cd6 100644 --- a/drivers/gpio/gpio-it87.c +++ b/drivers/gpio/gpio-it87.c | |||
@@ -34,6 +34,8 @@ | |||
34 | 34 | ||
35 | /* Chip Id numbers */ | 35 | /* Chip Id numbers */ |
36 | #define NO_DEV_ID 0xffff | 36 | #define NO_DEV_ID 0xffff |
37 | #define IT8620_ID 0x8620 | ||
38 | #define IT8628_ID 0x8628 | ||
37 | #define IT8728_ID 0x8728 | 39 | #define IT8728_ID 0x8728 |
38 | #define IT8732_ID 0x8732 | 40 | #define IT8732_ID 0x8732 |
39 | #define IT8761_ID 0x8761 | 41 | #define IT8761_ID 0x8761 |
@@ -302,6 +304,14 @@ static int __init it87_gpio_init(void) | |||
302 | it87_gpio->chip = it87_template_chip; | 304 | it87_gpio->chip = it87_template_chip; |
303 | 305 | ||
304 | switch (chip_type) { | 306 | switch (chip_type) { |
307 | case IT8620_ID: | ||
308 | case IT8628_ID: | ||
309 | gpio_ba_reg = 0x62; | ||
310 | it87_gpio->io_size = 11; | ||
311 | it87_gpio->output_base = 0xc8; | ||
312 | it87_gpio->simple_size = 0; | ||
313 | it87_gpio->chip.ngpio = 64; | ||
314 | break; | ||
305 | case IT8728_ID: | 315 | case IT8728_ID: |
306 | case IT8732_ID: | 316 | case IT8732_ID: |
307 | gpio_ba_reg = 0x62; | 317 | gpio_ba_reg = 0x62; |