Received: by 10.213.65.68 with SMTP id h4csp1123761imn; Wed, 14 Mar 2018 10:15:19 -0700 (PDT) X-Google-Smtp-Source: AG47ELutfL6fDmwQsJ4TueuppGyLsj0vVxS52rtCGeMpUjIHbhQlaLEpfsrKpov5p0jmB1usx87i X-Received: by 10.99.100.197 with SMTP id y188mr4250056pgb.277.1521047719760; Wed, 14 Mar 2018 10:15:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521047719; cv=none; d=google.com; s=arc-20160816; b=ezG4u7VxC5KiKZztAnymt2wFUO+EuwQMeZtv+xHPKIYoLknCm3SVR9VNrCj0VV19MB QPd7pMO5861jzmwsowDFJHZX5ooEeoRIZ8mzFqpiMQaZPuY+17SX9OzLBGnn6/RaPhAG Vl2SECB1Ws4gce2zVy/kxHE1fnMAiCZEZ+LJ6gpzH9GDgJHurhSX/xz/IwBypAyLWsNV IgVZcfBJgiMvhfP2uRyWRgKziuiUP7bQJVv3ce7z6e2Rw0nBnBZMWzv236/CNAhuqSfv 7OqIAEnA3xY0F1TU0aKecOAYQBdotcxdi4RBtKCv+6raIUqvUadHVN5tTXPssH2eBkdO DhqA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=cIQ29J6aorMPxBroh+QZCbXD9zXeANXa4B7volDFXuE=; b=Zwvzd0FBqa04ioeCKGoVuzf4DRE3i6u3HYTT0GNdD0zLyV4aaeRWmXimxhdKFrAX1m BUWNOKfXTmWyanQpRXRWrFiFPLgg4ZQpBZs7GrL2MMYSY6FradRcCB9O3aJGyI5sob3B YQQf6K33P+O/2Ka0kc+9AJIjItn6XAyQNhRtn9etfMP0KoQUa1/btIj46SuLnc4xJ+Ds jVGNjeYOzd2MC8KWbJ+9xPMIjIrjG1gtFdwYtU7pqEcNUq0WNMP8GCgbt6Dw/jpzpyWc tgC4AVUPYOLhXB5rH5SNMd2dWYkUJjE/aj31WGq3VkSS1MleRao+qbBmz+J1rs9mo51S /hQQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gateworks-com.20150623.gappssmtp.com header.s=20150623 header.b=g3MZZJrX; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z23-v6si2245902plo.272.2018.03.14.10.15.05; Wed, 14 Mar 2018 10:15:19 -0700 (PDT) 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=@gateworks-com.20150623.gappssmtp.com header.s=20150623 header.b=g3MZZJrX; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751976AbeCNROE (ORCPT + 99 others); Wed, 14 Mar 2018 13:14:04 -0400 Received: from mail-wr0-f194.google.com ([209.85.128.194]:42128 "EHLO mail-wr0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751700AbeCNROB (ORCPT ); Wed, 14 Mar 2018 13:14:01 -0400 Received: by mail-wr0-f194.google.com with SMTP id s18so5498138wrg.9 for ; Wed, 14 Mar 2018 10:14:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gateworks-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=cIQ29J6aorMPxBroh+QZCbXD9zXeANXa4B7volDFXuE=; b=g3MZZJrXYnagUUAcU0Cab3/8CRcjB0MYJVx3oFljgoUtrhQfPyQb4XA01xcQ9ZPluD sj9Oiq0lW17WJh1R5qRDjWaTvAmifurjWLWf3TaEAubDrhpq9ki0HRgu7yoIkfsKtXBX 9WxNrPw6714b0xIt1ew8uxJ1x2aCJOZ2wR9fuX+aBHiqIjTBJ0xTh+Uoq6iJ9bXBaSSv 2QdCuGkpp8W9gfJAgttUtdIvQaXgzp8kjpQtjK23z/Q5PUL0i+gu0r6J9HJbd9izKexx QPJTJQha1fF3SPt00RVME0WnfFuhphtO8VKKLA43Ffjezt54vK+SkdNhAbF9Dr15GYnV Ge9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=cIQ29J6aorMPxBroh+QZCbXD9zXeANXa4B7volDFXuE=; b=ONfl8BukqfHqjdP8VEYZUVjA6MUGZ1JzFBhCe2Pwb3j3iwjS5khiFRjJB2oEJnpyGh JAuYD/dEQ/KBOfloA8AV5VHGRjfVL3L0MRfV/Li5A8WNPI7KM01jLCFW1d3pru9qeitD oc8Y4EiEBkP3/Go2WW5L2U75KntvoTILxzUwx4IzhpHLeisTQiAhoKYs2qYIo3qwH9g5 xtfGiNc7Grqnax2xHgl5fgvIW2KCrbh+FqOCS1wk7qK43Nu0OdvkP6ONm79fNRv7HN4u 5QdwYPVvDS2hS4PFJkJ16L8LZw78LVyxzIbrM3sRUlB6YawCi8mCViPAbVAh+IX44WBw S+jQ== X-Gm-Message-State: AElRT7GE+aJ7AlV47b6wO1UD0i9lEqy5MHyXCs12mjekA616FoVqBFPL l+NFtvmH54pZ/84QsFfisRAPXEhuCEhGme+iRLJcjA== X-Received: by 10.223.182.76 with SMTP id i12mr4387962wre.24.1521047639911; Wed, 14 Mar 2018 10:13:59 -0700 (PDT) MIME-Version: 1.0 Received: by 10.28.6.66 with HTTP; Wed, 14 Mar 2018 10:13:59 -0700 (PDT) In-Reply-To: <20180310184502.GE260013@dtor-ws> References: <1520287361-12569-1-git-send-email-tharvey@gateworks.com> <1520287361-12569-5-git-send-email-tharvey@gateworks.com> <20180310184502.GE260013@dtor-ws> From: Tim Harvey Date: Wed, 14 Mar 2018 10:13:59 -0700 Message-ID: Subject: Re: [PATCH v2 4/4] input: misc: Add Gateworks System Controller support To: Dmitry Torokhov 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 Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sat, Mar 10, 2018 at 10:45 AM, Dmitry Torokhov wrote: > 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). > Dmitry, Yes that's what it does and yes your correct the gpio-keys driver will work perfect for that. Thanks for calling me out on that - I had not realized the gpio-keys driver could work from 'interrupts'. I'll remove the input driver in my next submission. At least I know how to properly write an input driver now from your previous review :) Thanks, Tim