aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Blumenstingl <martin.blumenstingl@googlemail.com>2016-03-27 11:43:02 -0400
committerLinus Walleij <linus.walleij@linaro.org>2016-03-31 05:59:43 -0400
commit8fccdb580ebec0f5b081d824797911a4c5d91891 (patch)
tree8dcbb3ffe3d247015b1bdd0856267df1eb8b27d2
parent691998fac6f50c9117e279c3fbfa63a23cf7ce2e (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/Kconfig2
-rw-r--r--drivers/gpio/gpio-it87.c10
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;