gpio: f7188x: add GPIO support for F71869A

Add support for the GPIOs found on the Fintek SuperI/O chip F71869A,
such as the one found on the Jetway JNF99-525 motherboard, to the f7188x
gpio driver.

Signed-off-by: Andreas Bofjall <andreas@gazonk.org>
Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
Andreas Bofjall 2015-03-09 21:55:14 +01:00 committed by Linus Walleij
parent 24ccef359e
commit 7e9603638a
2 changed files with 25 additions and 5 deletions

View File

@ -198,11 +198,11 @@ config GPIO_MM_LANTIQ
created by attaching a 16bit latch to the bus. created by attaching a 16bit latch to the bus.
config GPIO_F7188X config GPIO_F7188X
tristate "F71869, F71882FG and F71889F GPIO support" tristate "F71869, F71869A, F71882FG and F71889F GPIO support"
depends on X86 depends on X86
help help
This option enables support for GPIOs found on Fintek Super-I/O This option enables support for GPIOs found on Fintek Super-I/O
chips F71869, F71882FG and F71889F. chips F71869, F71869A, F71882FG and F71889F.
To compile this driver as a module, choose M here: the module will To compile this driver as a module, choose M here: the module will
be called f7188x-gpio. be called f7188x-gpio.

View File

@ -1,5 +1,5 @@
/* /*
* GPIO driver for Fintek Super-I/O F71869, F71882 and F71889 * GPIO driver for Fintek Super-I/O F71869, F71869A, F71882 and F71889
* *
* Copyright (C) 2010-2013 LaCie * Copyright (C) 2010-2013 LaCie
* *
@ -33,13 +33,15 @@
#define SIO_FINTEK_ID 0x1934 /* Manufacturer ID */ #define SIO_FINTEK_ID 0x1934 /* Manufacturer ID */
#define SIO_F71869_ID 0x0814 /* F71869 chipset ID */ #define SIO_F71869_ID 0x0814 /* F71869 chipset ID */
#define SIO_F71869A_ID 0x1007 /* F71869A chipset ID */
#define SIO_F71882_ID 0x0541 /* F71882 chipset ID */ #define SIO_F71882_ID 0x0541 /* F71882 chipset ID */
#define SIO_F71889_ID 0x0909 /* F71889 chipset ID */ #define SIO_F71889_ID 0x0909 /* F71889 chipset ID */
enum chips { f71869, f71882fg, f71889f }; enum chips { f71869, f71869a, f71882fg, f71889f };
static const char * const f7188x_names[] = { static const char * const f7188x_names[] = {
"f71869", "f71869",
"f71869a",
"f71882fg", "f71882fg",
"f71889f", "f71889f",
}; };
@ -158,6 +160,17 @@ static struct f7188x_gpio_bank f71869_gpio_bank[] = {
F7188X_GPIO_BANK(60, 6, 0x90), F7188X_GPIO_BANK(60, 6, 0x90),
}; };
static struct f7188x_gpio_bank f71869a_gpio_bank[] = {
F7188X_GPIO_BANK(0, 6, 0xF0),
F7188X_GPIO_BANK(10, 8, 0xE0),
F7188X_GPIO_BANK(20, 8, 0xD0),
F7188X_GPIO_BANK(30, 8, 0xC0),
F7188X_GPIO_BANK(40, 8, 0xB0),
F7188X_GPIO_BANK(50, 5, 0xA0),
F7188X_GPIO_BANK(60, 8, 0x90),
F7188X_GPIO_BANK(70, 8, 0x80),
};
static struct f7188x_gpio_bank f71882_gpio_bank[] = { static struct f7188x_gpio_bank f71882_gpio_bank[] = {
F7188X_GPIO_BANK(0 , 8, 0xF0), F7188X_GPIO_BANK(0 , 8, 0xF0),
F7188X_GPIO_BANK(10, 8, 0xE0), F7188X_GPIO_BANK(10, 8, 0xE0),
@ -297,6 +310,10 @@ static int f7188x_gpio_probe(struct platform_device *pdev)
data->nr_bank = ARRAY_SIZE(f71869_gpio_bank); data->nr_bank = ARRAY_SIZE(f71869_gpio_bank);
data->bank = f71869_gpio_bank; data->bank = f71869_gpio_bank;
break; break;
case f71869a:
data->nr_bank = ARRAY_SIZE(f71869a_gpio_bank);
data->bank = f71869a_gpio_bank;
break;
case f71882fg: case f71882fg:
data->nr_bank = ARRAY_SIZE(f71882_gpio_bank); data->nr_bank = ARRAY_SIZE(f71882_gpio_bank);
data->bank = f71882_gpio_bank; data->bank = f71882_gpio_bank;
@ -373,6 +390,9 @@ static int __init f7188x_find(int addr, struct f7188x_sio *sio)
case SIO_F71869_ID: case SIO_F71869_ID:
sio->type = f71869; sio->type = f71869;
break; break;
case SIO_F71869A_ID:
sio->type = f71869a;
break;
case SIO_F71882_ID: case SIO_F71882_ID:
sio->type = f71882fg; sio->type = f71882fg;
break; break;
@ -469,6 +489,6 @@ static void __exit f7188x_gpio_exit(void)
} }
module_exit(f7188x_gpio_exit); module_exit(f7188x_gpio_exit);
MODULE_DESCRIPTION("GPIO driver for Super-I/O chips F71869, F71882FG and F71889F"); MODULE_DESCRIPTION("GPIO driver for Super-I/O chips F71869, F71869A, F71882FG and F71889F");
MODULE_AUTHOR("Simon Guinot <simon.guinot@sequanux.org>"); MODULE_AUTHOR("Simon Guinot <simon.guinot@sequanux.org>");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");