]> git.itanic.dy.fi Git - linux-stable/commitdiff
Input: omap-keypad - drop optional GPIO support
authorLinus Walleij <linus.walleij@linaro.org>
Wed, 13 Dec 2023 07:06:55 +0000 (23:06 -0800)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Thu, 14 Dec 2023 05:26:13 +0000 (21:26 -0800)
The driver supports passing some GPIO lines for rows and columns
through the driver data, but there is no in-kernel user of this.

Further the use seems convoluted because the GPIO lines are unused
in the driver, then explicitly free:ed when removing it without
being requested when probing it, which is assymetric and just
a recepie for disaster.

Remove the support for these unused GPIOs, if need be support can
be reestablished in an organized fashion using GPIO descriptors.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Tony Lindgren <tony@atomide.com>
Link: https://lore.kernel.org/r/20231129-descriptors-input-v1-3-9433162914a3@linaro.org
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/keyboard/omap-keypad.c
include/linux/platform_data/keypad-omap.h

index 454fb8675657302ca1281c211a2be027fc520163..16f936db73058e948505f4479849b2c753515250 100644 (file)
@@ -21,7 +21,6 @@
 #include <linux/mutex.h>
 #include <linux/errno.h>
 #include <linux/slab.h>
-#include <linux/gpio.h>
 #include <linux/platform_data/gpio-omap.h>
 #include <linux/platform_data/keypad-omap.h>
 #include <linux/soc/ti/omap1-io.h>
@@ -49,9 +48,6 @@ struct omap_kp {
 
 static DECLARE_TASKLET_DISABLED_OLD(kp_tasklet, omap_kp_tasklet);
 
-static unsigned int *row_gpios;
-static unsigned int *col_gpios;
-
 static irqreturn_t omap_kp_interrupt(int irq, void *dev_id)
 {
        /* disable keyboard interrupt and schedule for handling */
@@ -180,7 +176,7 @@ static int omap_kp_probe(struct platform_device *pdev)
        struct omap_kp *omap_kp;
        struct input_dev *input_dev;
        struct omap_kp_platform_data *pdata = dev_get_platdata(&pdev->dev);
-       int i, col_idx, row_idx, ret;
+       int ret;
        unsigned int row_shift, keycodemax;
 
        if (!pdata->rows || !pdata->cols || !pdata->keymap_data) {
@@ -209,17 +205,9 @@ static int omap_kp_probe(struct platform_device *pdev)
        if (pdata->delay)
                omap_kp->delay = pdata->delay;
 
-       if (pdata->row_gpios && pdata->col_gpios) {
-               row_gpios = pdata->row_gpios;
-               col_gpios = pdata->col_gpios;
-       }
-
        omap_kp->rows = pdata->rows;
        omap_kp->cols = pdata->cols;
 
-       col_idx = 0;
-       row_idx = 0;
-
        timer_setup(&omap_kp->timer, omap_kp_timer, 0);
 
        /* get the irq and init timer*/
@@ -276,11 +264,6 @@ static int omap_kp_probe(struct platform_device *pdev)
 err3:
        device_remove_file(&pdev->dev, &dev_attr_enable);
 err2:
-       for (i = row_idx - 1; i >= 0; i--)
-               gpio_free(row_gpios[i]);
-       for (i = col_idx - 1; i >= 0; i--)
-               gpio_free(col_gpios[i]);
-
        kfree(omap_kp);
        input_free_device(input_dev);
 
index 3e7c64c854f4cd2b8817384a43681bcd8515e7de..f3f1311cdf3aa5ef9440664f38d37c1e94fff485 100644 (file)
@@ -19,9 +19,6 @@ struct omap_kp_platform_data {
        bool rep;
        unsigned long delay;
        bool dbounce;
-       /* specific to OMAP242x*/
-       unsigned int *row_gpios;
-       unsigned int *col_gpios;
 };
 
 /* Group (0..3) -- when multiple keys are pressed, only the