mirror of
https://github.com/torvalds/linux.git
synced 2024-11-25 21:51:40 +00:00
ARM: pxa: mainstone-wm97xx: use gpio lookup table
This driver hardcodes gpio numbers without a header file. Use lookup tables instead. Cc: Marek Vasut <marek.vasut@gmail.com> Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> Acked-by: Robert Jarzmik <robert.jarzmik@free.fr> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Cc: linux-input@vger.kernel.org Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
parent
f1131a46f3
commit
0ca7231fe3
@ -548,6 +548,14 @@ static struct gpiod_lookup_table mainstone_pcmcia_gpio_table = {
|
||||
},
|
||||
};
|
||||
|
||||
static struct gpiod_lookup_table mainstone_wm97xx_gpio_table = {
|
||||
.dev_id = "wm97xx-touch",
|
||||
.table = {
|
||||
GPIO_LOOKUP("gpio-pxa", 4, "touch", GPIO_ACTIVE_HIGH),
|
||||
{ },
|
||||
},
|
||||
};
|
||||
|
||||
static void __init mainstone_init(void)
|
||||
{
|
||||
int SW7 = 0; /* FIXME: get from SCR (Mst doc section 3.2.1.1) */
|
||||
@ -562,6 +570,7 @@ static void __init mainstone_init(void)
|
||||
"mst-pcmcia1", MST_PCMCIA_INPUTS, 0, NULL,
|
||||
NULL, mst_pcmcia1_irqs);
|
||||
gpiod_add_lookup_table(&mainstone_pcmcia_gpio_table);
|
||||
gpiod_add_lookup_table(&mainstone_wm97xx_gpio_table);
|
||||
|
||||
pxa_set_ffuart_info(NULL);
|
||||
pxa_set_btuart_info(NULL);
|
||||
|
@ -347,6 +347,14 @@ static struct gpiod_lookup_table palmld_mci_gpio_table = {
|
||||
},
|
||||
};
|
||||
|
||||
static struct gpiod_lookup_table palmld_wm97xx_touch_gpio_table = {
|
||||
.dev_id = "wm97xx-touch",
|
||||
.table = {
|
||||
GPIO_LOOKUP("gpio-pxa", 27, "touch", GPIO_ACTIVE_HIGH),
|
||||
{ },
|
||||
},
|
||||
};
|
||||
|
||||
static void __init palmld_init(void)
|
||||
{
|
||||
pxa2xx_mfp_config(ARRAY_AND_SIZE(palmld_pin_config));
|
||||
@ -355,6 +363,7 @@ static void __init palmld_init(void)
|
||||
pxa_set_stuart_info(NULL);
|
||||
|
||||
palm27x_mmc_init(&palmld_mci_gpio_table);
|
||||
gpiod_add_lookup_table(&palmld_wm97xx_touch_gpio_table);
|
||||
palm27x_pm_init(PALMLD_STR_BASE);
|
||||
palm27x_lcd_init(-1, &palm_320x480_lcd_mode);
|
||||
palm27x_irda_init(GPIO_NR_PALMLD_IR_DISABLE);
|
||||
|
@ -190,6 +190,14 @@ static struct gpiod_lookup_table palmt5_mci_gpio_table = {
|
||||
},
|
||||
};
|
||||
|
||||
static struct gpiod_lookup_table palmt5_wm97xx_touch_gpio_table = {
|
||||
.dev_id = "wm97xx-touch",
|
||||
.table = {
|
||||
GPIO_LOOKUP("gpio-pxa", 27, "touch", GPIO_ACTIVE_HIGH),
|
||||
{ },
|
||||
},
|
||||
};
|
||||
|
||||
static void __init palmt5_init(void)
|
||||
{
|
||||
pxa2xx_mfp_config(ARRAY_AND_SIZE(palmt5_pin_config));
|
||||
@ -198,6 +206,7 @@ static void __init palmt5_init(void)
|
||||
pxa_set_stuart_info(NULL);
|
||||
|
||||
palm27x_mmc_init(&palmt5_mci_gpio_table);
|
||||
gpiod_add_lookup_table(&palmt5_wm97xx_touch_gpio_table);
|
||||
palm27x_pm_init(PALMT5_STR_BASE);
|
||||
palm27x_lcd_init(-1, &palm_320x480_lcd_mode);
|
||||
palm27x_udc_init(GPIO_NR_PALMT5_USB_DETECT_N,
|
||||
|
@ -345,6 +345,14 @@ static struct gpiod_lookup_table palmtx_mci_gpio_table = {
|
||||
},
|
||||
};
|
||||
|
||||
static struct gpiod_lookup_table palmtx_wm97xx_touch_gpio_table = {
|
||||
.dev_id = "wm97xx-touch",
|
||||
.table = {
|
||||
GPIO_LOOKUP("gpio-pxa", 27, "touch", GPIO_ACTIVE_HIGH),
|
||||
{ },
|
||||
},
|
||||
};
|
||||
|
||||
static void __init palmtx_init(void)
|
||||
{
|
||||
pxa2xx_mfp_config(ARRAY_AND_SIZE(palmtx_pin_config));
|
||||
@ -353,6 +361,7 @@ static void __init palmtx_init(void)
|
||||
pxa_set_stuart_info(NULL);
|
||||
|
||||
palm27x_mmc_init(&palmtx_mci_gpio_table);
|
||||
gpiod_add_lookup_table(&palmtx_wm97xx_touch_gpio_table);
|
||||
palm27x_pm_init(PALMTX_STR_BASE);
|
||||
palm27x_lcd_init(-1, &palm_320x480_lcd_mode);
|
||||
palm27x_udc_init(GPIO_NR_PALMTX_USB_DETECT_N,
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include <linux/moduleparam.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/gpio/consumer.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/wm97xx.h>
|
||||
@ -58,7 +59,7 @@ static const struct continuous cinfo[] = {
|
||||
/* continuous speed index */
|
||||
static int sp_idx;
|
||||
static u16 last, tries;
|
||||
static int irq;
|
||||
static struct gpio_desc *gpiod_irq;
|
||||
|
||||
/*
|
||||
* Pen sampling frequency (Hz) in continuous mode.
|
||||
@ -194,28 +195,21 @@ static int wm97xx_acc_startup(struct wm97xx *wm)
|
||||
/* IRQ driven touchscreen is used on Palm hardware */
|
||||
if (machine_is_palmt5() || machine_is_palmtx() || machine_is_palmld()) {
|
||||
pen_int = 1;
|
||||
irq = 27;
|
||||
/* There is some obscure mutant of WM9712 interbred with WM9713
|
||||
* used on Palm HW */
|
||||
wm->variant = WM97xx_WM1613;
|
||||
} else if (machine_is_mainstone() && pen_int)
|
||||
irq = 4;
|
||||
}
|
||||
|
||||
if (irq) {
|
||||
ret = gpio_request(irq, "Touchscreen IRQ");
|
||||
if (ret)
|
||||
goto out;
|
||||
if (pen_int) {
|
||||
gpiod_irq = gpiod_get(wm->dev, "touch", GPIOD_IN);
|
||||
if (IS_ERR(gpiod_irq))
|
||||
pen_int = 0;
|
||||
}
|
||||
|
||||
ret = gpio_direction_input(irq);
|
||||
if (ret) {
|
||||
gpio_free(irq);
|
||||
goto out;
|
||||
}
|
||||
|
||||
wm->pen_irq = gpio_to_irq(irq);
|
||||
if (pen_int) {
|
||||
wm->pen_irq = gpiod_to_irq(gpiod_irq);
|
||||
irq_set_irq_type(wm->pen_irq, IRQ_TYPE_EDGE_BOTH);
|
||||
} else /* pen irq not supported */
|
||||
pen_int = 0;
|
||||
}
|
||||
|
||||
/* codec specific irq config */
|
||||
if (pen_int) {
|
||||
@ -242,7 +236,6 @@ static int wm97xx_acc_startup(struct wm97xx *wm)
|
||||
}
|
||||
}
|
||||
|
||||
out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -250,8 +243,8 @@ static void wm97xx_acc_shutdown(struct wm97xx *wm)
|
||||
{
|
||||
/* codec specific deconfig */
|
||||
if (pen_int) {
|
||||
if (irq)
|
||||
gpio_free(irq);
|
||||
if (gpiod_irq)
|
||||
gpiod_put(gpiod_irq);
|
||||
wm->pen_irq = 0;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user