[{"id":1781093,"web_url":"http://patchwork.ozlabs.org/comment/1781093/","msgid":"<20171005222224.ffeewebacx7bljx2@rob-hp-laptop>","list_archive_url":null,"date":"2017-10-05T22:22:24","subject":"Re: [PATCH v5 2/6] dt-bindings: input: Add common keyboard document\n\tbindings","submitter":{"id":62529,"url":"http://patchwork.ozlabs.org/api/people/62529/","name":"Rob Herring (Arm)","email":"robh@kernel.org"},"content":"On Wed, Sep 27, 2017 at 06:44:04PM +0800, Chen Zhong wrote:\n> This patch adds the device tree binding documentation for common\n> keyboard.\n> \n> Signed-off-by: Chen Zhong <chen.zhong@mediatek.com>\n> ---\n>  Documentation/devicetree/bindings/input/keys.txt |    8 ++++++++\n>  1 file changed, 8 insertions(+)\n>  create mode 100644 Documentation/devicetree/bindings/input/keys.txt\n\nAcked-by: Rob Herring <robh@kernel.org>","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org\n\theader.b=\"Y/OqLHZE\"; dkim-atps=neutral"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3y7S2h608kz9t2h\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tFri,  6 Oct 2017 09:23:08 +1100 (AEDT)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1e0EXn-0001Vv-Ik; Thu, 05 Oct 2017 22:23:03 +0000","from mail-oi0-f68.google.com ([209.85.218.68])\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1e0EXW-0000fe-Po; Thu, 05 Oct 2017 22:22:55 +0000","by mail-oi0-f68.google.com with SMTP id h200so3008322oib.1;\n\tThu, 05 Oct 2017 15:22:26 -0700 (PDT)","from localhost (216-188-254-6.dyn.grandenetworks.net.\n\t[216.188.254.6]) by smtp.gmail.com with ESMTPSA id\n\tx11sm50500otx.63.2017.10.05.15.22.25\n\t(version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);\n\tThu, 05 Oct 2017 15:22:25 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:\n\tMessage-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=fgH6L8s/31fVe5AVYcMbx0lturzvclRlqKBYK0jQWoY=;\n\tb=Y/OqLHZE3vGspB\n\tKPUUX0GuX57mgedcZyYvyT+VF0M4wLVRKXPlhnVSk4IKaDzDVnNxQTDpk5UfXjdc08HD1sX/Omvoz\n\tLN9/mbfxx5IR2hHCuOZU1iCYwIgLjubKzYwHIdaPfHpXKjDVEHlWNdpvL9H1IAqDd4+IKOLc1Ucbg\n\tGUjIqpbWq5q8HOs5ymog1tiVW9N+ekOmi1OWkKbOgz76qUDhtqMpPeuESnom7mvXZRgVWr3Huk+OS\n\tx4d2RXQ2fd1fe9pQL2twC7XeOEiRKD71AtzofcmwRv8o0T7xJoCW9XBhQRCnEgHaqexSDV9bOAd85\n\tLajFBWnC72mk8erjJshQ==;","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:date:from:to:cc:subject:message-id:references\n\t:mime-version:content-disposition:in-reply-to:user-agent;\n\tbh=3UyuIE0o3Zn45iSKummhG1GUtdFfSse0mIB9Xi7hOkI=;\n\tb=IueM1tHQWu4wyNiOmERf2/G0Uida3zCe/zQJsJUYxaSU3ovQ6ckmSLrD/GW0q6P70m\n\tMSgqUIGiDOZ83n1t9eKCr/brfSLPpMjnRS/hTx0aSyMNzjf7m8JWRXC+g1LtDh3uHgx7\n\t5oPt7YqqieeLawoz5RzI8t4gOYWovPyE02VyP16s+mzzrVpKAK14Ny/9RpwATtynMSYw\n\tt0ayQ46d1aaCVxz8fPTye0ILQP9cgYSdbV/ELJHctWB28ms1Un36xumE4c73E4whVL+O\n\tp+KgJwchlPnlKZ0NlRd0GH3b/I9DYS0VJn6oaWvWHG9K0UXU6+klFg4FBKw7+eA7LuK9\n\t2BUA==","X-Gm-Message-State":"AMCzsaUgyhZheTMe/RumAsmioVGqkG/gCsgGbQTxip2YAFRq6v9Ob8pZ\n\tQdYKp3HB3y2ZNr623QfzWw==","X-Google-Smtp-Source":"AOwi7QB3VbFDNPfvZoHOZ3/zhKRanIq8tw/ZyXW9+YxwGfCkIiz7w5Q9fU0WiN/6L/HTVQx2zKeAfg==","X-Received":"by 10.157.31.53 with SMTP id x50mr110414otd.4.1507242146138;\n\tThu, 05 Oct 2017 15:22:26 -0700 (PDT)","Date":"Thu, 5 Oct 2017 17:22:24 -0500","From":"Rob Herring <robh@kernel.org>","To":"Chen Zhong <chen.zhong@mediatek.com>","Subject":"Re: [PATCH v5 2/6] dt-bindings: input: Add common keyboard document\n\tbindings","Message-ID":"<20171005222224.ffeewebacx7bljx2@rob-hp-laptop>","References":"<1506509048-19032-1-git-send-email-chen.zhong@mediatek.com>\n\t<1506509048-19032-3-git-send-email-chen.zhong@mediatek.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<1506509048-19032-3-git-send-email-chen.zhong@mediatek.com>","User-Agent":"NeoMutt/20170113 (1.7.2)","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20171005_152247_656940_CE5EC110 ","X-CRM114-Status":"UNSURE (   9.84  )","X-CRM114-Notice":"Please train this message.","X-Spam-Score":"-1.0 (-)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-1.0 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/,\n\tno trust [209.85.218.68 listed in list.dnswl.org]\n\t0.5 RCVD_IN_SORBS_SPAM     RBL: SORBS: sender is a spam source\n\t[209.85.218.68 listed in dnsbl.sorbs.net]\n\t-0.0 RCVD_IN_MSPIKE_H3      RBL: Good reputation (+3)\n\t[209.85.218.68 listed in wl.mailspike.net]\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends\n\tin digit (robherring2[at]gmail.com)\n\t0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail\n\tprovider (robherring2[at]gmail.com)\n\t0.0 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level\n\tmail domains are different\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]\n\t-0.0 RCVD_IN_MSPIKE_WL      Mailspike good senders\n\t0.2 FREEMAIL_FORGED_FROMDOMAIN 2nd level domains in From and\n\tEnvelopeFrom freemail headers are different","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"Mark Rutland <mark.rutland@arm.com>,\n\tAlessandro Zummo <a.zummo@towertech.it>,\n\tJaechul Lee <jcsing.lee@samsung.com>, \n\tdevicetree@vger.kernel.org, Linus Walleij <linus.walleij@linaro.org>, \n\tDmitry Torokhov <dmitry.torokhov@gmail.com>,\n\tlinux-kernel@vger.kernel.org, Andi Shyti <andi.shyti@samsung.com>,\n\tChanwoo Choi <cw00.choi@samsung.com>, \n\tAlexandre Belloni <alexandre.belloni@free-electrons.com>,\n\tlinux-input@vger.kernel.org, Matthias Brugger <matthias.bgg@gmail.com>,\n\tlinux-mediatek@lists.infradead.org,\n\tEddie Huang <eddie.huang@mediatek.com>, \n\tLee Jones <lee.jones@linaro.org>, linux-arm-kernel@lists.infradead.org,\n\tlinux-rtc@vger.kernel.org","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}},{"id":1781109,"web_url":"http://patchwork.ozlabs.org/comment/1781109/","msgid":"<20171005222308.s3m2a7f47ylqzwig@rob-hp-laptop>","list_archive_url":null,"date":"2017-10-05T22:23:08","subject":"Re: [PATCH v5 3/6] dt-bindings: input: Add document bindings for\n\tmtk-pmic-keys","submitter":{"id":62529,"url":"http://patchwork.ozlabs.org/api/people/62529/","name":"Rob Herring (Arm)","email":"robh@kernel.org"},"content":"On Wed, Sep 27, 2017 at 06:44:05PM +0800, Chen Zhong wrote:\n> This patch adds the device tree binding documentation for the MediaTek\n> pmic keys found on PMIC MT6397/MT6323.\n> \n> Signed-off-by: Chen Zhong <chen.zhong@mediatek.com>\n> ---\n>  .../devicetree/bindings/input/mtk-pmic-keys.txt    |   43 ++++++++++++++++++++\n>  1 file changed, 43 insertions(+)\n>  create mode 100644 Documentation/devicetree/bindings/input/mtk-pmic-keys.txt\n\nAcked-by: Rob Herring <robh@kernel.org>","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org header.b=\"bjRRHDB5\"; \n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=infradead.org header.i=@infradead.org\n\theader.b=\"JAOYM97t\"; dkim-atps=neutral"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3y7SQG4zYYz9t2V\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tFri,  6 Oct 2017 09:40:06 +1100 (AEDT)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1e0EoD-0001GY-CP; Thu, 05 Oct 2017 22:40:01 +0000","from casper.infradead.org ([2001:8b0:10b:1236::1])\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1e0EoA-00014m-OJ; Thu, 05 Oct 2017 22:39:58 +0000","from mail-oi0-f65.google.com ([209.85.218.65])\n\tby casper.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1e0EYF-0007QV-Eg; Thu, 05 Oct 2017 22:23:34 +0000","by mail-oi0-f65.google.com with SMTP id w197so22365765oif.6;\n\tThu, 05 Oct 2017 15:23:10 -0700 (PDT)","from localhost (216-188-254-6.dyn.grandenetworks.net.\n\t[216.188.254.6]) by smtp.gmail.com with ESMTPSA id\n\ts140sm40111oie.45.2017.10.05.15.23.08\n\t(version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);\n\tThu, 05 Oct 2017 15:23:09 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:\n\tMessage-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=bZEgC5TvnXcq6aXqYSQ08QpgcHhgqhKVPROEnOnJOEg=;\n\tb=bjRRHDB5mvZzTg\n\tv2eNwbqyidETE1Ps+CQsjH+/iXsqT9RqWdUFTuXOK2OvhnrgvTjfWhnsaIwSWBytASCz6TSvGt8Pz\n\tKxwfD5RL4eS5RbfsHMihlkBvNJahcWBuBiiwMR79iVxma9Hzm53Xuuh9oiCR0KGyWgJEluGG6VcZO\n\tBblHyP6ODri1Z94BviNU4GlQE+ezm2+ujEw/onpYdvXIG+rKBnFX4wzeVqkr3501zz0OtZRKBAaI3\n\tq/Jy3uXHJUpxh4qmEU2ViGgAAG45XzGH72jiR+YWmhpI3M/y2kCvfJKRBYFMidGKnF2SSznY2CNwJ\n\tijZLMU+BELfaE1iD82qw==;","v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=infradead.org; s=casper.20170209;\n\th=In-Reply-To:Content-Type:MIME-Version:\n\tReferences:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To:\n\tContent-Transfer-Encoding:Content-ID:Content-Description:Resent-Date:\n\tResent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:\n\tList-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive;\n\tbh=6X3gX/LcER6cQt+PpiW/511v7Vg5HbvMUlfOhOs6rXg=;\n\tb=JAOYM97tw3Hpjb91maAK/SGrW\n\tqXOLLBz5gKlBgPpS3hMpCazlOne0QEW1JpfHC+3Y8hKQE+vR0JARv9weifno1mXftIaf2O1ter1lu\n\tshMgTQQfTl3DErhQXnvnwTSgY6U4sFj0e+zT0ZjF4VwGaKBj1F/yw5e7fRXSk7KrXZfVCyUHetfwC\n\tpmWSU2PDKOk+e3gLp5KZ6UpNpHs9h/NF4dLl2mdGIrNLEBGdrmmBAPbsa6lX807CgowiH0LFnQ9+J\n\tXHlQSkK6ih9IZioLkpCKi/AxuhaawD1V6y6Eeg1S6aI1TtTGhv0Dtj50qA4YlJuQGoGgl1oFYrbMr\n\tp/TzW5X8w==;"],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:date:from:to:cc:subject:message-id:references\n\t:mime-version:content-disposition:in-reply-to:user-agent;\n\tbh=6X3gX/LcER6cQt+PpiW/511v7Vg5HbvMUlfOhOs6rXg=;\n\tb=aFWVr7w94A7iGHYa14Wu3suDevm+JTN7OUvm8FHHwrOy+Fxxqnp5d08O/lFAmB0o1K\n\t9lYk/25R2pvss15As5ouJvyIWb+XeiVCan+FN2gt1fv/MVKouCFEREBCMLhac/ff/kqo\n\tROC8Z+1S1cQVyUiGYuHxHuDf4JwAlvJ0Fx2NN2o7TvHdJNimBqbK8gy7qQ3ZUFY8nXId\n\tmXV8D0uUDwek36AVm/2YeEtrRPjDmqZeylFG/aF2PlBjBGMHf6nAGAAWied8RW5cV6B4\n\t2pvviv3aX1+s777OpgXRrCNDNQBIlxepFGGuvAG/RGW1ia9yON0BITpls4Sp0W15vdOw\n\tCXiQ==","X-Gm-Message-State":"AMCzsaUVPgGqM23nkOz3XlPaJtXfVDSO5K6OVBFkdKH0Dy+IGZcwOSOA\n\tDhKlzEfa/1aykvFZSPZOlw==","X-Google-Smtp-Source":"AOwi7QA1gAnTGR+YWGz7i6qTSiUAth+W1Q6D8WW2etFl8FHFFDFqmvDSFqK8IbHTFCkA4exGPYPV7A==","X-Received":"by 10.202.85.76 with SMTP id j73mr95420oib.276.1507242189657;\n\tThu, 05 Oct 2017 15:23:09 -0700 (PDT)","Date":"Thu, 5 Oct 2017 17:23:08 -0500","From":"Rob Herring <robh@kernel.org>","To":"Chen Zhong <chen.zhong@mediatek.com>","Subject":"Re: [PATCH v5 3/6] dt-bindings: input: Add document bindings for\n\tmtk-pmic-keys","Message-ID":"<20171005222308.s3m2a7f47ylqzwig@rob-hp-laptop>","References":"<1506509048-19032-1-git-send-email-chen.zhong@mediatek.com>\n\t<1506509048-19032-4-git-send-email-chen.zhong@mediatek.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<1506509048-19032-4-git-send-email-chen.zhong@mediatek.com>","User-Agent":"NeoMutt/20170113 (1.7.2)","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20171005_232331_599743_0150AEF9 ","X-CRM114-Status":"GOOD (  12.30  )","X-Spam-Score":"-1.0 (-)","X-Spam-Report":"SpamAssassin version 3.4.1 on casper.infradead.org summary:\n\tContent analysis details:   (-1.0 points, 5.0 required)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t0.5 RCVD_IN_SORBS_SPAM     RBL: SORBS: sender is a spam source\n\t[209.85.218.65 listed in dnsbl.sorbs.net]\n\t-0.0 RCVD_IN_MSPIKE_H3      RBL: Good reputation (+3)\n\t[209.85.218.65 listed in wl.mailspike.net]\n\t-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/,\n\tno trust [209.85.218.65 listed in list.dnswl.org]\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t0.0 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level\n\tmail domains are different\n\t0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends\n\tin digit (robherring2[at]gmail.com)\n\t0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail\n\tprovider (robherring2[at]gmail.com)\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]\n\t-0.0 RCVD_IN_MSPIKE_WL      Mailspike good senders\n\t0.2 FREEMAIL_FORGED_FROMDOMAIN 2nd level domains in From and\n\tEnvelopeFrom freemail headers are different","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"Mark Rutland <mark.rutland@arm.com>,\n\tAlessandro Zummo <a.zummo@towertech.it>,\n\tJaechul Lee <jcsing.lee@samsung.com>, \n\tdevicetree@vger.kernel.org, Linus Walleij <linus.walleij@linaro.org>, \n\tDmitry Torokhov <dmitry.torokhov@gmail.com>,\n\tlinux-kernel@vger.kernel.org, Andi Shyti <andi.shyti@samsung.com>,\n\tChanwoo Choi <cw00.choi@samsung.com>, \n\tAlexandre Belloni <alexandre.belloni@free-electrons.com>,\n\tlinux-input@vger.kernel.org, Matthias Brugger <matthias.bgg@gmail.com>,\n\tlinux-mediatek@lists.infradead.org,\n\tEddie Huang <eddie.huang@mediatek.com>, \n\tLee Jones <lee.jones@linaro.org>, linux-arm-kernel@lists.infradead.org,\n\tlinux-rtc@vger.kernel.org","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}},{"id":1792914,"web_url":"http://patchwork.ozlabs.org/comment/1792914/","msgid":"<1508808435.4057.1.camel@mhfsdcap03>","list_archive_url":null,"date":"2017-10-24T01:27:15","subject":"Re: [PATCH v5 5/6] input: Add MediaTek PMIC keys support","submitter":{"id":72090,"url":"http://patchwork.ozlabs.org/api/people/72090/","name":"Chen Zhong","email":"chen.zhong@mediatek.com"},"content":"Just gentle ping.\n\nOn Wed, 2017-09-27 at 18:44 +0800, Chen Zhong wrote:\n> This patch add support to handle MediaTek PMIC MT6397/MT6323 key\n> interrupts including pwrkey and homekey, also add setting for\n> long press key shutdown behavior.\n> \n> Signed-off-by: Chen Zhong <chen.zhong@mediatek.com>\n> ---\n>  drivers/input/keyboard/Kconfig         |    9 +\n>  drivers/input/keyboard/Makefile        |    1 +\n>  drivers/input/keyboard/mtk-pmic-keys.c |  341 ++++++++++++++++++++++++++++++++\n>  3 files changed, 351 insertions(+)\n>  create mode 100644 drivers/input/keyboard/mtk-pmic-keys.c\n> \n> diff --git a/drivers/input/keyboard/Kconfig b/drivers/input/keyboard/Kconfig\n> index 4c4ab1c..bd4e20a 100644\n> --- a/drivers/input/keyboard/Kconfig\n> +++ b/drivers/input/keyboard/Kconfig\n> @@ -756,4 +756,13 @@ config KEYBOARD_BCM\n>  \t  To compile this driver as a module, choose M here: the\n>  \t  module will be called bcm-keypad.\n>  \n> +config KEYBOARD_MTK_PMIC\n> +\ttristate \"MediaTek PMIC keys support\"\n> +\tdepends on MFD_MT6397\n> +\thelp\n> +\t  Say Y here if you want to use the pmic keys (powerkey/homekey).\n> +\n> +\t  To compile this driver as a module, choose M here: the\n> +\t  module will be called pmic-keys.\n> +\n>  endif\n> diff --git a/drivers/input/keyboard/Makefile b/drivers/input/keyboard/Makefile\n> index d2338ba..20c0b98 100644\n> --- a/drivers/input/keyboard/Makefile\n> +++ b/drivers/input/keyboard/Makefile\n> @@ -40,6 +40,7 @@ obj-$(CONFIG_KEYBOARD_MATRIX)\t\t+= matrix_keypad.o\n>  obj-$(CONFIG_KEYBOARD_MAX7359)\t\t+= max7359_keypad.o\n>  obj-$(CONFIG_KEYBOARD_MCS)\t\t+= mcs_touchkey.o\n>  obj-$(CONFIG_KEYBOARD_MPR121)\t\t+= mpr121_touchkey.o\n> +obj-$(CONFIG_KEYBOARD_MTK_PMIC) \t+= mtk-pmic-keys.o\n>  obj-$(CONFIG_KEYBOARD_NEWTON)\t\t+= newtonkbd.o\n>  obj-$(CONFIG_KEYBOARD_NOMADIK)\t\t+= nomadik-ske-keypad.o\n>  obj-$(CONFIG_KEYBOARD_NSPIRE)\t\t+= nspire-keypad.o\n> diff --git a/drivers/input/keyboard/mtk-pmic-keys.c b/drivers/input/keyboard/mtk-pmic-keys.c\n> new file mode 100644\n> index 0000000..529fd95\n> --- /dev/null\n> +++ b/drivers/input/keyboard/mtk-pmic-keys.c\n> @@ -0,0 +1,341 @@\n> +/*\n> + * Copyright (C) 2017 MediaTek, Inc.\n> + *\n> + * Author: Chen Zhong <chen.zhong@mediatek.com>\n> + *\n> + * This software is licensed under the terms of the GNU General Public\n> + * License version 2, as published by the Free Software Foundation, and\n> + * may be copied, distributed, and modified under those terms.\n> + *\n> + * This program is distributed in the hope that it will be useful,\n> + * but WITHOUT ANY WARRANTY; without even the implied warranty of\n> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n> + * GNU General Public License for more details.\n> + *\n> + */\n> +\n> +#include <linux/module.h>\n> +#include <linux/kernel.h>\n> +#include <linux/input.h>\n> +#include <linux/interrupt.h>\n> +#include <linux/platform_device.h>\n> +#include <linux/kernel.h>\n> +#include <linux/of.h>\n> +#include <linux/of_device.h>\n> +#include <linux/regmap.h>\n> +#include <linux/mfd/mt6323/registers.h>\n> +#include <linux/mfd/mt6397/registers.h>\n> +#include <linux/mfd/mt6397/core.h>\n> +\n> +#define MTK_PMIC_PWRKEY_RST_EN_MASK\t0x1\n> +#define MTK_PMIC_PWRKEY_RST_EN_SHIFT\t6\n> +#define MTK_PMIC_HOMEKEY_RST_EN_MASK\t0x1\n> +#define MTK_PMIC_HOMEKEY_RST_EN_SHIFT\t5\n> +#define MTK_PMIC_RST_DU_MASK\t\t0x3\n> +#define MTK_PMIC_RST_DU_SHIFT\t\t8\n> +\n> +#define MTK_PMIC_PWRKEY_RST\t\t\\\n> +\t(MTK_PMIC_PWRKEY_RST_EN_MASK << MTK_PMIC_PWRKEY_RST_EN_SHIFT)\n> +#define MTK_PMIC_HOMEKEY_RST\t\t\\\n> +\t(MTK_PMIC_HOMEKEY_RST_EN_MASK << MTK_PMIC_HOMEKEY_RST_EN_SHIFT)\n> +\n> +#define MTK_PMIC_PWRKEY_INDEX\t0\n> +#define MTK_PMIC_HOMEKEY_INDEX\t1\n> +#define MTK_PMIC_MAX_KEY_COUNT\t2\n> +\n> +struct mtk_pmic_keys_regs {\n> +\tu32 deb_reg;\n> +\tu32 deb_mask;\n> +\tu32 intsel_reg;\n> +\tu32 intsel_mask;\n> +};\n> +\n> +#define MTK_PMIC_KEYS_REGS(_deb_reg, _deb_mask,\t\t\\\n> +\t_intsel_reg, _intsel_mask)\t\t\t\\\n> +{\t\t\t\t\t\t\t\\\n> +\t.deb_reg\t\t= _deb_reg,\t\t\\\n> +\t.deb_mask\t\t= _deb_mask,\t\t\\\n> +\t.intsel_reg\t\t= _intsel_reg,\t\t\\\n> +\t.intsel_mask\t\t= _intsel_mask,\t\t\\\n> +}\n> +\n> +struct mtk_pmic_regs {\n> +\tconst struct mtk_pmic_keys_regs keys_regs[MTK_PMIC_MAX_KEY_COUNT];\n> +\tu32 pmic_rst_reg;\n> +};\n> +\n> +static const struct mtk_pmic_regs mt6397_regs = {\n> +\t.keys_regs[MTK_PMIC_PWRKEY_INDEX] =\n> +\t\tMTK_PMIC_KEYS_REGS(MT6397_CHRSTATUS,\n> +\t\t0x8, MT6397_INT_RSV, 0x10),\n> +\t.keys_regs[MTK_PMIC_HOMEKEY_INDEX] =\n> +\t\tMTK_PMIC_KEYS_REGS(MT6397_OCSTATUS2,\n> +\t\t0x10, MT6397_INT_RSV, 0x8),\n> +\t.pmic_rst_reg = MT6397_TOP_RST_MISC,\n> +};\n> +\n> +static const struct mtk_pmic_regs mt6323_regs = {\n> +\t.keys_regs[MTK_PMIC_PWRKEY_INDEX] =\n> +\t\tMTK_PMIC_KEYS_REGS(MT6323_CHRSTATUS,\n> +\t\t0x2, MT6323_INT_MISC_CON, 0x10),\n> +\t.keys_regs[MTK_PMIC_HOMEKEY_INDEX] =\n> +\t\tMTK_PMIC_KEYS_REGS(MT6323_CHRSTATUS,\n> +\t\t0x4, MT6323_INT_MISC_CON, 0x8),\n> +\t.pmic_rst_reg = MT6323_TOP_RST_MISC,\n> +};\n> +\n> +struct mtk_pmic_keys_info {\n> +\tstruct mtk_pmic_keys *keys;\n> +\tconst struct mtk_pmic_keys_regs *regs;\n> +\tunsigned int keycode;\n> +\tint irq;\n> +\tbool wakeup:1;\n> +};\n> +\n> +struct mtk_pmic_keys {\n> +\tstruct input_dev *input_dev;\n> +\tstruct device *dev;\n> +\tstruct regmap *regmap;\n> +\tstruct mtk_pmic_keys_info keys[MTK_PMIC_MAX_KEY_COUNT];\n> +};\n> +\n> +enum mtk_pmic_keys_lp_mode {\n> +\tLP_DISABLE,\n> +\tLP_ONEKEY,\n> +\tLP_TWOKEY,\n> +};\n> +\n> +static void mtk_pmic_keys_lp_reset_setup(struct mtk_pmic_keys *keys,\n> +\t\tu32 pmic_rst_reg)\n> +{\n> +\tint ret;\n> +\tu32 long_press_mode, long_press_debounce;\n> +\n> +\tret = of_property_read_u32(keys->dev->of_node,\n> +\t\t\"power-off-time-sec\", &long_press_debounce);\n> +\tif (ret)\n> +\t\tlong_press_debounce = 0;\n> +\n> +\tregmap_update_bits(keys->regmap, pmic_rst_reg,\n> +\t\t\t   MTK_PMIC_RST_DU_MASK << MTK_PMIC_RST_DU_SHIFT,\n> +\t\t\t   long_press_debounce << MTK_PMIC_RST_DU_SHIFT);\n> +\n> +\tret = of_property_read_u32(keys->dev->of_node,\n> +\t\t\"mediatek,long-press-mode\", &long_press_mode);\n> +\tif (ret)\n> +\t\tlong_press_mode = LP_DISABLE;\n> +\n> +\tswitch (long_press_mode) {\n> +\tcase LP_ONEKEY:\n> +\t\tregmap_update_bits(keys->regmap, pmic_rst_reg,\n> +\t\t\t\t   MTK_PMIC_PWRKEY_RST,\n> +\t\t\t\t   MTK_PMIC_PWRKEY_RST);\n> +\t\tregmap_update_bits(keys->regmap, pmic_rst_reg,\n> +\t\t\t\t   MTK_PMIC_HOMEKEY_RST,\n> +\t\t\t\t   0);\n> +\t\tbreak;\n> +\tcase LP_TWOKEY:\n> +\t\tregmap_update_bits(keys->regmap, pmic_rst_reg,\n> +\t\t\t\t   MTK_PMIC_PWRKEY_RST,\n> +\t\t\t\t   MTK_PMIC_PWRKEY_RST);\n> +\t\tregmap_update_bits(keys->regmap, pmic_rst_reg,\n> +\t\t\t\t   MTK_PMIC_HOMEKEY_RST,\n> +\t\t\t\t   MTK_PMIC_HOMEKEY_RST);\n> +\t\tbreak;\n> +\tcase LP_DISABLE:\n> +\t\tregmap_update_bits(keys->regmap, pmic_rst_reg,\n> +\t\t\t\t   MTK_PMIC_PWRKEY_RST,\n> +\t\t\t\t   0);\n> +\t\tregmap_update_bits(keys->regmap, pmic_rst_reg,\n> +\t\t\t\t   MTK_PMIC_HOMEKEY_RST,\n> +\t\t\t\t   0);\n> +\t\tbreak;\n> +\tdefault:\n> +\t\tbreak;\n> +\t}\n> +}\n> +\n> +static irqreturn_t mtk_pmic_keys_irq_handler_thread(int irq, void *data)\n> +{\n> +\tstruct mtk_pmic_keys_info *info = data;\n> +\tu32 key_deb, pressed;\n> +\n> +\tregmap_read(info->keys->regmap, info->regs->deb_reg, &key_deb);\n> +\n> +\tkey_deb &= info->regs->deb_mask;\n> +\n> +\tpressed = !key_deb;\n> +\n> +\tinput_report_key(info->keys->input_dev, info->keycode, pressed);\n> +\tinput_sync(info->keys->input_dev);\n> +\n> +\tdev_dbg(info->keys->dev, \"(%s) key =%d using PMIC\\n\",\n> +\t\t pressed ? \"pressed\" : \"released\", info->keycode);\n> +\n> +\treturn IRQ_HANDLED;\n> +}\n> +\n> +static int mtk_pmic_key_setup(struct mtk_pmic_keys *keys,\n> +\t\tstruct mtk_pmic_keys_info *info)\n> +{\n> +\tint ret;\n> +\n> +\tinfo->keys = keys;\n> +\n> +\tret = regmap_update_bits(keys->regmap, info->regs->intsel_reg,\n> +\t\t\t\t info->regs->intsel_mask,\n> +\t\t\t\t info->regs->intsel_mask);\n> +\tif (ret < 0)\n> +\t\treturn ret;\n> +\n> +\tret = devm_request_threaded_irq(keys->dev, info->irq, NULL,\n> +\t\t\t\t\tmtk_pmic_keys_irq_handler_thread,\n> +\t\t\t\t\tIRQF_ONESHOT | IRQF_TRIGGER_HIGH,\n> +\t\t\t\t\t\"mtk-pmic-keys\", info);\n> +\tif (ret) {\n> +\t\tdev_err(keys->dev, \"Failed to request IRQ: %d: %d\\n\",\n> +\t\t\tinfo->irq, ret);\n> +\t\treturn ret;\n> +\t}\n> +\n> +\tinput_set_capability(keys->input_dev, EV_KEY, info->keycode);\n> +\n> +\treturn 0;\n> +}\n> +\n> +#ifdef CONFIG_PM_SLEEP\n> +static int mtk_pmic_keys_suspend(struct device *dev)\n> +{\n> +\tstruct mtk_pmic_keys *keys = dev_get_drvdata(dev);\n> +\tint index;\n> +\n> +\tfor (index = 0; index < MTK_PMIC_MAX_KEY_COUNT; index++) {\n> +\t\tif (keys->keys[index].wakeup)\n> +\t\t\tenable_irq_wake(keys->keys[index].irq);\n> +\t}\n> +\n> +\treturn 0;\n> +}\n> +\n> +static int mtk_pmic_keys_resume(struct device *dev)\n> +{\n> +\tstruct mtk_pmic_keys *keys = dev_get_drvdata(dev);\n> +\tint index;\n> +\n> +\tfor (index = 0; index < MTK_PMIC_MAX_KEY_COUNT; index++) {\n> +\t\tif (keys->keys[index].wakeup)\n> +\t\t\tdisable_irq_wake(keys->keys[index].irq);\n> +\t}\n> +\n> +\treturn 0;\n> +}\n> +#endif\n> +\n> +static SIMPLE_DEV_PM_OPS(mtk_pmic_keys_pm_ops, mtk_pmic_keys_suspend,\n> +\t\t\tmtk_pmic_keys_resume);\n> +\n> +static const struct of_device_id of_mtk_pmic_keys_match_tbl[] = {\n> +\t{\n> +\t\t.compatible = \"mediatek,mt6397-keys\",\n> +\t\t.data = &mt6397_regs,\n> +\t}, {\n> +\t\t.compatible = \"mediatek,mt6323-keys\",\n> +\t\t.data = &mt6323_regs,\n> +\t}, {\n> +\t\t/* sentinel */\n> +\t}\n> +};\n> +MODULE_DEVICE_TABLE(of, of_mtk_pmic_keys_match_tbl);\n> +\n> +static int mtk_pmic_keys_probe(struct platform_device *pdev)\n> +{\n> +\tint error, index = 0;\n> +\tunsigned int keycount;\n> +\tstruct mt6397_chip *pmic_chip = dev_get_drvdata(pdev->dev.parent);\n> +\tstruct device_node *node = pdev->dev.of_node, *child;\n> +\tstruct mtk_pmic_keys *keys;\n> +\tconst struct mtk_pmic_regs *mtk_pmic_regs;\n> +\tstruct input_dev *input_dev;\n> +\tconst struct of_device_id *of_id =\n> +\t\tof_match_device(of_mtk_pmic_keys_match_tbl, &pdev->dev);\n> +\n> +\tkeys = devm_kzalloc(&pdev->dev, sizeof(*keys), GFP_KERNEL);\n> +\tif (!keys)\n> +\t\treturn -ENOMEM;\n> +\n> +\tkeys->dev = &pdev->dev;\n> +\tkeys->regmap = pmic_chip->regmap;\n> +\tmtk_pmic_regs = of_id->data;\n> +\n> +\tkeys->input_dev = input_dev = devm_input_allocate_device(keys->dev);\n> +\tif (!input_dev) {\n> +\t\tdev_err(keys->dev, \"input allocate device fail.\\n\");\n> +\t\treturn -ENOMEM;\n> +\t}\n> +\n> +\tinput_dev->name = \"mtk-pmic-keys\";\n> +\tinput_dev->id.bustype = BUS_HOST;\n> +\tinput_dev->id.vendor = 0x0001;\n> +\tinput_dev->id.product = 0x0001;\n> +\tinput_dev->id.version = 0x0001;\n> +\n> +\tkeycount = device_get_child_node_count(keys->dev);\n> +\tif (keycount > MTK_PMIC_MAX_KEY_COUNT) {\n> +\t\tdev_err(keys->dev, \"too many keys defined (%d)\\n\", keycount);\n> +\t\treturn -EINVAL;\n> +\t}\n> +\n> +\tfor_each_child_of_node(node, child) {\n> +\t\tkeys->keys[index].regs = &mtk_pmic_regs->keys_regs[index];\n> +\n> +\t\tkeys->keys[index].irq = platform_get_irq(pdev, index);\n> +\t\tif (keys->keys[index].irq < 0)\n> +\t\t\treturn keys->keys[index].irq;\n> +\n> +\t\terror = of_property_read_u32(child,\n> +\t\t\t\"linux,keycodes\", &keys->keys[index].keycode);\n> +\t\tif (error) {\n> +\t\t\tdev_err(keys->dev,\n> +\t\t\t\t\"failed to read key:%d linux,keycode property: %d\\n\",\n> +\t\t\t\tindex, error);\n> +\t\t\treturn error;\n> +\t\t}\n> +\n> +\t\tif (of_property_read_bool(child, \"wakeup-source\"))\n> +\t\t\tkeys->keys[index].wakeup = true;\n> +\n> +\t\terror = mtk_pmic_key_setup(keys, &keys->keys[index]);\n> +\t\tif (error)\n> +\t\t\treturn error;\n> +\n> +\t\tindex++;\n> +\t}\n> +\n> +\terror = input_register_device(input_dev);\n> +\tif (error) {\n> +\t\tdev_err(&pdev->dev,\n> +\t\t\t\"register input device failed (%d)\\n\", error);\n> +\t\treturn error;\n> +\t}\n> +\n> +\tmtk_pmic_keys_lp_reset_setup(keys, mtk_pmic_regs->pmic_rst_reg);\n> +\n> +\tplatform_set_drvdata(pdev, keys);\n> +\n> +\treturn 0;\n> +}\n> +\n> +static struct platform_driver pmic_keys_pdrv = {\n> +\t.probe = mtk_pmic_keys_probe,\n> +\t.driver = {\n> +\t\t   .name = \"mtk-pmic-keys\",\n> +\t\t   .of_match_table = of_mtk_pmic_keys_match_tbl,\n> +\t\t   .pm = &mtk_pmic_keys_pm_ops,\n> +\t},\n> +};\n> +\n> +module_platform_driver(pmic_keys_pdrv);\n> +\n> +MODULE_LICENSE(\"GPL v2\");\n> +MODULE_AUTHOR(\"Chen Zhong <chen.zhong@mediatek.com>\");\n> +MODULE_DESCRIPTION(\"MTK pmic-keys driver v0.1\");","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org\n\theader.b=\"BraUfanh\"; dkim-atps=neutral"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3yLbHr43Xxz9s81\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tTue, 24 Oct 2017 12:28:07 +1100 (AEDT)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1e6o0Y-0004Ii-L0; Tue, 24 Oct 2017 01:27:54 +0000","from [210.61.82.183] (helo=mailgw01.mediatek.com)\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1e6o0U-00044o-1n; Tue, 24 Oct 2017 01:27:52 +0000","from mtkcas09.mediatek.inc [(172.21.101.178)] by\n\tmailgw01.mediatek.com (envelope-from <chen.zhong@mediatek.com>)\n\t(mhqrelay.mediatek.com ESMTP with TLS)\n\twith ESMTP id 2022477920; Tue, 24 Oct 2017 09:27:19 +0800","from MTKCAS32.mediatek.inc (172.27.4.184) by\n\tmtkmbs08n1.mediatek.inc\n\t(172.21.101.55) with Microsoft SMTP Server (TLS) id 15.0.1210.3;\n\tTue, 24 Oct 2017 09:27:17 +0800","from [10.17.3.153] (10.17.3.153) by MTKCAS32.mediatek.inc\n\t(172.27.4.170) with Microsoft SMTP Server id 15.0.1210.3 via Frontend\n\tTransport; Tue, 24 Oct 2017 09:27:16 +0800"],"DKIM-Signature":"v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:\n\tDate:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=7aSMXOsEsVDrh1PUIUfAH/02NmtxkvMxJe9VSOFLHz4=;\n\tb=BraUfanhQNYc36\n\toDNF2qqtU6tXSLrhDsJCmZr3Og4kuDNah2zqCzGB5MBWdG7P5Cz7gyOBMwkDZ5bcotIXt/nO3KXac\n\twueBEWN4S8DlHwDkOFBh80ijDWRiY7/EQTnBwbKgewo9GwCV6G+yBENqnR+gTZApX1IG90li9HXQE\n\tt9oMVlOgjV4d6dlmSAyHWPkTjTWhEo4dT/xybTaLY9ijjSNBLqNuR8Lg983QFzwbd3kYGIW057mtH\n\tlJbXHCXFypq/YHe+mmcxt9UTnyjwtDOXUrWz/LdEMiV+7TtCT2Bn562adNnqA0aC5BAisQUTuEOxz\n\tBF8ToU9A53smKyrVT4Zg==;","X-UUID":"2646018a78214c21b0a467ad3d16c824-20171024","Message-ID":"<1508808435.4057.1.camel@mhfsdcap03>","Subject":"Re: [PATCH v5 5/6] input: Add MediaTek PMIC keys support","From":"Chen Zhong <chen.zhong@mediatek.com>","To":"Dmitry Torokhov <dmitry.torokhov@gmail.com>","Date":"Tue, 24 Oct 2017 09:27:15 +0800","In-Reply-To":"<1506509048-19032-6-git-send-email-chen.zhong@mediatek.com>","References":"<1506509048-19032-1-git-send-email-chen.zhong@mediatek.com>\n\t<1506509048-19032-6-git-send-email-chen.zhong@mediatek.com>","X-Mailer":"Evolution 3.2.3-0ubuntu6 ","MIME-Version":"1.0","X-MTK":"N","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20171023_182750_384171_BC135719 ","X-CRM114-Status":"GOOD (  24.29  )","X-Spam-Score":"-1.1 (-)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-1.1 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]\n\t0.8 RDNS_NONE Delivered to internal network by a host with no rDNS\n\t0.0 UNPARSEABLE_RELAY Informational: message has unparseable relay\n\tlines","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"Mark Rutland <mark.rutland@arm.com>,\n\tAlessandro Zummo <a.zummo@towertech.it>, devicetree@vger.kernel.org, \n\tLinus Walleij <linus.walleij@linaro.org>,\n\tJaechul Lee <jcsing.lee@samsung.com>, \n\tlinux-kernel@vger.kernel.org, Andi Shyti <andi.shyti@samsung.com>,\n\tChanwoo Choi <cw00.choi@samsung.com>, Rob Herring <robh+dt@kernel.org>,\n\tAlexandre Belloni <alexandre.belloni@free-electrons.com>,\n\tlinux-input@vger.kernel.org, Matthias Brugger <matthias.bgg@gmail.com>,\n\tlinux-mediatek@lists.infradead.org, Eddie\n\tHuang <eddie.huang@mediatek.com>, Lee Jones <lee.jones@linaro.org>,\n\tlinux-arm-kernel@lists.infradead.org, linux-rtc@vger.kernel.org","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}},{"id":1792978,"web_url":"http://patchwork.ozlabs.org/comment/1792978/","msgid":"<20171024054409.6qbuzenzymkkjdth@dtor-ws>","list_archive_url":null,"date":"2017-10-24T05:44:09","subject":"Re: [PATCH v5 5/6] input: Add MediaTek PMIC keys support","submitter":{"id":695,"url":"http://patchwork.ozlabs.org/api/people/695/","name":"Dmitry Torokhov","email":"dmitry.torokhov@gmail.com"},"content":"On Wed, Sep 27, 2017 at 06:44:07PM +0800, Chen Zhong wrote:\n> This patch add support to handle MediaTek PMIC MT6397/MT6323 key\n> interrupts including pwrkey and homekey, also add setting for\n> long press key shutdown behavior.\n> \n> Signed-off-by: Chen Zhong <chen.zhong@mediatek.com>\n> ---\n>  drivers/input/keyboard/Kconfig         |    9 +\n>  drivers/input/keyboard/Makefile        |    1 +\n>  drivers/input/keyboard/mtk-pmic-keys.c |  341 ++++++++++++++++++++++++++++++++\n>  3 files changed, 351 insertions(+)\n>  create mode 100644 drivers/input/keyboard/mtk-pmic-keys.c\n> \n> diff --git a/drivers/input/keyboard/Kconfig b/drivers/input/keyboard/Kconfig\n> index 4c4ab1c..bd4e20a 100644\n> --- a/drivers/input/keyboard/Kconfig\n> +++ b/drivers/input/keyboard/Kconfig\n> @@ -756,4 +756,13 @@ config KEYBOARD_BCM\n>  \t  To compile this driver as a module, choose M here: the\n>  \t  module will be called bcm-keypad.\n>  \n> +config KEYBOARD_MTK_PMIC\n> +\ttristate \"MediaTek PMIC keys support\"\n> +\tdepends on MFD_MT6397\n> +\thelp\n> +\t  Say Y here if you want to use the pmic keys (powerkey/homekey).\n> +\n> +\t  To compile this driver as a module, choose M here: the\n> +\t  module will be called pmic-keys.\n> +\n>  endif\n> diff --git a/drivers/input/keyboard/Makefile b/drivers/input/keyboard/Makefile\n> index d2338ba..20c0b98 100644\n> --- a/drivers/input/keyboard/Makefile\n> +++ b/drivers/input/keyboard/Makefile\n> @@ -40,6 +40,7 @@ obj-$(CONFIG_KEYBOARD_MATRIX)\t\t+= matrix_keypad.o\n>  obj-$(CONFIG_KEYBOARD_MAX7359)\t\t+= max7359_keypad.o\n>  obj-$(CONFIG_KEYBOARD_MCS)\t\t+= mcs_touchkey.o\n>  obj-$(CONFIG_KEYBOARD_MPR121)\t\t+= mpr121_touchkey.o\n> +obj-$(CONFIG_KEYBOARD_MTK_PMIC) \t+= mtk-pmic-keys.o\n>  obj-$(CONFIG_KEYBOARD_NEWTON)\t\t+= newtonkbd.o\n>  obj-$(CONFIG_KEYBOARD_NOMADIK)\t\t+= nomadik-ske-keypad.o\n>  obj-$(CONFIG_KEYBOARD_NSPIRE)\t\t+= nspire-keypad.o\n> diff --git a/drivers/input/keyboard/mtk-pmic-keys.c b/drivers/input/keyboard/mtk-pmic-keys.c\n> new file mode 100644\n> index 0000000..529fd95\n> --- /dev/null\n> +++ b/drivers/input/keyboard/mtk-pmic-keys.c\n> @@ -0,0 +1,341 @@\n> +/*\n> + * Copyright (C) 2017 MediaTek, Inc.\n> + *\n> + * Author: Chen Zhong <chen.zhong@mediatek.com>\n> + *\n> + * This software is licensed under the terms of the GNU General Public\n> + * License version 2, as published by the Free Software Foundation, and\n> + * may be copied, distributed, and modified under those terms.\n> + *\n> + * This program is distributed in the hope that it will be useful,\n> + * but WITHOUT ANY WARRANTY; without even the implied warranty of\n> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n> + * GNU General Public License for more details.\n> + *\n> + */\n> +\n> +#include <linux/module.h>\n> +#include <linux/kernel.h>\n> +#include <linux/input.h>\n> +#include <linux/interrupt.h>\n> +#include <linux/platform_device.h>\n> +#include <linux/kernel.h>\n> +#include <linux/of.h>\n> +#include <linux/of_device.h>\n> +#include <linux/regmap.h>\n> +#include <linux/mfd/mt6323/registers.h>\n> +#include <linux/mfd/mt6397/registers.h>\n> +#include <linux/mfd/mt6397/core.h>\n> +\n> +#define MTK_PMIC_PWRKEY_RST_EN_MASK\t0x1\n> +#define MTK_PMIC_PWRKEY_RST_EN_SHIFT\t6\n> +#define MTK_PMIC_HOMEKEY_RST_EN_MASK\t0x1\n> +#define MTK_PMIC_HOMEKEY_RST_EN_SHIFT\t5\n> +#define MTK_PMIC_RST_DU_MASK\t\t0x3\n> +#define MTK_PMIC_RST_DU_SHIFT\t\t8\n> +\n> +#define MTK_PMIC_PWRKEY_RST\t\t\\\n> +\t(MTK_PMIC_PWRKEY_RST_EN_MASK << MTK_PMIC_PWRKEY_RST_EN_SHIFT)\n> +#define MTK_PMIC_HOMEKEY_RST\t\t\\\n> +\t(MTK_PMIC_HOMEKEY_RST_EN_MASK << MTK_PMIC_HOMEKEY_RST_EN_SHIFT)\n> +\n> +#define MTK_PMIC_PWRKEY_INDEX\t0\n> +#define MTK_PMIC_HOMEKEY_INDEX\t1\n> +#define MTK_PMIC_MAX_KEY_COUNT\t2\n> +\n> +struct mtk_pmic_keys_regs {\n> +\tu32 deb_reg;\n> +\tu32 deb_mask;\n> +\tu32 intsel_reg;\n> +\tu32 intsel_mask;\n> +};\n> +\n> +#define MTK_PMIC_KEYS_REGS(_deb_reg, _deb_mask,\t\t\\\n> +\t_intsel_reg, _intsel_mask)\t\t\t\\\n> +{\t\t\t\t\t\t\t\\\n> +\t.deb_reg\t\t= _deb_reg,\t\t\\\n> +\t.deb_mask\t\t= _deb_mask,\t\t\\\n> +\t.intsel_reg\t\t= _intsel_reg,\t\t\\\n> +\t.intsel_mask\t\t= _intsel_mask,\t\t\\\n> +}\n> +\n> +struct mtk_pmic_regs {\n> +\tconst struct mtk_pmic_keys_regs keys_regs[MTK_PMIC_MAX_KEY_COUNT];\n> +\tu32 pmic_rst_reg;\n> +};\n> +\n> +static const struct mtk_pmic_regs mt6397_regs = {\n> +\t.keys_regs[MTK_PMIC_PWRKEY_INDEX] =\n> +\t\tMTK_PMIC_KEYS_REGS(MT6397_CHRSTATUS,\n> +\t\t0x8, MT6397_INT_RSV, 0x10),\n> +\t.keys_regs[MTK_PMIC_HOMEKEY_INDEX] =\n> +\t\tMTK_PMIC_KEYS_REGS(MT6397_OCSTATUS2,\n> +\t\t0x10, MT6397_INT_RSV, 0x8),\n> +\t.pmic_rst_reg = MT6397_TOP_RST_MISC,\n> +};\n> +\n> +static const struct mtk_pmic_regs mt6323_regs = {\n> +\t.keys_regs[MTK_PMIC_PWRKEY_INDEX] =\n> +\t\tMTK_PMIC_KEYS_REGS(MT6323_CHRSTATUS,\n> +\t\t0x2, MT6323_INT_MISC_CON, 0x10),\n> +\t.keys_regs[MTK_PMIC_HOMEKEY_INDEX] =\n> +\t\tMTK_PMIC_KEYS_REGS(MT6323_CHRSTATUS,\n> +\t\t0x4, MT6323_INT_MISC_CON, 0x8),\n> +\t.pmic_rst_reg = MT6323_TOP_RST_MISC,\n> +};\n> +\n> +struct mtk_pmic_keys_info {\n> +\tstruct mtk_pmic_keys *keys;\n> +\tconst struct mtk_pmic_keys_regs *regs;\n> +\tunsigned int keycode;\n> +\tint irq;\n> +\tbool wakeup:1;\n> +};\n> +\n> +struct mtk_pmic_keys {\n> +\tstruct input_dev *input_dev;\n> +\tstruct device *dev;\n> +\tstruct regmap *regmap;\n> +\tstruct mtk_pmic_keys_info keys[MTK_PMIC_MAX_KEY_COUNT];\n> +};\n> +\n> +enum mtk_pmic_keys_lp_mode {\n> +\tLP_DISABLE,\n> +\tLP_ONEKEY,\n> +\tLP_TWOKEY,\n> +};\n> +\n> +static void mtk_pmic_keys_lp_reset_setup(struct mtk_pmic_keys *keys,\n> +\t\tu32 pmic_rst_reg)\n> +{\n> +\tint ret;\n> +\tu32 long_press_mode, long_press_debounce;\n> +\n> +\tret = of_property_read_u32(keys->dev->of_node,\n> +\t\t\"power-off-time-sec\", &long_press_debounce);\n> +\tif (ret)\n> +\t\tlong_press_debounce = 0;\n> +\n> +\tregmap_update_bits(keys->regmap, pmic_rst_reg,\n> +\t\t\t   MTK_PMIC_RST_DU_MASK << MTK_PMIC_RST_DU_SHIFT,\n> +\t\t\t   long_press_debounce << MTK_PMIC_RST_DU_SHIFT);\n> +\n> +\tret = of_property_read_u32(keys->dev->of_node,\n> +\t\t\"mediatek,long-press-mode\", &long_press_mode);\n> +\tif (ret)\n> +\t\tlong_press_mode = LP_DISABLE;\n> +\n> +\tswitch (long_press_mode) {\n> +\tcase LP_ONEKEY:\n> +\t\tregmap_update_bits(keys->regmap, pmic_rst_reg,\n> +\t\t\t\t   MTK_PMIC_PWRKEY_RST,\n> +\t\t\t\t   MTK_PMIC_PWRKEY_RST);\n> +\t\tregmap_update_bits(keys->regmap, pmic_rst_reg,\n> +\t\t\t\t   MTK_PMIC_HOMEKEY_RST,\n> +\t\t\t\t   0);\n> +\t\tbreak;\n> +\tcase LP_TWOKEY:\n> +\t\tregmap_update_bits(keys->regmap, pmic_rst_reg,\n> +\t\t\t\t   MTK_PMIC_PWRKEY_RST,\n> +\t\t\t\t   MTK_PMIC_PWRKEY_RST);\n> +\t\tregmap_update_bits(keys->regmap, pmic_rst_reg,\n> +\t\t\t\t   MTK_PMIC_HOMEKEY_RST,\n> +\t\t\t\t   MTK_PMIC_HOMEKEY_RST);\n> +\t\tbreak;\n> +\tcase LP_DISABLE:\n> +\t\tregmap_update_bits(keys->regmap, pmic_rst_reg,\n> +\t\t\t\t   MTK_PMIC_PWRKEY_RST,\n> +\t\t\t\t   0);\n> +\t\tregmap_update_bits(keys->regmap, pmic_rst_reg,\n> +\t\t\t\t   MTK_PMIC_HOMEKEY_RST,\n> +\t\t\t\t   0);\n> +\t\tbreak;\n> +\tdefault:\n> +\t\tbreak;\n> +\t}\n> +}\n> +\n> +static irqreturn_t mtk_pmic_keys_irq_handler_thread(int irq, void *data)\n> +{\n> +\tstruct mtk_pmic_keys_info *info = data;\n> +\tu32 key_deb, pressed;\n> +\n> +\tregmap_read(info->keys->regmap, info->regs->deb_reg, &key_deb);\n> +\n> +\tkey_deb &= info->regs->deb_mask;\n> +\n> +\tpressed = !key_deb;\n> +\n> +\tinput_report_key(info->keys->input_dev, info->keycode, pressed);\n> +\tinput_sync(info->keys->input_dev);\n> +\n> +\tdev_dbg(info->keys->dev, \"(%s) key =%d using PMIC\\n\",\n> +\t\t pressed ? \"pressed\" : \"released\", info->keycode);\n> +\n> +\treturn IRQ_HANDLED;\n> +}\n> +\n> +static int mtk_pmic_key_setup(struct mtk_pmic_keys *keys,\n> +\t\tstruct mtk_pmic_keys_info *info)\n> +{\n> +\tint ret;\n> +\n> +\tinfo->keys = keys;\n> +\n> +\tret = regmap_update_bits(keys->regmap, info->regs->intsel_reg,\n> +\t\t\t\t info->regs->intsel_mask,\n> +\t\t\t\t info->regs->intsel_mask);\n> +\tif (ret < 0)\n> +\t\treturn ret;\n> +\n> +\tret = devm_request_threaded_irq(keys->dev, info->irq, NULL,\n> +\t\t\t\t\tmtk_pmic_keys_irq_handler_thread,\n> +\t\t\t\t\tIRQF_ONESHOT | IRQF_TRIGGER_HIGH,\n> +\t\t\t\t\t\"mtk-pmic-keys\", info);\n> +\tif (ret) {\n> +\t\tdev_err(keys->dev, \"Failed to request IRQ: %d: %d\\n\",\n> +\t\t\tinfo->irq, ret);\n> +\t\treturn ret;\n> +\t}\n> +\n> +\tinput_set_capability(keys->input_dev, EV_KEY, info->keycode);\n> +\n> +\treturn 0;\n> +}\n> +\n> +#ifdef CONFIG_PM_SLEEP\n> +static int mtk_pmic_keys_suspend(struct device *dev)\n\nPlease use __maybe_unused annotation instead of #ifdef guard.\n\n> +{\n> +\tstruct mtk_pmic_keys *keys = dev_get_drvdata(dev);\n> +\tint index;\n> +\n> +\tfor (index = 0; index < MTK_PMIC_MAX_KEY_COUNT; index++) {\n> +\t\tif (keys->keys[index].wakeup)\n> +\t\t\tenable_irq_wake(keys->keys[index].irq);\n> +\t}\n> +\n> +\treturn 0;\n> +}\n> +\n> +static int mtk_pmic_keys_resume(struct device *dev)\n\n__maybe_unused here as well.\n\n> +{\n> +\tstruct mtk_pmic_keys *keys = dev_get_drvdata(dev);\n> +\tint index;\n> +\n> +\tfor (index = 0; index < MTK_PMIC_MAX_KEY_COUNT; index++) {\n> +\t\tif (keys->keys[index].wakeup)\n> +\t\t\tdisable_irq_wake(keys->keys[index].irq);\n> +\t}\n> +\n> +\treturn 0;\n> +}\n> +#endif\n> +\n> +static SIMPLE_DEV_PM_OPS(mtk_pmic_keys_pm_ops, mtk_pmic_keys_suspend,\n> +\t\t\tmtk_pmic_keys_resume);\n> +\n> +static const struct of_device_id of_mtk_pmic_keys_match_tbl[] = {\n> +\t{\n> +\t\t.compatible = \"mediatek,mt6397-keys\",\n> +\t\t.data = &mt6397_regs,\n> +\t}, {\n> +\t\t.compatible = \"mediatek,mt6323-keys\",\n> +\t\t.data = &mt6323_regs,\n> +\t}, {\n> +\t\t/* sentinel */\n> +\t}\n> +};\n> +MODULE_DEVICE_TABLE(of, of_mtk_pmic_keys_match_tbl);\n> +\n> +static int mtk_pmic_keys_probe(struct platform_device *pdev)\n> +{\n> +\tint error, index = 0;\n> +\tunsigned int keycount;\n> +\tstruct mt6397_chip *pmic_chip = dev_get_drvdata(pdev->dev.parent);\n> +\tstruct device_node *node = pdev->dev.of_node, *child;\n> +\tstruct mtk_pmic_keys *keys;\n> +\tconst struct mtk_pmic_regs *mtk_pmic_regs;\n> +\tstruct input_dev *input_dev;\n> +\tconst struct of_device_id *of_id =\n> +\t\tof_match_device(of_mtk_pmic_keys_match_tbl, &pdev->dev);\n> +\n> +\tkeys = devm_kzalloc(&pdev->dev, sizeof(*keys), GFP_KERNEL);\n> +\tif (!keys)\n> +\t\treturn -ENOMEM;\n> +\n> +\tkeys->dev = &pdev->dev;\n> +\tkeys->regmap = pmic_chip->regmap;\n> +\tmtk_pmic_regs = of_id->data;\n> +\n> +\tkeys->input_dev = input_dev = devm_input_allocate_device(keys->dev);\n> +\tif (!input_dev) {\n> +\t\tdev_err(keys->dev, \"input allocate device fail.\\n\");\n> +\t\treturn -ENOMEM;\n> +\t}\n> +\n> +\tinput_dev->name = \"mtk-pmic-keys\";\n> +\tinput_dev->id.bustype = BUS_HOST;\n> +\tinput_dev->id.vendor = 0x0001;\n> +\tinput_dev->id.product = 0x0001;\n> +\tinput_dev->id.version = 0x0001;\n> +\n> +\tkeycount = device_get_child_node_count(keys->dev);\n\nSince you are using of_* API everywhere else I'd rather we used\nof_get_available_child_count() here.\n\n\nOnce these 2 issues are fixed please feel free to add \n\nAcked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>\n\nI assume it will all go though MFD tree, right?\n\n> +\tif (keycount > MTK_PMIC_MAX_KEY_COUNT) {\n> +\t\tdev_err(keys->dev, \"too many keys defined (%d)\\n\", keycount);\n> +\t\treturn -EINVAL;\n> +\t}\n> +\n> +\tfor_each_child_of_node(node, child) {\n> +\t\tkeys->keys[index].regs = &mtk_pmic_regs->keys_regs[index];\n> +\n> +\t\tkeys->keys[index].irq = platform_get_irq(pdev, index);\n> +\t\tif (keys->keys[index].irq < 0)\n> +\t\t\treturn keys->keys[index].irq;\n> +\n> +\t\terror = of_property_read_u32(child,\n> +\t\t\t\"linux,keycodes\", &keys->keys[index].keycode);\n> +\t\tif (error) {\n> +\t\t\tdev_err(keys->dev,\n> +\t\t\t\t\"failed to read key:%d linux,keycode property: %d\\n\",\n> +\t\t\t\tindex, error);\n> +\t\t\treturn error;\n> +\t\t}\n> +\n> +\t\tif (of_property_read_bool(child, \"wakeup-source\"))\n> +\t\t\tkeys->keys[index].wakeup = true;\n> +\n> +\t\terror = mtk_pmic_key_setup(keys, &keys->keys[index]);\n> +\t\tif (error)\n> +\t\t\treturn error;\n> +\n> +\t\tindex++;\n> +\t}\n> +\n> +\terror = input_register_device(input_dev);\n> +\tif (error) {\n> +\t\tdev_err(&pdev->dev,\n> +\t\t\t\"register input device failed (%d)\\n\", error);\n> +\t\treturn error;\n> +\t}\n> +\n> +\tmtk_pmic_keys_lp_reset_setup(keys, mtk_pmic_regs->pmic_rst_reg);\n> +\n> +\tplatform_set_drvdata(pdev, keys);\n> +\n> +\treturn 0;\n> +}\n> +\n> +static struct platform_driver pmic_keys_pdrv = {\n> +\t.probe = mtk_pmic_keys_probe,\n> +\t.driver = {\n> +\t\t   .name = \"mtk-pmic-keys\",\n> +\t\t   .of_match_table = of_mtk_pmic_keys_match_tbl,\n> +\t\t   .pm = &mtk_pmic_keys_pm_ops,\n> +\t},\n> +};\n> +\n> +module_platform_driver(pmic_keys_pdrv);\n> +\n> +MODULE_LICENSE(\"GPL v2\");\n> +MODULE_AUTHOR(\"Chen Zhong <chen.zhong@mediatek.com>\");\n> +MODULE_DESCRIPTION(\"MTK pmic-keys driver v0.1\");\n> -- \n> 1.7.9.5\n> \n\nThanks.","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org header.b=\"PhNMlRnG\"; \n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"j/4ee4tL\"; dkim-atps=neutral"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3yLhzx2yXhz9s9Y\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tTue, 24 Oct 2017 16:44:45 +1100 (AEDT)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1e6s11-00024F-1u; Tue, 24 Oct 2017 05:44:39 +0000","from mail-it0-x242.google.com ([2607:f8b0:4001:c0b::242])\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1e6s0x-00022K-Ey; Tue, 24 Oct 2017 05:44:37 +0000","by mail-it0-x242.google.com with SMTP id 72so8593979itl.5;\n\tMon, 23 Oct 2017 22:44:13 -0700 (PDT)","from dtor-ws ([2620:0:1000:1611:da80:8749:c06f:9515])\n\tby smtp.gmail.com with ESMTPSA id\n\tt186sm337740ita.30.2017.10.23.22.44.11\n\t(version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);\n\tMon, 23 Oct 2017 22:44:12 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:\n\tMessage-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=wuE8RYh6rFRcoROlEkaOwzGiWQfwL/I6XoeyjKmnedE=;\n\tb=PhNMlRnGfQ2WxU\n\tnljaBz39poIOQK7O9BqGuH5Hz0RgGkYvONYoR7lHPEO09fz9UdWMVOZmOlP7UmTy3DuBk5P5vKmYh\n\t+IQ33rJaYm9nI2qu+xJZcPNGpYjMxiZPPxx0LZOPSLGENaN1t/tQyHUXqTMQ0DIvqHyIi3rNo0Lag\n\tmuJxPMQ8wWPf2z3JUdjMv65lwGqcIwjfCiLJUxwYKL1pZZH+oelCwo5QiBsK9DUho4kpIgd1qaNsO\n\t2khBFqtatNYRRURVh0zcgWDZdkhrHe9jdcfM5lvHYpr8rmO7PT+on07MtO3xaP0ytHgok+BcH3cM7\n\tcU5U/OnJlrSit/h2ky3A==;","v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;\n\th=date:from:to:cc:subject:message-id:references:mime-version\n\t:content-disposition:in-reply-to:user-agent;\n\tbh=UPTc5cmPMrxH6znA0a89n8Ffkys1Wx0Q10MsXzfeSWk=;\n\tb=j/4ee4tLEVk63vYiPm1MaZaqsqszyN+PwlqZ6mlJxHLGnys72cq8bM+nigA6ht66vr\n\tPhhjCRucSg6nSpz/7KOhAk5lX+RkXDLzNegUApYJBELNUiMRvspo9eWRRncpEHM6CMIK\n\tb1nR33fj7JeVVczUrwK3RNNXB0urQX96xoHiUzxBiThgtrfozz6rhBtdAHpKfrnxinDM\n\tRSs+bomtseAV5105KNp4PL/zsivc7CXLygSuyGWmlWsf023peWOle4SBIZaSxdz6Ontd\n\ta7vwWKthX8Ar1RbJJ0OB5wmqKvDMTcUq7sR8JAhUWoZT+wJnuTD6iIy9Kix/ziWuIW82\n\tuEdA=="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:date:from:to:cc:subject:message-id:references\n\t:mime-version:content-disposition:in-reply-to:user-agent;\n\tbh=UPTc5cmPMrxH6znA0a89n8Ffkys1Wx0Q10MsXzfeSWk=;\n\tb=mYEuo6L//YBl1+vnT0qpXkRfse4aSIL2VVX3wKAkMSf6AzmDVr8hEbZcQL6WKaEHe9\n\t4LlYcLmQQ9MdqDmDcUDuBRzH8XzOaebNmlxml9rdcXAZ4KeMSmqp/Lgf/7AWd0Zzirx9\n\tZyVq+fPHhVADv0sv3nL6Dm7hDm5+t9x3rieKem7LXuAmPZvj5+zNUwejtjh5Ma44bkas\n\t1e4xANikc4rt+3+gE7WBzJc+/zvBallfYVYIbLFW41JVvvSO3CcX/5dKW0XfRwFtaneo\n\tZ4del+25/jlT+9VfUNxtHoLd+im/6IVWxtwC1b1rfpsE5tr4foHKiHRQ2qhoRiJt7R9V\n\tpr7A==","X-Gm-Message-State":"AMCzsaXSGNMApKZKpn401WnrRfL2jDALFAAIvKIS/VX+7Ap+Iq5fNPOh\n\tpnfR5yBL7BTJnwOLTtMO57A=","X-Google-Smtp-Source":"ABhQp+RwK5GXEWwisOA+f6rkXsAMFhVPxsbVEEjz/9VOEkIQyYcF6sPItUuMSUavkP/iQYLWR6ftag==","X-Received":"by 10.36.175.74 with SMTP id l10mr12710083iti.150.1508823853131; \n\tMon, 23 Oct 2017 22:44:13 -0700 (PDT)","Date":"Mon, 23 Oct 2017 22:44:09 -0700","From":"Dmitry Torokhov <dmitry.torokhov@gmail.com>","To":"Chen Zhong <chen.zhong@mediatek.com>","Subject":"Re: [PATCH v5 5/6] input: Add MediaTek PMIC keys support","Message-ID":"<20171024054409.6qbuzenzymkkjdth@dtor-ws>","References":"<1506509048-19032-1-git-send-email-chen.zhong@mediatek.com>\n\t<1506509048-19032-6-git-send-email-chen.zhong@mediatek.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<1506509048-19032-6-git-send-email-chen.zhong@mediatek.com>","User-Agent":"NeoMutt/20170609 (1.8.3)","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20171023_224435_589714_2E83A26A ","X-CRM114-Status":"GOOD (  25.82  )","X-Spam-Score":"-2.0 (--)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-2.0 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/,\n\tno\n\ttrust [2607:f8b0:4001:c0b:0:0:0:242 listed in] [list.dnswl.org]\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail\n\tprovider (dmitry.torokhov[at]gmail.com)\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]\n\t-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature\n\t0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n\tnot necessarily valid\n\t-0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from\n\tauthor's domain","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"Mark Rutland <mark.rutland@arm.com>,\n\tAlessandro Zummo <a.zummo@towertech.it>, devicetree@vger.kernel.org, \n\tLinus Walleij <linus.walleij@linaro.org>,\n\tJaechul Lee <jcsing.lee@samsung.com>, \n\tlinux-kernel@vger.kernel.org, Andi Shyti <andi.shyti@samsung.com>,\n\tChanwoo Choi <cw00.choi@samsung.com>, Rob Herring <robh+dt@kernel.org>,\n\tAlexandre Belloni <alexandre.belloni@free-electrons.com>,\n\tlinux-input@vger.kernel.org, Matthias Brugger <matthias.bgg@gmail.com>,\n\tlinux-mediatek@lists.infradead.org,\n\tEddie Huang <eddie.huang@mediatek.com>, \n\tLee Jones <lee.jones@linaro.org>, linux-arm-kernel@lists.infradead.org,\n\tlinux-rtc@vger.kernel.org","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}},{"id":1793088,"web_url":"http://patchwork.ozlabs.org/comment/1793088/","msgid":"<1508837852.4057.6.camel@mhfsdcap03>","list_archive_url":null,"date":"2017-10-24T09:37:32","subject":"Re: [PATCH v5 5/6] input: Add MediaTek PMIC keys support","submitter":{"id":72090,"url":"http://patchwork.ozlabs.org/api/people/72090/","name":"Chen Zhong","email":"chen.zhong@mediatek.com"},"content":"On Mon, 2017-10-23 at 22:44 -0700, Dmitry Torokhov wrote:\n> On Wed, Sep 27, 2017 at 06:44:07PM +0800, Chen Zhong wrote:\n> > This patch add support to handle MediaTek PMIC MT6397/MT6323 key\n> > interrupts including pwrkey and homekey, also add setting for\n> > long press key shutdown behavior.\n> > \n> > Signed-off-by: Chen Zhong <chen.zhong@mediatek.com>\n> > ---\n> >  drivers/input/keyboard/Kconfig         |    9 +\n> >  drivers/input/keyboard/Makefile        |    1 +\n> >  drivers/input/keyboard/mtk-pmic-keys.c |  341 ++++++++++++++++++++++++++++++++\n> >  3 files changed, 351 insertions(+)\n> >  create mode 100644 drivers/input/keyboard/mtk-pmic-keys.c\n> > \n> > diff --git a/drivers/input/keyboard/Kconfig b/drivers/input/keyboard/Kconfig\n> > index 4c4ab1c..bd4e20a 100644\n> > --- a/drivers/input/keyboard/Kconfig\n> > +++ b/drivers/input/keyboard/Kconfig\n> > @@ -756,4 +756,13 @@ config KEYBOARD_BCM\n> >  \t  To compile this driver as a module, choose M here: the\n> >  \t  module will be called bcm-keypad.\n> >  \n> > +config KEYBOARD_MTK_PMIC\n> > +\ttristate \"MediaTek PMIC keys support\"\n> > +\tdepends on MFD_MT6397\n> > +\thelp\n> > +\t  Say Y here if you want to use the pmic keys (powerkey/homekey).\n> > +\n> > +\t  To compile this driver as a module, choose M here: the\n> > +\t  module will be called pmic-keys.\n> > +\n> >  endif\n> > diff --git a/drivers/input/keyboard/Makefile b/drivers/input/keyboard/Makefile\n> > index d2338ba..20c0b98 100644\n> > --- a/drivers/input/keyboard/Makefile\n> > +++ b/drivers/input/keyboard/Makefile\n> > @@ -40,6 +40,7 @@ obj-$(CONFIG_KEYBOARD_MATRIX)\t\t+= matrix_keypad.o\n> >  obj-$(CONFIG_KEYBOARD_MAX7359)\t\t+= max7359_keypad.o\n> >  obj-$(CONFIG_KEYBOARD_MCS)\t\t+= mcs_touchkey.o\n> >  obj-$(CONFIG_KEYBOARD_MPR121)\t\t+= mpr121_touchkey.o\n> > +obj-$(CONFIG_KEYBOARD_MTK_PMIC) \t+= mtk-pmic-keys.o\n> >  obj-$(CONFIG_KEYBOARD_NEWTON)\t\t+= newtonkbd.o\n> >  obj-$(CONFIG_KEYBOARD_NOMADIK)\t\t+= nomadik-ske-keypad.o\n> >  obj-$(CONFIG_KEYBOARD_NSPIRE)\t\t+= nspire-keypad.o\n> > diff --git a/drivers/input/keyboard/mtk-pmic-keys.c b/drivers/input/keyboard/mtk-pmic-keys.c\n> > new file mode 100644\n> > index 0000000..529fd95\n> > --- /dev/null\n> > +++ b/drivers/input/keyboard/mtk-pmic-keys.c\n> > @@ -0,0 +1,341 @@\n> > +/*\n> > + * Copyright (C) 2017 MediaTek, Inc.\n> > + *\n> > + * Author: Chen Zhong <chen.zhong@mediatek.com>\n> > + *\n> > + * This software is licensed under the terms of the GNU General Public\n> > + * License version 2, as published by the Free Software Foundation, and\n> > + * may be copied, distributed, and modified under those terms.\n> > + *\n> > + * This program is distributed in the hope that it will be useful,\n> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of\n> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n> > + * GNU General Public License for more details.\n> > + *\n> > + */\n> > +\n> > +#include <linux/module.h>\n> > +#include <linux/kernel.h>\n> > +#include <linux/input.h>\n> > +#include <linux/interrupt.h>\n> > +#include <linux/platform_device.h>\n> > +#include <linux/kernel.h>\n> > +#include <linux/of.h>\n> > +#include <linux/of_device.h>\n> > +#include <linux/regmap.h>\n> > +#include <linux/mfd/mt6323/registers.h>\n> > +#include <linux/mfd/mt6397/registers.h>\n> > +#include <linux/mfd/mt6397/core.h>\n> > +\n> > +#define MTK_PMIC_PWRKEY_RST_EN_MASK\t0x1\n> > +#define MTK_PMIC_PWRKEY_RST_EN_SHIFT\t6\n> > +#define MTK_PMIC_HOMEKEY_RST_EN_MASK\t0x1\n> > +#define MTK_PMIC_HOMEKEY_RST_EN_SHIFT\t5\n> > +#define MTK_PMIC_RST_DU_MASK\t\t0x3\n> > +#define MTK_PMIC_RST_DU_SHIFT\t\t8\n> > +\n> > +#define MTK_PMIC_PWRKEY_RST\t\t\\\n> > +\t(MTK_PMIC_PWRKEY_RST_EN_MASK << MTK_PMIC_PWRKEY_RST_EN_SHIFT)\n> > +#define MTK_PMIC_HOMEKEY_RST\t\t\\\n> > +\t(MTK_PMIC_HOMEKEY_RST_EN_MASK << MTK_PMIC_HOMEKEY_RST_EN_SHIFT)\n> > +\n> > +#define MTK_PMIC_PWRKEY_INDEX\t0\n> > +#define MTK_PMIC_HOMEKEY_INDEX\t1\n> > +#define MTK_PMIC_MAX_KEY_COUNT\t2\n> > +\n> > +struct mtk_pmic_keys_regs {\n> > +\tu32 deb_reg;\n> > +\tu32 deb_mask;\n> > +\tu32 intsel_reg;\n> > +\tu32 intsel_mask;\n> > +};\n> > +\n> > +#define MTK_PMIC_KEYS_REGS(_deb_reg, _deb_mask,\t\t\\\n> > +\t_intsel_reg, _intsel_mask)\t\t\t\\\n> > +{\t\t\t\t\t\t\t\\\n> > +\t.deb_reg\t\t= _deb_reg,\t\t\\\n> > +\t.deb_mask\t\t= _deb_mask,\t\t\\\n> > +\t.intsel_reg\t\t= _intsel_reg,\t\t\\\n> > +\t.intsel_mask\t\t= _intsel_mask,\t\t\\\n> > +}\n> > +\n> > +struct mtk_pmic_regs {\n> > +\tconst struct mtk_pmic_keys_regs keys_regs[MTK_PMIC_MAX_KEY_COUNT];\n> > +\tu32 pmic_rst_reg;\n> > +};\n> > +\n> > +static const struct mtk_pmic_regs mt6397_regs = {\n> > +\t.keys_regs[MTK_PMIC_PWRKEY_INDEX] =\n> > +\t\tMTK_PMIC_KEYS_REGS(MT6397_CHRSTATUS,\n> > +\t\t0x8, MT6397_INT_RSV, 0x10),\n> > +\t.keys_regs[MTK_PMIC_HOMEKEY_INDEX] =\n> > +\t\tMTK_PMIC_KEYS_REGS(MT6397_OCSTATUS2,\n> > +\t\t0x10, MT6397_INT_RSV, 0x8),\n> > +\t.pmic_rst_reg = MT6397_TOP_RST_MISC,\n> > +};\n> > +\n> > +static const struct mtk_pmic_regs mt6323_regs = {\n> > +\t.keys_regs[MTK_PMIC_PWRKEY_INDEX] =\n> > +\t\tMTK_PMIC_KEYS_REGS(MT6323_CHRSTATUS,\n> > +\t\t0x2, MT6323_INT_MISC_CON, 0x10),\n> > +\t.keys_regs[MTK_PMIC_HOMEKEY_INDEX] =\n> > +\t\tMTK_PMIC_KEYS_REGS(MT6323_CHRSTATUS,\n> > +\t\t0x4, MT6323_INT_MISC_CON, 0x8),\n> > +\t.pmic_rst_reg = MT6323_TOP_RST_MISC,\n> > +};\n> > +\n> > +struct mtk_pmic_keys_info {\n> > +\tstruct mtk_pmic_keys *keys;\n> > +\tconst struct mtk_pmic_keys_regs *regs;\n> > +\tunsigned int keycode;\n> > +\tint irq;\n> > +\tbool wakeup:1;\n> > +};\n> > +\n> > +struct mtk_pmic_keys {\n> > +\tstruct input_dev *input_dev;\n> > +\tstruct device *dev;\n> > +\tstruct regmap *regmap;\n> > +\tstruct mtk_pmic_keys_info keys[MTK_PMIC_MAX_KEY_COUNT];\n> > +};\n> > +\n> > +enum mtk_pmic_keys_lp_mode {\n> > +\tLP_DISABLE,\n> > +\tLP_ONEKEY,\n> > +\tLP_TWOKEY,\n> > +};\n> > +\n> > +static void mtk_pmic_keys_lp_reset_setup(struct mtk_pmic_keys *keys,\n> > +\t\tu32 pmic_rst_reg)\n> > +{\n> > +\tint ret;\n> > +\tu32 long_press_mode, long_press_debounce;\n> > +\n> > +\tret = of_property_read_u32(keys->dev->of_node,\n> > +\t\t\"power-off-time-sec\", &long_press_debounce);\n> > +\tif (ret)\n> > +\t\tlong_press_debounce = 0;\n> > +\n> > +\tregmap_update_bits(keys->regmap, pmic_rst_reg,\n> > +\t\t\t   MTK_PMIC_RST_DU_MASK << MTK_PMIC_RST_DU_SHIFT,\n> > +\t\t\t   long_press_debounce << MTK_PMIC_RST_DU_SHIFT);\n> > +\n> > +\tret = of_property_read_u32(keys->dev->of_node,\n> > +\t\t\"mediatek,long-press-mode\", &long_press_mode);\n> > +\tif (ret)\n> > +\t\tlong_press_mode = LP_DISABLE;\n> > +\n> > +\tswitch (long_press_mode) {\n> > +\tcase LP_ONEKEY:\n> > +\t\tregmap_update_bits(keys->regmap, pmic_rst_reg,\n> > +\t\t\t\t   MTK_PMIC_PWRKEY_RST,\n> > +\t\t\t\t   MTK_PMIC_PWRKEY_RST);\n> > +\t\tregmap_update_bits(keys->regmap, pmic_rst_reg,\n> > +\t\t\t\t   MTK_PMIC_HOMEKEY_RST,\n> > +\t\t\t\t   0);\n> > +\t\tbreak;\n> > +\tcase LP_TWOKEY:\n> > +\t\tregmap_update_bits(keys->regmap, pmic_rst_reg,\n> > +\t\t\t\t   MTK_PMIC_PWRKEY_RST,\n> > +\t\t\t\t   MTK_PMIC_PWRKEY_RST);\n> > +\t\tregmap_update_bits(keys->regmap, pmic_rst_reg,\n> > +\t\t\t\t   MTK_PMIC_HOMEKEY_RST,\n> > +\t\t\t\t   MTK_PMIC_HOMEKEY_RST);\n> > +\t\tbreak;\n> > +\tcase LP_DISABLE:\n> > +\t\tregmap_update_bits(keys->regmap, pmic_rst_reg,\n> > +\t\t\t\t   MTK_PMIC_PWRKEY_RST,\n> > +\t\t\t\t   0);\n> > +\t\tregmap_update_bits(keys->regmap, pmic_rst_reg,\n> > +\t\t\t\t   MTK_PMIC_HOMEKEY_RST,\n> > +\t\t\t\t   0);\n> > +\t\tbreak;\n> > +\tdefault:\n> > +\t\tbreak;\n> > +\t}\n> > +}\n> > +\n> > +static irqreturn_t mtk_pmic_keys_irq_handler_thread(int irq, void *data)\n> > +{\n> > +\tstruct mtk_pmic_keys_info *info = data;\n> > +\tu32 key_deb, pressed;\n> > +\n> > +\tregmap_read(info->keys->regmap, info->regs->deb_reg, &key_deb);\n> > +\n> > +\tkey_deb &= info->regs->deb_mask;\n> > +\n> > +\tpressed = !key_deb;\n> > +\n> > +\tinput_report_key(info->keys->input_dev, info->keycode, pressed);\n> > +\tinput_sync(info->keys->input_dev);\n> > +\n> > +\tdev_dbg(info->keys->dev, \"(%s) key =%d using PMIC\\n\",\n> > +\t\t pressed ? \"pressed\" : \"released\", info->keycode);\n> > +\n> > +\treturn IRQ_HANDLED;\n> > +}\n> > +\n> > +static int mtk_pmic_key_setup(struct mtk_pmic_keys *keys,\n> > +\t\tstruct mtk_pmic_keys_info *info)\n> > +{\n> > +\tint ret;\n> > +\n> > +\tinfo->keys = keys;\n> > +\n> > +\tret = regmap_update_bits(keys->regmap, info->regs->intsel_reg,\n> > +\t\t\t\t info->regs->intsel_mask,\n> > +\t\t\t\t info->regs->intsel_mask);\n> > +\tif (ret < 0)\n> > +\t\treturn ret;\n> > +\n> > +\tret = devm_request_threaded_irq(keys->dev, info->irq, NULL,\n> > +\t\t\t\t\tmtk_pmic_keys_irq_handler_thread,\n> > +\t\t\t\t\tIRQF_ONESHOT | IRQF_TRIGGER_HIGH,\n> > +\t\t\t\t\t\"mtk-pmic-keys\", info);\n> > +\tif (ret) {\n> > +\t\tdev_err(keys->dev, \"Failed to request IRQ: %d: %d\\n\",\n> > +\t\t\tinfo->irq, ret);\n> > +\t\treturn ret;\n> > +\t}\n> > +\n> > +\tinput_set_capability(keys->input_dev, EV_KEY, info->keycode);\n> > +\n> > +\treturn 0;\n> > +}\n> > +\n> > +#ifdef CONFIG_PM_SLEEP\n> > +static int mtk_pmic_keys_suspend(struct device *dev)\n> \n> Please use __maybe_unused annotation instead of #ifdef guard.\n> \n> > +{\n> > +\tstruct mtk_pmic_keys *keys = dev_get_drvdata(dev);\n> > +\tint index;\n> > +\n> > +\tfor (index = 0; index < MTK_PMIC_MAX_KEY_COUNT; index++) {\n> > +\t\tif (keys->keys[index].wakeup)\n> > +\t\t\tenable_irq_wake(keys->keys[index].irq);\n> > +\t}\n> > +\n> > +\treturn 0;\n> > +}\n> > +\n> > +static int mtk_pmic_keys_resume(struct device *dev)\n> \n> __maybe_unused here as well.\n> \n> > +{\n> > +\tstruct mtk_pmic_keys *keys = dev_get_drvdata(dev);\n> > +\tint index;\n> > +\n> > +\tfor (index = 0; index < MTK_PMIC_MAX_KEY_COUNT; index++) {\n> > +\t\tif (keys->keys[index].wakeup)\n> > +\t\t\tdisable_irq_wake(keys->keys[index].irq);\n> > +\t}\n> > +\n> > +\treturn 0;\n> > +}\n> > +#endif\n> > +\n> > +static SIMPLE_DEV_PM_OPS(mtk_pmic_keys_pm_ops, mtk_pmic_keys_suspend,\n> > +\t\t\tmtk_pmic_keys_resume);\n> > +\n> > +static const struct of_device_id of_mtk_pmic_keys_match_tbl[] = {\n> > +\t{\n> > +\t\t.compatible = \"mediatek,mt6397-keys\",\n> > +\t\t.data = &mt6397_regs,\n> > +\t}, {\n> > +\t\t.compatible = \"mediatek,mt6323-keys\",\n> > +\t\t.data = &mt6323_regs,\n> > +\t}, {\n> > +\t\t/* sentinel */\n> > +\t}\n> > +};\n> > +MODULE_DEVICE_TABLE(of, of_mtk_pmic_keys_match_tbl);\n> > +\n> > +static int mtk_pmic_keys_probe(struct platform_device *pdev)\n> > +{\n> > +\tint error, index = 0;\n> > +\tunsigned int keycount;\n> > +\tstruct mt6397_chip *pmic_chip = dev_get_drvdata(pdev->dev.parent);\n> > +\tstruct device_node *node = pdev->dev.of_node, *child;\n> > +\tstruct mtk_pmic_keys *keys;\n> > +\tconst struct mtk_pmic_regs *mtk_pmic_regs;\n> > +\tstruct input_dev *input_dev;\n> > +\tconst struct of_device_id *of_id =\n> > +\t\tof_match_device(of_mtk_pmic_keys_match_tbl, &pdev->dev);\n> > +\n> > +\tkeys = devm_kzalloc(&pdev->dev, sizeof(*keys), GFP_KERNEL);\n> > +\tif (!keys)\n> > +\t\treturn -ENOMEM;\n> > +\n> > +\tkeys->dev = &pdev->dev;\n> > +\tkeys->regmap = pmic_chip->regmap;\n> > +\tmtk_pmic_regs = of_id->data;\n> > +\n> > +\tkeys->input_dev = input_dev = devm_input_allocate_device(keys->dev);\n> > +\tif (!input_dev) {\n> > +\t\tdev_err(keys->dev, \"input allocate device fail.\\n\");\n> > +\t\treturn -ENOMEM;\n> > +\t}\n> > +\n> > +\tinput_dev->name = \"mtk-pmic-keys\";\n> > +\tinput_dev->id.bustype = BUS_HOST;\n> > +\tinput_dev->id.vendor = 0x0001;\n> > +\tinput_dev->id.product = 0x0001;\n> > +\tinput_dev->id.version = 0x0001;\n> > +\n> > +\tkeycount = device_get_child_node_count(keys->dev);\n> \n> Since you are using of_* API everywhere else I'd rather we used\n> of_get_available_child_count() here.\n> \n> \n> Once these 2 issues are fixed please feel free to add \n> \n> Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>\n> \n> I assume it will all go though MFD tree, right?\n\nI will fix these 2 issues and send the new version.\n\nSince patch 2,3,4,5 of this series are all for input driver, could you\nhelp to merge them with the new version later?\n\nThank you.\n\n> \n> > +\tif (keycount > MTK_PMIC_MAX_KEY_COUNT) {\n> > +\t\tdev_err(keys->dev, \"too many keys defined (%d)\\n\", keycount);\n> > +\t\treturn -EINVAL;\n> > +\t}\n> > +\n> > +\tfor_each_child_of_node(node, child) {\n> > +\t\tkeys->keys[index].regs = &mtk_pmic_regs->keys_regs[index];\n> > +\n> > +\t\tkeys->keys[index].irq = platform_get_irq(pdev, index);\n> > +\t\tif (keys->keys[index].irq < 0)\n> > +\t\t\treturn keys->keys[index].irq;\n> > +\n> > +\t\terror = of_property_read_u32(child,\n> > +\t\t\t\"linux,keycodes\", &keys->keys[index].keycode);\n> > +\t\tif (error) {\n> > +\t\t\tdev_err(keys->dev,\n> > +\t\t\t\t\"failed to read key:%d linux,keycode property: %d\\n\",\n> > +\t\t\t\tindex, error);\n> > +\t\t\treturn error;\n> > +\t\t}\n> > +\n> > +\t\tif (of_property_read_bool(child, \"wakeup-source\"))\n> > +\t\t\tkeys->keys[index].wakeup = true;\n> > +\n> > +\t\terror = mtk_pmic_key_setup(keys, &keys->keys[index]);\n> > +\t\tif (error)\n> > +\t\t\treturn error;\n> > +\n> > +\t\tindex++;\n> > +\t}\n> > +\n> > +\terror = input_register_device(input_dev);\n> > +\tif (error) {\n> > +\t\tdev_err(&pdev->dev,\n> > +\t\t\t\"register input device failed (%d)\\n\", error);\n> > +\t\treturn error;\n> > +\t}\n> > +\n> > +\tmtk_pmic_keys_lp_reset_setup(keys, mtk_pmic_regs->pmic_rst_reg);\n> > +\n> > +\tplatform_set_drvdata(pdev, keys);\n> > +\n> > +\treturn 0;\n> > +}\n> > +\n> > +static struct platform_driver pmic_keys_pdrv = {\n> > +\t.probe = mtk_pmic_keys_probe,\n> > +\t.driver = {\n> > +\t\t   .name = \"mtk-pmic-keys\",\n> > +\t\t   .of_match_table = of_mtk_pmic_keys_match_tbl,\n> > +\t\t   .pm = &mtk_pmic_keys_pm_ops,\n> > +\t},\n> > +};\n> > +\n> > +module_platform_driver(pmic_keys_pdrv);\n> > +\n> > +MODULE_LICENSE(\"GPL v2\");\n> > +MODULE_AUTHOR(\"Chen Zhong <chen.zhong@mediatek.com>\");\n> > +MODULE_DESCRIPTION(\"MTK pmic-keys driver v0.1\");\n> > -- \n> > 1.7.9.5\n> > \n> \n> Thanks.\n>","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org\n\theader.b=\"Me6mKaT3\"; dkim-atps=neutral"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3yLp9K43HCz9sBd\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tTue, 24 Oct 2017 20:38:13 +1100 (AEDT)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1e6vf0-0007R9-6G; Tue, 24 Oct 2017 09:38:10 +0000","from [210.61.82.183] (helo=mailgw01.mediatek.com)\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1e6vev-0007OV-A7; Tue, 24 Oct 2017 09:38:08 +0000","from mtkcas08.mediatek.inc [(172.21.101.126)] by\n\tmailgw01.mediatek.com (envelope-from <chen.zhong@mediatek.com>)\n\t(mhqrelay.mediatek.com ESMTP with TLS)\n\twith ESMTP id 630292557; Tue, 24 Oct 2017 17:37:37 +0800","from MTKCAS32.mediatek.inc (172.27.4.184) by\n\tmtkmbs08n1.mediatek.inc\n\t(172.21.101.55) with Microsoft SMTP Server (TLS) id 15.0.1210.3;\n\tTue, 24 Oct 2017 17:37:35 +0800","from [10.17.3.153] (10.17.3.153) by MTKCAS32.mediatek.inc\n\t(172.27.4.170) with Microsoft SMTP Server id 15.0.1210.3 via Frontend\n\tTransport; Tue, 24 Oct 2017 17:37:34 +0800"],"DKIM-Signature":"v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:\n\tDate:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=1c0u9xSeQxwCkXy9pGwR2hhCVhwPbKDS3uEGpj/O9+w=;\n\tb=Me6mKaT3uHNOPd\n\todxsgD4D6Hgh7X/JJRh2dwFOqrAyaOJVJP0WRGg7IDuEw8HLxBhTf5eN0l3uEQh42Re8GDuEY9jU3\n\twI0bvqQlFx5/2H1Umy4fhPLyhiGS6w0jpHvYpZbwZxD2+4FJ8H74K0bRdjy4iMRZcmdLKr8hbXbAB\n\tqxepaGer2858duZjWJ2gJYpszwWYN29eKTMCf+Cb57bZQ9c1vAZgN5gAReFFnzu3xaqDYPHZ4aY9e\n\t7G1GPzcG1twDtOiYobsNEnWBndVFuGXv/MEC6zaUExcA4NYEgugh/6Qw+D7T/3KTWqwCC9MVDJoRY\n\tvZ7YyfbjssYjVO2dBcSQ==;","X-UUID":"c4ff1355349940d2af4a38b5b5a2eb33-20171024","Message-ID":"<1508837852.4057.6.camel@mhfsdcap03>","Subject":"Re: [PATCH v5 5/6] input: Add MediaTek PMIC keys support","From":"Chen Zhong <chen.zhong@mediatek.com>","To":"Dmitry Torokhov <dmitry.torokhov@gmail.com>","Date":"Tue, 24 Oct 2017 17:37:32 +0800","In-Reply-To":"<20171024054409.6qbuzenzymkkjdth@dtor-ws>","References":"<1506509048-19032-1-git-send-email-chen.zhong@mediatek.com>\n\t<1506509048-19032-6-git-send-email-chen.zhong@mediatek.com>\n\t<20171024054409.6qbuzenzymkkjdth@dtor-ws>","X-Mailer":"Evolution 3.2.3-0ubuntu6 ","MIME-Version":"1.0","X-MTK":"N","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20171024_023805_772178_C759DF87 ","X-CRM114-Status":"GOOD (  28.84  )","X-Spam-Score":"-1.1 (-)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-1.1 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]\n\t0.8 RDNS_NONE Delivered to internal network by a host with no rDNS\n\t0.0 UNPARSEABLE_RELAY Informational: message has unparseable relay\n\tlines","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"Mark Rutland <mark.rutland@arm.com>,\n\tAlessandro Zummo <a.zummo@towertech.it>, devicetree@vger.kernel.org, \n\tLinus Walleij <linus.walleij@linaro.org>,\n\tJaechul Lee <jcsing.lee@samsung.com>, \n\tlinux-kernel@vger.kernel.org, Andi Shyti <andi.shyti@samsung.com>,\n\tChanwoo Choi <cw00.choi@samsung.com>, Rob Herring <robh+dt@kernel.org>,\n\tAlexandre Belloni <alexandre.belloni@free-electrons.com>,\n\tlinux-input@vger.kernel.org, Matthias Brugger <matthias.bgg@gmail.com>,\n\tlinux-mediatek@lists.infradead.org, Eddie\n\tHuang <eddie.huang@mediatek.com>, Lee Jones <lee.jones@linaro.org>,\n\tlinux-arm-kernel@lists.infradead.org, linux-rtc@vger.kernel.org","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}},{"id":1793414,"web_url":"http://patchwork.ozlabs.org/comment/1793414/","msgid":"<20171024191632.ywzv4uxm24ewuu6u@dtor-ws>","list_archive_url":null,"date":"2017-10-24T19:16:32","subject":"Re: [PATCH v5 5/6] input: Add MediaTek PMIC keys support","submitter":{"id":695,"url":"http://patchwork.ozlabs.org/api/people/695/","name":"Dmitry Torokhov","email":"dmitry.torokhov@gmail.com"},"content":"On Tue, Oct 24, 2017 at 05:37:32PM +0800, Chen Zhong wrote:\n> On Mon, 2017-10-23 at 22:44 -0700, Dmitry Torokhov wrote:\n> > On Wed, Sep 27, 2017 at 06:44:07PM +0800, Chen Zhong wrote:\n> > > This patch add support to handle MediaTek PMIC MT6397/MT6323 key\n> > > interrupts including pwrkey and homekey, also add setting for\n> > > long press key shutdown behavior.\n> > > \n> > > Signed-off-by: Chen Zhong <chen.zhong@mediatek.com>\n> > > ---\n> > >  drivers/input/keyboard/Kconfig         |    9 +\n> > >  drivers/input/keyboard/Makefile        |    1 +\n> > >  drivers/input/keyboard/mtk-pmic-keys.c |  341 ++++++++++++++++++++++++++++++++\n> > >  3 files changed, 351 insertions(+)\n> > >  create mode 100644 drivers/input/keyboard/mtk-pmic-keys.c\n> > > \n> > > diff --git a/drivers/input/keyboard/Kconfig b/drivers/input/keyboard/Kconfig\n> > > index 4c4ab1c..bd4e20a 100644\n> > > --- a/drivers/input/keyboard/Kconfig\n> > > +++ b/drivers/input/keyboard/Kconfig\n> > > @@ -756,4 +756,13 @@ config KEYBOARD_BCM\n> > >  \t  To compile this driver as a module, choose M here: the\n> > >  \t  module will be called bcm-keypad.\n> > >  \n> > > +config KEYBOARD_MTK_PMIC\n> > > +\ttristate \"MediaTek PMIC keys support\"\n> > > +\tdepends on MFD_MT6397\n> > > +\thelp\n> > > +\t  Say Y here if you want to use the pmic keys (powerkey/homekey).\n> > > +\n> > > +\t  To compile this driver as a module, choose M here: the\n> > > +\t  module will be called pmic-keys.\n> > > +\n> > >  endif\n> > > diff --git a/drivers/input/keyboard/Makefile b/drivers/input/keyboard/Makefile\n> > > index d2338ba..20c0b98 100644\n> > > --- a/drivers/input/keyboard/Makefile\n> > > +++ b/drivers/input/keyboard/Makefile\n> > > @@ -40,6 +40,7 @@ obj-$(CONFIG_KEYBOARD_MATRIX)\t\t+= matrix_keypad.o\n> > >  obj-$(CONFIG_KEYBOARD_MAX7359)\t\t+= max7359_keypad.o\n> > >  obj-$(CONFIG_KEYBOARD_MCS)\t\t+= mcs_touchkey.o\n> > >  obj-$(CONFIG_KEYBOARD_MPR121)\t\t+= mpr121_touchkey.o\n> > > +obj-$(CONFIG_KEYBOARD_MTK_PMIC) \t+= mtk-pmic-keys.o\n> > >  obj-$(CONFIG_KEYBOARD_NEWTON)\t\t+= newtonkbd.o\n> > >  obj-$(CONFIG_KEYBOARD_NOMADIK)\t\t+= nomadik-ske-keypad.o\n> > >  obj-$(CONFIG_KEYBOARD_NSPIRE)\t\t+= nspire-keypad.o\n> > > diff --git a/drivers/input/keyboard/mtk-pmic-keys.c b/drivers/input/keyboard/mtk-pmic-keys.c\n> > > new file mode 100644\n> > > index 0000000..529fd95\n> > > --- /dev/null\n> > > +++ b/drivers/input/keyboard/mtk-pmic-keys.c\n> > > @@ -0,0 +1,341 @@\n> > > +/*\n> > > + * Copyright (C) 2017 MediaTek, Inc.\n> > > + *\n> > > + * Author: Chen Zhong <chen.zhong@mediatek.com>\n> > > + *\n> > > + * This software is licensed under the terms of the GNU General Public\n> > > + * License version 2, as published by the Free Software Foundation, and\n> > > + * may be copied, distributed, and modified under those terms.\n> > > + *\n> > > + * This program is distributed in the hope that it will be useful,\n> > > + * but WITHOUT ANY WARRANTY; without even the implied warranty of\n> > > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n> > > + * GNU General Public License for more details.\n> > > + *\n> > > + */\n> > > +\n> > > +#include <linux/module.h>\n> > > +#include <linux/kernel.h>\n> > > +#include <linux/input.h>\n> > > +#include <linux/interrupt.h>\n> > > +#include <linux/platform_device.h>\n> > > +#include <linux/kernel.h>\n> > > +#include <linux/of.h>\n> > > +#include <linux/of_device.h>\n> > > +#include <linux/regmap.h>\n> > > +#include <linux/mfd/mt6323/registers.h>\n> > > +#include <linux/mfd/mt6397/registers.h>\n> > > +#include <linux/mfd/mt6397/core.h>\n> > > +\n> > > +#define MTK_PMIC_PWRKEY_RST_EN_MASK\t0x1\n> > > +#define MTK_PMIC_PWRKEY_RST_EN_SHIFT\t6\n> > > +#define MTK_PMIC_HOMEKEY_RST_EN_MASK\t0x1\n> > > +#define MTK_PMIC_HOMEKEY_RST_EN_SHIFT\t5\n> > > +#define MTK_PMIC_RST_DU_MASK\t\t0x3\n> > > +#define MTK_PMIC_RST_DU_SHIFT\t\t8\n> > > +\n> > > +#define MTK_PMIC_PWRKEY_RST\t\t\\\n> > > +\t(MTK_PMIC_PWRKEY_RST_EN_MASK << MTK_PMIC_PWRKEY_RST_EN_SHIFT)\n> > > +#define MTK_PMIC_HOMEKEY_RST\t\t\\\n> > > +\t(MTK_PMIC_HOMEKEY_RST_EN_MASK << MTK_PMIC_HOMEKEY_RST_EN_SHIFT)\n> > > +\n> > > +#define MTK_PMIC_PWRKEY_INDEX\t0\n> > > +#define MTK_PMIC_HOMEKEY_INDEX\t1\n> > > +#define MTK_PMIC_MAX_KEY_COUNT\t2\n> > > +\n> > > +struct mtk_pmic_keys_regs {\n> > > +\tu32 deb_reg;\n> > > +\tu32 deb_mask;\n> > > +\tu32 intsel_reg;\n> > > +\tu32 intsel_mask;\n> > > +};\n> > > +\n> > > +#define MTK_PMIC_KEYS_REGS(_deb_reg, _deb_mask,\t\t\\\n> > > +\t_intsel_reg, _intsel_mask)\t\t\t\\\n> > > +{\t\t\t\t\t\t\t\\\n> > > +\t.deb_reg\t\t= _deb_reg,\t\t\\\n> > > +\t.deb_mask\t\t= _deb_mask,\t\t\\\n> > > +\t.intsel_reg\t\t= _intsel_reg,\t\t\\\n> > > +\t.intsel_mask\t\t= _intsel_mask,\t\t\\\n> > > +}\n> > > +\n> > > +struct mtk_pmic_regs {\n> > > +\tconst struct mtk_pmic_keys_regs keys_regs[MTK_PMIC_MAX_KEY_COUNT];\n> > > +\tu32 pmic_rst_reg;\n> > > +};\n> > > +\n> > > +static const struct mtk_pmic_regs mt6397_regs = {\n> > > +\t.keys_regs[MTK_PMIC_PWRKEY_INDEX] =\n> > > +\t\tMTK_PMIC_KEYS_REGS(MT6397_CHRSTATUS,\n> > > +\t\t0x8, MT6397_INT_RSV, 0x10),\n> > > +\t.keys_regs[MTK_PMIC_HOMEKEY_INDEX] =\n> > > +\t\tMTK_PMIC_KEYS_REGS(MT6397_OCSTATUS2,\n> > > +\t\t0x10, MT6397_INT_RSV, 0x8),\n> > > +\t.pmic_rst_reg = MT6397_TOP_RST_MISC,\n> > > +};\n> > > +\n> > > +static const struct mtk_pmic_regs mt6323_regs = {\n> > > +\t.keys_regs[MTK_PMIC_PWRKEY_INDEX] =\n> > > +\t\tMTK_PMIC_KEYS_REGS(MT6323_CHRSTATUS,\n> > > +\t\t0x2, MT6323_INT_MISC_CON, 0x10),\n> > > +\t.keys_regs[MTK_PMIC_HOMEKEY_INDEX] =\n> > > +\t\tMTK_PMIC_KEYS_REGS(MT6323_CHRSTATUS,\n> > > +\t\t0x4, MT6323_INT_MISC_CON, 0x8),\n> > > +\t.pmic_rst_reg = MT6323_TOP_RST_MISC,\n> > > +};\n> > > +\n> > > +struct mtk_pmic_keys_info {\n> > > +\tstruct mtk_pmic_keys *keys;\n> > > +\tconst struct mtk_pmic_keys_regs *regs;\n> > > +\tunsigned int keycode;\n> > > +\tint irq;\n> > > +\tbool wakeup:1;\n> > > +};\n> > > +\n> > > +struct mtk_pmic_keys {\n> > > +\tstruct input_dev *input_dev;\n> > > +\tstruct device *dev;\n> > > +\tstruct regmap *regmap;\n> > > +\tstruct mtk_pmic_keys_info keys[MTK_PMIC_MAX_KEY_COUNT];\n> > > +};\n> > > +\n> > > +enum mtk_pmic_keys_lp_mode {\n> > > +\tLP_DISABLE,\n> > > +\tLP_ONEKEY,\n> > > +\tLP_TWOKEY,\n> > > +};\n> > > +\n> > > +static void mtk_pmic_keys_lp_reset_setup(struct mtk_pmic_keys *keys,\n> > > +\t\tu32 pmic_rst_reg)\n> > > +{\n> > > +\tint ret;\n> > > +\tu32 long_press_mode, long_press_debounce;\n> > > +\n> > > +\tret = of_property_read_u32(keys->dev->of_node,\n> > > +\t\t\"power-off-time-sec\", &long_press_debounce);\n> > > +\tif (ret)\n> > > +\t\tlong_press_debounce = 0;\n> > > +\n> > > +\tregmap_update_bits(keys->regmap, pmic_rst_reg,\n> > > +\t\t\t   MTK_PMIC_RST_DU_MASK << MTK_PMIC_RST_DU_SHIFT,\n> > > +\t\t\t   long_press_debounce << MTK_PMIC_RST_DU_SHIFT);\n> > > +\n> > > +\tret = of_property_read_u32(keys->dev->of_node,\n> > > +\t\t\"mediatek,long-press-mode\", &long_press_mode);\n> > > +\tif (ret)\n> > > +\t\tlong_press_mode = LP_DISABLE;\n> > > +\n> > > +\tswitch (long_press_mode) {\n> > > +\tcase LP_ONEKEY:\n> > > +\t\tregmap_update_bits(keys->regmap, pmic_rst_reg,\n> > > +\t\t\t\t   MTK_PMIC_PWRKEY_RST,\n> > > +\t\t\t\t   MTK_PMIC_PWRKEY_RST);\n> > > +\t\tregmap_update_bits(keys->regmap, pmic_rst_reg,\n> > > +\t\t\t\t   MTK_PMIC_HOMEKEY_RST,\n> > > +\t\t\t\t   0);\n> > > +\t\tbreak;\n> > > +\tcase LP_TWOKEY:\n> > > +\t\tregmap_update_bits(keys->regmap, pmic_rst_reg,\n> > > +\t\t\t\t   MTK_PMIC_PWRKEY_RST,\n> > > +\t\t\t\t   MTK_PMIC_PWRKEY_RST);\n> > > +\t\tregmap_update_bits(keys->regmap, pmic_rst_reg,\n> > > +\t\t\t\t   MTK_PMIC_HOMEKEY_RST,\n> > > +\t\t\t\t   MTK_PMIC_HOMEKEY_RST);\n> > > +\t\tbreak;\n> > > +\tcase LP_DISABLE:\n> > > +\t\tregmap_update_bits(keys->regmap, pmic_rst_reg,\n> > > +\t\t\t\t   MTK_PMIC_PWRKEY_RST,\n> > > +\t\t\t\t   0);\n> > > +\t\tregmap_update_bits(keys->regmap, pmic_rst_reg,\n> > > +\t\t\t\t   MTK_PMIC_HOMEKEY_RST,\n> > > +\t\t\t\t   0);\n> > > +\t\tbreak;\n> > > +\tdefault:\n> > > +\t\tbreak;\n> > > +\t}\n> > > +}\n> > > +\n> > > +static irqreturn_t mtk_pmic_keys_irq_handler_thread(int irq, void *data)\n> > > +{\n> > > +\tstruct mtk_pmic_keys_info *info = data;\n> > > +\tu32 key_deb, pressed;\n> > > +\n> > > +\tregmap_read(info->keys->regmap, info->regs->deb_reg, &key_deb);\n> > > +\n> > > +\tkey_deb &= info->regs->deb_mask;\n> > > +\n> > > +\tpressed = !key_deb;\n> > > +\n> > > +\tinput_report_key(info->keys->input_dev, info->keycode, pressed);\n> > > +\tinput_sync(info->keys->input_dev);\n> > > +\n> > > +\tdev_dbg(info->keys->dev, \"(%s) key =%d using PMIC\\n\",\n> > > +\t\t pressed ? \"pressed\" : \"released\", info->keycode);\n> > > +\n> > > +\treturn IRQ_HANDLED;\n> > > +}\n> > > +\n> > > +static int mtk_pmic_key_setup(struct mtk_pmic_keys *keys,\n> > > +\t\tstruct mtk_pmic_keys_info *info)\n> > > +{\n> > > +\tint ret;\n> > > +\n> > > +\tinfo->keys = keys;\n> > > +\n> > > +\tret = regmap_update_bits(keys->regmap, info->regs->intsel_reg,\n> > > +\t\t\t\t info->regs->intsel_mask,\n> > > +\t\t\t\t info->regs->intsel_mask);\n> > > +\tif (ret < 0)\n> > > +\t\treturn ret;\n> > > +\n> > > +\tret = devm_request_threaded_irq(keys->dev, info->irq, NULL,\n> > > +\t\t\t\t\tmtk_pmic_keys_irq_handler_thread,\n> > > +\t\t\t\t\tIRQF_ONESHOT | IRQF_TRIGGER_HIGH,\n> > > +\t\t\t\t\t\"mtk-pmic-keys\", info);\n> > > +\tif (ret) {\n> > > +\t\tdev_err(keys->dev, \"Failed to request IRQ: %d: %d\\n\",\n> > > +\t\t\tinfo->irq, ret);\n> > > +\t\treturn ret;\n> > > +\t}\n> > > +\n> > > +\tinput_set_capability(keys->input_dev, EV_KEY, info->keycode);\n> > > +\n> > > +\treturn 0;\n> > > +}\n> > > +\n> > > +#ifdef CONFIG_PM_SLEEP\n> > > +static int mtk_pmic_keys_suspend(struct device *dev)\n> > \n> > Please use __maybe_unused annotation instead of #ifdef guard.\n> > \n> > > +{\n> > > +\tstruct mtk_pmic_keys *keys = dev_get_drvdata(dev);\n> > > +\tint index;\n> > > +\n> > > +\tfor (index = 0; index < MTK_PMIC_MAX_KEY_COUNT; index++) {\n> > > +\t\tif (keys->keys[index].wakeup)\n> > > +\t\t\tenable_irq_wake(keys->keys[index].irq);\n> > > +\t}\n> > > +\n> > > +\treturn 0;\n> > > +}\n> > > +\n> > > +static int mtk_pmic_keys_resume(struct device *dev)\n> > \n> > __maybe_unused here as well.\n> > \n> > > +{\n> > > +\tstruct mtk_pmic_keys *keys = dev_get_drvdata(dev);\n> > > +\tint index;\n> > > +\n> > > +\tfor (index = 0; index < MTK_PMIC_MAX_KEY_COUNT; index++) {\n> > > +\t\tif (keys->keys[index].wakeup)\n> > > +\t\t\tdisable_irq_wake(keys->keys[index].irq);\n> > > +\t}\n> > > +\n> > > +\treturn 0;\n> > > +}\n> > > +#endif\n> > > +\n> > > +static SIMPLE_DEV_PM_OPS(mtk_pmic_keys_pm_ops, mtk_pmic_keys_suspend,\n> > > +\t\t\tmtk_pmic_keys_resume);\n> > > +\n> > > +static const struct of_device_id of_mtk_pmic_keys_match_tbl[] = {\n> > > +\t{\n> > > +\t\t.compatible = \"mediatek,mt6397-keys\",\n> > > +\t\t.data = &mt6397_regs,\n> > > +\t}, {\n> > > +\t\t.compatible = \"mediatek,mt6323-keys\",\n> > > +\t\t.data = &mt6323_regs,\n> > > +\t}, {\n> > > +\t\t/* sentinel */\n> > > +\t}\n> > > +};\n> > > +MODULE_DEVICE_TABLE(of, of_mtk_pmic_keys_match_tbl);\n> > > +\n> > > +static int mtk_pmic_keys_probe(struct platform_device *pdev)\n> > > +{\n> > > +\tint error, index = 0;\n> > > +\tunsigned int keycount;\n> > > +\tstruct mt6397_chip *pmic_chip = dev_get_drvdata(pdev->dev.parent);\n> > > +\tstruct device_node *node = pdev->dev.of_node, *child;\n> > > +\tstruct mtk_pmic_keys *keys;\n> > > +\tconst struct mtk_pmic_regs *mtk_pmic_regs;\n> > > +\tstruct input_dev *input_dev;\n> > > +\tconst struct of_device_id *of_id =\n> > > +\t\tof_match_device(of_mtk_pmic_keys_match_tbl, &pdev->dev);\n> > > +\n> > > +\tkeys = devm_kzalloc(&pdev->dev, sizeof(*keys), GFP_KERNEL);\n> > > +\tif (!keys)\n> > > +\t\treturn -ENOMEM;\n> > > +\n> > > +\tkeys->dev = &pdev->dev;\n> > > +\tkeys->regmap = pmic_chip->regmap;\n> > > +\tmtk_pmic_regs = of_id->data;\n> > > +\n> > > +\tkeys->input_dev = input_dev = devm_input_allocate_device(keys->dev);\n> > > +\tif (!input_dev) {\n> > > +\t\tdev_err(keys->dev, \"input allocate device fail.\\n\");\n> > > +\t\treturn -ENOMEM;\n> > > +\t}\n> > > +\n> > > +\tinput_dev->name = \"mtk-pmic-keys\";\n> > > +\tinput_dev->id.bustype = BUS_HOST;\n> > > +\tinput_dev->id.vendor = 0x0001;\n> > > +\tinput_dev->id.product = 0x0001;\n> > > +\tinput_dev->id.version = 0x0001;\n> > > +\n> > > +\tkeycount = device_get_child_node_count(keys->dev);\n> > \n> > Since you are using of_* API everywhere else I'd rather we used\n> > of_get_available_child_count() here.\n> > \n> > \n> > Once these 2 issues are fixed please feel free to add \n> > \n> > Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>\n> > \n> > I assume it will all go though MFD tree, right?\n> \n> I will fix these 2 issues and send the new version.\n> \n> Since patch 2,3,4,5 of this series are all for input driver, could you\n> help to merge them with the new version later?\n\nEven though they applicable to the input component they do touch MFD\ndomain... Lee, how do you want to proceed here so we do not hold up the\npatch series for too long?\n\nThanks.","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org header.b=\"XFTiyD9p\"; \n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"Rl0bZArt\"; dkim-atps=neutral"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3yM31G5DCXz9t1G\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tWed, 25 Oct 2017 06:17:06 +1100 (AEDT)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1e74hC-0000qD-Dm; Tue, 24 Oct 2017 19:17:02 +0000","from mail-io0-x242.google.com ([2607:f8b0:4001:c06::242])\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1e74h7-0000oE-Lr; Tue, 24 Oct 2017 19:17:00 +0000","by mail-io0-x242.google.com with SMTP id b186so25083997iof.8;\n\tTue, 24 Oct 2017 12:16:36 -0700 (PDT)","from dtor-ws ([2620:0:1000:1611:da80:8749:c06f:9515])\n\tby smtp.gmail.com with ESMTPSA id\n\t133sm461471itw.24.2017.10.24.12.16.34\n\t(version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);\n\tTue, 24 Oct 2017 12:16:35 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:\n\tMessage-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=NVGrF7ZrRtyXzxMNm6rn2VVS+gQkOEgk3aydOztgR0w=;\n\tb=XFTiyD9phYhoXK\n\tzfuD6oAOggKK+nKBFbo5+Bk4cp1LPCY/GVXPLdTr91iIG2dRXXasXV8b+NIqLMGhuDbSqNq+XL/Ph\n\tu+mrUMhrPHAGy6hPCogwpRjz3TC5JClxJExTo2xc11ecFrl1+kpUBqCsu+n08Ilhx3D4F9LInCJUE\n\tJdfiRpfzsbMLdetsMULaGS+PK15oE8X4Wu6RihNSR/0zJvkhHqhy7f7xEUymmvfgHn19j4cmNsahw\n\ts4XuOQMnVuHywEMoTfQqRGyEOTt9ynuNKQKv2TzlA7FnXdFEqJZonuwrJmWQlK2XX/od0cQB4hryK\n\tenFtbcsJ5ZHSj7MLoidg==;","v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;\n\th=date:from:to:cc:subject:message-id:references:mime-version\n\t:content-disposition:in-reply-to:user-agent;\n\tbh=Cen9IF7O/P4mn6WX90QN2cwnUe4Mw5amixg/Yk+MGuw=;\n\tb=Rl0bZArtIPkfD5FXZUGzzuZzX5oSEeFGAhZSNbhisXgF2WFJRuk34TCDp3FAJ9clOb\n\tBLlUljLkvTtJ9zO8S2jPwR0oXaeO5BI2w2DIobGC17Uaqfkm/OnEd3qfu9ttVJTnmcJ/\n\tbXqIekfTjLrNAzMIZjawFX04daQNrhc3vSasSak1Jy3bm6CD9wwb9dOXalD7aecb2284\n\tm42zQVFpDq4LwGbqg0FVQRdhW3kFoudF693VyKqjYcj8J+cKSUiWDKeaZyJJSve+r1hg\n\tXwrj1b8refFZNs8v+ZKBYaDH+6ZF4ZwNzXYVZTt1y8BOi4igGeGgSaE2mDkFK0uex+62\n\toNcA=="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:date:from:to:cc:subject:message-id:references\n\t:mime-version:content-disposition:in-reply-to:user-agent;\n\tbh=Cen9IF7O/P4mn6WX90QN2cwnUe4Mw5amixg/Yk+MGuw=;\n\tb=hW/0xrwcE4k5P88zhHQMjWZhogcRBjvKZYcdy+sZoEPFhbdx+LxukNpxpufQbqQpGG\n\tHgCfgGkhaGgCXYvngR4o15ylSlkddgU560hgIoG8j0+FUyp34iujCcqx4rcQXSN0K/wM\n\t8ycal+bw86uTC9iIIVM0scaxZ66gEl5sBMUtEG4YV4GDFkeB6p3AqyFe2Bhs1JSU/Mi2\n\tl3tcXNr3yMhsWjBzMMJzAMEL3rL8U4abg1By6HyBR3cdK4VSNTfq8+DP7WhSZuiTuB4Y\n\tzkaQoqXhM3UwypAWnohZw5sP51SK4Xekk5oQa4CdJ72d5oxwg98PODrVxIjoYi/uyboY\n\tH2gw==","X-Gm-Message-State":"AMCzsaUsOBdmie5AZKpGiv2sp3AaVQC0IiqhKCrvdQeS108B2w7S82gi\n\t3b4QS0g6sQUmW0AYxFoAYK0=","X-Google-Smtp-Source":"ABhQp+QtPoXnbHK3jyf4Jawox0uWJhwQEblRXzun7UOseA/whIrSWIXMGWEJH/3sMioUdPqm7g/g6Q==","X-Received":"by 10.107.18.170 with SMTP id 42mr23325483ios.55.1508872595967; \n\tTue, 24 Oct 2017 12:16:35 -0700 (PDT)","Date":"Tue, 24 Oct 2017 12:16:32 -0700","From":"Dmitry Torokhov <dmitry.torokhov@gmail.com>","To":"Chen Zhong <chen.zhong@mediatek.com>","Subject":"Re: [PATCH v5 5/6] input: Add MediaTek PMIC keys support","Message-ID":"<20171024191632.ywzv4uxm24ewuu6u@dtor-ws>","References":"<1506509048-19032-1-git-send-email-chen.zhong@mediatek.com>\n\t<1506509048-19032-6-git-send-email-chen.zhong@mediatek.com>\n\t<20171024054409.6qbuzenzymkkjdth@dtor-ws>\n\t<1508837852.4057.6.camel@mhfsdcap03>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<1508837852.4057.6.camel@mhfsdcap03>","User-Agent":"NeoMutt/20170609 (1.8.3)","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20171024_121657_797391_F024FB45 ","X-CRM114-Status":"GOOD (  28.22  )","X-Spam-Score":"-2.0 (--)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-2.0 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/,\n\tno\n\ttrust [2607:f8b0:4001:c06:0:0:0:242 listed in] [list.dnswl.org]\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail\n\tprovider (dmitry.torokhov[at]gmail.com)\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]\n\t-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature\n\t0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n\tnot necessarily valid\n\t-0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from\n\tauthor's domain","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"Mark Rutland <mark.rutland@arm.com>,\n\tAlessandro Zummo <a.zummo@towertech.it>, devicetree@vger.kernel.org, \n\tLinus Walleij <linus.walleij@linaro.org>,\n\tJaechul Lee <jcsing.lee@samsung.com>, \n\tlinux-kernel@vger.kernel.org, Andi Shyti <andi.shyti@samsung.com>,\n\tChanwoo Choi <cw00.choi@samsung.com>, Rob Herring <robh+dt@kernel.org>,\n\tAlexandre Belloni <alexandre.belloni@free-electrons.com>,\n\tlinux-input@vger.kernel.org, Matthias Brugger <matthias.bgg@gmail.com>,\n\tlinux-mediatek@lists.infradead.org,\n\tEddie Huang <eddie.huang@mediatek.com>, \n\tLee Jones <lee.jones@linaro.org>, linux-arm-kernel@lists.infradead.org,\n\tlinux-rtc@vger.kernel.org","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}},{"id":1794098,"web_url":"http://patchwork.ozlabs.org/comment/1794098/","msgid":"<20171026082744.GA29398@gangnam>","list_archive_url":null,"date":"2017-10-26T08:27:44","subject":"Re: [PATCH v5 5/6] input: Add MediaTek PMIC keys support","submitter":{"id":68190,"url":"http://patchwork.ozlabs.org/api/people/68190/","name":"Andi Shyti","email":"andi.shyti@samsung.com"},"content":"Hi,\n\nOn Wed, Sep 27, 2017 at 06:44:07PM +0800, Chen Zhong wrote:\n> This patch add support to handle MediaTek PMIC MT6397/MT6323 key\n> interrupts including pwrkey and homekey, also add setting for\n> long press key shutdown behavior.\n> \n> Signed-off-by: Chen Zhong <chen.zhong@mediatek.com>\n\nif you want you can add:\n\nReviewed-by: Andi Shyti <andi.shyti@samsung.com>\n\nAndi","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org header.b=\"B8mrnaUy\"; \n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=infradead.org header.i=@infradead.org\n\theader.b=\"nGWK/JV3\"; \n\tdkim=fail reason=\"unknown key hash\" (0-bit key;\n\tunprotected) header.d=samsung.com header.i=@samsung.com\n\theader.b=\"Xw5dG4gr\"; dkim-atps=neutral"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3yN0WY2J5Jz9t3J\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tThu, 26 Oct 2017 19:28:09 +1100 (AEDT)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1e7dWF-0003US-U4; Thu, 26 Oct 2017 08:28:03 +0000","from merlin.infradead.org ([2001:8b0:10b:1231::1])\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1e7dWD-0003TR-9i; Thu, 26 Oct 2017 08:28:01 +0000","from mailout2.samsung.com ([203.254.224.25])\n\tby merlin.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1e7dW7-0007mz-Sw; Thu, 26 Oct 2017 08:27:58 +0000","from epcas1p2.samsung.com (unknown [182.195.41.46])\n\tby mailout2.samsung.com (KnoxPortal) with ESMTP id\n\t20171026082718epoutp02975a8962a34b036c9a5e4aaf19253cc5~xEVx1LBFG1828418284epoutp02J;\n\tThu, 26 Oct 2017 08:27:18 +0000 (GMT)","from epsmges1p2.samsung.com (unknown [182.195.40.68]) by\n\tepcas1p1.samsung.com (KnoxPortal) with ESMTP id\n\t20171026082718epcas1p1726067a858c9d5797ec85ba1f22ad642~xEVxhhv_A2434524345epcas1p1h;\n\tThu, 26 Oct 2017 08:27:18 +0000 (GMT)","from epcas1p4.samsung.com ( [182.195.41.48]) by\n\tepsmges1p2.samsung.com (Symantec Messaging Gateway) with SMTP id\n\t7C.8E.04153.66C91F95; Thu, 26 Oct 2017 17:27:18 +0900 (KST)","from epsmgms2p1new.samsung.com (unknown [182.195.42.142]) by\n\tepcas1p3.samsung.com (KnoxPortal) with ESMTP id\n\t20171026082718epcas1p3b144a3dec886c8a659e1be519994c066~xEVxOyr4a0903009030epcas1p30;\n\tThu, 26 Oct 2017 08:27:18 +0000 (GMT)","from epmmp2 ( [203.254.227.17]) by epsmgms2p1new.samsung.com\n\t(Symantec Messaging Gateway) with SMTP id 83.80.04095.56C91F95;\n\tThu, 26 Oct 2017 17:27:18 +0900 (KST)","from gangnam ([10.113.62.47]) by mmp2.samsung.com (Oracle\n\tCommunications Messaging Server 7.0.5.31.0 64bit (built May 5 2014))\n\twith ESMTPA id <0OYF008398THBT40@mmp2.samsung.com>;\n\tThu, 26 Oct 2017 17:27:17 +0900 (KST)"],"DKIM-Signature":["v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:References:In-reply-to:MIME-version:\n\tMessage-id:Subject:To:From:Date:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=SsZRD/oUGAZcOjAZLm06m+tfb0vIr2ngWfOcg44zH/c=;\n\tb=B8mrnaUyevsMrE\n\tBOY6KDsLNoLfBe33k3xyf3J6N008SpWhAj/dDE6ccyIDZ5t51lQcqoSIByvZpTbwfxdE1HYPWxC6x\n\tPineoIYzN9zVCQxrC/dWofDJWaHgegQ0B6nFUnipeb3zsqm/KYKeVbACgUJ/joVn3b/Su2BPFjdG2\n\tClC6eAzfBR6Ejl+wfOGA6qQkSTpn/d7rLAKfzo9KacIdZBZz5KmVxMLcaHaRM26oXJC5P+WYZkT90\n\t9NVB1Y5lKfon6AQRPyfTlG6/aPpYGHCw6zKuE0tCQUZzjbf9C1a5u1YwVDuXY3mpAAuO9t2qMFL0j\n\tPIb0cwNqhpLeylb4dOQQ==;","v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=infradead.org; s=merlin.20170209;\n\th=References:In-reply-to:Content-type:\n\tMIME-version:Message-id:Subject:Cc:To:From:Date:Sender:Reply-To:\n\tContent-Transfer-Encoding:Content-ID:Content-Description:Resent-Date:\n\tResent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:\n\tList-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive;\n\tbh=wf9CPVn1O8RmZiCSRDOpK2Vu/cLgHiwL+cB0g+zgjL4=;\n\tb=nGWK/JV3iiJztdmPDl2+OWm3w\n\t+3QNFiDkr3mthWSckH+wcOpBJCsWpqqy+85iz0RLsPy04zAW9PqmkxAT18XlgWUAAQCB4GDo3JVjD\n\t4sE2BOshvQKspUIHENCKTNoXaOLQSbWxROdVb6mEDMMa/3f9s7T3wtACPfs2xMUSweE/7M4DpKyzd\n\t/8ssJ9oUL0iY1/mE4oLL5H3dNbtgyeHhvZhIY6+pRmMdokqplXsHIdhXmZ2S+K5BpuDcDNmL1Sril\n\tyVpcbOxDeEjFIo5E130YLiqA31vLFvFad+GQmi+EtX4IhR497ECOCyVhwSC7xkeFj92972gIM7F/+\n\tVnRcG5Qbg==;","v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com;\n\ts=mail20170921; t=1509006439;\n\tbh=wf9CPVn1O8RmZiCSRDOpK2Vu/cLgHiwL+cB0g+zgjL4=;\n\th=Date:From:To:Cc:Subject:In-reply-to:References:From;\n\tb=Xw5dG4grVvzPG57afeyi63slI3mzefDEEqwE02SFeiwkHoWzfhPLaIzIOyds09qQN\n\tE/Kfzw8cIvgWRGbadS7VeqfwcF9BT2WCdYqlSMc/c0+97y+0LIlzDRK1TBuLZUNdRi\n\tGYPqj9wHlmNuTepi2VIAe0cQZxcusOTG9cLnU0HI="],"DKIM-Filter":"OpenDKIM Filter v2.11.0 mailout2.samsung.com\n\t20171026082718epoutp02975a8962a34b036c9a5e4aaf19253cc5~xEVx1LBFG1828418284epoutp02J","X-AuditID":"b6c32a36-325ff70000001039-a0-59f19c6683c6","Date":"Thu, 26 Oct 2017 17:27:44 +0900","From":"Andi Shyti <andi.shyti@samsung.com>","To":"Chen Zhong <chen.zhong@mediatek.com>","Subject":"Re: [PATCH v5 5/6] input: Add MediaTek PMIC keys support","Message-id":"<20171026082744.GA29398@gangnam>","MIME-version":"1.0","Content-disposition":"inline","In-reply-to":"<1506509048-19032-6-git-send-email-chen.zhong@mediatek.com>","User-Agent":"Mutt/1.9.1 (2017-09-22)","X-Brightmail-Tracker":["H4sIAAAAAAAAA02TWUwTURSGczud6UCsDgX0BqPiGI0QqZ2yXZQajcZMIiEYXkTBOoGxJdIW\n\tO63bgyKigapExURsUNnUWHEriLhUFBCCUWJF624VjYqpiOACQYmlowlv/zn5/nPz55xLYgoX\n\tEUHmGi282cjl0USwtLE1ShWzvuJbhuqpnUa17scyVOypkaCOfQMAPfn+EUcn2rpw1Fr9CSBP\n\tT7EUfWneiyHvjzsAHf59WoKc7zw4ejbwE0fd1yoI1L3LDVD72UcEOvnELUGFRbFot6tNtljB\n\t1h2vA+x7pxuwV+2vZKzTUUKwLz03CLa+dgdb1NksZUsbHIA9cnxYwg46p6cFr+aT9TyXw5sj\n\teWO2KSfXqNPQK9K1S7XxCSomhklCiXSkkTPwGnpZSlrM8tw8fyg6chOXZ/W30jhBoOcvSjab\n\trBY+Um8SLBp6DcOolYwqUalWq5VxsVkL1PF+ZB2vbzv6HMvfiW253G4tAI0SGwgiIRUHXW9a\n\tZDYQTCqoJgAveDqlYvELwKanXsIGyADlbJ8k9i8CeOTLCSAWvQD2VRXiY6Ok1Gz4u3okMJag\n\tomDhi6GAOYyaCx/s3zjGY9QhHL5r/iMdY0KpJdBZdiXAy6l58Nz1Q7ioQ+BQ2esAg/n799vP\n\tA1FPhT1/ymVjOohi4dVrZwPecGoWdJWKESDllMFR3ydczLYMXi8pk4k6FH7uaJCJaabCh3c0\n\tIr8LwIuN3RKxKAJwpPcxIRpi4V3bTon48kTY92MfLprlsHiPQkRYOPyw+R++BD53vA5oBfUM\n\tQJePOACm2cflsY/LYx+XpxJgDjCZzxcMOl5g8tVKgTMIVqNOmW0yOEHgdKMTmkB1V0oLoEhA\n\tT5CXf+3PUODcJmGroQVAEqPD5C/Lv2Uo5Dnc1m282aQ1W/N4oQXE+3dyEIsIzzb5P4LRomXi\n\tklRxCWr/SSUxDD1FHn7Bs0pB6TgLv4Hn83nzf5+EDIooAKl1vttMqO397IXaS6dSlZXBfcmJ\n\tWTMKJoWf8oKgc6M9mZ6Qe2FAae8dTLXoBzq2bB5KGPnoTY8qra8ylxqiK3H3mTnzwravv0Gu\n\t8zasLXJM0/m2dX7omjk4cOtnauKq1Zpj0TXDJRrtzY1vM/vLHlVFvKFfrKwwxrSOFvaH+NKz\n\taKmg55hozCxwfwH20KYw0AMAAA==","H4sIAAAAAAAAA+NgFprHIsWRmVeSWpSXmKPExsVy+t9jQd20OR8jDdpuclssuXiV3aLj2mIm\n\ti+M9nxgtrn95zmox/8g5VovDi14wWlx71MFi8XZ/N7PF/a9HGS2m/FnOZLHp8TVWi5ufvrFa\n\tXN41h83icvNFRotjq6+wWSy9fpHJoqnF2KJ17xF2ByGPNfPWMHo82XSR0WPnrLvsHptWdbJ5\n\t3Lm2h81j85J6j5aT+1k8+rasYvSYPu8nk8fnTXIBXFFcNimpOZllqUX6dglcGUdm3mIuaGSu\n\t2HqstIFxG1MXIweHhICJxKZj/F2MnBxCAusYJe7s44KwXzJKXP5nAmKzCKhK/Fn0mwnEZhPQ\n\tlGi6/YMNpFVEQEPiQm8hSJhZYBqrxM1PCiC2sICjxKbJ28HKeQV0JNbunsTaxcgFNPImo8T/\n\tv6fYIBKCEj8m32OBaNaSWL/zOBOELS3x6O8MdhCbU8BDYueu1WBxUQFlib19h9gnMPLPQtI+\n\tC0n7LCTtCxiZVzFKphYU56bnFhsVGOallusVJ+YWl+al6yXn525iBMbatsNafTsY7y+JP8Qo\n\twMGoxMP74eOHSCHWxLLiytxDjBIczEoivHdmfIwU4k1JrKxKLcqPLyrNSS0+xCjNwaIkzns7\n\t71ikkEB6YklqdmpqQWoRTJaJg1OqgVHO5cCki5p3XBb21WvafT3PJVeseMrt6/SVLyZ67uzb\n\tYvdg9WuhRTxsLGdZrNrDe9dOe5HbGyuTsyl9pcWdre4xbX92f/HbuLxxjdKX9V6qeyO7jz+z\n\t2e1x+9KZB+/ty3543X5QnXlMIZyjjHVL9n3dhobi5f+P1uRWVrJbrZ0p73fcI/fxljVKLMUZ\n\tiYZazEXFiQByWSCFsQIAAA=="],"X-CMS-MailID":"20171026082718epcas1p3b144a3dec886c8a659e1be519994c066","X-Msg-Generator":"CA","CMS-TYPE":"101P","DLP-Filter":"Pass","X-CFilter-Loop":"Reflected","X-CMS-RootMailID":"20170927104421epcas2p190d03c1c6759f394debfc01b23641ece","X-RootMTR":"20170927104421epcas2p190d03c1c6759f394debfc01b23641ece","References":"<1506509048-19032-1-git-send-email-chen.zhong@mediatek.com>\n\t<CGME20170927104421epcas2p190d03c1c6759f394debfc01b23641ece@epcas2p1.samsung.com>\n\t<1506509048-19032-6-git-send-email-chen.zhong@mediatek.com>","X-Spam-Note":"CRM114 invocation failed","X-Spam-Score":"-6.8 (------)","X-Spam-Report":"SpamAssassin version 3.4.1 on merlin.infradead.org summary:\n\tContent analysis details:   (-6.8 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-5.0 RCVD_IN_DNSWL_HI RBL: Sender listed at http://www.dnswl.org/,\n\thigh trust [203.254.224.25 listed in list.dnswl.org]\n\t-0.0 RP_MATCHES_RCVD Envelope sender domain matches handover relay\n\tdomain\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t-0.0 SPF_HELO_PASS          SPF: HELO matches SPF record\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]\n\t0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n\tnot necessarily valid\n\t0.0 T_DKIM_INVALID DKIM-Signature header exists but is not valid","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"Mark Rutland <mark.rutland@arm.com>,\n\tAlessandro Zummo <a.zummo@towertech.it>,\n\tJaechul Lee <jcsing.lee@samsung.com>, \n\tdevicetree@vger.kernel.org, Linus Walleij <linus.walleij@linaro.org>, \n\tDmitry Torokhov <dmitry.torokhov@gmail.com>,\n\tlinux-kernel@vger.kernel.org, \n\tChanwoo Choi <cw00.choi@samsung.com>, Rob Herring <robh+dt@kernel.org>,\n\tAlexandre Belloni <alexandre.belloni@free-electrons.com>,\n\tlinux-input@vger.kernel.org, Matthias Brugger <matthias.bgg@gmail.com>,\n\tlinux-mediatek@lists.infradead.org,\n\tEddie Huang <eddie.huang@mediatek.com>, \n\tLee Jones <lee.jones@linaro.org>, linux-arm-kernel@lists.infradead.org,\n\tlinux-rtc@vger.kernel.org","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}}]