On Sun, Dec 11, 2011 at 09:12:07PM +0100, Janusz Krzysztofik wrote: > Don't use Amstrad Delta custom I/O functions once GPIO interface is > available for the underlying hardware. > > Depends on patch 8/10 "omapfb: lcd_ams_delta: Drive control lines over > GPIO". > > Signed-off-by: Janusz Krzysztofik <jkrzyszt@xxxxxxxxxxxx> Acked-by: Dmitry Torokhov <dtor@xxxxxxx> > --- > arch/arm/mach-omap1/board-ams-delta.c | 5 -- > arch/arm/plat-omap/include/plat/board-ams-delta.h | 2 - > drivers/input/serio/ams_delta_serio.c | 45 +++++++++++--------- > 3 files changed, 25 insertions(+), 27 deletions(-) > > diff --git a/arch/arm/mach-omap1/board-ams-delta.c b/arch/arm/mach-omap1/board-ams-delta.c > index b7422e3..587118c 100644 > --- a/arch/arm/mach-omap1/board-ams-delta.c > +++ b/arch/arm/mach-omap1/board-ams-delta.c > @@ -232,11 +232,6 @@ static struct gpio _latch_gpios[] __initconst = { > .label = "dockit2", > }, > { > - .gpio = AMS_DELTA_GPIO_PIN_KEYBRD_PWR, > - .flags = GPIOF_OUT_INIT_LOW, > - .label = "keybrd_pwr", > - }, > - { > .gpio = AMS_DELTA_GPIO_PIN_KEYBRD_DATAOUT, > .flags = GPIOF_OUT_INIT_LOW, > .label = "keybrd_dataout", > diff --git a/arch/arm/plat-omap/include/plat/board-ams-delta.h b/arch/arm/plat-omap/include/plat/board-ams-delta.h > index 1d0706e..004c827 100644 > --- a/arch/arm/plat-omap/include/plat/board-ams-delta.h > +++ b/arch/arm/plat-omap/include/plat/board-ams-delta.h > @@ -28,8 +28,6 @@ > > #if defined (CONFIG_MACH_AMS_DELTA) > > -#define AMD_DELTA_LATCH2_KEYBRD_PWR 0x0100 > -#define AMD_DELTA_LATCH2_KEYBRD_DATA 0x0200 > #define AMD_DELTA_LATCH2_SCARD_RSTIN 0x0400 > #define AMD_DELTA_LATCH2_SCARD_CMDVCC 0x0800 > > diff --git a/drivers/input/serio/ams_delta_serio.c b/drivers/input/serio/ams_delta_serio.c > index d4d08bd..1499c7d 100644 > --- a/drivers/input/serio/ams_delta_serio.c > +++ b/drivers/input/serio/ams_delta_serio.c > @@ -92,8 +92,7 @@ static irqreturn_t ams_delta_serio_interrupt(int irq, void *dev_id) > static int ams_delta_serio_open(struct serio *serio) > { > /* enable keyboard */ > - ams_delta_latch2_write(AMD_DELTA_LATCH2_KEYBRD_PWR, > - AMD_DELTA_LATCH2_KEYBRD_PWR); > + gpio_set_value(AMS_DELTA_GPIO_PIN_KEYBRD_PWR, 1); > > return 0; > } > @@ -101,9 +100,26 @@ static int ams_delta_serio_open(struct serio *serio) > static void ams_delta_serio_close(struct serio *serio) > { > /* disable keyboard */ > - ams_delta_latch2_write(AMD_DELTA_LATCH2_KEYBRD_PWR, 0); > + gpio_set_value(AMS_DELTA_GPIO_PIN_KEYBRD_PWR, 0); > } > > +static struct gpio _gpios[] __initconst_or_module = { > + { > + .gpio = AMS_DELTA_GPIO_PIN_KEYBRD_DATA, > + .flags = GPIOF_DIR_IN, > + .label = "serio-data", > + }, > + { > + .gpio = AMS_DELTA_GPIO_PIN_KEYBRD_CLK, > + .flags = GPIOF_DIR_IN, > + .label = "serio-clock", > + }, > + { > + .gpio = AMS_DELTA_GPIO_PIN_KEYBRD_PWR, > + .flags = GPIOF_OUT_INIT_LOW, > + .label = "serio-power", > + }, > +}; > static int __init ams_delta_serio_init(void) > { > int err; > @@ -123,19 +139,11 @@ static int __init ams_delta_serio_init(void) > strlcpy(ams_delta_serio->phys, "GPIO/serio0", > sizeof(ams_delta_serio->phys)); > > - err = gpio_request(AMS_DELTA_GPIO_PIN_KEYBRD_DATA, "serio-data"); > + err = gpio_request_array(_gpios, ARRAY_SIZE(_gpios)); > if (err) { > - pr_err("ams_delta_serio: Couldn't request gpio pin for data\n"); > + pr_err("ams_delta_serio: Couldn't request gpio pins\n"); > goto serio; > } > - gpio_direction_input(AMS_DELTA_GPIO_PIN_KEYBRD_DATA); > - > - err = gpio_request(AMS_DELTA_GPIO_PIN_KEYBRD_CLK, "serio-clock"); > - if (err) { > - pr_err("ams_delta_serio: couldn't request gpio pin for clock\n"); > - goto gpio_data; > - } > - gpio_direction_input(AMS_DELTA_GPIO_PIN_KEYBRD_CLK); > > err = request_irq(gpio_to_irq(AMS_DELTA_GPIO_PIN_KEYBRD_CLK), > ams_delta_serio_interrupt, IRQ_TYPE_EDGE_RISING, > @@ -143,7 +151,7 @@ static int __init ams_delta_serio_init(void) > if (err < 0) { > pr_err("ams_delta_serio: couldn't request gpio interrupt %d\n", > gpio_to_irq(AMS_DELTA_GPIO_PIN_KEYBRD_CLK)); > - goto gpio_clk; > + goto gpio; > } > /* > * Since GPIO register handling for keyboard clock pin is performed > @@ -157,10 +165,8 @@ static int __init ams_delta_serio_init(void) > dev_info(&ams_delta_serio->dev, "%s\n", ams_delta_serio->name); > > return 0; > -gpio_clk: > - gpio_free(AMS_DELTA_GPIO_PIN_KEYBRD_CLK); > -gpio_data: > - gpio_free(AMS_DELTA_GPIO_PIN_KEYBRD_DATA); > +gpio: > + gpio_free_array(_gpios, ARRAY_SIZE(_gpios)); > serio: > kfree(ams_delta_serio); > return err; > @@ -171,7 +177,6 @@ static void __exit ams_delta_serio_exit(void) > { > serio_unregister_port(ams_delta_serio); > free_irq(OMAP_GPIO_IRQ(AMS_DELTA_GPIO_PIN_KEYBRD_CLK), 0); > - gpio_free(AMS_DELTA_GPIO_PIN_KEYBRD_CLK); > - gpio_free(AMS_DELTA_GPIO_PIN_KEYBRD_DATA); > + gpio_free_array(_gpios, ARRAY_SIZE(_gpios)); > } > module_exit(ams_delta_serio_exit); > -- > 1.7.3.4 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-input" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Dmitry -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html