From patchwork Sat Jan 9 18:02:14 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?J=2E_Neusch=C3=A4fer?= X-Patchwork-Id: 12008589 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0C06AC433DB for ; Sat, 9 Jan 2021 18:07:16 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B472E239FE for ; Sat, 9 Jan 2021 18:07:15 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B472E239FE Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmx.net Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=oNmTRnH9uq09DP7YlJMeBjVTD61ovCo0HuAKEUZUhkg=; b=a+x8biv3tMzVF5ve1LG9SpCxv OWHbD4s+YZEoEQt45sbyPvVKDXspO56aCAM9aKFyD5Q3CtJStWB+3GrRE2dPGZt/B9bEPqkL2wJoZ dbzFV9VjoBkUhyyMF4EupIY1QevackFBzHbdGK0Brp8Wj57vvP1uHbdztIfUUAxjmao20Ae31SYtf KdVf9PzCDr2dpySzl7NanpqLIWPYB31bX3wmW207S2GrVM60M73CqwBoaYFo7WUZfQEXVtfjCgR9g cs6Cb4rc/FND+Mcspc8pNgdLL7/eFm2mwrZNNUwBEqmsGXjU4yAR+y7lKOSqgw2F9UYX0IjvulBfw XnqRJgu7g==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kyIcb-0000wo-5v; Sat, 09 Jan 2021 18:05:53 +0000 Received: from mout.gmx.net ([212.227.15.15]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kyIcQ-0000uG-8W for linux-arm-kernel@lists.infradead.org; Sat, 09 Jan 2021 18:05:47 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1610215496; bh=iWxnjypnR1plNrfXr1xJKm3wD/fZ9cxl+w1r81KUhso=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=Up4hIZQ8S5e+S5V+Q9in89C7YriUsESyP8GI+l0dJpsXgXh9hps2R253bqdcXe+7n jlY3iLXynC8IsTuqOKt+e/pFurua2/25t4kQodicO74jCFp6WsquJ8sUM0Vf6XxJOi bq7a+jCW+AcnPbrUS4zLm8Mt/OsmgYY+oe+9Ajr0= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from longitude ([37.201.215.57]) by mail.gmx.com (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MDQiS-1kr7c61P7O-00ASWN; Sat, 09 Jan 2021 19:04:56 +0100 From: =?utf-8?q?Jonathan_Neusch=C3=A4fer?= To: linux-kernel@vger.kernel.org Subject: [PATCH v7 1/7] dt-bindings: Add vendor prefix for Netronix, Inc. Date: Sat, 9 Jan 2021 19:02:14 +0100 Message-Id: <20210109180220.121511-2-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210109180220.121511-1-j.neuschaefer@gmx.net> References: <20210109180220.121511-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:zPqNcg1CXeoHM0np2OoEXcoXC9FroCfRaHf9cUotROz6im2cb08 EdwTbeK3AVvr3x4qekWlyXFPs/Huo1EVcBhN2G8bloGeYZmfot3Ove0YDCU+nFm1Rz8Grt3 7I6l1V5aqj+eIc7Xx6+JrYY/c96ZCXM0EBxiKTsvnoW26psLtHbAbxhA3+71c1jw72nd4FM jIBsAKtMcNRgDIpL9tblg== X-UI-Out-Filterresults: notjunk:1;V03:K0:DoINDYjpa1E=:scygcgNWNuflFLI8qP/AhW eMD6m6GcI9kkFrMCcAY9nxuRK1bYxYeuJcYJPAe/vk+9y6N4TuDkjFDyq7CpdbjC0A3wlboE3 QJoXXDNET43HhIZBjtFBnOxvcSXb5gW4DHbUTYA2e92aTIZLIiHj036xZWZb1JhAbZ3gT1io7 88YnzMGj4MlRUEs3DNDLE5LEmX5P5p8d5pRTI8s0OOWvIItjVIGYLClgT71PX3cmZ7vPijXUE v94Alj8SBsVK6n8HRPav8AAWPbO8gAj8o5Y1gNBpt5MwtAotuupYYCrjLrSY7HhXL0O3B0cWN i/IQrm6ffDpAXfx3f14JqF6gdauB7LbQ5R2ydO767Dc8i0OXUmL724CXFnFL+Srq/qoddJRZ9 n7PNeaBvZYIOaYm5xHJcqC6XS/7QCIoytZhPakmZPDnDLyuZ0XXYBtxymt4XHsByjvWSaejWt C/fFemKQrpm09s0q9UAsl7xpLiM5OD2nJ5/e61YtuvyKOl6Zj2AiBEbSOUN+NkV5yfUAkC+Z6 yqwjLixfql05dJt9MVdvVShce6M/jryfqimjwHnKWJRRg4ULG/iCzcGxmhqBMQ6Tju38mw/xC ZpFk7bFmMGoK31A3T4/oKQY6U8Y4u8Hjz8zt2Ayu6uvxClUTQ63Q5iNeKazf55t1PkO8stbSY 9+eVsjcKl6FpQGjy48UUOckKoxk8/QgEtYBXSKa0djkLdyO86/cSX6PXGWKYGMUV9PqDH6ZBl eqfPliHin5qweeqbAm/iLhx01+g8faC3basm0LahOCWVK5WgCNNW6jw5H/CzXzo13dnkop+24 bAzUNNs5CNXSGtTxpmBR6rYcmYBb8nPSeLkEvBKrarDaZPH2UHeJ94Z0Gl8HSIsmaDVpmNfoN ewbnmaPyGRH8mmAxXyZQ== X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210109_130543_587796_3FF84446 X-CRM114-Status: GOOD ( 13.22 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Alexandre Belloni , Heiko Stuebner , Kuninori Morimoto , linux-pwm@vger.kernel.org, Linus Walleij , Thierry Reding , Fabio Estevam , linux-rtc@vger.kernel.org, Arnd Bergmann , Mauro Carvalho Chehab , Sam Ravnborg , Daniel Palmer , Krzysztof Kozlowski , Andy Shevchenko , Andreas Kemnade , NXP Linux Team , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , devicetree@vger.kernel.org, Stephan Gerhold , allen , Sascha Hauer , =?utf-8?q?Jonathan_Neusch=C3=A4fer?= , Lubomir Rintel , Rob Herring , Lee Jones , linux-arm-kernel@lists.infradead.org, Alessandro Zummo , Mark Brown , Pengutronix Kernel Team , Heiko Stuebner , Max Merchel , Josua Mayer , Shawn Guo , "David S. Miller" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Netronix, Inc. (http://www.netronixinc.com/) makes ebook reader board designs, which are for example used in Kobo and Tolino devices. An alternative prefix for Netronix would be "ntx", which is already used in code released by Netronix. It is shorter, but perhaps less clear. Signed-off-by: Jonathan Neuschäfer Acked-by: Rob Herring --- v4-v7: - No changes v3: - https://lore.kernel.org/lkml/20200924192455.2484005-2-j.neuschaefer@gmx.net/ - Add Acked-by tag v2: - No changes --- Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++ 1 file changed, 2 insertions(+) -- 2.29.2 diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml index 041ae90b0d8fd..4d36b8173b568 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.yaml +++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml @@ -756,6 +756,8 @@ patternProperties: description: Broadcom Corporation (formerly NetLogic Microsystems) "^netron-dy,.*": description: Netron DY + "^netronix,.*": + description: Netronix, Inc. "^netxeon,.*": description: Shenzhen Netxeon Technology CO., LTD "^neweast,.*": From patchwork Sat Jan 9 18:02:15 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?J=2E_Neusch=C3=A4fer?= X-Patchwork-Id: 12008593 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0D9FBC433DB for ; Sat, 9 Jan 2021 18:07:22 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id BE350239FE for ; Sat, 9 Jan 2021 18:07:21 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org BE350239FE Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmx.net Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=9cKaGGz98RHsIIY8rw+sd3eECetnHh/pGUv3vDIM7vQ=; b=SPAgQVkxPOW+gDknUemwPohZG 9lV0Mo4b1L6q3xAfO8ksDbjoCq/TscdLA51dBD6v2NzgJnKjG8EMjp4Xu533pE2rPHN0aOQD65XWk 3AWHSPKvbJUuXu9e39TYjMqg4/ktsyBVa0qV4S5iw0GK2Wx9cLoNwP6lu0eZW942/CGUPs7tEcNIp TKQxJ8hqLC3XHTh1cvtcwV0Eci6CvHFwkrVwF2wN72HYpdok3xv4Nc+l/DxAQcd4kj+4o5A+x91M6 FxMAjuD1ZtOrQdBxiHtwHorV2SaRkera0ms9caU6mO5of8cuEdN9Y/nuZ8jtTlRjhrkncT6bfpD3r R8rVfVabg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kyIcf-0000xp-Vv; Sat, 09 Jan 2021 18:05:58 +0000 Received: from mout.gmx.net ([212.227.17.21]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kyIcR-0000ud-Rr for linux-arm-kernel@lists.infradead.org; Sat, 09 Jan 2021 18:05:49 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1610215499; bh=BXFHLRrmZEFTrHUZU9YWQgsUIyoTn9ioNYRTBZCq8QA=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=CtWdOAHJOrULK+8y9ULVssGZX3DKKVr54WAE0t5k7qTIMQL/glXpkT5l+gidEyD6V kK319yoD0SttSOgLupxyKjpAYi28y9SdTCnbgSwNJJCc4yekfc0I0AAQaVj4e9Nl8a VX5bGSg9x73xEPQWxWF5OXoBmcn2gsFh87ql0z9E= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from longitude ([37.201.215.57]) by mail.gmx.com (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MBUqF-1koelp3x5b-00D11D; Sat, 09 Jan 2021 19:04:59 +0100 From: =?utf-8?q?Jonathan_Neusch=C3=A4fer?= To: linux-kernel@vger.kernel.org Subject: [PATCH v7 2/7] dt-bindings: mfd: Add binding for Netronix embedded controller Date: Sat, 9 Jan 2021 19:02:15 +0100 Message-Id: <20210109180220.121511-3-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210109180220.121511-1-j.neuschaefer@gmx.net> References: <20210109180220.121511-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:G9JfvNlKTk6g31LtLz23K/QbaXjnACKNG57wlNXxZJcGdvifzlJ 9B7JnFm07xp4tbAlHf+86BdbwRZru7H/rFKD2fK92HuSPqfY/5Xasr6VN8gBDYOp7DR1oVS fJqzU70IewJ/cetjwUL27J8iQ+TlC5fSCfH3zAgmiFd9uGPfMjAma3gQeH40xyPP0pzNu5r PoiweiIS4BLRloJ5MSXig== X-UI-Out-Filterresults: notjunk:1;V03:K0:Hi4E1BbiO4w=:HSn9KO0QfjCaC9NC7W3Utm rd1dkilQzxfjGgc77QKJqRodVT0E4iSkAtWNaF5mlhOThUxmnSuyGabFXayJJK0GjDZVEUuI3 8pBfa5uqvqxTUPdywMrfvJOqAklcFgy64gqBqNMOptIlAoRM0b/pPK8+RcEOEEYP4dM8dLr/b eAhGnCu94ITGCm03unwjGnOLZhPiM0r3FC3F8VUmfpVXMO055eFchRM3pN8o1rc5gOQDfQOhE 5OA1Vx4PgrOihAGUowGEg6rJDD8jZleyIcWxDXkwN8QA69y/hOUQC+lipf3Jxz8nBbFkn3J1u 65Z2SJ003u+3rZI9jrQqNG7Hd1/iJEGrUFp+3B8PXgn2Fbb+7foSU/SPDLNfduU2yz2wbtadn 5Ib7+eAeP3BlBR0A+tUiD+Hec2v7wAU11BWt5pMeHZatvoKoU9wt9MDTxUjRfNGgfEJBzK9BC Qz31lD9rZQwIPwqGnXrJAyxLLLtSDLDXR3W1mXboJZpdvEGyoSwTdwyoFaV74E88VaoTfZHWl nrAVuc6OV8X3CImydm59F20aWHNfsSfCIyk91XpqTdnl7o7W5y3iNuw0cmlkTyLdo9JOFgxCC 8xc7QrTQ+rQIKQS18/IqAQTmMiHbiP50kaKf3r9mXKAV8+lhm2HY6I1Lm8nLvVL9gR+qkiIEj u8AoaAmxy2PFOLuUq0sf+b88GEfcdFd4TC0XbD5XUCf3ZEMLLf5/k4Xt4LGX9KnIeIyGF4WkC TdGnzAoO2A6DltVseGAlVEM+HZx7Wo4hrpOjp1BWrdUkWHe+5TasHP6nfpDSSjZgBUodXrJ64 lCQaiS6O0vU5i79lAB8oeo61r5fxcX5E0RP0wgVTt/32IfzYSuaij8rCjVs+XMhQGhs9JRQdN NipLOayWL/q0y+h/XTtA== X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210109_130544_162261_C8227E7A X-CRM114-Status: GOOD ( 16.30 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Alexandre Belloni , Heiko Stuebner , linux-pwm@vger.kernel.org, Linus Walleij , Thierry Reding , Fabio Estevam , linux-rtc@vger.kernel.org, Arnd Bergmann , Mauro Carvalho Chehab , Sam Ravnborg , Daniel Palmer , Andy Shevchenko , Andreas Kemnade , NXP Linux Team , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , devicetree@vger.kernel.org, Stephan Gerhold , allen , Sascha Hauer , =?utf-8?q?Jonathan_Neusch=C3=A4fer?= , Lubomir Rintel , Rob Herring , Lee Jones , linux-arm-kernel@lists.infradead.org, Alessandro Zummo , Mark Brown , Pengutronix Kernel Team , Heiko Stuebner , Josua Mayer , Shawn Guo , "David S. Miller" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org This EC is found in e-book readers of multiple brands (e.g. Kobo, Tolino), and is typically implemented as a TI MSP430 microcontroller. It controls different functions of the system, such as power on/off, RTC, PWM for the backlight. The exact functionality provided can vary between boards. Signed-off-by: Jonathan Neuschäfer Reviewed-by: Rob Herring --- v5-v7: - no changes v4: - Add R-b tag v3: - https://lore.kernel.org/lkml/20200924192455.2484005-3-j.neuschaefer@gmx.net/ - Remove binding in text form patch description again - Add additionalProperties: false - Remove interrupt-controller property from example - Merge pwm/rtc nodes into main node v2: - https://lore.kernel.org/lkml/20200905133230.1014581-3-j.neuschaefer@gmx.net/ - Add the plaintext DT binding for comparison --- .../bindings/mfd/netronix,ntxec.yaml | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 Documentation/devicetree/bindings/mfd/netronix,ntxec.yaml -- 2.29.2 diff --git a/Documentation/devicetree/bindings/mfd/netronix,ntxec.yaml b/Documentation/devicetree/bindings/mfd/netronix,ntxec.yaml new file mode 100644 index 0000000000000..59a630025f52f --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/netronix,ntxec.yaml @@ -0,0 +1,76 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/mfd/netronix,ntxec.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Netronix Embedded Controller + +maintainers: + - Jonathan Neuschäfer + +description: | + This EC is found in e-book readers of multiple brands (e.g. Kobo, Tolino), and + is typically implemented as a TI MSP430 microcontroller. + +properties: + compatible: + const: netronix,ntxec + + reg: + items: + - description: The I2C address of the EC + + system-power-controller: + type: boolean + description: See Documentation/devicetree/bindings/power/power-controller.txt + + interrupts: + minItems: 1 + description: + The EC can signal interrupts via a GPIO line + + "#pwm-cells": + const: 2 + description: | + Number of cells in a PWM specifier. + + The following PWM channels are supported: + - 0: The PWM channel controlled by registers 0xa1-0xa7 + +required: + - compatible + - reg + +additionalProperties: false + +examples: + - | + #include + i2c { + #address-cells = <1>; + #size-cells = <0>; + + ec: embedded-controller@43 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_ntxec>; + + compatible = "netronix,ntxec"; + reg = <0x43>; + system-power-controller; + interrupt-parent = <&gpio4>; + interrupts = <11 IRQ_TYPE_EDGE_FALLING>; + #pwm-cells = <2>; + }; + }; + + backlight { + compatible = "pwm-backlight"; + pwms = <&ec 0 50000>; + power-supply = <&backlight_regulator>; + }; + + backlight_regulator: regulator-dummy { + compatible = "regulator-fixed"; + regulator-name = "backlight"; + }; From patchwork Sat Jan 9 18:02:16 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?J=2E_Neusch=C3=A4fer?= X-Patchwork-Id: 12008591 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5C799C433E0 for ; Sat, 9 Jan 2021 18:07:17 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 0AED3239FE for ; Sat, 9 Jan 2021 18:07:16 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0AED3239FE Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmx.net Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=jQTmdPeVC4NZlcqVh+pW6eeSdzFjrJ9pfDFgANls4dI=; b=zHl7fsmBJXYAGtVe/wNUYXEIY ahDgKoAB0EZAOnEh0HkOrDgLv06A7kVg+J70+fzWAcBKH6Ka7xoZDxnIDxxihtdMlCDhWawLg60KB q9+XFLcEWeRESHExo3qk9YgjkZ5eDrdZXRwg0K4ke2RRgKFtmCg9WQuBllJkLRVpMPSGgQu3J04le QYrz7oYdcWe+SOBsgh72R0oFNRg7RUckOAoIyWo4qs3dWndiO0N1wvigrG6ZVyPAyIXf3vm9F3kBG U8SG+N8+xO1qhk1e9qJvtv+bNtuMsI0iCmoO8vgTQ4FDDTAUt/NrAFscmDZMW9iKnn8obTCzfODb5 dYicy6WkQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kyIcW-0000vh-F5; Sat, 09 Jan 2021 18:05:48 +0000 Received: from mout.gmx.net ([212.227.15.18]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kyIcP-0000u9-Aq for linux-arm-kernel@lists.infradead.org; Sat, 09 Jan 2021 18:05:46 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1610215502; bh=Tuw+ZgZ4Kq1PeWeeWse0O4WWhQIH6noWqKgzE61zkGs=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=bOCP+GslRwX4m8cumG51YSJtXjf7QCBOeRUi72FQueIspwYsZmNU9uCrHk9v/CBa2 FaDAnADGylGYpgESRp1zR4rgZEgMHWzzjYhQTgAYIzT24pLr7APcbJ2+KZwFL/OqaC Iigpbmy9i9v+rLF7jYW3GS69hOfN1YNOb348n81c= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from longitude ([37.201.215.57]) by mail.gmx.com (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MEFvj-1kqIOp20LV-00ACNe; Sat, 09 Jan 2021 19:05:02 +0100 From: =?utf-8?q?Jonathan_Neusch=C3=A4fer?= To: linux-kernel@vger.kernel.org Subject: [PATCH v7 3/7] mfd: Add base driver for Netronix embedded controller Date: Sat, 9 Jan 2021 19:02:16 +0100 Message-Id: <20210109180220.121511-4-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210109180220.121511-1-j.neuschaefer@gmx.net> References: <20210109180220.121511-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:foAsmsgdOWTVSw/YGXc2EruSMnsyjwSVlFx6zJqHEmmTVsft2cm yfQgPRN/LxWFvUEvPLkF6DnhMf7PBYWP+y9vCYJi0do+69/7BYePPvw2iCSCTItLsv35qjS hFd16QTidEyNTsVPJmja/a0/q3dcFGZRc0AWcYJs6LI+ABSyFxZmrACsCUH33OHAzs/1yK/ +lH1OO1Kkoi+vZ77NxJjQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:SQ9O/0aZvnQ=:xbrVD/GkkcvZtLsCs/nDs5 l7oXyzhJhgYh6c8D9dgJko6MfJ+p7JiL6Md6nscLi+YsY+alj+AXHU6lMdrUVD7KUPUmsj9Dn U9b3t8w8CZQZ/V8yldEl4IQWyfqSEghZ2Oay4VVOvnss+qn/vJyCKa5Mu5AokGKWXbTiQQhkc dwo+vJkLcyP2PQ1OKFVEfEUkCNOdOT872ougp8f6Dqa7MO1f+4bkwkGblHAnNpIrguPPsv8O2 2gGiGhBjL2Ihx9JHmTjNhhTBAOrKJmXL99vWWxjjvIR57XSzneom+WxYMOKD/tuzbvAwkb+fu nrTMgSLxlhyWjNOuoLU0w2XHqjZM/bvRkR5/AO4EWZ2CsOOpkWEkqSBU0CckWgkpnPgNxHHdn 2n62OZrubD5MPvUFeqFTEdF3H1YEOKyN5oyUF+nUGWFfPmGQfKzjywE/LOLWL28pKmPPy3xqQ ekBAUFnnXvqgvM2hjSy71GMBCmi/zWGWo+abM+hGtX3XAiFbsIVroR+ggDRfSmKRDsdvJlAEG HuI1Oxvf4W8gOclG9dTrCZHhHuDwuYFwsWYhjmp+A80XRLyAxwk8ghioqjRC2JlmPvvGkV5ea 7k4wfSiZoswrDvgW1GTsQlUJBPO1PS4hChDqClA7QB5m/ZcsEkn6Yk84kRAC5qapj92r0kjoy JEfFGgMLJaRWHnNOnFpZV9yWxTovgQ/QePvMeDieemWrT0txhrGz2uHwSV9I1pqk6ycgb0+IH ZmuV2+xO/b8y7h0qcQGCBrRoNQdHWX1gY0dEkirXr7SNYNHUUopoR2yinT7NvHr7tzGMLdYTa yBHVsSrYZxgDcRPqB7/RzOPLkTULzx/5YffvuTarbm+u7chDzr4et8svoX5a4VuQ1Yr4jZ5mj /epoxKWwvZRw9w7pJXOw== X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210109_130541_656847_B4ABDCBA X-CRM114-Status: GOOD ( 37.10 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Alexandre Belloni , Heiko Stuebner , linux-pwm@vger.kernel.org, Linus Walleij , Thierry Reding , Fabio Estevam , linux-rtc@vger.kernel.org, Arnd Bergmann , Mauro Carvalho Chehab , Sam Ravnborg , Daniel Palmer , Andy Shevchenko , Andreas Kemnade , NXP Linux Team , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , devicetree@vger.kernel.org, Stephan Gerhold , allen , Sascha Hauer , =?utf-8?q?Jonathan_Neusch=C3=A4fer?= , Lubomir Rintel , Rob Herring , Lee Jones , linux-arm-kernel@lists.infradead.org, Alessandro Zummo , Mark Brown , Pengutronix Kernel Team , Heiko Stuebner , Josua Mayer , Shawn Guo , "David S. Miller" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The Netronix embedded controller is a microcontroller found in some e-book readers designed by the original design manufacturer Netronix, Inc. It contains RTC, battery monitoring, system power management, and PWM functionality. This driver implements register access and version detection. Third-party hardware documentation is available at: https://github.com/neuschaefer/linux/wiki/Netronix-MSP430-embedded-controller The EC supports interrupts, but the driver doesn't make use of them so far. Signed-off-by: Jonathan Neuschäfer Acked-for-MFD-by: Lee Jones --- v7: - Add #define for version number (suggested by Lee Jones). v6: - https://lore.kernel.org/lkml/20201208011000.3060239-4-j.neuschaefer@gmx.net/ - Add Lee Jones' ACK v5: - no changes v4: - https://lore.kernel.org/lkml/20201122222739.1455132-4-j.neuschaefer@gmx.net/ - include asm/unaligned.h after linux/* - Use put_unaligned_be16 instead of open-coded big-endian packing - Clarify that 0x90=0xff00 causes an error in downstream kernel too - Add commas after non-sentinel positions - ntxec.h: declare structs device and regmap - Replace WARN_ON usage and add comments to explain errors - Replace dev_alert with dev_warn when the result isn't handled - Change subdevice registration error message to dev_err - Declare ntxec_reg8 as returning __be16 - Restructure version detection code - Spell out ODM v3: - https://lore.kernel.org/lkml/20200924192455.2484005-4-j.neuschaefer@gmx.net/ - Add (EC) to CONFIG_MFD_NTXEC prompt - Relicense as GPLv2 or later - Add email address to copyright line - remove empty lines in ntxec_poweroff and ntxec_restart functions - Split long lines - Remove 'Install ... handler' comments - Make naming of struct i2c_client parameter consistent - Remove struct ntxec_info - Rework 'depends on' lines in Kconfig, hard-depend on I2C, select REGMAP_I2C and MFD_CORE - Register subdevices via mfd_cells - Move 8-bit register conversion to ntxec.h v2: - https://lore.kernel.org/lkml/20200905133230.1014581-4-j.neuschaefer@gmx.net/ - Add a description of the device to the patch text - Unify spelling as 'Netronix embedded controller'. 'Netronix' is the proper name of the manufacturer, but 'embedded controller' is just a label that I have assigned to the device. - Switch to regmap, avoid regmap use in poweroff and reboot handlers. Inspired by cf84dc0bb40f4 ("mfd: rn5t618: Make restart handler atomic safe") - Use a list of known-working firmware versions instead of checking for a known-incompatible version - Prefix registers with NTXEC_REG_ - Define register values as constants - Various style cleanups as suggested by Lee Jones - Don't align = signs in struct initializers [Uwe Kleine-König] - Don't use dev_dbg for an error message - Explain sleep in poweroff handler - Remove (struct ntxec).client - Switch to .probe_new in i2c driver - Add .remove callback - Make CONFIG_MFD_NTXEC a tristate option --- drivers/mfd/Kconfig | 11 ++ drivers/mfd/Makefile | 1 + drivers/mfd/ntxec.c | 216 ++++++++++++++++++++++++++++++++++++++ include/linux/mfd/ntxec.h | 37 +++++++ 4 files changed, 265 insertions(+) create mode 100644 drivers/mfd/ntxec.c create mode 100644 include/linux/mfd/ntxec.h -- 2.29.2 diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig index bdfce7b156216..4280bcd47ec7d 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -976,6 +976,17 @@ config MFD_VIPERBOARD You need to select the mfd cell drivers separately. The drivers do not support all features the board exposes. +config MFD_NTXEC + tristate "Netronix embedded controller (EC)" + depends on OF || COMPILE_TEST + depends on I2C + select REGMAP_I2C + select MFD_CORE + help + Say yes here if you want to support the embedded controller found in + certain e-book readers designed by the original design manufacturer + Netronix. + config MFD_RETU tristate "Nokia Retu and Tahvo multi-function device" select MFD_CORE diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile index 14fdb188af022..948a3bf8e3e57 100644 --- a/drivers/mfd/Makefile +++ b/drivers/mfd/Makefile @@ -219,6 +219,7 @@ obj-$(CONFIG_MFD_INTEL_PMC_BXT) += intel_pmc_bxt.o obj-$(CONFIG_MFD_INTEL_PMT) += intel_pmt.o obj-$(CONFIG_MFD_PALMAS) += palmas.o obj-$(CONFIG_MFD_VIPERBOARD) += viperboard.o +obj-$(CONFIG_MFD_NTXEC) += ntxec.o obj-$(CONFIG_MFD_RC5T583) += rc5t583.o rc5t583-irq.o obj-$(CONFIG_MFD_RK808) += rk808.o obj-$(CONFIG_MFD_RN5T618) += rn5t618.o diff --git a/drivers/mfd/ntxec.c b/drivers/mfd/ntxec.c new file mode 100644 index 0000000000000..22ed2ef0669cb --- /dev/null +++ b/drivers/mfd/ntxec.c @@ -0,0 +1,216 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * The Netronix embedded controller is a microcontroller found in some + * e-book readers designed by the original design manufacturer Netronix, Inc. + * It contains RTC, battery monitoring, system power management, and PWM + * functionality. + * + * This driver implements register access, version detection, and system + * power-off/reset. + * + * Copyright 2020 Jonathan Neuschäfer + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define NTXEC_REG_VERSION 0x00 +#define NTXEC_REG_POWEROFF 0x50 +#define NTXEC_REG_POWERKEEP 0x70 +#define NTXEC_REG_RESET 0x90 + +#define NTXEC_POWEROFF_VALUE 0x0100 +#define NTXEC_POWERKEEP_VALUE 0x0800 +#define NTXEC_RESET_VALUE 0xff00 + +static struct i2c_client *poweroff_restart_client; + +static void ntxec_poweroff(void) +{ + int res; + u8 buf[3] = { NTXEC_REG_POWEROFF }; + struct i2c_msg msgs[] = { + { + .addr = poweroff_restart_client->addr, + .flags = 0, + .len = sizeof(buf), + .buf = buf, + }, + }; + + put_unaligned_be16(NTXEC_POWEROFF_VALUE, buf + 1); + + res = i2c_transfer(poweroff_restart_client->adapter, msgs, ARRAY_SIZE(msgs)); + if (res < 0) + dev_warn(&poweroff_restart_client->dev, + "Failed to power off (err = %d)\n", res); + + /* + * The time from the register write until the host CPU is powered off + * has been observed to be about 2.5 to 3 seconds. Sleep long enough to + * safely avoid returning from the poweroff handler. + */ + msleep(5000); +} + +static int ntxec_restart(struct notifier_block *nb, + unsigned long action, void *data) +{ + int res; + u8 buf[3] = { NTXEC_REG_RESET }; + /* + * NOTE: The lower half of the reset value is not sent, because sending + * it causes an I2C error. (The reset handler in the downstream driver + * does send the full two-byte value, but doesn't check the result). + */ + struct i2c_msg msgs[] = { + { + .addr = poweroff_restart_client->addr, + .flags = 0, + .len = sizeof(buf) - 1, + .buf = buf, + }, + }; + + put_unaligned_be16(NTXEC_RESET_VALUE, buf + 1); + + res = i2c_transfer(poweroff_restart_client->adapter, msgs, ARRAY_SIZE(msgs)); + if (res < 0) + dev_warn(&poweroff_restart_client->dev, + "Failed to restart (err = %d)\n", res); + + return NOTIFY_DONE; +} + +static struct notifier_block ntxec_restart_handler = { + .notifier_call = ntxec_restart, + .priority = 128, +}; + +static const struct regmap_config regmap_config = { + .name = "ntxec", + .reg_bits = 8, + .val_bits = 16, + .cache_type = REGCACHE_NONE, + .val_format_endian = REGMAP_ENDIAN_BIG, +}; + +static const struct mfd_cell ntxec_subdevices[] = { + { .name = "ntxec-rtc" }, + { .name = "ntxec-pwm" }, +}; + +static int ntxec_probe(struct i2c_client *client) +{ + struct ntxec *ec; + unsigned int version; + int res; + + ec = devm_kmalloc(&client->dev, sizeof(*ec), GFP_KERNEL); + if (!ec) + return -ENOMEM; + + ec->dev = &client->dev; + + ec->regmap = devm_regmap_init_i2c(client, ®map_config); + if (IS_ERR(ec->regmap)) { + dev_err(ec->dev, "Failed to set up regmap for device\n"); + return res; + } + + /* Determine the firmware version */ + res = regmap_read(ec->regmap, NTXEC_REG_VERSION, &version); + if (res < 0) { + dev_err(ec->dev, "Failed to read firmware version number\n"); + return res; + } + + /* Bail out if we encounter an unknown firmware version */ + switch (version) { + case NTXEC_VERSION_KOBO_AURA: + break; + default: + dev_err(ec->dev, + "Netronix embedded controller version %04x is not supported.\n", + version); + return -ENODEV; + } + + dev_info(ec->dev, + "Netronix embedded controller version %04x detected.\n", version); + + if (of_device_is_system_power_controller(ec->dev->of_node)) { + /* + * Set the 'powerkeep' bit. This is necessary on some boards + * in order to keep the system running. + */ + res = regmap_write(ec->regmap, NTXEC_REG_POWERKEEP, + NTXEC_POWERKEEP_VALUE); + if (res < 0) + return res; + + if (poweroff_restart_client) + /* + * Another instance of the driver already took + * poweroff/restart duties. + */ + dev_err(ec->dev, "poweroff_restart_client already assigned\n"); + else + poweroff_restart_client = client; + + if (pm_power_off) + /* Another driver already registered a poweroff handler. */ + dev_err(ec->dev, "pm_power_off already assigned\n"); + else + pm_power_off = ntxec_poweroff; + + res = register_restart_handler(&ntxec_restart_handler); + if (res) + dev_err(ec->dev, + "Failed to register restart handler: %d\n", res); + } + + i2c_set_clientdata(client, ec); + + res = devm_mfd_add_devices(ec->dev, PLATFORM_DEVID_NONE, ntxec_subdevices, + ARRAY_SIZE(ntxec_subdevices), NULL, 0, NULL); + if (res) + dev_err(ec->dev, "Failed to add subdevices: %d\n", res); + + return res; +} + +static int ntxec_remove(struct i2c_client *client) +{ + if (client == poweroff_restart_client) { + poweroff_restart_client = NULL; + pm_power_off = NULL; + unregister_restart_handler(&ntxec_restart_handler); + } + + return 0; +} + +static const struct of_device_id of_ntxec_match_table[] = { + { .compatible = "netronix,ntxec", }, + {} +}; + +static struct i2c_driver ntxec_driver = { + .driver = { + .name = "ntxec", + .of_match_table = of_ntxec_match_table, + }, + .probe_new = ntxec_probe, + .remove = ntxec_remove, +}; +module_i2c_driver(ntxec_driver); diff --git a/include/linux/mfd/ntxec.h b/include/linux/mfd/ntxec.h new file mode 100644 index 0000000000000..361204d125f1a --- /dev/null +++ b/include/linux/mfd/ntxec.h @@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright 2020 Jonathan Neuschäfer + * + * Register access and version information for the Netronix embedded + * controller. + */ + +#ifndef NTXEC_H +#define NTXEC_H + +#include + +struct device; +struct regmap; + +struct ntxec { + struct device *dev; + struct regmap *regmap; +}; + +/* + * Some registers, such as the battery status register (0x41), are in + * big-endian, but others only have eight significant bits, which are in the + * first byte transmitted over I2C (the MSB of the big-endian value). + * This convenience function converts an 8-bit value to 16-bit for use in the + * second kind of register. + */ +static inline __be16 ntxec_reg8(u8 value) +{ + return value << 8; +} + +/* Known firmware versions */ +#define NTXEC_VERSION_KOBO_AURA 0xd726 /* found in Kobo Aura */ + +#endif From patchwork Sat Jan 9 18:02:17 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?J=2E_Neusch=C3=A4fer?= X-Patchwork-Id: 12008693 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 42D32C433E9 for ; Sat, 9 Jan 2021 19:08:36 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id EDAAC239A4 for ; Sat, 9 Jan 2021 19:08:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org EDAAC239A4 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmx.net Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=9O2xBzUkeWzpcMFglqu3+yd1Q7lyG88ZKkCcqcZi1ME=; b=wJBf68L0AbZUsRAyCaqMAy2LH aobsZyVpGblaIxwFMOgRVfCGp8+K0T3ZRzIaJoblItuFU8+O6I9LAa9oi9UxuY73nA3Dl0Di/uqiA tvvDDAfzDBvsES68sguWUPp/RA0a/wSYCJ6/SMG3rSVVvsHrJsaVkLG611Mu9haBgnygDzr8lhUXz PYLWzF2o0xW8vHmz9B8UyEGp+hCfVRw9F6RJoTS8JxhysB5ULDDlHncLw4oCzw3SDJV/RmSfd3LXD ki8w33UUcAlxkxA3Levo/HbuzNY9XzLi5jLN0+5b6jPARP7v2VbwJI1wFZqBtoEksc6+vF/ihdV89 KZKqtw7uA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kyJZ4-0007IJ-NG; Sat, 09 Jan 2021 19:06:18 +0000 Received: from mout.gmx.net ([212.227.17.20]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kyJYi-0007Ef-6x for linux-arm-kernel@lists.infradead.org; Sat, 09 Jan 2021 19:05:57 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1610219113; bh=ZyHPtKQoclIWrb+YTNneFagtFQpMpOBW3jmSX5TNKH0=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=h0KMI+yGZiFLzWJSnt04xNRVblEb2qvG7fNJyT2EkBWVTuVdCz8bkTktHG8xAej14 WSMJeuZgQ18uMAbPBb/rusj7XWkTxk9Tl/wl8lFiQ6ZQOw7f+CsCW3Q9xDCLfmKRMq Bno1luRhcnq6GCd5Uv+3oo/jge2aevO6AKLizZoc= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from longitude ([37.201.215.57]) by mail.gmx.com (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MgesG-1kJRxN03hc-00h3SJ; Sat, 09 Jan 2021 20:05:13 +0100 From: =?utf-8?q?Jonathan_Neusch=C3=A4fer?= To: linux-kernel@vger.kernel.org Subject: [PATCH v7 4/7] pwm: ntxec: Add driver for PWM function in Netronix EC Date: Sat, 9 Jan 2021 19:02:17 +0100 Message-Id: <20210109180220.121511-5-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210109180220.121511-1-j.neuschaefer@gmx.net> References: <20210109180220.121511-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:uRF6kg1X+imf5yBjkZrubEY4MShVtOgdXFaGtwDqAfIe9wgqa+k yXcPnVHiBA78wNQs4lqZk5gHjUE16TLGZTYdosaB3+2n2IsjyxNXdR9kL22s7obZJL+l5Es x37iv28M8qx3Ycr8xpvHZazlXA8VISQHA3WCcCTw3AXvfu+0NsiDcaD5G292XswZutRUqpF fmKFzNy5xCuqoHRI5MKag== X-UI-Out-Filterresults: notjunk:1;V03:K0:LamIT2k+pfY=:ti9UM5LEnNFB9WjtXsmArT KYkUb4V+D94Mm/yX56lRY0UsYcCYrLJdv6jsdbltfJy+6XWVwZ9pWOrKeAirzpeUuPOczi3lS fxDb2JsOhEg3rUHorCpXxRX7yhLHFhgVaxhzGBA53Wa9zDo89VItcE3QRhkmGux8CtYM+2Kbw yGZltWSWKezMk+URt/70Aqa9a+x53T/YiUuUk6k6xT1c9mAT4ZHafGvxtAcMWOgSpUFLOGXAP fkxCIJCRTaisMCrENQHiQov7VEFibl2S5Cfw9eJ7NuOB7BK8N/AngycZtQXmXa9mhLr6QgkMs 384M84GM2Rmlj1e2AcQltDtLhX9kE9+eojodvpe+tR4J4sUvrRD3tIHPz2mcP3ShvUSmnQldJ EumLhV2dj+3m+eaZHWuzmWq92hRSuP9IaUB3OXYszrFgwqQpifffhdLMOPJyaFeI4aTSkEkB9 bpNlxLag0I9MPeUlNiDN3o1OoeK55MycxGwgJpfioatitp8KMJzXzwC7fh0ByleYMew2R8ZD4 v9nVF3UF88tTPdABA5dRu6uv8k8/VZGjxFV1XUnD4uQfy+QnMmxrfhQBRKrPUeqmy1qO7yrqn DKSLv/XCSUXAh/84x6dujmLG9eTy1hFavBofZXcsPGaqgECRVkZ7WCoifh5pSdtSH/NxJ4fRf 6HYfrVYa7RZHA6DYdfq2x6Auk/v23Da1WyigoknfwHzXYQ2zVp8mgVq+iKazkXRGeSz8PmWDI 3nrcCO5llnoFqqq2lB/B7+R2zux7T/C8CdcBNSY3H5iVgLxfg0ysxI6dlGgijxtt705uMalcs 2d4Es/tzlzz18OhfFWNi2PlCd4Vd+Kkepns1Kv7aQvbSABfZ9Io990X0JNxD8PpVKkH9cZhDe 8OWh4UcVF/RmdRVhZTBQ== X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210109_140556_503134_2EEA62A0 X-CRM114-Status: GOOD ( 35.84 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Alexandre Belloni , Heiko Stuebner , linux-pwm@vger.kernel.org, Linus Walleij , Thierry Reding , Fabio Estevam , linux-rtc@vger.kernel.org, Arnd Bergmann , Mauro Carvalho Chehab , Sam Ravnborg , Daniel Palmer , Andy Shevchenko , Andreas Kemnade , NXP Linux Team , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , devicetree@vger.kernel.org, Stephan Gerhold , allen , Sascha Hauer , =?utf-8?q?Jonathan_Neusch=C3=A4fer?= , Lubomir Rintel , Rob Herring , Lee Jones , linux-arm-kernel@lists.infradead.org, Alessandro Zummo , Mark Brown , Pengutronix Kernel Team , Heiko Stuebner , Josua Mayer , Shawn Guo , "David S. Miller" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The Netronix EC provides a PWM output which is used for the backlight on some ebook readers. This patches adds a driver for the PWM output. The .get_state callback is not implemented, because the PWM state can't be read back from the hardware. Signed-off-by: Jonathan Neuschäfer Reviewed-by: Uwe Kleine-König Acked-by: Thierry Reding --- v7: - no changes v6: - https://lore.kernel.org/lkml/20201208011000.3060239-5-j.neuschaefer@gmx.net/ - Move period / duty cycle setting code to a function - Rename pwmchip_to_priv to ntxec_pwm_from_chip - Set period and duty cycle only before enabling the output - Mention that duty=0, enable=1 is assumed not to happen - Interleave writes to the period and duty cycle registers, to minimize the window of time that an inconsistent state is configured v5: - https://lore.kernel.org/lkml/20201201011513.1627028-5-j.neuschaefer@gmx.net/ - Avoid truncation of period and duty cycle to 32 bits - Make ntxec_pwm_ops const - Use regmap_multi_reg_write - Add comment about get_state to ntxec_pwm_ops - Add comments about non-atomicity of (period, duty cycle) update v4: - https://lore.kernel.org/lkml/20201122222739.1455132-5-j.neuschaefer@gmx.net/ - Document hardware/driver limitations - Only accept normal polarity - Fix a typo ("zone" -> "zero") - change MAX_PERIOD_NS to 0xffff * 125 - Clamp period to the maximum rather than returning an error - Rename private struct pointer to priv - Rearrage control flow in _probe to save a few lines and a temporary variable - Add missing MODULE_ALIAS line - Spell out ODM v3: - https://lore.kernel.org/lkml/20200924192455.2484005-5-j.neuschaefer@gmx.net/ - Relicense as GPLv2 or later - Add email address to copyright line - Remove OF compatible string and don't include linux/of_device.h - Fix bogus ?: in return line - Don't use a comma after sentinels - Avoid ret |= ... pattern - Move 8-bit register conversion to ntxec.h v2: - https://lore.kernel.org/lkml/20200905133230.1014581-6-j.neuschaefer@gmx.net/ - Various grammar and style improvements, as suggested by Uwe Kleine-König, Lee Jones, and Alexandre Belloni - Switch to regmap - Prefix registers with NTXEC_REG_ - Add help text to the Kconfig option - Use the .apply callback instead of the old API - Add a #define for the time base (125ns) - Don't change device state in .probe; this avoids multiple problems - Rework division and overflow check logic to perform divisions in 32 bits - Avoid setting duty cycle to zero, to work around a hardware quirk --- drivers/pwm/Kconfig | 8 ++ drivers/pwm/Makefile | 1 + drivers/pwm/pwm-ntxec.c | 182 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 191 insertions(+) create mode 100644 drivers/pwm/pwm-ntxec.c -- 2.29.2 diff --git a/drivers/pwm/Kconfig b/drivers/pwm/Kconfig index 0937e1c047acb..a2830b8832b97 100644 --- a/drivers/pwm/Kconfig +++ b/drivers/pwm/Kconfig @@ -393,6 +393,14 @@ config PWM_MXS To compile this driver as a module, choose M here: the module will be called pwm-mxs. +config PWM_NTXEC + tristate "Netronix embedded controller PWM support" + depends on MFD_NTXEC + help + Say yes here if you want to support the PWM output of the embedded + controller found in certain e-book readers designed by the original + design manufacturer Netronix. + config PWM_OMAP_DMTIMER tristate "OMAP Dual-Mode Timer PWM support" depends on OF diff --git a/drivers/pwm/Makefile b/drivers/pwm/Makefile index 18b89d7fd092a..7d97eb595bbef 100644 --- a/drivers/pwm/Makefile +++ b/drivers/pwm/Makefile @@ -35,6 +35,7 @@ obj-$(CONFIG_PWM_MESON) += pwm-meson.o obj-$(CONFIG_PWM_MEDIATEK) += pwm-mediatek.o obj-$(CONFIG_PWM_MTK_DISP) += pwm-mtk-disp.o obj-$(CONFIG_PWM_MXS) += pwm-mxs.o +obj-$(CONFIG_PWM_NTXEC) += pwm-ntxec.o obj-$(CONFIG_PWM_OMAP_DMTIMER) += pwm-omap-dmtimer.o obj-$(CONFIG_PWM_PCA9685) += pwm-pca9685.o obj-$(CONFIG_PWM_PXA) += pwm-pxa.o diff --git a/drivers/pwm/pwm-ntxec.c b/drivers/pwm/pwm-ntxec.c new file mode 100644 index 0000000000000..1db30a6caa3ad --- /dev/null +++ b/drivers/pwm/pwm-ntxec.c @@ -0,0 +1,182 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * The Netronix embedded controller is a microcontroller found in some + * e-book readers designed by the original design manufacturer Netronix, Inc. + * It contains RTC, battery monitoring, system power management, and PWM + * functionality. + * + * This driver implements PWM output. + * + * Copyright 2020 Jonathan Neuschäfer + * + * Limitations: + * - The get_state callback is not implemented, because the current state of + * the PWM output can't be read back from the hardware. + * - The hardware can only generate normal polarity output. + * - The period and duty cycle can't be changed together in one atomic action. + */ + +#include +#include +#include +#include +#include +#include + +struct ntxec_pwm { + struct device *dev; + struct ntxec *ec; + struct pwm_chip chip; +}; + +static struct ntxec_pwm *ntxec_pwm_from_chip(struct pwm_chip *chip) +{ + return container_of(chip, struct ntxec_pwm, chip); +} + +#define NTXEC_REG_AUTO_OFF_HI 0xa1 +#define NTXEC_REG_AUTO_OFF_LO 0xa2 +#define NTXEC_REG_ENABLE 0xa3 +#define NTXEC_REG_PERIOD_LOW 0xa4 +#define NTXEC_REG_PERIOD_HIGH 0xa5 +#define NTXEC_REG_DUTY_LOW 0xa6 +#define NTXEC_REG_DUTY_HIGH 0xa7 + +/* + * The time base used in the EC is 8MHz, or 125ns. Period and duty cycle are + * measured in this unit. + */ +#define TIME_BASE_NS 125 + +/* + * The maximum input value (in nanoseconds) is determined by the time base and + * the range of the hardware registers that hold the converted value. + * It fits into 32 bits, so we can do our calculations in 32 bits as well. + */ +#define MAX_PERIOD_NS (TIME_BASE_NS * 0xffff) + +static int ntxec_pwm_set_raw_period_and_duty_cycle(struct pwm_chip *chip, + int period, int duty) +{ + struct ntxec_pwm *priv = ntxec_pwm_from_chip(chip); + + /* + * Changes to the period and duty cycle take effect as soon as the + * corresponding low byte is written, so the hardware may be configured + * to an inconsistent state after the period is written and before the + * duty cycle is fully written. If, in such a case, the old duty cycle + * is longer than the new period, the EC may output 100% for a moment. + * + * To minimize the time between the changes to period and duty cycle + * taking effect, the writes are interleaved. + */ + + struct reg_sequence regs[] = { + { NTXEC_REG_PERIOD_HIGH, ntxec_reg8(period >> 8) }, + { NTXEC_REG_DUTY_HIGH, ntxec_reg8(duty >> 8) }, + { NTXEC_REG_PERIOD_LOW, ntxec_reg8(period) }, + { NTXEC_REG_DUTY_LOW, ntxec_reg8(duty) }, + }; + + return regmap_multi_reg_write(priv->ec->regmap, regs, ARRAY_SIZE(regs)); +} + +static int ntxec_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm_dev, + const struct pwm_state *state) +{ + struct ntxec_pwm *priv = ntxec_pwm_from_chip(chip); + unsigned int period, duty; + int res; + + if (state->polarity != PWM_POLARITY_NORMAL) + return -EINVAL; + + period = min_t(u64, state->period, MAX_PERIOD_NS); + duty = min_t(u64, state->duty_cycle, period); + + period /= TIME_BASE_NS; + duty /= TIME_BASE_NS; + + /* + * Writing a duty cycle of zero puts the device into a state where + * writing a higher duty cycle doesn't result in the brightness that it + * usually results in. This can be fixed by cycling the ENABLE register. + * + * As a workaround, write ENABLE=0 when the duty cycle is zero. + * The case that something has previously set the duty cycle to zero + * but ENABLE=1, is not handled. + */ + if (state->enabled && duty != 0) { + res = ntxec_pwm_set_raw_period_and_duty_cycle(chip, period, duty); + if (res) + return res; + + res = regmap_write(priv->ec->regmap, NTXEC_REG_ENABLE, ntxec_reg8(1)); + if (res) + return res; + + /* Disable the auto-off timer */ + res = regmap_write(priv->ec->regmap, NTXEC_REG_AUTO_OFF_HI, ntxec_reg8(0xff)); + if (res) + return res; + + return regmap_write(priv->ec->regmap, NTXEC_REG_AUTO_OFF_LO, ntxec_reg8(0xff)); + } else { + return regmap_write(priv->ec->regmap, NTXEC_REG_ENABLE, ntxec_reg8(0)); + } +} + +static const struct pwm_ops ntxec_pwm_ops = { + .owner = THIS_MODULE, + .apply = ntxec_pwm_apply, + /* + * No .get_state callback, because the current state cannot be read + * back from the hardware. + */ +}; + +static int ntxec_pwm_probe(struct platform_device *pdev) +{ + struct ntxec *ec = dev_get_drvdata(pdev->dev.parent); + struct ntxec_pwm *priv; + struct pwm_chip *chip; + + priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); + if (!priv) + return -ENOMEM; + + priv->ec = ec; + priv->dev = &pdev->dev; + + platform_set_drvdata(pdev, priv); + + chip = &priv->chip; + chip->dev = &pdev->dev; + chip->ops = &ntxec_pwm_ops; + chip->base = -1; + chip->npwm = 1; + + return pwmchip_add(chip); +} + +static int ntxec_pwm_remove(struct platform_device *pdev) +{ + struct ntxec_pwm *priv = platform_get_drvdata(pdev); + struct pwm_chip *chip = &priv->chip; + + return pwmchip_remove(chip); +} + +static struct platform_driver ntxec_pwm_driver = { + .driver = { + .name = "ntxec-pwm", + }, + .probe = ntxec_pwm_probe, + .remove = ntxec_pwm_remove, +}; +module_platform_driver(ntxec_pwm_driver); + +MODULE_AUTHOR("Jonathan Neuschäfer "); +MODULE_DESCRIPTION("PWM driver for Netronix EC"); +MODULE_LICENSE("GPL"); +MODULE_ALIAS("platform:ntxec-pwm"); From patchwork Sat Jan 9 18:02:19 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?J=2E_Neusch=C3=A4fer?= X-Patchwork-Id: 12008689 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 165F1C433DB for ; Sat, 9 Jan 2021 19:08:35 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id CBC702399C for ; Sat, 9 Jan 2021 19:08:34 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CBC702399C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmx.net Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=Bnnk5L3yddy9eZ3qC/z11uhcoer/SPiJli8qP8AmLc4=; b=tKzHnJX/0iPy2gKHls5MjGmkl MRGVezHtKlvY3t4hgnQmXOIiJ1e3s7ZP60pYxhNqtnzQfP+R7MatM0KB6+LML1sBS19UDMSPkw4wV IDTXnaTkGhvqedxg8ojzVPRPNbklak8S1dFBXr6INAg//DnCgz20137WKIxGonGU8vZEZAJZFlvbv 0pIR7SZbcutvlDv+9FY7yrG3xGiSYiWQUOz6rj9jOL11Hl109OmDNQk0oRRiMqmMxiXyJ1uLEIS42 7SXCbPF1jP3YPcM5/e72vtjmftjYE3Mzg72bMEAMSBX14O8epBU0AC+E6RLHOVROjfHqsEDuHYuua L6APDIVbg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kyJZ2-0007I0-Od; Sat, 09 Jan 2021 19:06:16 +0000 Received: from mout.gmx.net ([212.227.15.18]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kyJYg-0007EJ-D8 for linux-arm-kernel@lists.infradead.org; Sat, 09 Jan 2021 19:05:55 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1610219124; bh=bdGrd1dHjfVfOxioH7vVPzF5jNF+vaOKNr4aewtxsNQ=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=PRxo9KgPYNYPVY37ejEOnQwj9mKGW1Ke6JKuzn673MRVdHhwTsr6i+82aVL4D+Oh1 KU9jki6e+8jV+8TrvTf0yAENKSWg9ocXYzBQvpJZEN9wATsB2n2yN+os5b6UzPFNlk 5NIJpEHWv/a+jJsKROlFV5Yv910yDQHdp05BI9NM= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from longitude ([37.201.215.57]) by mail.gmx.com (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MXXyP-1kSYZf1kml-00Z3Il; Sat, 09 Jan 2021 20:05:24 +0100 From: =?utf-8?q?Jonathan_Neusch=C3=A4fer?= To: linux-kernel@vger.kernel.org Subject: [PATCH v7 6/7] MAINTAINERS: Add entry for Netronix embedded controller Date: Sat, 9 Jan 2021 19:02:19 +0100 Message-Id: <20210109180220.121511-7-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210109180220.121511-1-j.neuschaefer@gmx.net> References: <20210109180220.121511-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:KmkJFeZTX6fxl/vvb7KaCz13YKnxpIFBgwuleEreUkdEXRjQaJN ym9OQH1YStZ+nh0+myxdLQHqwLV1JQrY7ULIq/ur3Ag09ibEyw+Z9hnHInUzePHDcho3T3p ByNgxs+rHFHHCr0eALxGEKTG8rfegqPycbJoK9YPySSnzOxzrgvCREoV8lJQvu3C7NaEaln tyPamt820YYZC9nJ0G/BQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:q0O+ZaAEP6c=:wlHAQkxk9oGVy/frDBGgad SlUNt5ULoStHGVvZTg8vr0U+P7rwFOdX1k6rbL/HQw+YdKqxqH7jKi+lwBq/Zu5vhza9QTqdB pdYN1CPmif2BpxAgfbEK3vQ6XK6Tz4PgdKo1c5wbrzALIBfV2U8yDhZC59jndD7DpGq6blXfn taF14Ad76CppjWbQE2RQd0pL//Q+4hsaCuv5fh6p+5TXTX3tLuJb4Zbn/nyyAXXSSMrANurcp Lej8yIKSaD5p0UZVPMWR3nBiwVlcKZqBf6u3khEYDNfFT+Z0EFJdRsuWqL7OUW/wvO59ykVdc hQcXOLNdXiKxVrS8NDTm/0ADb2wZBDyJnP8OrMwAym8qKO5fPUMW2NmJun0w9tav7x0+pGtSC NNEVpzWzpDdlzIdh5Dvg3mv1WFDQITwtXT52MAp6tmIoX+GtV08btX4xE8ev0k41smkkW1BHr FpnDYYjq/vIbvkaohuP8P3ulBwUEga2ycVB7JVZA/rSoXz2+WCVb5VLKtkaFI+vm7Yv/21ftZ 2ad0BgJx+1KeEbf2hHT+y8R5d51+ZCERVySPxY6bREw9k4Q/pAo4Ow6S3e9aSHcarZbU0HbZ1 I+s+mJWkk+4+J3SlNBHc72194aQwmO+hBs1+0OYHLeaeBtuxhbfBeH+0oMMm9BYVkkqg3cmU7 aBaOXK14Io4svXDu3bspVCBt2SvTH+xf4YLFB0vwzF/Mc/590cZdLH2tAbXtgaebERcWwdhzj PmDnihh/qAtfV6ufszjCxowkDRx8Y5nl6q9uk9SL32kONsCdVJxn3nTzip6obtkJduXfrPBsU fQehbVj6UXLmiGrmmogOTxQmmZSrnljq6xOEtYm77OaICseOM5HnFlPyl4qSpujtNt3sBh4Xb T+GRoY/Pz70bdTw5U1/w== X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210109_140554_799989_91C5960A X-CRM114-Status: GOOD ( 13.09 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Alexandre Belloni , Heiko Stuebner , linux-pwm@vger.kernel.org, Linus Walleij , Thierry Reding , Fabio Estevam , linux-rtc@vger.kernel.org, Arnd Bergmann , Mauro Carvalho Chehab , Sam Ravnborg , Daniel Palmer , Andy Shevchenko , Andreas Kemnade , NXP Linux Team , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , devicetree@vger.kernel.org, Stephan Gerhold , allen , Sascha Hauer , =?utf-8?q?Jonathan_Neusch=C3=A4fer?= , Lubomir Rintel , Rob Herring , Lee Jones , linux-arm-kernel@lists.infradead.org, Alessandro Zummo , Mark Brown , Pengutronix Kernel Team , Heiko Stuebner , Josua Mayer , Shawn Guo , "David S. Miller" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Let's make sure I'll notice when there are patches for the NTXEC drivers. Signed-off-by: Jonathan Neuschäfer --- v4-v7: - no changes v3: - https://lore.kernel.org/lkml/20200924192455.2484005-7-j.neuschaefer@gmx.net/ - Remove pwm and rtc bindings v2: - https://lore.kernel.org/lkml/20200905144503.1067124-2-j.neuschaefer@gmx.net/ - No changes --- MAINTAINERS | 9 +++++++++ 1 file changed, 9 insertions(+) -- 2.29.2 diff --git a/MAINTAINERS b/MAINTAINERS index 546aa66428c9f..0c6e739e3afb7 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -12298,6 +12298,15 @@ F: include/net/netrom.h F: include/uapi/linux/netrom.h F: net/netrom/ +NETRONIX EMBEDDED CONTROLLER +M: Jonathan Neuschäfer +S: Maintained +F: Documentation/devicetree/bindings/mfd/netronix,ntxec.yaml +F: drivers/mfd/ntxec.c +F: drivers/pwm/pwm-ntxec.c +F: drivers/rtc/rtc-ntxec.c +F: include/linux/mfd/ntxec.h + NETRONOME ETHERNET DRIVERS M: Simon Horman R: Jakub Kicinski From patchwork Sat Jan 9 18:02:20 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?J=2E_Neusch=C3=A4fer?= X-Patchwork-Id: 12008691 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id EAC9AC433E0 for ; Sat, 9 Jan 2021 19:08:35 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id AC7792399C for ; Sat, 9 Jan 2021 19:08:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org AC7792399C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmx.net Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=q38u4q6YG1sJ4LILWLs7AEgpNIheM3GjQJ6+yq1C0JI=; b=Xg9wJPMLKuLDd4YMkzDqN7EMc fMSZjR/tNFwaGOnJfNY7PLoOZWfm4wBZSS6sci/kCKJvOocwMl0fw0f3VIxUDT2ZfFirNONgw8qyb QX0qIo/zVFvVKrT3mGagcPs4z1sCkz8AvaAq2npgF9ZNsyDHwGaRCm2PO78xjmSQh4+3xZyJ5SqXc PeL+5cDA7m0ISrBFp4HsyrqhHmhY1f1aYbPHlW3iF9BgJt20VdAPWvxVO5rlefUEKxuyKUs4WkcXL E9pqItcHtUHObdB0WL3V7tsTGup/vqXa99gtXn10MSgITTwgb1R19wtisZs1RsbVSupZEewF3aQde D0dJkkEZQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kyJZ6-0007Id-G6; Sat, 09 Jan 2021 19:06:20 +0000 Received: from mout.gmx.net ([212.227.15.19]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kyJYj-0007Eq-Gl for linux-arm-kernel@lists.infradead.org; Sat, 09 Jan 2021 19:05:58 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1610219126; bh=beDFWMFQH5cVEblcA3Gd98HHThRVyNU/HW/JMjwDv+E=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=GVrMersmNZOPW3JOV9lRKY4Mf0rbxmgsdavGx7fcZxnOTDIpu9wmgncZMOacZKMrD /Oix2U8C5r+AzDeOcKMtGBsxCs8YilxRHThui6aYOWm3+3FDlXbJiBhxi1I31UjPDn Rk+/Hb2Tkthe2zvkD509S54sQjCvfEOXsG7k3bvA= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from longitude ([37.201.215.57]) by mail.gmx.com (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MEUzA-1kjP2K2Uqw-00G036; Sat, 09 Jan 2021 20:05:26 +0100 From: =?utf-8?q?Jonathan_Neusch=C3=A4fer?= To: linux-kernel@vger.kernel.org Subject: [PATCH v7 7/7] ARM: dts: imx50-kobo-aura: Add Netronix embedded controller Date: Sat, 9 Jan 2021 19:02:20 +0100 Message-Id: <20210109180220.121511-8-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210109180220.121511-1-j.neuschaefer@gmx.net> References: <20210109180220.121511-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:HOscdZhtcppg+O3FCnk9a2KxpaGEBDszhkK1cm9MYgZycE754P1 pf3Dc1S8tipzSe8hh2qchdOFrj+1GporoDZ6wJAIFJEysWL/9ZhShhc93QRVkhgvt+MQcNu VBypSFDmK1n6VJzhK75zALkB2DN7lwnQit1E32fSUddaLekOdhtWEATpKAK3FRUA2luVzcQ Fz3FXszv+SrcpUWBQLaIA== X-UI-Out-Filterresults: notjunk:1;V03:K0:y+0rmWr9ruU=:5wKkfmM9TRYM4p1/NxSKzY LtiJdANiuIem7DV3QI8QmK5ysefqJdmPuilmM13PlPOOiPibZ23zE+/sbqLHaa8V36SlJlH6Q rO63muOUa+laFA1DOMw7lIYW3juLbNTPyyd7K6FHlDATGZGna6OfDIfQ3fgSc+CvoCZoqEPbb JvHPDP9Jnpi3GgfwsKwzqmwXXDObX1oc6rnr9awhGJeX26ynQ1yP75anhNPkz20OlgU5klw0A x4zPmPJ/ZPzon2+VPc59vGxVEiaUx7O5BobNBbixT3kvhfatEiBy0a8dv6OWtfa1T5uQkA4zI 2SGhvcQl25aME1j75JX9pmCLnKjE7Hdm1YHzkhntV3F4M9rCjoek81qQ4Hl8RR6peu9YWnRqs J5c9Zhxnl4IFB2jFQGYSrfLWNidNEOfzJaLtfCDifGGKf/YoSLD/PDhA4r2SDeYNdHBwZs5go u2pr46lHmpYnhDU+dvXaqYCOnIGCZH+VDBZWg23laDXyXEjADbPzQjBxLv4+vsYCNea66DUlZ L8PJOvamjiGSlCAlKeAMwSRut55t3V2rMhJXkuOXU0cXUo61bnI9+YqdlJuhyidSWnWLpBvpO UlI9Y6ivRv1Y/kpWQNOFYJlvUgOydTe86j3fTw+T5yWYOcDoAWqCjiuL7NpojIP3Vq0DoQjPl bEg5by99YVevegZM1jLPJJpk2kdEFcL5UXXRwTzgTmWYceI3dAZ2FVnBuyJej6SRopftT4rPq 91SV1l0IrS0r56js19XMOV1GKnvGZGQw/vvHl7vVNLvFEG/HEN0HIV1arCB7v4B6RKKyuWYNh iGdkrfvUsVuZ24qC55oEo22MA+CHtw1E7NqZ97bxEWflXwkatdX22piJPP/9EzSkqMECONw73 GoOz6yZ5b2cmg5Ye1zPQ== X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210109_140557_893934_4D224E79 X-CRM114-Status: GOOD ( 15.28 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Alexandre Belloni , Heiko Stuebner , linux-pwm@vger.kernel.org, Linus Walleij , Thierry Reding , Fabio Estevam , linux-rtc@vger.kernel.org, Arnd Bergmann , Mauro Carvalho Chehab , Sam Ravnborg , Daniel Palmer , Andy Shevchenko , Andreas Kemnade , NXP Linux Team , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , devicetree@vger.kernel.org, Stephan Gerhold , allen , Sascha Hauer , =?utf-8?q?Jonathan_Neusch=C3=A4fer?= , Lubomir Rintel , Rob Herring , Lee Jones , linux-arm-kernel@lists.infradead.org, Alessandro Zummo , Mark Brown , Pengutronix Kernel Team , Heiko Stuebner , Josua Mayer , Shawn Guo , "David S. Miller" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Enable the Netronix EC on the Kobo Aura ebook reader. Several features are still missing: - Frontlight/backlight. The vendor kernel drives the frontlight LED using the PWM output of the EC and an additional boost pin that increases the brightness. - Battery monitoring - Interrupts for RTC alarm and low-battery events Signed-off-by: Jonathan Neuschäfer --- v5-v7: - no changes v4: - https://lore.kernel.org/lkml/20201123000913.1506944-1-j.neuschaefer@gmx.net/ - Add 'grp' suffix to pinctrl node v3: - https://lore.kernel.org/lkml/20200925050818.2512375-1-j.neuschaefer@gmx.net/ - Remove interrupt-controller property from embedded-controller node - subnodes of embedded-controller node in to the main node v2: - https://lore.kernel.org/lkml/20200905144503.1067124-3-j.neuschaefer@gmx.net/ - Fix pwm-cells property (should be 2, not 1) --- arch/arm/boot/dts/imx50-kobo-aura.dts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) -- 2.29.2 diff --git a/arch/arm/boot/dts/imx50-kobo-aura.dts b/arch/arm/boot/dts/imx50-kobo-aura.dts index 97cfd970fe742..82ce8c43be867 100644 --- a/arch/arm/boot/dts/imx50-kobo-aura.dts +++ b/arch/arm/boot/dts/imx50-kobo-aura.dts @@ -143,10 +143,24 @@ &i2c3 { pinctrl-0 = <&pinctrl_i2c3>; status = "okay"; - /* TODO: embedded controller at 0x43 */ + embedded-controller@43 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_ec>; + compatible = "netronix,ntxec"; + reg = <0x43>; + system-power-controller; + interrupts-extended = <&gpio4 11 IRQ_TYPE_EDGE_FALLING>; + #pwm-cells = <2>; + }; }; &iomuxc { + pinctrl_ec: ecgrp { + fsl,pins = < + MX50_PAD_CSPI_SS0__GPIO4_11 0x0 /* INT */ + >; + }; + pinctrl_gpiokeys: gpiokeysgrp { fsl,pins = < MX50_PAD_CSPI_MISO__GPIO4_10 0x0