From patchwork Thu Sep 24 19:24:49 2020 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: 1370824 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-pwm-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=gmx.net Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.a=rsa-sha256 header.s=badeba3b8450 header.b=Gh3tOrV3; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4By4m66h64z9sSn for ; Fri, 25 Sep 2020 05:26:30 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728794AbgIXT0a (ORCPT ); Thu, 24 Sep 2020 15:26:30 -0400 Received: from mout.gmx.net ([212.227.15.15]:48073 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727254AbgIXT0a (ORCPT ); Thu, 24 Sep 2020 15:26:30 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1600975520; bh=vG7ZTA0jFRagSSV8QIx/+2jeo4eFW8MwsHCZasCdkYU=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=Gh3tOrV3INN7yL+23MZ+yB+LUOBV87fa/q95aVGh34Hy4ui3DkZCtyyL+gNDlYcUb jG8QPJfXWbmXgtTClcHpgBnk1LtU4049RXJXQJd34AUHaq1sMl/GSih6DuCcJVFXap wpaXaiL7fL+MmytBOtPUM4gb40vKje5NIwZzw2lg= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from longitude ([5.146.195.151]) by mail.gmx.com (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MFbRs-1kEL4535oc-00H8PV; Thu, 24 Sep 2020 21:25:19 +0200 From: =?utf-8?q?Jonathan_Neusch=C3=A4fer?= To: linux-kernel@vger.kernel.org Cc: Lee Jones , Rob Herring , =?utf-8?q?Jonathan_Neusch=C3=A4fer?= , Thierry Reding , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alessandro Zummo , Alexandre Belloni , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , NXP Linux Team , Sam Ravnborg , Linus Walleij , Heiko Stuebner , Stephan Gerhold , Lubomir Rintel , Mark Brown , allen , Mauro Carvalho Chehab , "David S. Miller" , devicetree@vger.kernel.org, linux-pwm@vger.kernel.org, linux-rtc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Heiko Stuebner , Josua Mayer , Andreas Kemnade , Arnd Bergmann , Daniel Palmer , Andy Shevchenko , Rob Herring , Geert Uytterhoeven , Kuninori Morimoto Subject: [PATCH v3 1/7] dt-bindings: Add vendor prefix for Netronix, Inc. Date: Thu, 24 Sep 2020 21:24:49 +0200 Message-Id: <20200924192455.2484005-2-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200924192455.2484005-1-j.neuschaefer@gmx.net> References: <20200924192455.2484005-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:pO47K7lhh+4oAX8Mbuu5NKAh+EJN9++GyAeiyO9lsB21FUmXQYx rFfydoOf6MUnID6L3WLSmqOamk2MdB/3iPI8iEfwtNwXWgjHWQa65+txeiz2Jk6QOQLH1hM fm0iUBLS4LoiI+nQ7Go+ivm8qfyV/lHBX9hj8/7P07+7HVhEJ4mTO2r/WeHDXjj9V933QZc hKduv/t8JopCHJaYU+D0A== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:WeUKGv2LjWQ=:siC9z8RdqyYAJVMjIdVQdz 3pye5jF/+FLgpd/2xc8/GzkUHEWB7khbf/0CEadI8lWgOPUExYIwdfeG6tWr2GEbHqZHa4oWS r3B8N2ynTkbsZtxJVcRBjZlEIhzWnshw06SuPo8RS21xl2ePj8NslCaq2zIKoVxbd6ZKEhLCa t0md3cMYk9kJSPPaegfXEP2HpSlKA6Pv4u0j8k1zwrFIxe0ccc1nccfVVQwVMCQQjeMlgmYc1 PY6uArLpJfCtLGtwCmUdnf9ptdlWgTfKS0MVMNedISSWEEuQ2JzDxqwCrsTDY8MfWEmJYY9U+ kjHJVjE9+TsSBVqrfAqmGGxIrY6wAjLjyHNUr560WF6HuTDf9s1OkQdf1qvL2p/5eIttAdAbX +PzIukCi0HVvl24N3485+B0Ohrl+2CywkX8FZbGXrg5P/cyHXCF7cRUIgsfC8COLh5nk7lqkr DoISzeEL79isrhp90SeiclSn2/Eh7WMhiYSdkxqgJ+rRpfRG+eTb9F8QHnzmX4NEcwFRJmOrR i43YF8ZfdRGO04+vwaGX3wlqYqQRm7XDq17jyU9To2Dx/QP8c92gY9O6LI6kzSYON6ZfNm69v ibKH+qWNe3TE/gh4w90psRgNdRPHbuwwPNsMVpQ9mgLiqKHtihBpr7chnTqYKjaX+DW9VM2Ed COiXHdmQEKLGhTstx4MvCWzFCzqhUtArg+vKCs+tmZkVPpN20DBmuNUlRbTxtLVnThROjiyh6 TsosUkANk8OnN2wQXTM7KeY/7QSsL3x2RdkZUoSrj6Q4K9Xw2PJgNZ5/wEGg7ovWlavrwydFl f1309y4NM+WXdhHCSmIFnV1hyFXuEgHG8b3Yfxy8+rVHrJ2ETgsxiC3RxsDCo6vqPeeYwifen nKg2yw24cfBsF4mn4viOCTRrNXYNjWS6z9RI7GQe0or4jWcHpGfZXlPr6noIJIAnr6d5FPVEE QCZ0pcSE6BB+8I8Lz+LlbQ9ufBzXXjvS8Wj5qcbAvkZ5QNoFawC6rFFEvaE6p+gu0WGv5IWC8 58PAZA1vgxFdsriISRhQLxJKw4At+AuC6OG/JTvTgMsndNS3D6fJ/D0BxetkfqAZWuGuTDo+t SAzukCrciJ7AVo61Iqv2Jh8S7dhdfdQpEzrNxMJikPXcqYoSZOlsQdHYFTmz2s2c5X6+Aw7yl RsMoazcMKptSomLRgAcwGkOyjNftTKGSWWJ4xAw2Wz41TGPmd5ex6t8fu2QE4sZVSadwpt9fw OsjBHNxPrSBe23fkYZIKvpoVX7tBtfDZNM2rIGg== Precedence: bulk List-ID: X-Mailing-List: linux-pwm@vger.kernel.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 --- v3: - Add Acked-by tag v2: - No changes --- Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++ 1 file changed, 2 insertions(+) -- 2.28.0 diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml index 63996ab035217..fa173802000a0 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.yaml +++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml @@ -712,6 +712,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 Thu Sep 24 19:24:50 2020 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: 1370827 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-pwm-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=gmx.net Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.a=rsa-sha256 header.s=badeba3b8450 header.b=hsSQXm0O; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4By4mN70xWz9sSn for ; Fri, 25 Sep 2020 05:26:44 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728813AbgIXT0o (ORCPT ); Thu, 24 Sep 2020 15:26:44 -0400 Received: from mout.gmx.net ([212.227.17.22]:33321 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727254AbgIXT0o (ORCPT ); Thu, 24 Sep 2020 15:26:44 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1600975562; bh=4RP05Hxu1YyFCz7+DB7beV9x6hPWq+uDXnTvDpZdY6k=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=hsSQXm0Oq6VogrOInBGGpvEucQOQbIzFwmoIikwUhl9YtvqFJWXti50juDgryWoxv mdbUNoIbQib3Zb/qBt2P6tnjB/NTqCZ73ecMj5LmyMVFeeeAb5EqT+PGljsKcHQEvc Gwcyt6wUf5OaDgrfAIoJlKlQNQQ9iF6IFn6Ew9SI= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from longitude ([5.146.195.151]) by mail.gmx.com (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1Md6Mt-1kvPez1hel-00aA47; Thu, 24 Sep 2020 21:26:02 +0200 From: =?utf-8?q?Jonathan_Neusch=C3=A4fer?= To: linux-kernel@vger.kernel.org Cc: Lee Jones , Rob Herring , =?utf-8?q?Jonathan_Neusch=C3=A4fer?= , Thierry Reding , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alessandro Zummo , Alexandre Belloni , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , NXP Linux Team , Sam Ravnborg , Linus Walleij , Heiko Stuebner , Stephan Gerhold , Lubomir Rintel , Mark Brown , allen , Mauro Carvalho Chehab , "David S. Miller" , devicetree@vger.kernel.org, linux-pwm@vger.kernel.org, linux-rtc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Heiko Stuebner , Josua Mayer , Andreas Kemnade , Arnd Bergmann , Daniel Palmer , Andy Shevchenko Subject: [PATCH v3 2/7] dt-bindings: mfd: Add binding for Netronix embedded controller Date: Thu, 24 Sep 2020 21:24:50 +0200 Message-Id: <20200924192455.2484005-3-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200924192455.2484005-1-j.neuschaefer@gmx.net> References: <20200924192455.2484005-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:qIN3ysCKzKV3E5U7e0Zvu94KfThse5uh01FGd94RNlLA36XGY8l Y1vNOclGmg8YGMfZO+sqyDVFSUMVMtr2YvjymT4L8q2Xk/YfkQoNim4gVLoCPVe2CXuZZS1 h4YG4QJsgnwg/wR0GoJ4PM1kFUyfAq9cy4P5UTu8eFV4SzakZ7JCPjDt3sfIayylmpAnlEl 1ptuHS16ONJ7Qqyk98g+w== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:q1gx0ANm+Fk=:Uz6o9t87EdUULbT26pkTS4 I2waJcKQPiiBL+aMyrZLnMslGbyFapvEowFE29Kbj0xBkefSUaokU0YVpDDt8Ot2yJpiH5h+0 +N+BEIAL+QpRD7/yTAk5kK3F0rs3nbHTrIPMrDUQ7mYJAUK+h9sklqLqYB7gZR0ivPDvTzqnE Uk0c4Jt5cQHsq6oCppD1stKsvUv5IQ6VZguMe41uhzfbBL83NTtKwUY6TKs+fyREVrLEvPU2B UL6bbIDrvxcn8ecJ91i63WrqT1YITn0xpqEPX8Xpg5f/S5irZXY8idtSkxgejmg50vSnXDhpw Q7YRvWa/CHE0oBhWQ/bXC4ikgYgvComa7VlPBOiyHSUcJ2LVi3RDFCTdFoqHRAvAQgLSlXeSr Dg36yzFFYnzCB7pILOfXHe4C7KWvdfQcqsryrEH7lmb96LVFGaxy1PAIzv+P2FG+xgWXE29lg y/ghHP7QZv9sUNWSJAv0Unj/rDTV1P+JHxDg3SZ2n/x3m8W+tjwUvVDN6WByYKmKq3ATaZkdX PVaztpDYMD87WK7RRpM5Ek+FfgJRW1rH55Qh75MOovC0aRG1gvttKXrNdqHWKa67rPVnzkzYW ryY5R5En9JMF1Q2yD2u49MJ6hy1Jp1rQjvr2JvjxdIQVyuqhEfXj5SV9MIPliFg85dbTDDKcO GZm2F66mRhZycfdoShPZC38S/lKZ86Hd4aLEAnnfFQyUHNr76/unKOBBQvhTO/FWbNA0Cu3iP yujRNLKPbPovjXylO57SNtWxylRPegneu66g7WHsNkK2vQ8DNaIjH6m6UkKPdUyBUNXZybP7Z tRSHcFGKkPUAP558qGOLFP0y4oTF9iYN7kB8QuEXYj50fg6eMGAhwzsIi7X0T5jQ2QSI1J3ND /kr0FdfaGTWUIBCx7lVtdMaHgu0OkldW74W4B2mAv0l4xv4EdOxFDrFoMAMwTkcmoIYRiA7x5 sFIDZjzxEz5mHQOo/0Ga2kYuv0u3/aKyp0N0reVdW7frfHIXh+LiDEowctzYT3w9/l7bhlb9F FRYAdrzngHBVxOcnRhqw3tjiJ0dVOHJQNx/Uvrj1SvLBOropC3Ib5Bl36s/wcakT1oRzcCikL bENd1KNA1xCi7axkN8JAuR23JGyAHDslFfuWho4xOcgJxZBCEBjIuxQbeRZTS2ZMhCkXiUVsC FeQPqlc49m9S4Q7LBqCxGuuUVQ8n63fb9GfEStPB9StFA09GuN32TesFa81l+ULgMrgz8/aw1 3uZsePsDv1RezN1dCSk0NmYpM+Q9/17jdJ2craw== Precedence: bulk List-ID: X-Mailing-List: linux-pwm@vger.kernel.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 --- v3: - 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.28.0 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 Thu Sep 24 19:24:51 2020 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: 1370831 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-pwm-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=gmx.net Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.a=rsa-sha256 header.s=badeba3b8450 header.b=PauaGvg+; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4By4mX5Hw3z9sSt for ; Fri, 25 Sep 2020 05:26:52 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728834AbgIXT0t (ORCPT ); Thu, 24 Sep 2020 15:26:49 -0400 Received: from mout.gmx.net ([212.227.15.15]:56357 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728733AbgIXT0r (ORCPT ); Thu, 24 Sep 2020 15:26:47 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1600975568; bh=ryafog9o9EYAigK/QILvakc48q9JWXrf1x8ta4Cd9NE=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=PauaGvg+ZaP1l1iygBOq/z2lbo9A0OPi/4BEctJPRszoVsS0vUdIYUEcMQx8ui00m wYtVF61MaEf568sVa3DFahuDTOazR9EuRz4W0Lie3TpfC1NkM5QoTaJTuoHm0gUoGj BuTPJT3tkRGFmzGutTVjCpuO3dmNxbTYk7tHioec= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from longitude ([5.146.195.151]) by mail.gmx.com (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MWASe-1jxlbh3XT8-00XesV; Thu, 24 Sep 2020 21:26:08 +0200 From: =?utf-8?q?Jonathan_Neusch=C3=A4fer?= To: linux-kernel@vger.kernel.org Cc: Lee Jones , Rob Herring , =?utf-8?q?Jonathan_Neusch=C3=A4fer?= , Thierry Reding , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alessandro Zummo , Alexandre Belloni , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , NXP Linux Team , Sam Ravnborg , Linus Walleij , Heiko Stuebner , Stephan Gerhold , Lubomir Rintel , Mark Brown , allen , Mauro Carvalho Chehab , "David S. Miller" , devicetree@vger.kernel.org, linux-pwm@vger.kernel.org, linux-rtc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Heiko Stuebner , Josua Mayer , Andreas Kemnade , Arnd Bergmann , Daniel Palmer , Andy Shevchenko Subject: [PATCH v3 3/7] mfd: Add base driver for Netronix embedded controller Date: Thu, 24 Sep 2020 21:24:51 +0200 Message-Id: <20200924192455.2484005-4-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200924192455.2484005-1-j.neuschaefer@gmx.net> References: <20200924192455.2484005-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:2/sqEliv+PQ0uN2Fo4ra2eRrVTl8o/Sf3HWGB8zZ60Z2X3NTHQt yeDk+anplblmj7G5BB89xLmR9C23HI+mIvNDa/OcdMixx+J3Nc/Oy4Biyy16X3CGA4cAB5H hOePproobbVdyIU8zIyp7QtCD2K08q9+4urGmp5tvD3jPZiEWkQu0ACNogFsYyyQRpJzp8Q odoOATePEkLWDVa8xZffA== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:j69ta80NZrE=:Ny0rWmCQF7G6B5zUJgwpVi h6QNlCb29XBEpAIQl78KC0fKYDD9KlPCf8hwu8ibI4H8CUf7oyWVv90dVJ1xFuUcAkUjPxyAS 7SyxtreYjV2fVyfS2lAt+WyDvXBm5opYVaT2L07c/ePbJfVlv4o1aBHpgKeEIj8I24UHMLo9n cX51XmeyFrCFNpnPk5JuqBr7QkyHX/hB6eU+UWqhwfgcMjfNnpZuAW+Bq4ACbEmkYbOwtcjJB 2W1mlOyQGtPG1Ns2dXK6XSgqxQpVaWSauHgLh7wk9+Ik7F7/XtV7jsD2UgFnUxKuuh+IMxRVU hgk6fp+1nYLWQqq0MinPhsNPgkknwLs4UXoewabFyWcE/0Lg9NeDiJ4jGXuUbnl5sV8e9HYzc Qyu0S2Q3D/IdM23tttQFp1UqHEObzQUsCf3IUuODpR8BDtJZmrnCaTJ4vswl/MqICBeYRozZa ObXS6sNRmVSjQV0M4a8qKfecaIvrsJOVqxKceMJNuPTeslnudm14sULt1DfQfJ9r1esTTlfic o19jOL97uwdsY4SFisDE3fjA8CvTRBwXpCKO9J4cQ8pvFiDZaS1oMtqWsHlkFH1UhhtoCfCI2 +yHoPyrOdwTEwyQ9qhx7tIFyqhZ6tx0zzwUCFOdVMhus5yaLydxCf5s94GuX9ddez2GTH2IhH OPjmkGjoblzXwCVmQZ7XjB85pMy5/4cNQJ9kh5NZF2LgNMPCxI5+8wV9ea5p1Y1CaOlhokqAx OFs/YOGZDImRsbQ0xO19I7C66Pm7wf/duyCqA623URiUEzusZWNGdgtLHiBcGQcwHh9xlLZwb KmeW8PkFV8ZkCExo+J05A59PBFwFTe5+V6eMs+f445yGH8cMt3tQgIKBlI4xk/vsWXZ1DTHCC v0XF6cdMOl8kR/E4UoK3Cck0hZY0SdaPU1pgxoPEe/p0r3t7m1bVPfEdSwCPVH5swBfMLjBac AelFL+tKx7C93v9oFexE5YJWclECKpjXB3cmYDHG8qIUo/wQCyNGfW0z+jk5QcN7V/BHHGaTy dckX5wQ6LtcwJaRxm99O+K8kWQiMeyjh4U0ukwXbpTBUYFnlDIbNpLFreY675M8iv6UTp05mv +JS9Hiu8ggOhMz/SlWK9FdHp/ot7Bp4TlFyWDcUBs88yBMkZ5BOGS0ShWRkXaockHIzyf8uSz s59Gj3wms6ICmss15zjbGiFNDvhEyLWmDf/MmTGuWGXWHhHtwDEdYUpQu49n8Jl1yRZapOI0l lpDhAABKu8rKfQqkr5uV7BSlozaBlTTIBKCS9Yg== Precedence: bulk List-ID: X-Mailing-List: linux-pwm@vger.kernel.org The Netronix embedded controller is a microcontroller found in some e-book readers designed by the ODM 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 --- v3: - 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 | 10 ++ drivers/mfd/Makefile | 1 + drivers/mfd/ntxec.c | 206 ++++++++++++++++++++++++++++++++++++++ include/linux/mfd/ntxec.h | 31 ++++++ 4 files changed, 248 insertions(+) create mode 100644 drivers/mfd/ntxec.c create mode 100644 include/linux/mfd/ntxec.h -- 2.28.0 diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig index 33df0837ab415..b313103151508 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -978,6 +978,16 @@ 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 ODM 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 a60e5f835283e..236a8acd917a0 100644 --- a/drivers/mfd/Makefile +++ b/drivers/mfd/Makefile @@ -217,6 +217,7 @@ obj-$(CONFIG_MFD_INTEL_MSIC) += intel_msic.o obj-$(CONFIG_MFD_INTEL_PMC_BXT) += intel_pmc_bxt.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..93611b85a32e0 --- /dev/null +++ b/drivers/mfd/ntxec.c @@ -0,0 +1,206 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * The Netronix embedded controller is a microcontroller found in some + * e-book readers designed by the ODM 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[] = { + NTXEC_REG_POWEROFF, + (NTXEC_POWEROFF_VALUE >> 8) & 0xff, + NTXEC_POWEROFF_VALUE & 0xff, + }; + struct i2c_msg msgs[] = { + { + .addr = poweroff_restart_client->addr, + .flags = 0, + .len = sizeof(buf), + .buf = buf + } + }; + + res = i2c_transfer(poweroff_restart_client->adapter, msgs, ARRAY_SIZE(msgs)); + if (res < 0) + dev_alert(&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; + /* + * NOTE: The lower half of the reset value is not sent, because sending + * it causes an error + */ + u8 buf[] = { + NTXEC_REG_RESET, + (NTXEC_RESET_VALUE >> 8) & 0xff, + }; + struct i2c_msg msgs[] = { + { + .addr = poweroff_restart_client->addr, + .flags = 0, + .len = sizeof(buf), + .buf = buf + } + }; + + res = i2c_transfer(poweroff_restart_client->adapter, msgs, ARRAY_SIZE(msgs)); + if (res < 0) + dev_alert(&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; + } + dev_info(ec->dev, + "Netronix embedded controller version %04x detected.\n", + version); + + /* Bail out if we encounter an unknown firmware version */ + switch (version) { + case 0xd726: /* found in Kobo Aura */ + break; + default: + return -ENODEV; + } + + 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; + + WARN_ON(poweroff_restart_client); + poweroff_restart_client = client; + if (pm_power_off) + 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_warn(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..a39c85978f61b --- /dev/null +++ b/include/linux/mfd/ntxec.h @@ -0,0 +1,31 @@ +/* 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 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 u16 ntxec_reg8(u8 value) +{ + return value << 8; +} + +#endif From patchwork Thu Sep 24 19:24:52 2020 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: 1370834 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-pwm-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=gmx.net Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.a=rsa-sha256 header.s=badeba3b8450 header.b=CnuJOq1P; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4By4nQ3PWbz9sTC for ; Fri, 25 Sep 2020 05:27:38 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728792AbgIXT1e (ORCPT ); Thu, 24 Sep 2020 15:27:34 -0400 Received: from mout.gmx.net ([212.227.17.22]:39661 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728780AbgIXT1e (ORCPT ); Thu, 24 Sep 2020 15:27:34 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1600975615; bh=kPZl/L/V+lSOt6mdHEUfQyfNZV+P9p8a2y5WBNQYGEY=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=CnuJOq1PXtORLWkaiIZ4QmI99dW2FHYWzW06NlKEat5l5gU2bNrFlwTdbcdomeOQZ XsoiyuPtx3Te0JCEZDVplBzV/JD/bJ33Z+rmnYZcxGVO4zER+PJLJsaCzbzI447Bos tGA9z8CeZsRUD7pTNBG/ywaKY2lxIkY5gpstQAdM= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from longitude ([5.146.195.151]) by mail.gmx.com (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1Mt79F-1kb0RK27mT-00tSos; Thu, 24 Sep 2020 21:26:55 +0200 From: =?utf-8?q?Jonathan_Neusch=C3=A4fer?= To: linux-kernel@vger.kernel.org Cc: Lee Jones , Rob Herring , =?utf-8?q?Jonathan_Neusch=C3=A4fer?= , Thierry Reding , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alessandro Zummo , Alexandre Belloni , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , NXP Linux Team , Sam Ravnborg , Linus Walleij , Heiko Stuebner , Stephan Gerhold , Lubomir Rintel , Mark Brown , allen , Mauro Carvalho Chehab , "David S. Miller" , devicetree@vger.kernel.org, linux-pwm@vger.kernel.org, linux-rtc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Heiko Stuebner , Josua Mayer , Andreas Kemnade , Arnd Bergmann , Daniel Palmer , Andy Shevchenko Subject: [PATCH v3 4/7] pwm: ntxec: Add driver for PWM function in Netronix EC Date: Thu, 24 Sep 2020 21:24:52 +0200 Message-Id: <20200924192455.2484005-5-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200924192455.2484005-1-j.neuschaefer@gmx.net> References: <20200924192455.2484005-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:mA3DG95xvQs2E54phiN9UBrtsp5UQWCBcYtK0cDi5xTJIhrE7ca vOEVh1mJnsGPvkFa0F5MikCjzc8AwjM4UI8W8Vmgrxyu8QJiYq/N7gvynIzFtFChzWaruhW ZBXLRIYiD57d7jEONSAXLmkBXa2WEHh32mKgHDZlItmSli1saRUm0NiQPmmforFMoZBX94V ZZYKSV0uM/rfexOlRbbRA== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:WYsN+KbUPa4=:n/AuxUCEn0gediIuwxzYTw IU9V261xJuG28lzmMETl5WXmTtBlhHN96Lhs8K9w90KnbEBbPo6tbcR93PH3Jnbb9NOvAgRRG +hfcPwwbHwrp7y6G0fdNkLKOA6xNvxnOQTCcULB4//6Hfq/Nq/PcGmKR/qweowraNOr12dtXt ZNbEg6iuTe7iHgBn0y1yDzx10Pc39Ty3fqjBvtTzW0pypGWfqF9ct8w1UjrlbdBFVrUK5DxgZ aQ5AMkl5I+SptjFFab/T88CR2+cQvbVzjIAljsZYaW1wcGCKhUi+NhA8e4Ni185gmdbeem8FB Xmp0lId9WZbioquUhvDNcrznEdN8SyEwFcOas1chAPRLASKtNdy+S+Gz7vzSG3AqId0vuJskT QZ260hFBnHQmkkXsF2/wJi5hiplr20SIH+BIBp7HYIohnDAlorkpnlMd87fNSMX49ajllRhuh AOGtZxCutuWTVbE5f2t0PtbxLAehn6VCXy29GDXBFShlT8/+mMk7unb6oidFJxGUuxAGdeW9G gD8bbfGm8zGqhExrqtoTQ8TrsLwrlkD7PDE7yPI94EWYY3YdG88p+opZkJEehytnbvPahUe2+ wa7SeDmv5n86l3mtmzK7+307h3VwiDI3XRSFTgMVlbQGs7Mfvk94Tih/M5AFJ1MXdqLIycWZA kZvU9ujSi+PLjOSFTQ/kdV94S0pJnoyfpgsS0ahXh2UotQHwJt9dwxbfFEcvhi1XW9qVWorIJ K+xfz5HLm23fPTB3DkVWfuEx8c+67hXBfyebxYIYQbKMbh+R1dviJsLjsXFt01mHxleoHlP77 hLVcMoI41UCm4OmI/j5obNsdRLhY14nCOJeF5biRLRb+eQowd34ruNN1kgA9DL8TnUToBn7U4 IFnSnAU1F38j7SO7Nv1nD3T97MEFGlN63AyFejPVcqPuWeXTEBG3j3VuFzzOAipR85AfGKlsh wuHpaJWaS9eO4VbeUW1CD9xbQyMAHa7AJupqmJ2GYiqUaXaKf1B9Eg39NuSVh7EMjXTWeqGie kxtQ2iHCNW/rPdBol56kwQlr6W/dwCKspCH1o7B/kxcrWbXMNvwiCXYTnp9g4i//F2yYxi/JN esFXVvfjvTqK8DcZVcjY4xXjKbiZWN53q6aI8WFEfJI4Sfuq/WO7vM+HStH/TJTUsKQzM8NwR 4MhvoS9qbDMYH5kHwGsjPAvWUtNFgup0toUdvGuJdJXrM9uQBeIpnWg2i+gWn0sfUCmvblTKx 5QUG/ARAZkqs6C5QIIchQ026KIvxFLSLFDXK5bw== Precedence: bulk List-ID: X-Mailing-List: linux-pwm@vger.kernel.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 --- v3: - 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 | 161 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 170 insertions(+) create mode 100644 drivers/pwm/pwm-ntxec.c -- 2.28.0 diff --git a/drivers/pwm/Kconfig b/drivers/pwm/Kconfig index 7dbcf6973d335..530dfda38d65e 100644 --- a/drivers/pwm/Kconfig +++ b/drivers/pwm/Kconfig @@ -350,6 +350,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 ODM + 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 2c2ba0a035577..1cc50dba22d1b 100644 --- a/drivers/pwm/Makefile +++ b/drivers/pwm/Makefile @@ -32,6 +32,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..50da2dc14bb03 --- /dev/null +++ b/drivers/pwm/pwm-ntxec.c @@ -0,0 +1,161 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * The Netronix embedded controller is a microcontroller found in some + * e-book readers designed by the ODM Netronix, Inc. It contains RTC, + * battery monitoring, system power management, and PWM functionality. + * + * This driver implements PWM output. + * + * Copyright 2020 Jonathan Neuschäfer + */ + +#include +#include +#include +#include +#include +#include + +struct ntxec_pwm { + struct device *dev; + struct ntxec *ec; + struct pwm_chip chip; +}; + +static struct ntxec_pwm *pwmchip_to_pwm(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 * 0x10000 - 1) + +static int ntxec_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm_dev, + const struct pwm_state *state) +{ + struct ntxec_pwm *pwm = pwmchip_to_pwm(pwm_dev->chip); + unsigned int duty = state->duty_cycle; + unsigned int period = state->period; + int res = 0; + + if (period > MAX_PERIOD_NS) { + dev_warn(pwm->dev, + "Period is not representable in 16 bits after division by %u: %u\n", + TIME_BASE_NS, period); + return -ERANGE; + } + + period /= TIME_BASE_NS; + duty /= TIME_BASE_NS; + + res = regmap_write(pwm->ec->regmap, NTXEC_REG_PERIOD_HIGH, ntxec_reg8(period >> 8)); + if (res) + return res; + + res = regmap_write(pwm->ec->regmap, NTXEC_REG_PERIOD_LOW, ntxec_reg8(period)); + if (res) + return res; + + res = regmap_write(pwm->ec->regmap, NTXEC_REG_DUTY_HIGH, ntxec_reg8(duty >> 8)); + if (res) + return res; + + res = regmap_write(pwm->ec->regmap, NTXEC_REG_DUTY_LOW, ntxec_reg8(duty)); + if (res) + return res; + + /* + * Writing a duty cycle of zone 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. + */ + if (state->enabled && duty != 0) { + res = regmap_write(pwm->ec->regmap, NTXEC_REG_ENABLE, ntxec_reg8(1)); + if (res) + return res; + + /* Disable the auto-off timer */ + res = regmap_write(pwm->ec->regmap, NTXEC_REG_AUTO_OFF_HI, ntxec_reg8(0xff)); + if (res) + return res; + + return regmap_write(pwm->ec->regmap, NTXEC_REG_AUTO_OFF_LO, ntxec_reg8(0xff)); + } else { + return regmap_write(pwm->ec->regmap, NTXEC_REG_ENABLE, ntxec_reg8(0)); + } +} + +static struct pwm_ops ntxec_pwm_ops = { + .apply = ntxec_pwm_apply, + .owner = THIS_MODULE, +}; + +static int ntxec_pwm_probe(struct platform_device *pdev) +{ + struct ntxec *ec = dev_get_drvdata(pdev->dev.parent); + struct ntxec_pwm *pwm; + struct pwm_chip *chip; + int res; + + pwm = devm_kzalloc(&pdev->dev, sizeof(*pwm), GFP_KERNEL); + if (!pwm) + return -ENOMEM; + + pwm->ec = ec; + pwm->dev = &pdev->dev; + + chip = &pwm->chip; + chip->dev = &pdev->dev; + chip->ops = &ntxec_pwm_ops; + chip->base = -1; + chip->npwm = 1; + + res = pwmchip_add(chip); + if (res < 0) + return res; + + platform_set_drvdata(pdev, pwm); + + return 0; +} + +static int ntxec_pwm_remove(struct platform_device *pdev) +{ + struct ntxec_pwm *pwm = platform_get_drvdata(pdev); + struct pwm_chip *chip = &pwm->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"); From patchwork Thu Sep 24 19:24:53 2020 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: 1370835 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-pwm-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=gmx.net Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.a=rsa-sha256 header.s=badeba3b8450 header.b=YCZuTDlO; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4By4nq5vtjz9sTC for ; Fri, 25 Sep 2020 05:27:59 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728824AbgIXT17 (ORCPT ); Thu, 24 Sep 2020 15:27:59 -0400 Received: from mout.gmx.net ([212.227.15.18]:33833 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728758AbgIXT17 (ORCPT ); Thu, 24 Sep 2020 15:27:59 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1600975618; bh=zSDHJBM6de05hZPfx230oe82AjsNdZNJxFzhYwgfDFE=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=YCZuTDlO6lrqRKblbacCMKYxMjIts9jb1hdPbo7ll72ct3UszOjFfxuhsx0MVDYzc PCnWHUFLBDkJ9i4+9TNGhtKuU3TIfAKv9/UsH4L74e1HSTjq3ZcJFzObxh7LSEI69o 1zSfWfSLAkAah0TiIqKbYXoPw3xyfDYypD1ktDd8= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from longitude ([5.146.195.151]) by mail.gmx.com (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1M5QJD-1kKhwl2ASb-001UUX; Thu, 24 Sep 2020 21:26:58 +0200 From: =?utf-8?q?Jonathan_Neusch=C3=A4fer?= To: linux-kernel@vger.kernel.org Cc: Lee Jones , Rob Herring , =?utf-8?q?Jonathan_Neusch=C3=A4fer?= , Thierry Reding , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alessandro Zummo , Alexandre Belloni , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , NXP Linux Team , Sam Ravnborg , Linus Walleij , Heiko Stuebner , Stephan Gerhold , Lubomir Rintel , Mark Brown , allen , Mauro Carvalho Chehab , "David S. Miller" , devicetree@vger.kernel.org, linux-pwm@vger.kernel.org, linux-rtc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Heiko Stuebner , Josua Mayer , Andreas Kemnade , Arnd Bergmann , Daniel Palmer , Andy Shevchenko Subject: [PATCH v3 5/7] rtc: New driver for RTC in Netronix embedded controller Date: Thu, 24 Sep 2020 21:24:53 +0200 Message-Id: <20200924192455.2484005-6-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200924192455.2484005-1-j.neuschaefer@gmx.net> References: <20200924192455.2484005-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:+L1FJx1oQ6x7VaPQrKFafs4nq4JlwRFRv3sXkEEUwJWc0oPbt6L sSRCF1xO+U7ERbK4pZtzhg8y0/pV9YuUf1GfIKaUrFSt7xB6hSc5TTn5zO64GdDfSKgfHPn IV6Tb28pfgTVdctL+InU5U3ktU8xEW2j/bBb4OWv0dLpxXhDooD70jkp7g0LkNAzqwVeXzB 3iZa0jhjuoz5LvJ9oIDEA== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:iW/DyQ1umCw=:OXkRLwVhupzITPyaadNByY DNzWrDCUOgfWuRGBNdXuC7L/Pu9Fgj4AcowCxscdAQHQlXO4Ylhf39QyifLje/XLyTeHRYv6K kL/WOkr/3COkS7B40qgzZWPeef0xVBVeUZQdqGGvnDP7U0wsmGJUcDEiuWPRKgY61cPzmL72h klVt5x6mNy13eVmXTPqWXXWxPHak5ZvJ1uHCF8qYOTCieJ5S0VlVauLfUO9DsyueDG/52iAlg sta2KoEBXFcgrPiOsSe5Wj2E4ObiGHVwau+42eRKhSded+/3RMKrb2PmYp+i+3VvQq4borxJK OzzpCW6uPU7AYUJ+f2xxOHaI16w9hT/VuBDlMiLsDfU5MDvPcaa7VsPog/lBnwTxHlnInl6bV 9cJk0Oef6Y5m1RQO5dHjMLY33g+qbK4eGf/zJ/+dJ0njVctgs1W3Jjemo7x27d+lN3fkuEZrK b7qoeL2XsMK0BIqid6qgld2y5ft6LfGgALDli8ef5S1q+nq5JSvgZbnWHWzde7f0UBPicBvxa MBHX6ZrthQGrH+2R0lmHPwOgD96CzWusaWUKQUTzj4tFrXULvgjEk8EOgd1HzlUEV81/soqiP L3bLwUIfC6hjgN5XKnmNWqraMQjeu3ugMcpwRkvHYMfILqIiyTJSzQj/bLV7rVSNLjdGftlT1 31DKj8Z9i5Y0dLv244NTZqcxTOZXD0bTOfOjk9ct86iBIbIN6i2Uy9zMwG1dRhT6QPS7GKrqd EfVPnJIYUZW46UJZYFKaS4FIA41T4E2X1s+q9J8DTfZkykuLXKugo9YxqBUCGZZg1U7DYVHu9 ioGJ7AR4bni0Sl0FpoX01jf8fZiifA4lJJ7iCaWvPHTTHNMOk7+E4T3aC7RzmAwA6iAxqCziY GzVY+5BT2T2JUXdpow33XFgsiwXxYzMyUE6uQbVQaKToiI4qWl9vNGqF7IYqoMsHBPRYLyNBP I3cJaM8GiDkR4JQbbwjQQ/7+NZHONOpl+s5dDEme/kOVKbuOhj6Sq3OKZ35M+Lb3va7RQIOoH Q/rT1NruFoORXrTjZZr3hTiw5ZZd25YvwgeJshot2kqy7e7kNg+99GFywmPMUy/G8BWqEMDM2 D9k5fhuiTO685aIKlbUymllYcz5UD2tn1++o1+uFJ/oVyZAZvIMI0sptUfq7riPIQCbYF0zk0 63fpC1EAHiz4UfF6kC/rDjMMCTyAqUudmg+0xCFY1og0YL+kdyPJIu5iS2HDMyNRF/LzVz1wW KSngbCpA0/IdPFdAtYS/sNvrb3k8TVDz8hpMsFw== Precedence: bulk List-ID: X-Mailing-List: linux-pwm@vger.kernel.org With this driver, mainline Linux can keep its time and date in sync with the vendor kernel. Advanced functionality like alarm and automatic power-on is not yet supported. Signed-off-by: Jonathan Neuschäfer --- v3: - Add email address to copyright line - Remove OF compatible string and don't include linux/of_device.h - Don't use a comma after sentinels - Avoid ret |= ... pattern - Move 8-bit register conversion to ntxec.h - Relicense as GPLv2 or later v2: - https://lore.kernel.org/lkml/20200905133230.1014581-7-j.neuschaefer@gmx.net/ - Rework top-of-file comment [Lee Jones] - Sort the #include lines [Alexandre Belloni] - don't align = signs in struct initializers [Uwe Kleine-König] - Switch to regmap - Fix register number used to read minutes and seconds - Prefix registers with NTXEC_REG_ - Add help text to the Kconfig option - Use devm_rtc_allocate_device and rtc_register_device, set ->range_min and ->range_max --- drivers/rtc/Kconfig | 8 +++ drivers/rtc/Makefile | 1 + drivers/rtc/rtc-ntxec.c | 132 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 141 insertions(+) create mode 100644 drivers/rtc/rtc-ntxec.c -- 2.28.0 diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig index 48c536acd777f..ae8f3dc36c9a3 100644 --- a/drivers/rtc/Kconfig +++ b/drivers/rtc/Kconfig @@ -1301,6 +1301,14 @@ config RTC_DRV_CROS_EC This driver can also be built as a module. If so, the module will be called rtc-cros-ec. +config RTC_DRV_NTXEC + tristate "Netronix embedded controller RTC driver" + depends on MFD_NTXEC + help + Say yes here if you want to support the RTC functionality of the + embedded controller found in certain e-book readers designed by the + ODM Netronix. + comment "on-CPU RTC drivers" config RTC_DRV_ASM9260 diff --git a/drivers/rtc/Makefile b/drivers/rtc/Makefile index 880e08a409c3d..733479db18896 100644 --- a/drivers/rtc/Makefile +++ b/drivers/rtc/Makefile @@ -111,6 +111,7 @@ obj-$(CONFIG_RTC_DRV_MT7622) += rtc-mt7622.o obj-$(CONFIG_RTC_DRV_MV) += rtc-mv.o obj-$(CONFIG_RTC_DRV_MXC) += rtc-mxc.o obj-$(CONFIG_RTC_DRV_MXC_V2) += rtc-mxc_v2.o +obj-$(CONFIG_RTC_DRV_NTXEC) += rtc-ntxec.o obj-$(CONFIG_RTC_DRV_OMAP) += rtc-omap.o obj-$(CONFIG_RTC_DRV_OPAL) += rtc-opal.o obj-$(CONFIG_RTC_DRV_PALMAS) += rtc-palmas.o diff --git a/drivers/rtc/rtc-ntxec.c b/drivers/rtc/rtc-ntxec.c new file mode 100644 index 0000000000000..af23c7cc76544 --- /dev/null +++ b/drivers/rtc/rtc-ntxec.c @@ -0,0 +1,132 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * The Netronix embedded controller is a microcontroller found in some + * e-book readers designed by the ODM Netronix, Inc. It contains RTC, + * battery monitoring, system power management, and PWM functionality. + * + * This driver implements access to the RTC time and date. + * + * Copyright 2020 Jonathan Neuschäfer + */ + +#include +#include +#include +#include +#include +#include + +struct ntxec_rtc { + struct device *dev; + struct ntxec *ec; +}; + +#define NTXEC_REG_WRITE_YEAR 0x10 +#define NTXEC_REG_WRITE_MONTH 0x11 +#define NTXEC_REG_WRITE_DAY 0x12 +#define NTXEC_REG_WRITE_HOUR 0x13 +#define NTXEC_REG_WRITE_MINUTE 0x14 +#define NTXEC_REG_WRITE_SECOND 0x15 + +#define NTXEC_REG_READ_YM 0x20 +#define NTXEC_REG_READ_DH 0x21 +#define NTXEC_REG_READ_MS 0x23 + +static int ntxec_read_time(struct device *dev, struct rtc_time *tm) +{ + struct ntxec_rtc *rtc = dev_get_drvdata(dev); + unsigned int value; + int res; + + res = regmap_read(rtc->ec->regmap, NTXEC_REG_READ_YM, &value); + if (res < 0) + return res; + + tm->tm_year = (value >> 8) + 100; + tm->tm_mon = (value & 0xff) - 1; + + res = regmap_read(rtc->ec->regmap, NTXEC_REG_READ_DH, &value); + if (res < 0) + return res; + + tm->tm_mday = value >> 8; + tm->tm_hour = value & 0xff; + + res = regmap_read(rtc->ec->regmap, NTXEC_REG_READ_MS, &value); + if (res < 0) + return res; + + tm->tm_min = value >> 8; + tm->tm_sec = value & 0xff; + + return 0; +} + +static int ntxec_set_time(struct device *dev, struct rtc_time *tm) +{ + struct ntxec_rtc *rtc = dev_get_drvdata(dev); + int res = 0; + + res = regmap_write(rtc->ec->regmap, NTXEC_REG_WRITE_YEAR, ntxec_reg8(tm->tm_year - 100)); + if (res) + return res; + + res = regmap_write(rtc->ec->regmap, NTXEC_REG_WRITE_MONTH, ntxec_reg8(tm->tm_mon + 1)); + if (res) + return res; + + res = regmap_write(rtc->ec->regmap, NTXEC_REG_WRITE_DAY, ntxec_reg8(tm->tm_mday)); + if (res) + return res; + + res = regmap_write(rtc->ec->regmap, NTXEC_REG_WRITE_HOUR, ntxec_reg8(tm->tm_hour)); + if (res) + return res; + + res = regmap_write(rtc->ec->regmap, NTXEC_REG_WRITE_MINUTE, ntxec_reg8(tm->tm_min)); + if (res) + return res; + + return regmap_write(rtc->ec->regmap, NTXEC_REG_WRITE_SECOND, ntxec_reg8(tm->tm_sec)); +} + +static const struct rtc_class_ops ntxec_rtc_ops = { + .read_time = ntxec_read_time, + .set_time = ntxec_set_time, +}; + +static int ntxec_rtc_probe(struct platform_device *pdev) +{ + struct rtc_device *dev; + struct ntxec_rtc *rtc; + + rtc = devm_kzalloc(&pdev->dev, sizeof(*rtc), GFP_KERNEL); + if (!rtc) + return -ENOMEM; + + rtc->dev = &pdev->dev; + rtc->ec = dev_get_drvdata(pdev->dev.parent); + platform_set_drvdata(pdev, rtc); + + dev = devm_rtc_allocate_device(&pdev->dev); + if (IS_ERR(dev)) + return PTR_ERR(dev); + + dev->ops = &ntxec_rtc_ops; + dev->range_min = RTC_TIMESTAMP_BEGIN_2000; + dev->range_max = 9025257599LL; /* 2255-12-31 23:59:59 */ + + return rtc_register_device(dev); +} + +static struct platform_driver ntxec_rtc_driver = { + .driver = { + .name = "ntxec-rtc", + }, + .probe = ntxec_rtc_probe, +}; +module_platform_driver(ntxec_rtc_driver); + +MODULE_AUTHOR("Jonathan Neuschäfer "); +MODULE_DESCRIPTION("RTC driver for Netronix EC"); +MODULE_LICENSE("GPL"); From patchwork Thu Sep 24 19:24:54 2020 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: 1370839 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-pwm-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=gmx.net Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.a=rsa-sha256 header.s=badeba3b8450 header.b=HGaKRk2K; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4By4q46vbqz9sSn for ; Fri, 25 Sep 2020 05:29:04 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728753AbgIXT3B (ORCPT ); Thu, 24 Sep 2020 15:29:01 -0400 Received: from mout.gmx.net ([212.227.17.21]:47501 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728718AbgIXT3B (ORCPT ); Thu, 24 Sep 2020 15:29:01 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1600975685; bh=tkswMYiJHuOplMgXDoI19/wmwW33bJ9gmJGG21R3n4w=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=HGaKRk2KHWR20nSbmPKPbY1q496x43THCZkb4nHA7JSyK6IMkbgKhTetYVPExS0GY 6Evce2FbGghEpzHQ/iq1dSiuSss5CJ1oSZlfSmeeQKq0cXV44hZqAg6jVyaJt6PlcF iI0DCIzefv/MLCube39V7aQoDt3Gd0pL2T4EXf8E= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from longitude ([5.146.195.151]) by mail.gmx.com (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MsHru-1kbHNX0NUg-00tjzO; Thu, 24 Sep 2020 21:28:05 +0200 From: =?utf-8?q?Jonathan_Neusch=C3=A4fer?= To: linux-kernel@vger.kernel.org Cc: Lee Jones , Rob Herring , =?utf-8?q?Jonathan_Neusch=C3=A4fer?= , Thierry Reding , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alessandro Zummo , Alexandre Belloni , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , NXP Linux Team , Sam Ravnborg , Linus Walleij , Heiko Stuebner , Stephan Gerhold , Lubomir Rintel , Mark Brown , allen , Mauro Carvalho Chehab , "David S. Miller" , devicetree@vger.kernel.org, linux-pwm@vger.kernel.org, linux-rtc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Heiko Stuebner , Josua Mayer , Andreas Kemnade , Arnd Bergmann , Daniel Palmer , Andy Shevchenko , Rob Herring Subject: [PATCH v3 6/7] MAINTAINERS: Add entry for Netronix embedded controller Date: Thu, 24 Sep 2020 21:24:54 +0200 Message-Id: <20200924192455.2484005-7-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200924192455.2484005-1-j.neuschaefer@gmx.net> References: <20200924192455.2484005-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:GaOsMeCsmwQHEurNROd7IPeF1FHhthoSmqsJTawoxATBVyBahAA bONZSpwDuTCJZGbi6MVEP+O0flWzyLon2GFMElwSbdRwhwHilneAYc9XRJpoODdnNg9sWR1 2ah325YQJfDqoKOiHNMGo/3U9H04VICPV710ptbLoZDt56Kd7mh2d6uFCouqVmmPYWZI2/e rP1Kq9F9nH5XaOHF2QcHA== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:aBK5xLr6xz4=:8wC3tSy7LNU0RZZkzosbRd mrgoBR0OAwqs+e0ai0eXhkwGRKeKw29e/39DJTqptGOyLXG6fp1g3v9y3VQmoH4OcSDOgV9DW qoWdYFInWqWBvIVFlBDX5sgOk77q6+JAx7zT7Q4C/0ptrbQhf1sT9QmaBdzYceEzJVkr6P8Ma YuC+GW0AZOpJrfCUYcdmToqC0wxxzb1fstuPdpfflYqhof6FLuWQ7wrt2LtXLOBIQrhH+g5QN oaNYnXGXclrf/LP1N1nP5K8+zanvx/1SRNAyLRuv8Np91m8VgFPCJ8x8xFyi+OBNC2Uvs24U5 Lh/g5xel0meyPB/IOtew5cl30lqRyNROBdM3N1m0CQKH838uyDlBza2QX4tNuUvLvfcTYf3HC W8KXgOR6Cy/5MfQi2+xQV0TjNDd9w1FkMeNf1rm9PQyCE8Y65XljfodKaYPgTXN3hYGp/MlFE cDwZa7k68v790Hcqq3FaRXSUTPIQLZUYUM9T7uy6D/HT3C76eoHp8OkFLgTNbkVMWi2etvsFG hl0oKUmMEW419EB+GYJaPaIwUygfZ2+t6qirGWPdI3mSQZPdYGohBN7uLsXRA+niNOerSD7kx qZztazSfdt/VEUMabkMUEXBkbVVbdaXXr42AFmCoNvW5Z0DdBAT+Y8NOFxtDGms1SWAdEY8ux 6hME/d7WZUZcG86lfYq48bYsA70joiQAw5yvF+XDL96Xg4pI0eYiPgt9zCzE+FMPk8XUtW1g3 Yfja2phvSEWS1c9Z4K60/5+lKnveZMkf+bwb3qVZGOqocs5RwbmmoZrmgzLLatI+9ZZzaEGhc 3vY+HtMBTVfRFfkMyWXeggIIqExdSxbU4fghLvBVZNT45i17g6ZfBX3B4z9QASXF4e4MAT9hJ WqqjMv9FyjrdihSE4Cv/Nq0RUrEmiuWVobe8cE7vNUWLvhclmUtWjIa0MeBm/60B3mKCBfI3Y Zig6MAk8V/Qm3JJHx0VFmb8WNt+qsOGc4wzfCyW3cywqJROj/laCHGuWlJ2kN8RdhBZ+e2dvs RYNLtf3CXNlr7n8N7WhDx8oEgpAX5kX6QYx4WhWSeOwG5uPakcSW25n8G0gkfPd+D3QlVphu3 UvzRf0x2QNKhQGC6w9Idxs5IbEBL4+FWshAhK9m6WRqXWXisHQgh2gRaXMa7B7VWNNXGbEMIP Rg05kPv/DZrCTh3hruiMpy9Rq0XUWng0xYJeAWE8KJs3xz/lno3MZed7ZENqBkBb+W5WbkfMm h8sh0GWadlO8HFzU76SLJQvqIyQniHhjXKZnjpw== Precedence: bulk List-ID: X-Mailing-List: linux-pwm@vger.kernel.org Let's make sure I'll notice when there are patches for the NTXEC drivers. Signed-off-by: Jonathan Neuschäfer --- v3: - 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.28.0 diff --git a/MAINTAINERS b/MAINTAINERS index d746519253c3a..f28f7cb890d05 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -12019,6 +12019,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 Fri Sep 25 05:08:18 2020 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: 1371038 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-pwm-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=gmx.net Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.a=rsa-sha256 header.s=badeba3b8450 header.b=lQtEBzqQ; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4ByKjV1rK5z9sRf for ; Fri, 25 Sep 2020 15:10:06 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727107AbgIYFKG (ORCPT ); Fri, 25 Sep 2020 01:10:06 -0400 Received: from mout.gmx.net ([212.227.17.22]:41681 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727047AbgIYFKF (ORCPT ); Fri, 25 Sep 2020 01:10:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1601010538; bh=HlgnC3df/tJycBpbEiuMsr+Bt4rnu2osQrbv2JddJP0=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=lQtEBzqQO3CgdvtzpOK8YL46GR8Ea/No6z/+imZZajAuJjXh4+m8EV/o48HicQ6j5 a3czcqf3smBpr8Y7xYJL6CdJDg50Y5HM7CYoeMPW2y0lMrubL9mYOjQ2YqMt/NRWtC w/rvdpaHB2p49hW34Jyqx6d0wnoSwDCDoAKJsoyA= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from longitude ([5.146.195.151]) by mail.gmx.com (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1Mwfac-1kg4922a1S-00yB85; Fri, 25 Sep 2020 07:08:58 +0200 From: =?utf-8?q?Jonathan_Neusch=C3=A4fer?= To: linux-kernel@vger.kernel.org Cc: Lee Jones , Rob Herring , =?utf-8?q?Jonathan_Neusch=C3=A4fer?= , Thierry Reding , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alessandro Zummo , Alexandre Belloni , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , NXP Linux Team , Sam Ravnborg , Linus Walleij , Heiko Stuebner , Stephan Gerhold , Lubomir Rintel , Mark Brown , allen , Mauro Carvalho Chehab , "David S. Miller" , devicetree@vger.kernel.org, linux-pwm@vger.kernel.org, linux-rtc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Heiko Stuebner , Josua Mayer , Andreas Kemnade , Arnd Bergmann , Daniel Palmer , Andy Shevchenko Subject: [PATCH v3 7/7] ARM: dts: imx50-kobo-aura: Add Netronix embedded controller Date: Fri, 25 Sep 2020 07:08:18 +0200 Message-Id: <20200925050818.2512375-1-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200924192455.2484005-1-j.neuschaefer@gmx.net> References: <20200924192455.2484005-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:nFSbCxYo1nlk4h1TGxOTycwOxGsiVBkLTP+jxKBPubrqFtoiXOt UhgfLQwcAL7GuTFPSvGVq/uyUN89Cz4VHuv9YGqdwFN3ATncYCB2rNDcfDyaJDoPnvAu+wv dKrwRZvpGHgo7HH3vaodHF9te1ugFsggudcQm4G29a75qCzjTHthOaV8CsFgwLn9NAeKD7N G/NyBCqBjMS7Ivz6inXgg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:+B0cR6PdDqs=:+0l3nJJy2/OjnpViXaD2sG DnuBotzhqffsfhtCoY3ClI3vjVk85XHTf8uK9RFKVfF865ozqfVtYKOsE5WSgagYImZiORhb9 sqvx+UWcB/Xr3eExNzL7i8RZ1ezNtr6MLG5Lntjb3HULQNl+8wnByd8Sl1fS8uPU4j/NTvXAd UljBVT9Bli0r06MkB13/jdC5OcuDTKbYKzPYGtX4F//lE9Ev7sdKocfpSfR2uHYVR5lquiBng 1VyEFUEz3xoAH+TcPnIhsFWMM/wrMFxlJnTrqmSjEo+WJ+edMLZmQZNXdhP74St0dOEGgK3Jw FsVvAGzUoww5rXl2vU6hjFn+N0WcxCvnLZRTdLV/rPeLrRhBqiJ7/kaBAYwiPuhEC6P9fWVM7 BhQ2NxzKIdECsQCTlGObzmzHlVWiQWxp+N/1PbW2/BxBXAv0fn2MP92s4+JYv8WsulKXvzjfI 8kokiDWdxcgM3iHaF5tDwTFQKH1iw6GEv2ZsdJkLPALiv5YreM7uVl2m4vovLs4+0/WJ29zLv pFPulGuNW4R86lBQEJNL/CE2qFgkgDVEgy2Busu9V/ebUeONOzgIKFmLnzErzaxRKdu9TKhlQ JOSgT9YaDYC7rhR+WF/dERlxP9w0j66Fk/y/+EUVGcSVJ6y1IfvYnM2g4oTuDMAGOakiqPP5o thstMAVv3+FGHp3yJwF8q7xcWe5FKsohTyHNin6IFgDjb/Prwbuc1aTDXhosOiLb2cNEmfUPM M+3cPhDwDxxhWrWjLkCqOK2Uv8ddsbxM9vpihyj2rEXIukw4wkrI++WlX6Cv+Ovy2yRK5Skt8 U34+KsHuelnv/NK6k2j3NGszjyzK8rX9Z51D6xHeD09TMXHB68faKC2y5ACwEuzMRVPiGBJ8K TP/BIMGEt2PmvjvrFKc0QP5MJkky6MIEVf+wbvcXyhfCpLb09cd5CDfw7JETxZ8GRh2OOmsbW Epy/Or473mN6xwzyx/JC43hYwDdVpoyB3TmSDPmNPFBGMZf5Bisp6Iew+i7rU2SJRZMPJvALD mlxfiHEUYLhkS8+D3E508elVCBl1QPGdBZasUQ8Am81ZcAqzZNbikGr6xVNLeZfKjOwgrrKPp 53Hv81zU4YyYcYRIZjkGdomu+VPZWKfZktHksv4p0uZDB3snk2Hmos7BuKRuULiJe6aXcjgDv 8CJjtMBpsYr/W6wYYXAFED8RO4sbl0MR/6LD9ARFDqUNKcZ+uvr6U394tqDWMzGFWf80ljYYO hlHUTCqRV0j56lEVl4ME5E7sejwPtG/vErzanxA== Precedence: bulk List-ID: X-Mailing-List: linux-pwm@vger.kernel.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 --- v3: - 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 | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) -- 2.28.0 diff --git a/arch/arm/boot/dts/imx50-kobo-aura.dts b/arch/arm/boot/dts/imx50-kobo-aura.dts index a0eaf869b9135..2d1a59091a37c 100644 --- a/arch/arm/boot/dts/imx50-kobo-aura.dts +++ b/arch/arm/boot/dts/imx50-kobo-aura.dts @@ -6,6 +6,7 @@ /dts-v1/; #include "imx50.dtsi" #include +#include / { model = "Kobo Aura (N514)"; @@ -135,10 +136,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: ec { + fsl,pins = < + MX50_PAD_CSPI_SS0__GPIO4_11 0x0 /* INT */ + >; + }; + pinctrl_gpiokeys: gpiokeys { fsl,pins = < MX50_PAD_CSPI_MISO__GPIO4_10 0x0