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 <[email protected]>

Acked-by: Dmitry Torokhov <[email protected]>

> ---
>  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 [email protected]
> 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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to