lkml.org 
[lkml]   [2019]   [Oct]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 26/46] ARM: pxa: zylonite: use gpio lookup instead mfp header
    Date
    The mach/mfp.h header is only used by this one driver
    for hardcoded gpio numbers. Change that to use a lookup
    table instead.

    Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Cc: linux-input@vger.kernel.org
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    ---
    arch/arm/mach-pxa/zylonite.c | 31 +++++++++++++++++++++
    drivers/input/touchscreen/zylonite-wm97xx.c | 20 +++++++------
    2 files changed, 42 insertions(+), 9 deletions(-)

    diff --git a/arch/arm/mach-pxa/zylonite.c b/arch/arm/mach-pxa/zylonite.c
    index e3ae45f444d5..d6c0e8866e18 100644
    --- a/arch/arm/mach-pxa/zylonite.c
    +++ b/arch/arm/mach-pxa/zylonite.c
    @@ -32,6 +32,7 @@
    #include <linux/platform_data/usb-ohci-pxa27x.h>
    #include <linux/platform_data/keypad-pxa27x.h>
    #include <linux/platform_data/mtd-nand-pxa3xx.h>
    +#include <mach/mfp.h>

    #include "devices.h"
    #include "generic.h"
    @@ -426,6 +427,35 @@ static void __init zylonite_init_ohci(void)
    static inline void zylonite_init_ohci(void) {}
    #endif /* CONFIG_USB_OHCI_HCD || CONFIG_USB_OHCI_HCD_MODULE */

    +static struct gpiod_lookup_table zylonite_wm97xx_touch_gpio15_table = {
    + .dev_id = "wm97xx-touch.0",
    + .table = {
    + GPIO_LOOKUP("gpio-pxa", mfp_to_gpio(MFP_PIN_GPIO15),
    + "touch", GPIO_ACTIVE_LOW),
    + { },
    + },
    +};
    +
    +static struct gpiod_lookup_table zylonite_wm97xx_touch_gpio26_table = {
    + .dev_id = "wm97xx-touch.0",
    + .table = {
    + GPIO_LOOKUP("gpio-pxa", mfp_to_gpio(MFP_PIN_GPIO26),
    + "touch", GPIO_ACTIVE_LOW),
    + { },
    + },
    +};
    +
    +static void __init zylonite_init_wm97xx_touch(void)
    +{
    + if (!IS_ENABLED(CONFIG_TOUCHSCREEN_WM97XX_ZYLONITE))
    + return;
    +
    + if (cpu_is_pxa320())
    + gpiod_add_lookup_table(&zylonite_wm97xx_touch_gpio15_table);
    + else
    + gpiod_add_lookup_table(&zylonite_wm97xx_touch_gpio26_table);
    +}
    +
    static void __init zylonite_init(void)
    {
    pxa_set_ffuart_info(NULL);
    @@ -451,6 +481,7 @@ static void __init zylonite_init(void)
    zylonite_init_nand();
    zylonite_init_leds();
    zylonite_init_ohci();
    + zylonite_init_wm97xx_touch();
    }

    MACHINE_START(ZYLONITE, "PXA3xx Platform Development Kit (aka Zylonite)")
    diff --git a/drivers/input/touchscreen/zylonite-wm97xx.c b/drivers/input/touchscreen/zylonite-wm97xx.c
    index f57bdf083188..cabdd6e3c6f8 100644
    --- a/drivers/input/touchscreen/zylonite-wm97xx.c
    +++ b/drivers/input/touchscreen/zylonite-wm97xx.c
    @@ -17,14 +17,13 @@
    #include <linux/moduleparam.h>
    #include <linux/kernel.h>
    #include <linux/delay.h>
    -#include <linux/gpio.h>
    +#include <linux/gpio/consumer.h>
    #include <linux/irq.h>
    #include <linux/interrupt.h>
    #include <linux/io.h>
    #include <linux/soc/pxa/cpu.h>
    #include <linux/wm97xx.h>

    -#include <mach/mfp.h>
    #include <mach/regs-ac97.h>

    struct continuous {
    @@ -181,14 +180,17 @@ static struct wm97xx_mach_ops zylonite_mach_ops = {
    static int zylonite_wm97xx_probe(struct platform_device *pdev)
    {
    struct wm97xx *wm = platform_get_drvdata(pdev);
    - int gpio_touch_irq;
    -
    - if (cpu_is_pxa320())
    - gpio_touch_irq = mfp_to_gpio(MFP_PIN_GPIO15);
    - else
    - gpio_touch_irq = mfp_to_gpio(MFP_PIN_GPIO26);
    + struct gpio_desc *gpio_touch_irq;
    + int err;
    +
    + gpio_touch_irq = devm_gpiod_get(&pdev->dev, "touch", GPIOD_IN);
    + err = PTR_ERR_OR_ZERO(gpio_touch_irq);
    + if (err) {
    + dev_err(&pdev->dev, "Cannot get irq gpio: %d\n", err);
    + return err;
    + }

    - wm->pen_irq = gpio_to_irq(gpio_touch_irq);
    + wm->pen_irq = gpiod_to_irq(gpio_touch_irq);
    irq_set_irq_type(wm->pen_irq, IRQ_TYPE_EDGE_BOTH);

    wm97xx_config_gpio(wm, WM97XX_GPIO_13, WM97XX_GPIO_IN,
    --
    2.20.0
    \
     
     \ /
      Last update: 2019-10-18 17:44    [W:4.557 / U:0.084 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site