Skip to content

Commit

Permalink
Input: jornada720_ts - get rid of mach/irqs.h and mach/hardware.h inc…
Browse files Browse the repository at this point in the history
…ludes

Switch the jornada720 touchscreen driver to obtain its gpio from
the platform device via gpiolib and derive the interrupt from the
GPIO, rather than via a hard-coded interrupt number obtained from
the mach/irqs.h and mach/hardware.h headers.

Tested-by: Adam Wysocki <armlinux@chmurka.net>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
  • Loading branch information
Russell King authored and dtor committed Sep 10, 2016
1 parent 72f6d0b commit 3521a0f
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 7 deletions.
10 changes: 10 additions & 0 deletions arch/arm/mach-sa1100/jornada720.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
#include <linux/kernel.h>
#include <linux/tty.h>
#include <linux/delay.h>
#include <linux/gpio/machine.h>
#include <linux/platform_data/sa11x0-serial.h>
#include <linux/platform_device.h>
#include <linux/ioport.h>
Expand Down Expand Up @@ -228,6 +229,13 @@ static struct platform_device jornada_kbd_device = {
.resource = jornada_kbd_resources,
};

static struct gpiod_lookup_table jornada_ts_gpiod_table = {
.dev_id = "jornada_ts",
.table = {
GPIO_LOOKUP("gpio", 9, "penup", GPIO_ACTIVE_HIGH),
},
};

static struct platform_device jornada_ts_device = {
.name = "jornada_ts",
.id = -1,
Expand Down Expand Up @@ -256,6 +264,8 @@ static int __init jornada720_init(void)
GPSR = GPIO_GPIO20; /* restart gpio20 */
udelay(20); /* give it some time to restart */

gpiod_add_lookup_table(&jornada_ts_gpiod_table);

ret = platform_add_devices(devices, ARRAY_SIZE(devices));
}

Expand Down
21 changes: 14 additions & 7 deletions drivers/input/touchscreen/jornada720_ts.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,23 +13,23 @@
* HP Jornada 710/720/729 Touchscreen Driver
*/

#include <linux/gpio/consumer.h>
#include <linux/platform_device.h>
#include <linux/input.h>
#include <linux/interrupt.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/io.h>

#include <mach/hardware.h>
#include <mach/jornada720.h>
#include <mach/irqs.h>

MODULE_AUTHOR("Kristoffer Ericson <kristoffer.ericson@gmail.com>");
MODULE_DESCRIPTION("HP Jornada 710/720/728 touchscreen driver");
MODULE_LICENSE("GPL v2");

struct jornada_ts {
struct input_dev *dev;
struct gpio_desc *gpio;
int x_data[4]; /* X sample values */
int y_data[4]; /* Y sample values */
};
Expand Down Expand Up @@ -71,8 +71,8 @@ static irqreturn_t jornada720_ts_interrupt(int irq, void *dev_id)
struct input_dev *input = jornada_ts->dev;
int x, y;

/* If GPIO_GPIO9 is set to high then report pen up */
if (GPLR & GPIO_GPIO(9)) {
/* If gpio is high then report pen up */
if (gpiod_get_value(jornada_ts->gpio)) {
input_report_key(input, BTN_TOUCH, 0);
input_sync(input);
} else {
Expand Down Expand Up @@ -101,7 +101,7 @@ static int jornada720_ts_probe(struct platform_device *pdev)
{
struct jornada_ts *jornada_ts;
struct input_dev *input_dev;
int error;
int error, irq;

jornada_ts = devm_kzalloc(&pdev->dev, sizeof(*jornada_ts), GFP_KERNEL);
if (!jornada_ts)
Expand All @@ -113,6 +113,14 @@ static int jornada720_ts_probe(struct platform_device *pdev)

platform_set_drvdata(pdev, jornada_ts);

jornada_ts->gpio = devm_gpiod_get(&pdev->dev, "penup", GPIOD_IN);
if (IS_ERR(jornada_ts->gpio))
return PTR_ERR(jornada_ts->gpio);

irq = gpiod_to_irq(jornada_ts->gpio);
if (irq <= 0)
return irq < 0 ? irq : -EINVAL;

jornada_ts->dev = input_dev;

input_dev->name = "HP Jornada 7xx Touchscreen";
Expand All @@ -125,8 +133,7 @@ static int jornada720_ts_probe(struct platform_device *pdev)
input_set_abs_params(input_dev, ABS_X, 270, 3900, 0, 0);
input_set_abs_params(input_dev, ABS_Y, 180, 3700, 0, 0);

error = devm_request_irq(&pdev->dev, IRQ_GPIO9,
jornada720_ts_interrupt,
error = devm_request_irq(&pdev->dev, irq, jornada720_ts_interrupt,
IRQF_TRIGGER_RISING,
"HP7XX Touchscreen driver", pdev);
if (error) {
Expand Down

0 comments on commit 3521a0f

Please sign in to comment.