From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: Tim Harvey <tharvey@gateworks.com>
Cc: Lee Jones <lee.jones@linaro.org>,
Rob Herring <robh+dt@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Mark Brown <broonie@kernel.org>,
linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-hwmon@vger.kernel.org, linux-input@vger.kernel.org
Subject: Re: [PATCH v2 4/4] input: misc: Add Gateworks System Controller support
Date: Sat, 10 Mar 2018 10:45:02 -0800 [thread overview]
Message-ID: <20180310184502.GE260013@dtor-ws> (raw)
In-Reply-To: <1520287361-12569-5-git-send-email-tharvey@gateworks.com>
On Mon, Mar 05, 2018 at 02:02:41PM -0800, Tim Harvey wrote:
> Add support for dispatching Linux Input events for the various interrupts
> the Gateworks System Controller provides.
>
> Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> Signed-off-by: Tim Harvey <tharvey@gateworks.com>
> ---
> v2:
> - reword Kconfig
> - revise license comment block
> - remove unnecessary read of status register
> - remove unnecessary setting of input->dev.parent
> - use dt bindings for irq to keycode mapping
> - add support for platform-data
> - remove work-queue
>
> drivers/input/misc/Kconfig | 9 ++
> drivers/input/misc/Makefile | 1 +
> drivers/input/misc/gsc-input.c | 180 ++++++++++++++++++++++++++++++++
> include/linux/platform_data/gsc_input.h | 30 ++++++
> 4 files changed, 220 insertions(+)
> create mode 100644 drivers/input/misc/gsc-input.c
> create mode 100644 include/linux/platform_data/gsc_input.h
>
> diff --git a/drivers/input/misc/Kconfig b/drivers/input/misc/Kconfig
> index 9f082a3..e05f4fe 100644
> --- a/drivers/input/misc/Kconfig
> +++ b/drivers/input/misc/Kconfig
> @@ -117,6 +117,15 @@ config INPUT_E3X0_BUTTON
> To compile this driver as a module, choose M here: the
> module will be called e3x0_button.
>
> +config INPUT_GSC
> + tristate "Gateworks System Controller input support"
> + depends on MFD_GSC
> + help
> + Support GSC events as Linux input events.
> +
> + To compile this driver as a module, choose M here: the
> + module will be called gsc_input.
> +
> config INPUT_PCSPKR
> tristate "PC Speaker support"
> depends on PCSPKR_PLATFORM
> diff --git a/drivers/input/misc/Makefile b/drivers/input/misc/Makefile
> index 4b6118d..969debe 100644
> --- a/drivers/input/misc/Makefile
> +++ b/drivers/input/misc/Makefile
> @@ -38,6 +38,7 @@ obj-$(CONFIG_INPUT_GP2A) += gp2ap002a00f.o
> obj-$(CONFIG_INPUT_GPIO_BEEPER) += gpio-beeper.o
> obj-$(CONFIG_INPUT_GPIO_TILT_POLLED) += gpio_tilt_polled.o
> obj-$(CONFIG_INPUT_GPIO_DECODER) += gpio_decoder.o
> +obj-$(CONFIG_INPUT_GSC) += gsc-input.o
> obj-$(CONFIG_INPUT_HISI_POWERKEY) += hisi_powerkey.o
> obj-$(CONFIG_HP_SDC_RTC) += hp_sdc_rtc.o
> obj-$(CONFIG_INPUT_IMS_PCU) += ims-pcu.o
> diff --git a/drivers/input/misc/gsc-input.c b/drivers/input/misc/gsc-input.c
> new file mode 100644
> index 0000000..27b5e93
> --- /dev/null
> +++ b/drivers/input/misc/gsc-input.c
> @@ -0,0 +1,180 @@
> +/* SPDX-License-Identifier: GPL-2.0
> + *
> + * Copyright (C) 2018 Gateworks Corporation
> + *
> + * This driver dispatches Linux input events for GSC interrupt events
> + */
> +#include <linux/input.h>
> +#include <linux/interrupt.h>
> +#include <linux/kernel.h>
> +#include <linux/module.h>
> +#include <linux/of.h>
> +#include <linux/of_irq.h>
> +#include <linux/platform_device.h>
> +#include <linux/regmap.h>
> +
> +#include <linux/mfd/gsc.h>
> +#include <linux/platform_data/gsc_input.h>
> +
> +struct gsc_input_button_priv {
> + struct input_dev *input;
> + const struct gsc_input_button *button;
> +};
> +
> +struct gsc_input_data {
> + struct gsc_dev *gsc;
> + struct gsc_input_platform_data *pdata;
> + struct input_dev *input;
> + struct gsc_input_button_priv *buttons;
> + int nbuttons;
> + unsigned int irqs[];
> +#if 0
> + int irq;
> + struct work_struct irq_work;
> + struct mutex mutex;
> +#endif
> +};
> +
> +static irqreturn_t gsc_input_irq(int irq, void *data)
> +{
> + const struct gsc_input_button_priv *button_priv = data;
> + struct input_dev *input = button_priv->input;
> +
> + dev_dbg(&input->dev, "irq%d code=%d\n", irq, button_priv->button->code);
> + input_report_key(input, button_priv->button->code, 1);
> + input_sync(input);
> + input_report_key(input, button_priv->button->code, 0);
> + input_sync(input);
> +
> + return IRQ_HANDLED;
Hmm, so in the end this is just a bunch of buttons connected to
interrupt lines. We already have a driver for that, called gpio-keys. It
can work in pure interrupt mode (i.e. do not need real GPIO pin, just
interrupt, and it will generate key down and up events when interrupt
arrives, with possible delay for the up event).
Thanks.
--
Dmitry
next prev parent reply other threads:[~2018-03-10 18:45 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-05 22:02 [PATCH v2 0/4] Add support for the Gateworks System Controller Tim Harvey
2018-03-05 22:02 ` [PATCH v2 1/4] dt-bindings: mfd: Add Gateworks System Controller bindings Tim Harvey
2018-03-09 23:14 ` Rob Herring
2018-03-23 17:11 ` Tim Harvey
2018-03-10 13:57 ` Fabio Estevam
2018-03-05 22:02 ` [PATCH v2 2/4] mfd: add Gateworks System Controller core driver Tim Harvey
2018-03-12 14:41 ` Lee Jones
2018-03-05 22:02 ` [PATCH v2 3/4] hwmon: add Gateworks System Controller support Tim Harvey
2018-03-05 23:12 ` Guenter Roeck
2018-03-05 22:02 ` [PATCH v2 4/4] input: misc: Add " Tim Harvey
2018-03-10 18:45 ` Dmitry Torokhov [this message]
2018-03-14 17:13 ` Tim Harvey
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180310184502.GE260013@dtor-ws \
--to=dmitry.torokhov@gmail.com \
--cc=broonie@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=lee.jones@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-hwmon@vger.kernel.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=robh+dt@kernel.org \
--cc=tharvey@gateworks.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).