lkml.org 
[lkml]   [2011]   [Dec]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 09/10] input: serio: ams-delta: Toggle keyboard power over GPIO
    Date
    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@tis.icnet.pl>
    ---
    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


    \
     
     \ /
      Last update: 2011-12-11 21:19    [W:0.024 / U:30.724 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site