Received: by 10.223.185.111 with SMTP id b44csp1656602wrg; Sat, 10 Mar 2018 10:46:18 -0800 (PST) X-Google-Smtp-Source: AG47ELtRqkNBcgFGVkKiwQkmRmSxpruCNpy8EBth8KMTw0M4/08ahUDR04UM8oDoXmSb+lgRypgN X-Received: by 10.101.97.175 with SMTP id i15mr2202179pgv.55.1520707577923; Sat, 10 Mar 2018 10:46:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1520707577; cv=none; d=google.com; s=arc-20160816; b=Z3nHEQarKJFxy9FEMnd33W3H5z91hiFt6L1H5kx2edzNY53Lzm+RZt83Fs30CWOwX3 xUuhhn0JTXhC8Hnt1o34F7zxRXVn5lJCm3pVhkUWpCIAk2Ox7mFBgkCq1yR5mW5ewt1W eaP4hnvyjq2nQMQoJ3huvCY28vatS/Fcpy4NbKwQ4dkuEsbSlUSaVXKqMFs1Pn1LuLr4 JzKL4TjGxFlFrk8J9WNDgreN5NjlGxogVjm+WN8tVydGwj8RrIYUN02zEn9pVW1WQlzP GJ2kssoLns5pyT5o6IY5rius2KCeLZoqL1c7TTUeGpaM2vLWdOwDo+JOn3NZX6hK9cbR nrrw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature:arc-authentication-results; bh=3ECEHLYe2751KDJiURCO9DTXFCagmxAmNlcdhdEPWyo=; b=0VR49YKvQc1Tovdr87I4xMSxpAHlRdYLT4fhNgcoaIR3xHeH+rNnQflD47H+jUdanW C5GG3IMQnJBQ1uHwdbd5jCs7rS8zvF+WXI6+l6G5YbYrrff3GUrEH8ZUPRGmb5EOeGVW KTEYwX2qMnYvyqHgoyK/jDMI7ffXGEtbCdZT95frxkPUj4ZAVu+N10O8jEMWoKwO9yAc HOHm6dfjaubDfZZIlfxEoSyuuyhI4mg9i4JoW53yAfk8f3HVMJPwTWmgDn1lPNeONsYC NAq6nvH5XvxXM5LAkGcaF7CuQCTEh362nRwGjuyKDR34c1AvbxKKzWuozpbqDG4R3J0s mqGg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=E0iraSDC; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g5si2665489pgf.84.2018.03.10.10.46.03; Sat, 10 Mar 2018 10:46:17 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=E0iraSDC; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932294AbeCJSpN (ORCPT + 99 others); Sat, 10 Mar 2018 13:45:13 -0500 Received: from mail-it0-f68.google.com ([209.85.214.68]:54655 "EHLO mail-it0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752009AbeCJSpG (ORCPT ); Sat, 10 Mar 2018 13:45:06 -0500 Received: by mail-it0-f68.google.com with SMTP id c11so6467229ith.4; Sat, 10 Mar 2018 10:45:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=3ECEHLYe2751KDJiURCO9DTXFCagmxAmNlcdhdEPWyo=; b=E0iraSDCU4SHvu/VA9VcKUXdFZXPfQrte7nvzojdoOO+mj7RoIk7gm/huGlu8cky9n PxmZ+EGCsPBIwmR8TQJwOyfT+hEEJca406ZHQzCXP4d7VYNG1keO1egIxi/n4Wf0y4lR k7SFGuOZyw0Pj4AEMK2/xL3zsIegDivckXEv3XDyzbCwQOMFjFkE3W9nn1F8Fc6AamDt xvVuOnXWxTq/Dp8pKccTZg0wdh+OKYBxxkFDQwLzQRHA9uBWBaHpIPNR7yjlJB6httrG 9kfqxJGyBh8tCYhoX5znetHcWsGFwpAziJIY+CEWK4PLCgoAw+nQoBoboT8enj/8bzHl X7Ag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=3ECEHLYe2751KDJiURCO9DTXFCagmxAmNlcdhdEPWyo=; b=ZViPqUYU3pf+syDVHnDAi5tAISwKRmd4TF4pxo9r6QzyeWCvk/j5UZrovHmpxWEUwk ksDWVBGfZ7LVhSMtMdmfSpJNidFiLJPsug+Mm76yuj2DdTkrwnVIeMi4vEdM9GIzF2MS V62vYcAAgYUNWjZ1dpu21yYFCJ1LmKTMb7jGKSMlYQSNbW7HHXct9e1YiQmyaVZt5Qot C0KQzpL5JVeJ1nmPJR4nGRWkdmXa+Y6ZPm6v+Coh4ni4QLNoJ5pmZWliITFB5x6ActDH Sk3E/9S9wHgFD/iAwUlcxTPezLQXxcP7BRzLaBM9y1X77yWJaHL55ee+MlpHRJ/LKyTA +PJw== X-Gm-Message-State: AElRT7GO+cem9N/eKMVuoeT9rP06ZALEoWEmhsuxMaKXN9aH5v//w1X6 bhIXA8gNGN4LLc1f0dhE41A= X-Received: by 10.36.203.67 with SMTP id u64mr2517461itg.133.1520707505072; Sat, 10 Mar 2018 10:45:05 -0800 (PST) Received: from dtor-ws ([2620:0:1000:1511:8de6:27a8:ed13:2ef5]) by smtp.gmail.com with ESMTPSA id b185sm926263itb.20.2018.03.10.10.45.04 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sat, 10 Mar 2018 10:45:04 -0800 (PST) Date: Sat, 10 Mar 2018 10:45:02 -0800 From: Dmitry Torokhov To: Tim Harvey Cc: Lee Jones , Rob Herring , Mark Rutland , Mark Brown , 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 Message-ID: <20180310184502.GE260013@dtor-ws> References: <1520287361-12569-1-git-send-email-tharvey@gateworks.com> <1520287361-12569-5-git-send-email-tharvey@gateworks.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1520287361-12569-5-git-send-email-tharvey@gateworks.com> User-Agent: Mutt/1.9.2 (2017-12-15) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 > Signed-off-by: Tim Harvey > --- > 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 > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +#include > +#include > + > +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