* [PATCH 0/4] Input updates for Jornada720 @ 2016-09-07 9:50 Russell King - ARM Linux 2016-09-07 9:51 ` [PATCH 2/4] Input: jornada720_kbd - get rid of mach/irqs.h include Russell King 2016-09-07 9:51 ` [PATCH 4/4] Input: jornada720_ts - get rid of mach/irqs.h and mach/hardware.h includes Russell King 0 siblings, 2 replies; 5+ messages in thread From: Russell King - ARM Linux @ 2016-09-07 9:50 UTC (permalink / raw) To: linux-arm-kernel Dmitry, Please apply this tested series of patches for Jornada 720 input support. Thanks. arch/arm/mach-sa1100/jornada720.c | 16 +++++++++++ drivers/input/keyboard/jornada720_kbd.c | 48 ++++++++++--------------------- drivers/input/touchscreen/jornada720_ts.c | 21 +++++++++----- 3 files changed, 45 insertions(+), 40 deletions(-) -- RMK's Patch system: http://www.armlinux.org.uk/developer/patches/ FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up according to speedtest.net. ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 2/4] Input: jornada720_kbd - get rid of mach/irqs.h include 2016-09-07 9:50 [PATCH 0/4] Input updates for Jornada720 Russell King - ARM Linux @ 2016-09-07 9:51 ` Russell King 2016-09-08 2:24 ` Dmitry Torokhov 2016-09-07 9:51 ` [PATCH 4/4] Input: jornada720_ts - get rid of mach/irqs.h and mach/hardware.h includes Russell King 1 sibling, 1 reply; 5+ messages in thread From: Russell King @ 2016-09-07 9:51 UTC (permalink / raw) To: linux-arm-kernel Switch the jornada720 keyboard driver to obtain its interrupt from the platform device, rather than via a hard-coded interrupt number obtained from the mach/irqs.h header. Tested-by: Adam Wysocki <armlinux@chmurka.net> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> --- arch/arm/mach-sa1100/jornada720.c | 6 ++++++ drivers/input/keyboard/jornada720_kbd.c | 11 +++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/arch/arm/mach-sa1100/jornada720.c b/arch/arm/mach-sa1100/jornada720.c index c0b1f5bafae4..2b96f7bc16bd 100644 --- a/arch/arm/mach-sa1100/jornada720.c +++ b/arch/arm/mach-sa1100/jornada720.c @@ -217,9 +217,15 @@ static struct platform_device jornada_ssp_device = { .id = -1, }; +static struct resource jornada_kbd_resources[] = { + DEFINE_RES_IRQ(IRQ_GPIO0), +}; + static struct platform_device jornada_kbd_device = { .name = "jornada720_kbd", .id = -1, + .num_resources = ARRAY_SIZE(jornada_kbd_resources), + .resource = jornada_kbd_resources, }; static struct platform_device jornada_ts_device = { diff --git a/drivers/input/keyboard/jornada720_kbd.c b/drivers/input/keyboard/jornada720_kbd.c index 4b2e9ff18ba1..6ac9fee1d8fa 100644 --- a/drivers/input/keyboard/jornada720_kbd.c +++ b/drivers/input/keyboard/jornada720_kbd.c @@ -26,7 +26,6 @@ #include <mach/jornada720.h> #include <mach/hardware.h> -#include <mach/irqs.h> MODULE_AUTHOR("Kristoffer Ericson <Kristoffer.Ericson@gmail.com>"); MODULE_DESCRIPTION("HP Jornada 710/720/728 keyboard driver"); @@ -98,7 +97,11 @@ static int jornada720_kbd_probe(struct platform_device *pdev) { struct jornadakbd *jornadakbd; struct input_dev *input_dev; - int i, err; + int i, err, irq; + + irq = platform_get_irq(pdev, 0); + if (irq <= 0) + return irq < 0 ? irq : -EINVAL; jornadakbd = devm_kzalloc(&pdev->dev, sizeof(*jornadakbd), GFP_KERNEL); input_dev = devm_input_allocate_device(&pdev->dev); @@ -126,10 +129,10 @@ static int jornada720_kbd_probe(struct platform_device *pdev) input_set_capability(input_dev, EV_MSC, MSC_SCAN); - err = devm_request_irq(&pdev->dev, IRQ_GPIO0, jornada720_kbd_interrupt, + err = devm_request_irq(&pdev->dev, irq, jornada720_kbd_interrupt, IRQF_TRIGGER_FALLING, "jornadakbd", pdev); if (err) { - printk(KERN_INFO "jornadakbd720_kbd: Unable to grab IRQ\n"); + dev_err(&pdev->dev, "unable to grab IRQ%d: %d\n", irq, err); return err; } -- 2.1.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/4] Input: jornada720_kbd - get rid of mach/irqs.h include 2016-09-07 9:51 ` [PATCH 2/4] Input: jornada720_kbd - get rid of mach/irqs.h include Russell King @ 2016-09-08 2:24 ` Dmitry Torokhov 0 siblings, 0 replies; 5+ messages in thread From: Dmitry Torokhov @ 2016-09-08 2:24 UTC (permalink / raw) To: linux-arm-kernel On Wed, Sep 07, 2016 at 10:51:09AM +0100, Russell King wrote: > Switch the jornada720 keyboard driver to obtain its interrupt from the > platform device, rather than via a hard-coded interrupt number obtained > from the mach/irqs.h header. > > Tested-by: Adam Wysocki <armlinux@chmurka.net> > Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> This has already been applied as well. > --- > arch/arm/mach-sa1100/jornada720.c | 6 ++++++ > drivers/input/keyboard/jornada720_kbd.c | 11 +++++++---- > 2 files changed, 13 insertions(+), 4 deletions(-) > > diff --git a/arch/arm/mach-sa1100/jornada720.c b/arch/arm/mach-sa1100/jornada720.c > index c0b1f5bafae4..2b96f7bc16bd 100644 > --- a/arch/arm/mach-sa1100/jornada720.c > +++ b/arch/arm/mach-sa1100/jornada720.c > @@ -217,9 +217,15 @@ static struct platform_device jornada_ssp_device = { > .id = -1, > }; > > +static struct resource jornada_kbd_resources[] = { > + DEFINE_RES_IRQ(IRQ_GPIO0), > +}; > + > static struct platform_device jornada_kbd_device = { > .name = "jornada720_kbd", > .id = -1, > + .num_resources = ARRAY_SIZE(jornada_kbd_resources), > + .resource = jornada_kbd_resources, > }; > > static struct platform_device jornada_ts_device = { > diff --git a/drivers/input/keyboard/jornada720_kbd.c b/drivers/input/keyboard/jornada720_kbd.c > index 4b2e9ff18ba1..6ac9fee1d8fa 100644 > --- a/drivers/input/keyboard/jornada720_kbd.c > +++ b/drivers/input/keyboard/jornada720_kbd.c > @@ -26,7 +26,6 @@ > > #include <mach/jornada720.h> > #include <mach/hardware.h> > -#include <mach/irqs.h> > > MODULE_AUTHOR("Kristoffer Ericson <Kristoffer.Ericson@gmail.com>"); > MODULE_DESCRIPTION("HP Jornada 710/720/728 keyboard driver"); > @@ -98,7 +97,11 @@ static int jornada720_kbd_probe(struct platform_device *pdev) > { > struct jornadakbd *jornadakbd; > struct input_dev *input_dev; > - int i, err; > + int i, err, irq; > + > + irq = platform_get_irq(pdev, 0); > + if (irq <= 0) > + return irq < 0 ? irq : -EINVAL; > > jornadakbd = devm_kzalloc(&pdev->dev, sizeof(*jornadakbd), GFP_KERNEL); > input_dev = devm_input_allocate_device(&pdev->dev); > @@ -126,10 +129,10 @@ static int jornada720_kbd_probe(struct platform_device *pdev) > > input_set_capability(input_dev, EV_MSC, MSC_SCAN); > > - err = devm_request_irq(&pdev->dev, IRQ_GPIO0, jornada720_kbd_interrupt, > + err = devm_request_irq(&pdev->dev, irq, jornada720_kbd_interrupt, > IRQF_TRIGGER_FALLING, "jornadakbd", pdev); > if (err) { > - printk(KERN_INFO "jornadakbd720_kbd: Unable to grab IRQ\n"); > + dev_err(&pdev->dev, "unable to grab IRQ%d: %d\n", irq, err); > return err; > } > > -- > 2.1.0 > -- Dmitry ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 4/4] Input: jornada720_ts - get rid of mach/irqs.h and mach/hardware.h includes 2016-09-07 9:50 [PATCH 0/4] Input updates for Jornada720 Russell King - ARM Linux 2016-09-07 9:51 ` [PATCH 2/4] Input: jornada720_kbd - get rid of mach/irqs.h include Russell King @ 2016-09-07 9:51 ` Russell King 2016-09-08 2:22 ` Dmitry Torokhov 1 sibling, 1 reply; 5+ messages in thread From: Russell King @ 2016-09-07 9:51 UTC (permalink / raw) To: linux-arm-kernel 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> --- arch/arm/mach-sa1100/jornada720.c | 10 ++++++++++ drivers/input/touchscreen/jornada720_ts.c | 21 ++++++++++++++------- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/arch/arm/mach-sa1100/jornada720.c b/arch/arm/mach-sa1100/jornada720.c index 2b96f7bc16bd..0a2ca9be00e6 100644 --- a/arch/arm/mach-sa1100/jornada720.c +++ b/arch/arm/mach-sa1100/jornada720.c @@ -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> @@ -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, @@ -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)); } diff --git a/drivers/input/touchscreen/jornada720_ts.c b/drivers/input/touchscreen/jornada720_ts.c index ea3b6a5b83e6..729b3c89324c 100644 --- a/drivers/input/touchscreen/jornada720_ts.c +++ b/drivers/input/touchscreen/jornada720_ts.c @@ -13,6 +13,7 @@ * 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> @@ -20,9 +21,7 @@ #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"); @@ -30,6 +29,7 @@ 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 */ }; @@ -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 { @@ -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) @@ -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"; @@ -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) { -- 2.1.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 4/4] Input: jornada720_ts - get rid of mach/irqs.h and mach/hardware.h includes 2016-09-07 9:51 ` [PATCH 4/4] Input: jornada720_ts - get rid of mach/irqs.h and mach/hardware.h includes Russell King @ 2016-09-08 2:22 ` Dmitry Torokhov 0 siblings, 0 replies; 5+ messages in thread From: Dmitry Torokhov @ 2016-09-08 2:22 UTC (permalink / raw) To: linux-arm-kernel On Wed, Sep 07, 2016 at 10:51:19AM +0100, Russell King wrote: > 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> Applied, thank you. > --- > arch/arm/mach-sa1100/jornada720.c | 10 ++++++++++ > drivers/input/touchscreen/jornada720_ts.c | 21 ++++++++++++++------- > 2 files changed, 24 insertions(+), 7 deletions(-) > > diff --git a/arch/arm/mach-sa1100/jornada720.c b/arch/arm/mach-sa1100/jornada720.c > index 2b96f7bc16bd..0a2ca9be00e6 100644 > --- a/arch/arm/mach-sa1100/jornada720.c > +++ b/arch/arm/mach-sa1100/jornada720.c > @@ -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> > @@ -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, > @@ -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)); > } > > diff --git a/drivers/input/touchscreen/jornada720_ts.c b/drivers/input/touchscreen/jornada720_ts.c > index ea3b6a5b83e6..729b3c89324c 100644 > --- a/drivers/input/touchscreen/jornada720_ts.c > +++ b/drivers/input/touchscreen/jornada720_ts.c > @@ -13,6 +13,7 @@ > * 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> > @@ -20,9 +21,7 @@ > #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"); > @@ -30,6 +29,7 @@ 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 */ > }; > @@ -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 { > @@ -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) > @@ -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"; > @@ -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) { > -- > 2.1.0 > -- Dmitry ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2016-09-08 2:24 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-09-07 9:50 [PATCH 0/4] Input updates for Jornada720 Russell King - ARM Linux 2016-09-07 9:51 ` [PATCH 2/4] Input: jornada720_kbd - get rid of mach/irqs.h include Russell King 2016-09-08 2:24 ` Dmitry Torokhov 2016-09-07 9:51 ` [PATCH 4/4] Input: jornada720_ts - get rid of mach/irqs.h and mach/hardware.h includes Russell King 2016-09-08 2:22 ` Dmitry Torokhov
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).