From patchwork Sat Jun 20 22:39:05 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: 1313750 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=awKouNNw; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 49q9cg0sV0z9sRN for ; Sun, 21 Jun 2020 08:40:51 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728348AbgFTWkr (ORCPT ); Sat, 20 Jun 2020 18:40:47 -0400 Received: from mout.gmx.net ([212.227.15.15]:46327 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728113AbgFTWkq (ORCPT ); Sat, 20 Jun 2020 18:40:46 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1592692783; bh=NZlIIwqNdtz2a/BsgVin34fzBdteKCXfPTKpkZ94mWM=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=awKouNNwZMnHe+LNy5Fvm541bwzFIrAoC2hgnZRHv/nFQLCNiAdi0yLG0jsS3KAPk aB53eq2b2qyxnDUVNATlm92w2BI3lMLGm3KHSAm8xhuTHaO3ooIs/Pg1kIyFCUa5Sa B1FMipma3UFGm++S9ENNNb81EISkSizfJTPpv+u4= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from longitude ([5.146.194.186]) by mail.gmx.com (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MkYc0-1j0qCP0n3m-00m4hJ; Sun, 21 Jun 2020 00:39:43 +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 Subject: [RFC PATCH 01/10] DT bindings in plain text format Date: Sun, 21 Jun 2020 00:39:05 +0200 Message-Id: <20200620223915.1311485-2-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200620223915.1311485-1-j.neuschaefer@gmx.net> References: <20200620223915.1311485-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:VxdfrjWO/u5MhkFEjp5KExUHat+e9KDgtmLJLE7SRngqgjYq/nQ XlCaZO+wvW9aA+9ez71mbfpUjzFYsLA9lmNlF0ivaZt7Kw4hU0gOLdIkC8vrsjk0V0tjKeL N+H6ek0QzT0wUo/mpzycW2uq+H6ea3gq1IxR2hMazCh4waMRq/8riIJ3oR5z/oTaCbMVs9k 1Il3/109DVkACWeH46L2A== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:lUU5143vyWI=:+OoGUROgFSFjWmEqEhkIO6 uJ11onjQTWCwldpTO6uSpYgMMW7JxtuxzAWkf7NFKnJ29sfmf3S06CKvlVPEVmcimDlNGmqs/ rpLKJkqLHNkKzMaORiGyE0ygchcRQe+wLNIkrKUOaYNLxMcPoEEPJ31HHKFj6I2AyOhLpawWa ZXTWnqMQaQC1P4iJI2eGygAeh+Ro/1vkuouaGTuChHg2JpZNmmCD6YrZAbucBjJUDZ1BxPU2V ffFfFdogRmHKVNRueV1Qf0wMoL1kRalzF/fyHKtzqvkPS7pKAd08dU3Ml5vHxUq8j3h2kZmC7 dzgmG9ZVDXCp6Ob2tNph2INShQhSyf3OrfruYB/sfJRT+i9fqRyPieg01maiwdTI4dYOHdpnw 9RHaejksKs1v+rcn+4fgD9wt/Pw4oGmakCg4nbRzxqIOG5tRtx+VlJhdNaJBu5Jz+tWFgtvrM tlprNSREQSvLil/OeuJ+Bs0cgDW5TvOWUKTEZ1Fc599CpAEXa5aPMCn4G0PBuhIJFyfCid1o+ D7+lmktz5x201/iEJjk4NEYlNe6dcRKI6Vs3RWgqOxc/NmAf6K/p8YuVb95jFdZw6NWug9HJx zcQ8k4rqE7xvz13MdaRVU0wvZOkcpcbOlZRUi+9cvJnggzySlncTXJgsZN31ryL8ZVIzD9y7k eWLokiWVF2FJfXtEqKIy7hB2JcYiHW0ffp7cpHEBPlkgz+xAQBXvhaICoaPD73AOkFn6aV6vL R+qG8eGBuZdol6tjBqNBedJsqTC+hs/cpp/Xqom+rulP4yZhk9aUT2hqNKCSROwsGGcgPEoKF RJM1V8TauRypS5/1uRJIAp3Rz57wCacOI1YyNmlvaM7EhrdIFm+i8jIRef6UHm7w/A0WE77GS ILU952UhuKOwcW65DcSLvbQv9U98qHq/2a/lXcK1BfwX+qHoDnSR36CnZFf1pQ9ruPduBruhZ Y/IsjKR4FyPlJME3cKfB2AJM5cuxkQZIFvSQI2iOpttC89fH7Cs4pnBV/47KuWy0wcCg+LWKa 3JI6WltFNPxyzsMkDAQG9dGhqCcBBgEJIMV8ckhjeY7fS91G6d7CI8KhmwYbaf3mDctmGmnlp bnozlZRtbdNk9Ojd7vGvpzJtPf60nWhOjCDP2HHCyLBdgyz9wkRT3b+v54Kpxs5OTOVzBc+Xo BOCpg2QYPWjOIwo3Gd8vcKdxkzLfTTxPzzHn7R/SyBPmDKnTiYZpEDgwPZYWaVwZpVsIrDwJy nrNkjPs5LKdUJMSv9 Sender: linux-pwm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pwm@vger.kernel.org For reference, here are the devicetree bindings in plaintext format. (Not for merge.) Signed-off-by: Jonathan Neuschäfer --- .../bindings/mfd/netronix,ntxec.txt | 58 +++++++++++++++++++ .../bindings/pwm/netronix,ntxec-pwm.txt | 27 +++++++++ .../bindings/rtc/netronix,ntxec-rtc.txt | 17 ++++++ 3 files changed, 102 insertions(+) create mode 100644 Documentation/devicetree/bindings/mfd/netronix,ntxec.txt create mode 100644 Documentation/devicetree/bindings/pwm/netronix,ntxec-pwm.txt create mode 100644 Documentation/devicetree/bindings/rtc/netronix,ntxec-rtc.txt -- 2.27.0 diff --git a/Documentation/devicetree/bindings/mfd/netronix,ntxec.txt b/Documentation/devicetree/bindings/mfd/netronix,ntxec.txt new file mode 100644 index 0000000000000..e303932657999 --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/netronix,ntxec.txt @@ -0,0 +1,58 @@ +Netronix Embedded Controller + +This EC is found in e-book readers of multiple brands (e.g. Kobo, Tolino), and +is typically implemented as a TI MSP430 microcontroller. + + +Required properties: +- compatible: should be "netronix,ntxec" +- reg: The I2C address of the EC + +Optional properties: +- system-power-controller: + See Documentation/devicetree/bindings/power/power-controller.txt +- interrupts or interrupts-extended +- interrupt-controller +- #interrupt-cells: Should be 1 + +Optional subnodes: + +Sub-nodes are identified by their compatible string. + + compatible string | description +--------------------------------|-------------------------------------- + netronix,ntxec-pwm | PWM (used for backlight) + netronix,ntxec-rtc | real time clock + + +Example: + +&i2c3 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_i2c3>; + status = "okay"; + + 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>; + interrupt-controller; + #interrupt-cells = <1>; + + pwm { + compatible = "netronix,ntxec-pwm"; + #pwm-cells = <1>; + }; + + rtc { + compatible = "netronix,ntxec-rtc"; + interrupts-extended = <&ec 15>; + interrupt-names = "alarm"; + }; + }; +}; diff --git a/Documentation/devicetree/bindings/pwm/netronix,ntxec-pwm.txt b/Documentation/devicetree/bindings/pwm/netronix,ntxec-pwm.txt new file mode 100644 index 0000000000000..50be27f82559e --- /dev/null +++ b/Documentation/devicetree/bindings/pwm/netronix,ntxec-pwm.txt @@ -0,0 +1,27 @@ +PWM functionality in Netronix Embedded Controller + +Required properties: +- compatible: should be "netronix,ntxec-pwm" +- #pwm-cells: should be 1. + +Available PWM channels: +- 0: The PWM channel controlled by registers 0xa1-0xa7 + +Example: + + embedded-controller@43 { + compatible = "netronix,ntxec"; + ... + + ec_pwm: pwm { + compatible = "netronix,ntxec-pwm"; + #pwm-cells = <1>; + }; + }; + + ... + + backlight { + compatible = "pwm-backlight"; + pwms = <&ec_pwm 0 50000>; + }; diff --git a/Documentation/devicetree/bindings/rtc/netronix,ntxec-rtc.txt b/Documentation/devicetree/bindings/rtc/netronix,ntxec-rtc.txt new file mode 100644 index 0000000000000..0ef9e791b6a36 --- /dev/null +++ b/Documentation/devicetree/bindings/rtc/netronix,ntxec-rtc.txt @@ -0,0 +1,17 @@ +Netronix embedded controller RTC + +Required properties: + +- compatible: should be "netronix,ntxec-rtc" + + +Example: + + embedded-controller@43 { + compatible = "netronix,ntxec"; + ... + + rtc { + compatible = "netronix,ntxec-rtc"; + }; + } From patchwork Sat Jun 20 22:42:13 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: 1313761 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=JJlLzu+E; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 49q9gv6LL5z9sSS for ; Sun, 21 Jun 2020 08:43:39 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729027AbgFTWni (ORCPT ); Sat, 20 Jun 2020 18:43:38 -0400 Received: from mout.gmx.net ([212.227.17.21]:45831 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728955AbgFTWng (ORCPT ); Sat, 20 Jun 2020 18:43:36 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1592692947; bh=OudamScKxsSwesQWI5fhg8i4uztyIzbbtXHCU+btXqg=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date; b=JJlLzu+EP2kHN1UTDpUwB6LsqYgcAztufiCAgWCcxVFKraKCiYMrmS+mXlItATNNc Ar2ZNr4QuMEd1/btmPM4zx9DQe1/1C/Ki4Grla16r4HglxaDLrhr3slsSc2iXWxzcg iPLI2pWnBBJ38Vv5EeauBsNsISVxdiCIdDGhLFy8= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from longitude ([5.146.194.186]) by mail.gmx.com (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1M4s51-1jlPPh33Ch-0022vZ; Sun, 21 Jun 2020 00:42:26 +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 Subject: [RFC PATCH 02/10] dt-bindings: Add vendor prefix for Netronix, Inc. Date: Sun, 21 Jun 2020 00:42:13 +0200 Message-Id: <20200620224222.1312520-1-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 X-Provags-ID: V03:K1:yZqldghSPumPDLmSQbkIreQsfprG56cHRfGVJLO/YVdhlg8pdjP qZiYkkWMBRqMgwiDDZxJ/FCfw8bxfnQru0qx9L7azU4/GJDQAEj3hBxzxC5XMdXgaq80k6Y SHT+PXTXWZyf8p9LmwX14SH2+bFjtxTBBb9kbDuWJfCuNiZWshywX2QCJaoqMczHJC6Q/50 JgFxTAZrllSeaBrtPHSFQ== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:do6d/UNjmsA=:R9Ie587I12yWywA8J5SpSB BLF9Oth0uc8kZzgmzZ4+u54wt5yGQoaFfnpyHNx4l7IyNaDg6+/+R/f1hgPMu85eYY5HE09ge bFeuKAfPblPLjhk0gxae1vikVfpqrY6RpY8N5eF3Xa9+zkrpqK4Y89pTbt/tflnz2axOUyiu0 BvAA44P73R7IBIZ8spCb0xBlEBH3SzTHQ8G/xDG7QHTuO8Nu/6jGu0nDuRW58tKjlP8wVDFTf ZzI9LiHs6GpZ78j9HiXl6PekpypY+lpzMEUnH27lemTM4RJsYLGbIwfBZL+heIywhQX97MHAb 5SL6uP52Mi69J2ULGvkXFHkJzx/Fs7i7I7IYxkPKL/ymU8MFvMKscDgY+G5K3Ck09weMxr7gP Jy0jIGL22XQFWJqcl0V2qb9wGpXdofOxE7C5RVcPq0cDuRJmOmj5VIulyg5E06RTTPEFlHBND k2o+uWYiXoSgdVdqipbTMtaXSI4e4JI8U0fmy06dtPFWD0sn9phBsvgv/n7NEdnRGrzFLNBke oij8xPQsuUXQy9zd+A47jW3jBXI+kBB2ef23e0Newv7WVZ67d12hN8ctUwrRFROZYR7JC2OoH W5o6AdCPx+LdxxuKcq9SOT7R2f8YmacLH2k4LXIPVzqTbtjmiPsxpyyJNLNSZH+o34UgQDOat Ai/Np7TPrDTSBHyAzDYL2vxL0w33qfURn5JvzZgROmpDVmJKA5zqCnHexmYh9brcPIHBbyJnx IF5z7a8gKg+OEQpH3svSXi2q2BccfSlCEGZoAX+9ymRTM9U5nxCsb6viJpR5q+XHUyZbSvgHy GTpx4KurBhFmMCbBR77FoeEz47J77XtYMhtMI2TPgRWWCDE6+vaGYROumvr7Fo6EwYLlAyXwk ugZd6n5oTK6CzP5bkqC3e7G0qbXlzqHF3hOA6xh1/YtSo8243CecXf7SF0XM2hYffsQlOS+ph qT94vPkRWA1tbFbEFuiGCoBPnwL4igL1WDeXeBw93/uNzFEGV3wZ7m/RwjtjoR9zZUQFnZUYA US1nlqIwAY5Dq6mZcFv0w8eFA6mBmnO1qA/pSzihnRaemJPqBZccuknxaQJ8IaAwL3mEDR3GH vMpRDMTFujK3T8upXyiZVDnqBlgx21pKIOvv8txYkHugk9kedVQGtxKT98Wz5r0fqkz+cIwDb KXYWUc+ZoCBB5uWY1GKLQiYDQzU8VrTak0TZMvQxC2K+njpePApu/khJrp/lKWlzKaPzWZ/Ih jixY0YPWy90Yjy2NK Sender: linux-pwm-owner@vger.kernel.org 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 --- Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++ 1 file changed, 2 insertions(+) -- 2.27.0 diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml index 9aeab66be85fc..516c6b6668fba 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.yaml +++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml @@ -704,6 +704,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 Jun 20 22:42:14 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: 1313771 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=FvOk5311; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 49q9hC0brYz9sQt for ; Sun, 21 Jun 2020 08:43:55 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728825AbgFTWnd (ORCPT ); Sat, 20 Jun 2020 18:43:33 -0400 Received: from mout.gmx.net ([212.227.17.22]:43239 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728708AbgFTWna (ORCPT ); Sat, 20 Jun 2020 18:43:30 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1592692949; bh=fz9iJvS+IQADqhRoQ/zH92wyy5n1baG4XghBRzehFfE=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=FvOk5311cG2uyND48G8BKzya2u9fpnzaHK8YmvdJKt7M50kVWwih9sHWwaiS8M3sP BtgpHe3JYcdxUgJFJre3O6v7nIwP2dOB7jUccvNBJwfy5UfqbDmKfa04CvoyXDhH6P 7zDO9qrru+atBrEKXrG6QomzjJG03XZj3te4JOE4= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from longitude ([5.146.194.186]) by mail.gmx.com (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MIx3C-1jSVUF2jyU-00KNXT; Sun, 21 Jun 2020 00:42:29 +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 Subject: [RFC PATCH 03/10] dt-bindings: mfd: Add binding for Netronix's embedded controller Date: Sun, 21 Jun 2020 00:42:14 +0200 Message-Id: <20200620224222.1312520-2-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200620224222.1312520-1-j.neuschaefer@gmx.net> References: <20200620224222.1312520-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:QskTcHILhGvocIQPvfd8FUOVQFGG/i9pz7IBgR13JIg2w4J5Spj zrU3wG1ZFT6FxWvc0CbTK0QAWqyc7FSbsTspi1g6jgJSJXPbILQ+pCY46jXupZggraGL8iV Rk7sUAPsGFeqgYHzkkEhQlrzu2z2aTn9MM+dYYhYIcaanJTQ/BG4Q71Nqo5cuZYC6A17THV I1j1Nb56pjLV5QKAV6+gQ== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:QtZPHCNxCyc=:IUkoyC/pOkJHsLV5zwhJyy +cWf4MfNeJK2AUnWJzPpNA2DY+10efIyXrp7CC3rd3nu54sRs2pfKTwbamsgIEq9+TRMVL505 RieT9GtFm7qKvtkBGFp1k4OYAI7MUZkclyHw+ko7h1RyrqtBGUTlOCKzTxjI0zRgfbS1mQort W1ik/LnXWBkbcb/GYtZ82IguXGVLJZHweOs+zcNeDfxf3bb4urQC57MVO7Is4amG/CaoMvrH8 c4aOHxNg8kra24qicrEmtWbreY492foqYxkqq3zsKErPtcilZVRjzyvbezT+6xhTRpoT6l8+W YfttDhcNAnRPG/XRNbun1iiKd8s7tqa3Ha01yPr90vryIUFgHxMhEBBCsjSvWj9xh5UgHvlZX Np4vfDVa2DKXYxnhKy0LSD7qjCrkxooEdfpg1ho0wpu1rq7XDwgWnKPaJjUo43jQMR9Q8VgjS 0wGvS+XvOzSHlWBu7LcJIm3dQbRZiCbFkLOD5AIYCoMo+pAdq7K302CEDJXRCeMUO3gymlNkO hm9JHIZFR4rs0gH2Yo1GD+uSb+09JnMt3ktmjCRpLcpxtFyB4xRgIlE8cBzOAnvcKD7/FLUAP x9BB4uH1F80Tib2N78Aq9cNhkRgVLydhT+qY37+KjO2dSbeWgvNQW2JzknBQEoSazqg7FGveP dqxxQrV0U3nTUYwUVMEGz/Lo/UldmmI/zXYNhpslQVGpHA5xjoSW360NeR5yrB9wSuHC3D7gX aMg0/Ik4N7hmp2ZPdPIAmXpbgUbjRQYL9yQvgmJ3Hzdj3lHvoq2YuGZKhMrMpJnr9XWnzWRax n0ng6pQdSlDxF//bvdwQSaiS5HWvhUHf8/J4kYQytqAWGTkGfJNusJdOyX++E7xaq+C+e6Tys kK7JYM/Jh+m4n9WJVo7gqAgWaX1AdIKOJa05nfaXoC9dqI8khc1PbKgCL2Lt/lhenqU0sNapX WeNEYn2wpOn3KrmevFcSPnTHF7mW9HV/VQQ+uhEOHckdMehtskSlHFV1EQmnl9iBLF5jCUBYf TXeqkYX9X6r/XWOgRxIOwRfJVFqINXgnqymozObNFFFQ5yUnhiiyhdwNU/F4opc9lxxPt1q5Z nxDuMP6e6qRkjU2QwdI9fNmhkVxeGu5bF9yxrfuvYMJkt4wQHbm+nuvCjAYG92JC86F8bwH3C v6A4EaLyXoaBXo+1ES5jqSJeiPZQ3kZ9tU1qIHkY9njfZcN1oWzyf6+h3rAjfKigCjNyxDWLN 7x7HZkTLOWToUzmip Sender: linux-pwm-owner@vger.kernel.org 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 --- .../bindings/mfd/netronix,ntxec.yaml | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 Documentation/devicetree/bindings/mfd/netronix,ntxec.yaml -- 2.27.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..596df460f98eb --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/netronix,ntxec.yaml @@ -0,0 +1,57 @@ +# 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 + +required: + - compatible + - reg + +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>; + interrupt-controller; + #interrupt-cells = <1>; + }; + }; From patchwork Sat Jun 20 22:42:15 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: 1313770 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=iNnbYG6+; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 49q9hB4KmGz9sSS for ; Sun, 21 Jun 2020 08:43:54 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728876AbgFTWnd (ORCPT ); Sat, 20 Jun 2020 18:43:33 -0400 Received: from mout.gmx.net ([212.227.17.20]:57519 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728113AbgFTWna (ORCPT ); Sat, 20 Jun 2020 18:43:30 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1592692952; bh=XXu+luCqljJ0m62RlCeT8CmSkmbKkHxcSLuj0ORt69w=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=iNnbYG6+HppRyny7oSDl/zcSixkIlEXLPpZpEPGi3ysfpx7QNmQPi0qppo63xY30w ADOgFudvJBvA5CZihzB85TvnZFodxjammv1ZB6PFWOvPOTQMZ1lSDzqMxuofpZUxDl U/mgB9Y+o/ZD3COw1SsOYIx4QvYxAa4BNsvY4crw= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from longitude ([5.146.194.186]) by mail.gmx.com (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MkYbu-1j0qCE0pzS-00m7TV; Sun, 21 Jun 2020 00:42:32 +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 Subject: [RFC PATCH 04/10] mfd: Add base driver for Netronix embedded controller Date: Sun, 21 Jun 2020 00:42:15 +0200 Message-Id: <20200620224222.1312520-3-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200620224222.1312520-1-j.neuschaefer@gmx.net> References: <20200620224222.1312520-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:1u+AFOJkIXKhSwfcftLBAxIIIFzLSLtOsHVEPr+WI+ygCv/uTZx bP173tXALlMVkmQtxXC3zSy60qVZn2N5fdYQS+pNrKw78Lbqq4x2vINFjsXeXWr3lLN4Arm HmrsGAK25Gemm3fdmo1pd6x3Za5nucsZJeUPOJwe6FlcCdYJcNknAYM0KkfuAbKRq0Wbs9l 5GvBUsY9CW+YIzgQuUS6Q== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:Dd6v43kPPRw=:9CCX267RpV8vvnDACISpr5 uk8XWpwglolUEoOdfm4ML40ZZQF9MNh0RqPQCdos/fDZbKKFXB73EdN9rxPZQT8ErV1UaAzVz FpUEHml2lpxnsR3C5Ayohy6ialKj5tpmolzhUhBX7FUnpFndtdOF+M13RvxJCGSJKPAxynoHw UIyKaX5K6gL04zdSHbntQMfewUBSivQ96bWzk+RbPBh8YS5dtG+aqhIMZ2eEGYkhbyWHzBGee xh1RWlCs0LgBHrLfjQi8+WTxk2K3Kradtj6H3lVdeNT7TpB0VEs6B/OYg7MLFsyeeGLHO/cLT GZ41yJllRiwsjkA47W2M8lvItHEq/k0pO3KZpL4qPGC6Z7u69lotbGGUF04wxyNkK+ws7hkPG TWu6k8rubzALTIrcWOShkOd4dKWuOwJ/jjZTSJNySCpMycQyQc0B01Z8b03Re08BUqidFIQ0g bSlrWJ9SO5MHLxk407BZd5doNAO2hpdwtgkWjzORyYJ2vcm4ry1Ej7miWLehkA3c6nIK6raUa YSbiaz+yNvMs/Hghz1lldY4GrPFkkyvKw3Qhcmd9qscGKrzEPrpZxmiW/6T5rafUYH5xjdwP8 um+uJubO5QCcoKoYYCuZDfuq10fnsonyqe1J4d10rtmgCYl35EVSjfB8unShhU6GaFfHRgWOi GZGbhQhUstTXV0zRoJkekg+4Vwk70aEcpE5zVvsPAvQMfA/09/g/FH3bNvuAeE6H8otGGU7xl 93Yc2oHYEPoE0VGrKsGep00HRGkr6+wz7dBSMO7hqXrwLrqv12jIGKQv9Cha3the6o+GB/o88 PNRkkG2Wcv893itk8J6AqGXZegYCkWdZCLksMw+InGUEymU8rb5dj4TWgwGbjli+RsXNZzvc8 Uk5l9ijLaUJuEfXTcojgJEoGy77UQf7Juj6sdODxD+zPvwTHJUijXSrJKzRMVPGMW27FTNVGs bs7bmaMvzh39VNbacb7mL6xNXmBAUcG/dSQ89Pmk6Q4kjbk9k6/7t8YF/e+pzh1Mqsx0JIOgK yqLU8lMmSFzmbl0H0dsp4jl2Hh28EMByv8KL4rT3BLgQgTJEzS8XYTNXWdDbHFzbdLHJcPZIh etHzCZLWZDlV0a+Kzv9r+FxJ+5QuCAno2wLwiO7rdhbhHS4cYmMr7fJaE9vZO9WUvjLeeorpW lPVHChtORF6mfv96pD0PZ9zA+JWd9ZOb+2bppQOUfRJdJ9/hHY7KIGCFNXKCOxbqKJOZsaNJa xBH09UDGhk/IHmdu2 Sender: linux-pwm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pwm@vger.kernel.org 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. Known problems: - The reboot handler is installed in such a way that it directly calls into the i2c subsystem to send the reboot command to the EC. This means that the reboot handler may sleep, which is not allowed. Signed-off-by: Jonathan Neuschäfer --- drivers/mfd/Kconfig | 7 ++ drivers/mfd/Makefile | 1 + drivers/mfd/ntxec.c | 188 ++++++++++++++++++++++++++++++++++++++ include/linux/mfd/ntxec.h | 30 ++++++ 4 files changed, 226 insertions(+) create mode 100644 drivers/mfd/ntxec.c create mode 100644 include/linux/mfd/ntxec.h -- 2.27.0 diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig index a37d7d1713820..78410b928648e 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -978,6 +978,13 @@ 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 + bool "Netronix Embedded Controller" + depends on I2C && OF + help + Say yes here if you want to support the embedded controller of + 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 9367a92f795a6..19d9391ed6f32 100644 --- a/drivers/mfd/Makefile +++ b/drivers/mfd/Makefile @@ -218,6 +218,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..82adea34ea746 --- /dev/null +++ b/drivers/mfd/ntxec.c @@ -0,0 +1,188 @@ +// SPDX-License-Identifier: GPL-2.0-only +// Copyright 2020 Jonathan Neuschäfer +// +// MFD driver for the usually MSP430-based embedded controller used in certain +// Netronix ebook reader board designs + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define NTXEC_VERSION 0x00 +#define NTXEC_POWEROFF 0x50 +#define NTXEC_POWERKEEP 0x70 +#define NTXEC_RESET 0x90 + + +/* Register access */ + +int ntxec_read16(struct ntxec *ec, u8 addr) +{ + u8 request[1] = { addr }; + u8 response[2]; + int res; + + struct i2c_msg msgs[] = { + { + .addr = ec->client->addr, + .flags = ec->client->flags, + .len = sizeof(request), + .buf = request + }, { + .addr = ec->client->addr, + .flags = ec->client->flags | I2C_M_RD, + .len = sizeof(response), + .buf = response + } + }; + + res = i2c_transfer(ec->client->adapter, msgs, ARRAY_SIZE(msgs)); + if (res < 0) + return res; + if (res != ARRAY_SIZE(msgs)) + return -EIO; + + return get_unaligned_be16(response); +} +EXPORT_SYMBOL(ntxec_read16); + +int ntxec_write16(struct ntxec *ec, u8 addr, u16 value) +{ + u8 request[3] = { addr, }; + int res; + + put_unaligned_be16(value, request + 1); + + res = i2c_transfer_buffer_flags(ec->client, request, sizeof(request), + ec->client->flags); + if (res < 0) + return res; + + return 0; +} +EXPORT_SYMBOL(ntxec_write16); + +int ntxec_read8(struct ntxec *ec, u8 addr) +{ + int res = ntxec_read16(ec, addr); + + if (res < 0) + return res; + + return (res >> 8) & 0xff; +} +EXPORT_SYMBOL(ntxec_read8); + +int ntxec_write8(struct ntxec *ec, u8 addr, u8 value) +{ + return ntxec_write16(ec, addr, value << 8); +} +EXPORT_SYMBOL(ntxec_write8); + + +/* Reboot/poweroff handling */ + +static struct ntxec *poweroff_restart_instance; + +static void ntxec_poweroff(void) +{ + ntxec_write8(poweroff_restart_instance, NTXEC_POWEROFF, 0x01); + msleep(5000); +} + +static int ntxec_restart(struct notifier_block *nb, + unsigned long action, void *data) +{ + /* FIXME: The I2C driver sleeps, but restart handlers may not sleep */ + ntxec_write8(poweroff_restart_instance, NTXEC_RESET, 0xff); + /* TODO: delay? */ + return NOTIFY_DONE; +} + +static struct notifier_block ntxec_restart_handler = { + .notifier_call = ntxec_restart, + .priority = 128 +}; + + +/* Driver setup */ + +static int ntxec_probe(struct i2c_client *client, + const struct i2c_device_id *ids) +{ + struct ntxec *ec; + int res; + + ec = devm_kmalloc(&client->dev, sizeof(*ec), GFP_KERNEL); + if (!ec) + return -ENOMEM; + + ec->dev = &client->dev; + ec->client = client; + + /* Determine the firmware version */ + res = ntxec_read16(ec, NTXEC_VERSION); + if (res < 0) { + dev_dbg(ec->dev, "Failed to read firmware version number\n"); + return res; + } + ec->version = res; + + dev_info(ec->dev, + "Netronix embedded controller version %04x detected.\n", + ec->version); + + /* For now, we don't support the new register layout. */ + if (ntxec_has_new_layout(ec)) + return -EOPNOTSUPP; + + 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 = ntxec_write8(ec, NTXEC_POWERKEEP, 0x08); + if (res < 0) + return res; + + /* Install poweroff handler */ + WARN_ON(poweroff_restart_instance); + poweroff_restart_instance = ec; + if (pm_power_off != NULL) + /* TODO: Refactor among all poweroff drivers */ + dev_err(ec->dev, "pm_power_off already assigned\n"); + else + pm_power_off = ntxec_poweroff; + + /* Install board reset handler */ + res = register_restart_handler(&ntxec_restart_handler); + if (res < 0) + dev_err(ec->dev, + "Failed to register restart handler: %d\n", res); + } + + i2c_set_clientdata(client, ec); + + return devm_of_platform_populate(ec->dev); +} + +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 = ntxec_probe, +}; +builtin_i2c_driver(ntxec_driver); diff --git a/include/linux/mfd/ntxec.h b/include/linux/mfd/ntxec.h new file mode 100644 index 0000000000000..9f9d6f2141751 --- /dev/null +++ b/include/linux/mfd/ntxec.h @@ -0,0 +1,30 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright 2020 Jonathan Neuschäfer + * + * MFD access functions for the Netronix embedded controller. + */ + +#ifndef NTXEC_H +#define NTXEC_H + +#include + +struct ntxec { + struct device *dev; + struct i2c_client *client; + u16 version; + /* TODO: Add a mutex to protect actions consisting of multiple accesses? */ +}; + +static inline bool ntxec_has_new_layout(struct ntxec *ec) +{ + return ec->version == 0xe916; +} + +int ntxec_read16(struct ntxec *ec, u8 addr); +int ntxec_write16(struct ntxec *ec, u8 addr, u16 value); +int ntxec_read8(struct ntxec *ec, u8 addr); +int ntxec_write8(struct ntxec *ec, u8 addr, u8 value); + +#endif From patchwork Sat Jun 20 22:42:16 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: 1313763 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=J+FgROFF; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 49q9h259BXz9sQt for ; Sun, 21 Jun 2020 08:43:46 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729063AbgFTWnj (ORCPT ); Sat, 20 Jun 2020 18:43:39 -0400 Received: from mout.gmx.net ([212.227.15.19]:36951 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728892AbgFTWnf (ORCPT ); Sat, 20 Jun 2020 18:43:35 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1592692955; bh=ndIbgrYQmb2subu3Oe9fLJNTph0wDs4Jgr3O6ddsGCs=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=J+FgROFFQ3bRtxN3HX8GAAM80SYvrFVum3jbjkMuDoZv82bbzd7p4v2lwUObmvi9U RKKkU7ABlhhOf3ucQr/YoDYi2VelWwIOv4bta+W+0QX2BbXRhXfTtTs9zySXTLu11L 7T1AUf5LhLDeDqYz6VADvdNbwPyJo8wPvWSJhok8= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from longitude ([5.146.194.186]) by mail.gmx.com (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1Mzhj9-1j0ZJq0foH-00vh75; Sun, 21 Jun 2020 00:42:35 +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 Subject: [RFC PATCH 05/10] dt-bindings: pwm: Add bindings for PWM function in Netronix EC Date: Sun, 21 Jun 2020 00:42:16 +0200 Message-Id: <20200620224222.1312520-4-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200620224222.1312520-1-j.neuschaefer@gmx.net> References: <20200620224222.1312520-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:cHtrETJXmtzDsxaAmeos/P2xE+50CNmj6sgaAzFuUOlSUWq/6Ys cqIg7vWmvwXLCa21o6GeBXwf7oIpciGmMqEZBvyiohhFZM1XVsvYPlRTVOpG6EouIIfpHjN oRsfkw7/ClzqOiL+Ze+SJxfetrwj8+i5loPqfXmdK6ge0n7fr6C0p4UdWe8JtrynlkTEetf o6hOJXw2ktAxvqog9HAtw== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:U9UJEZBhzvM=:b/45FR0hRI3CJbRxSnghbs 4CVZ30R7wRT0hf/CVO3qu1lLPiL64OTe48LZB7taUb79jr8YtYz3PoP4kXOOJ7ly9HJYTV5Zc LgKtHTFsqYIQ3Go2aeby/iy3BgsvbCEcLEaMAGpNs2w0ICbZCNkB5Nfs/r6NcyWCrr2T8eTXs pk+5MnFTiweecLuDjO8tMwlItb4ERwxiReHLzWhIW+SGwLQO1br+3BDyWYilMsZmFECvPIXy7 R8PTNl0Pp0XAS+VJJ8FETabtlYYJPyYzrm/sf4FxwfkNH8WmG7GQrKqSU/hE2kruPsomsJgbz VylHazUogB7jLAuVfvJRvOoTeBk/IhRxX8Wdu88H3NjVCM4NI3nEE5H4tmhnWtZsrMHj3P46J X2VwLnEIjtMvaRZauEtnc3Lk6f1e2EwKKjSmZra5J9wM8Zws9gFoU9Np5I9fsMyMS4DtVscHm iQST7d2sMiChWnmRRxzJqlXCtZLeJFK+ntFKVpupt/UAv0bJshq1daszb0BzPm0F6u0Qg3wtH Opt9xdEDU0G21u/025dZrOwyjdHl5VdwsscVUCkGlw5cOi1RsiOTY7gLP6CVlfOO+Fnr3ZUD6 pB2BOCPTjKq6F13nAMl9erVGVBGcbjlp2VgFiajIgVQPWHVeGFI2CO0wU5hZ5UynxOcg8ekI4 dHL8mcmn2v2Pr55i+kuNomAuiaPbfgMhqnGyafvkmxq0MPH2wvdUSs1SDAtaVdV6OY3rEEjnq iarr91l9VRFmF0XsEMKFC92gjt2XeM4Hzej52q0W38s6jVc9AaWx1aMYusxnObCZPeTAwFQbE 5g3U/ZxPlApbj67/DauJBq7BdZ8/NLQmOGCLMQVp2MAXAFFgtzYasDZZZWjOX/Th2kUcaDN+I /4je8CQoaIG0UGtbZsAkFLy/1LMvLLPS3RZnSBbBgeyqEUOKmMbV1QwweQvoxrDoyxrHMi7Gy f0CXDruLnA9KezIt5srHTBpDD/s8cnyqpoIMkRwLzNo6vntAGe4flze443K5S0lvoeTaE/Lhg FK6WurPDfcgGo7nc0XLaWxFV23mCGRplOl0wIVexTiT7P5ZX+0/H2CBUg1iNb/gUgsUz/OvYr NHO8JLR/iMAhn7YqXEib1JicjAFSXpl7DZCkiwZlBCf0qq3sZ9SQZ65/6ZdcYN44uMkx2/tSr JUicJiTDBAVIjZFgVdM/hOgF2/wViONZSXF3ZCMfWDTBXZHst1/sSne2cl0mqYQKVr5KeVl9W 4L+uoGkI98FY33KXZ Sender: linux-pwm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pwm@vger.kernel.org The Netronix embedded controller as found in Kobo Aura and Tolino Shine supports one PWM channel, which is used to control the frontlight brightness on these devices. Known problems: - `make dt_binding_check` shows the following warnings: Documentation/devicetree/bindings/mfd/netronix,ntxec.example.dts:49.17-42: Warning (pwms_property): /example-0/backlight:pwms: cell 2 is not a phandle reference Documentation/devicetree/bindings/mfd/netronix,ntxec.example.dts:49.17-42: Warning (pwms_property): /example-0/backlight:pwms: Could not get phandle node for (cell 2) Signed-off-by: Jonathan Neuschäfer --- .../bindings/mfd/netronix,ntxec.yaml | 13 ++++++++ .../bindings/pwm/netronix,ntxec-pwm.yaml | 33 +++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 Documentation/devicetree/bindings/pwm/netronix,ntxec-pwm.yaml -- 2.27.0 diff --git a/Documentation/devicetree/bindings/mfd/netronix,ntxec.yaml b/Documentation/devicetree/bindings/mfd/netronix,ntxec.yaml index 596df460f98eb..6562c41c5a9a9 100644 --- a/Documentation/devicetree/bindings/mfd/netronix,ntxec.yaml +++ b/Documentation/devicetree/bindings/mfd/netronix,ntxec.yaml @@ -31,6 +31,9 @@ properties: description: The EC can signal interrupts via a GPIO line + pwm: + $ref: ../pwm/netronix,ntxec-pwm.yaml + required: - compatible - reg @@ -53,5 +56,15 @@ examples: interrupts = <11 IRQ_TYPE_EDGE_FALLING>; interrupt-controller; #interrupt-cells = <1>; + + ec_pwm: pwm { + compatible = "netronix,ntxec-pwm"; + #pwm-cells = <1>; + }; }; }; + + backlight { + compatible = "pwm-backlight"; + pwms = <&ec_pwm 0 50000>; + }; diff --git a/Documentation/devicetree/bindings/pwm/netronix,ntxec-pwm.yaml b/Documentation/devicetree/bindings/pwm/netronix,ntxec-pwm.yaml new file mode 100644 index 0000000000000..1dc1b1aba081c --- /dev/null +++ b/Documentation/devicetree/bindings/pwm/netronix,ntxec-pwm.yaml @@ -0,0 +1,33 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/pwm/netronix,ntxec-pwm.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: PWM functionality in Netronix embedded controller + +maintainers: + - Jonathan Neuschäfer + +description: | + See also Documentation/devicetree/bindings/mfd/netronix,ntxec.yaml + + The Netronix EC contains PWM functionality, which is usually used to drive + the backlight LED. + + The following PWM channels are supported: + - 0: The PWM channel controlled by registers 0xa1-0xa7 + +allOf: + - $ref: pwm.yaml# + +properties: + compatible: + const: netronix,ntxec-pwm + + "#pwm-cells": + const: 1 + +required: + - compatible + - "#pwm-cells" From patchwork Sat Jun 20 22:42:17 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: 1313756 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=YxTuL3n+; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 49q9gZ2SHcz9sPF for ; Sun, 21 Jun 2020 08:43:22 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728428AbgFTWnV (ORCPT ); Sat, 20 Jun 2020 18:43:21 -0400 Received: from mout.gmx.net ([212.227.15.15]:46107 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728401AbgFTWnU (ORCPT ); Sat, 20 Jun 2020 18:43:20 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1592692957; bh=SdBTcHanE6ZbSETuw4jjAPlmlGZ23qUH4Z8rV7FhLqQ=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=YxTuL3n+V481rorkdamPXRDikXiZ4sMt+CjKxF7N/98UoosFo6tpOzlGWFGEWX8LQ FrAgzp+7ELpv2f3k2RR5PgS5R1JGO7IZDTFM43JWT9mCYGGt8pEr2Gf4fw/nUtyMQ2 Q+DpRzkhb3wal/Nxdl4tv8ABsVmOslJKe86GEpyQ= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from longitude ([5.146.194.186]) by mail.gmx.com (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1Mdeb5-1jDiUW2ILp-00Zk6L; Sun, 21 Jun 2020 00:42:37 +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 Subject: [RFC PATCH 06/10] pwm: ntxec: Add driver for PWM function in Netronix EC Date: Sun, 21 Jun 2020 00:42:17 +0200 Message-Id: <20200620224222.1312520-5-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200620224222.1312520-1-j.neuschaefer@gmx.net> References: <20200620224222.1312520-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:eUueW2vxa2QRAe4bcVFkBFTG7+5ALMF64PP7ISg/TUL89veAYiC zNUGbINCeiB6/qRtz4KAMnR3JUw7xGXKew+ZBUrBM10Q0UeTbHaaKg3U1aQSCDiw7aJ75Za BBGTWP6sb28uRrD0BeaGVgXJeGRFse0w/cyOUT9B79R1CPGIMv/z+IPZ0GlEQrMP7b2QryO ZibNSqbrHPhHazAKutaLg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:PnzBkUcOKAY=:V/ttZBJ1+lucSMD75nMnsM NcaH7eRcrfkSiMMtNRhBRb6dlxCaJNWhZcOHwJE4pvBxci7QR13NHaI5rVXfJKKRKipsRueQr pu+xkoqWqQQWc8MlcQlssPJHG7Lwp6w8J6FSyG3ADFOfyz9Mn2ojGY4JWyJ6yAKVRAOy5rfUf 4lqBNnCswq7wBvemfMX6tz0+N1NkFLcrm6bFGEDe06ZIhD85zKWQo2pDWEairDkxk8YTQ3ngd uXeWAeHAP6nziJ3D3URuKszcZc1YipjlrcKNybiM/LMKL6iqg8JvHCGRQNZPeGtuF0Smq8zw/ 9fn0zfYMLuu7bFTzUgHXpDQwcH+0olIbLlXTLIdZIOJEYokEyRxZdXe9uBOXx+9FUriGIzI6v 7wIC73OJU43mjtR7t9iPn0I+dVW8vFbnMllgBkqUvHA0puZhbjkkueXoJUDOvkZNWacAvpKMK 6brbCfpeI7ev3ItssXpNBpZj0HgX2pC/bmYQAdxLuvjR/qt/7l1iC/uzGcgX8vFM3xFC8+ZnG coYL7eTXJ7Y8WAn5wKSab5t/KhscnJFOslx8clj3k3Q1wjZQib1Zt7nLs981UHZQQGq+9M5Ej bJSlZiKjmcJvhc4HMb0tRsAhvqcRl7ZAEw3KuIJLlrrZGhYcGwIZt7lRfOG7dwL0Bf3DlYOkz xNFunhlzcgHK0YudeDBnlZYRW2I6ta2niX90haz+Ey2NilqYpqASSfhOoDyruBIS8R5Nk2jFo pYyscau9KBBCnfFkJ7fU45z+F99AAzH8p19xLqSJfLKwCsJvlxng3889fpOL8TVKXo0x/da8k lxoUu18wG6+D14kTz+Z1nOM0t23I+vFXkDOXPuQD80LLBO840c/djV/zHu+wU6JcMqw+KFRn0 0u65/B84cQqih5Yx8a7xOtriEWAhHpfv3ZHeI9JMTHH8M1k/NP0DL+8Km0UzXzk6JeQVW7knk jF5oAgSsPW/zIMcGLkZ9AEOFE8yT9a5TIbt3DR0psuqpGDr5PZE02aIsPJsD/7vDGTrvak8Vf tZUl7nvsY4ZTUEAFNuqt3IYNu5iW72E7hUUc0uNnWlL5roX0EbiAvzwUd4xq8xY2dXGLylqf1 ihgWpydBZJmc7tNGYNVVnq7qR/TXMrVcC/N33Cm5PT/0FSFUyAcP+iNDzoK/AHvRF8vo5KIM0 Z3i9Evmup2f6fATU3TCUE57JimLZ8AQ+egNfAs8lJZyQdojNsC4jM97SsQ1pjQyDwg4uxzE6K P28bc+lylSvUrFUxi Sender: linux-pwm-owner@vger.kernel.org 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 ebook readers. This patches adds a driver for the PWM output. Signed-off-by: Jonathan Neuschäfer --- drivers/pwm/Kconfig | 4 ++ drivers/pwm/Makefile | 1 + drivers/pwm/pwm-ntxec.c | 148 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 153 insertions(+) create mode 100644 drivers/pwm/pwm-ntxec.c -- 2.27.0 diff --git a/drivers/pwm/Kconfig b/drivers/pwm/Kconfig index cb8d739067d2f..147d6629e662c 100644 --- a/drivers/pwm/Kconfig +++ b/drivers/pwm/Kconfig @@ -350,6 +350,10 @@ 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 && OF + 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 a59c710e98c76..15507a6d9ca12 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_PUV3) += pwm-puv3.o diff --git a/drivers/pwm/pwm-ntxec.c b/drivers/pwm/pwm-ntxec.c new file mode 100644 index 0000000000000..eca305d8e915b --- /dev/null +++ b/drivers/pwm/pwm-ntxec.c @@ -0,0 +1,148 @@ +// SPDX-License-Identifier: GPL-2.0-only +// Copyright 2020 Jonathan Neuschäfer +// +// PWM driver for Netronix embedded controller. + +#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_UNK_A 0xa1 +#define NTXEC_UNK_B 0xa2 +#define NTXEC_ENABLE 0xa3 +#define NTXEC_PERIOD_LOW 0xa4 +#define NTXEC_PERIOD_HIGH 0xa5 +#define NTXEC_DUTY_LOW 0xa6 +#define NTXEC_DUTY_HIGH 0xa7 + +/* + * The time base used in the EC is 8MHz, or 125ns. Period and duty cycle are + * measured in this unit. + */ +static int ntxec_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm_dev, + int duty_ns, int period_ns) +{ + struct ntxec_pwm *pwm = pwmchip_to_pwm(chip); + uint64_t duty = duty_ns; + uint64_t period = period_ns; + int res = 0; + + do_div(period, 125); + if (period > 0xffff) { + dev_warn(pwm->dev, + "Period is not representable in 16 bits: %llu\n", period); + return -ERANGE; + } + + do_div(duty, 125); + if (duty > 0xffff) { + dev_warn(pwm->dev, "Duty cycle is not representable in 16 bits: %llu\n", + duty); + return -ERANGE; + } + + res |= ntxec_write8(pwm->ec, NTXEC_PERIOD_HIGH, period >> 8); + res |= ntxec_write8(pwm->ec, NTXEC_PERIOD_LOW, period); + res |= ntxec_write8(pwm->ec, NTXEC_DUTY_HIGH, duty >> 8); + res |= ntxec_write8(pwm->ec, NTXEC_DUTY_LOW, duty); + + return (res < 0) ? -EIO : 0; +} + +static int ntxec_pwm_enable(struct pwm_chip *chip, + struct pwm_device *pwm_dev) +{ + struct ntxec_pwm *pwm = pwmchip_to_pwm(chip); + + return ntxec_write8(pwm->ec, NTXEC_ENABLE, 1); +} + +static void ntxec_pwm_disable(struct pwm_chip *chip, + struct pwm_device *pwm_dev) +{ + struct ntxec_pwm *pwm = pwmchip_to_pwm(chip); + + ntxec_write8(pwm->ec, NTXEC_ENABLE, 0); +} + +static struct pwm_ops ntxec_pwm_ops = { + .config = ntxec_pwm_config, + .enable = ntxec_pwm_enable, + .disable = ntxec_pwm_disable, + .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); + + res |= ntxec_write8(pwm->ec, NTXEC_ENABLE, 0); + res |= ntxec_write8(pwm->ec, NTXEC_UNK_A, 0xff); + res |= ntxec_write8(pwm->ec, NTXEC_UNK_B, 0xff); + + return (res < 0) ? -EIO : 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 const struct of_device_id ntxec_pwm_of_match[] = { + { .compatible = "netronix,ntxec-pwm" }, + { }, +}; +MODULE_DEVICE_TABLE(of, ntxec_pwm_of_match); + +static struct platform_driver ntxec_pwm_driver = { + .driver = { + .name = "ntxec-pwm", + .of_match_table = ntxec_pwm_of_match, + }, + .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 Sat Jun 20 22:42: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: 1313767 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=jXPADqgs; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 49q9h73pJlz9sQt for ; Sun, 21 Jun 2020 08:43:51 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729107AbgFTWns (ORCPT ); Sat, 20 Jun 2020 18:43:48 -0400 Received: from mout.gmx.net ([212.227.17.20]:40865 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728401AbgFTWne (ORCPT ); Sat, 20 Jun 2020 18:43:34 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1592692960; bh=quWpSURYzI37HAY+ZRXyoXMx0x6xymIR9XadTNWbOm0=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=jXPADqgsQRfGRq3jn39dE8CWtm9UG80OHy4kt1PrelCzVkXkybJYMQphTkqHVBJPP YLLnHZSdABYy1qBb26AMLiEERbuGCVV7DGKhldESZJ8O/um3jRfTMWYVgUr0dpqXBl H2aQzH9d7skrZZ34gaihGa/eIu/8MAeG72wXESfI= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from longitude ([5.146.194.186]) by mail.gmx.com (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MybGX-1ixHWs3fLx-00yvXe; Sun, 21 Jun 2020 00:42:40 +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 Subject: [RFC PATCH 07/10] dt-bindings: rtc: Add bindings for Netronix embedded controller RTC Date: Sun, 21 Jun 2020 00:42:18 +0200 Message-Id: <20200620224222.1312520-6-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200620224222.1312520-1-j.neuschaefer@gmx.net> References: <20200620224222.1312520-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:kINr04vGH8PFK0WI4mNxqdxrk/BTSB+q42S51+k3h8qzZN+MKBg 39ozPRxm1iOnsGPo7aKAazPj9u1koqGdtnXsm0yBV2EzCMz/snPFdqb96BNKl5DiZ3SZSWJ 3jTi+1yoxznDEVo2nCsnqKjZJ5DlIrdVICxcD6GJxhXyxEKFNkXUFUVbcUNMK2GZCU0rg3t 5RQbWuraPRT5G7Q6GQWaA== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:l5Qjo2w9OhQ=:WCuhRPDe5N3Khy2z5xz9L/ rb0zLra1fWmgwAE5b/+YqxhmK/yGKgtg3IY3h5PLyFF7zFqLgdNUnnx9pLBByPyyoIlQ8gC8r Z4zw3VuQ0ogI07MvbGLQZKYcxvwsXoUqUQ9FBQsuRgv3zURDWxpDnlNBCDgMq7jdyM4wEuBEH NqJsSx/0rNq1lpV1LGrkaOrukiDghyQeDWJnXQxfaPbEglxcvj1EYTt7hVDH1R159ON7C0UZV ZBfs8HE/KhSFrY1hJZRfjhJpLigZBGWslMko5jP/3lmVwjP5clf5t3mZ2gT7nY0M0A+tzuSiJ RBajDzAVfUhP6ccgLptPSeM1KZImK/4X74SSSqSzyOI7r6y9lsvgP8AOa2KQoH6oB2fgwFdVW foL+K1a9DZ9lP+pRQ/rWH5kfMa2J8fC4cVNiC9BmWP8K1sOXTAn/ge2mmubaCHwfmDf/vsy46 JEyOsAPT/vttnayLGhMGPptu9LqbzTae6H4cnDcCtv/Y4SMYyZLcOeCynP/B4I0Iduysl0DK6 du7lISZkqDGKtViqJOJgJRUHgLCHhT8P5PHhn2tn7e1eS9UTxVwR3LdkduObqwt78objrvyK4 K+qTMfG3AAebRFORWVrRaOkaF1WEfYlxHNk40k68P58qX7pPweH5Ih3IYrYzSTkeaE5JpblLO VRdtn83Kx/eRKIXcYV216AEQLh7kfGzDlvHj4JTbqcg0Db+RNBJLTW3s7BehJF5VVBQc37TIp m7SSMZnLXXnVAa+0rGwRd7+8OqpeUg2PKViDWJpo22mt0fIXjgNwpu8oH8cwPWJg2t8iii9jv WVMw0tgfK00/RwA42SUEZGmay+gZw4/CgkSjttfjvgzZyT2T35bQAFFScpjE7n5FWn6Jr8aNP e5CUOCuH9ccb2VF3wuRXDA+9ifLavvO1I95VLxybYSxaVQRwaxykN1Q7m+BdQMYDMR5J3Rn+r g6b2pQA4ozXIa7tGrJXzcIdLFApeYA5h0SpHETeMHznHyf3lBug26ikiIK9SK8UINPXY9/WdD WEt/jx1rTFj0Dldgk1uWPcevCtU3UelskVKKc0pzRDK9Q39xZd5CjZzFDNqBtKDYUC6w8PwlZ qkIrrp4Jc/NstteeqCcs4awLU2EZ672W7G1LV8+9vJYa2s2JM/kpCX0DAD71Lxpp96gIEPpfD pU/2wcDHBPnAISBOBHp6Ufn9BUzpo3Q9Hxp2YrvQ/KK+f2VauYs9yfaxcpTFj3rbhZytMLMS3 4kXQD+CJkowm3JN8x Sender: linux-pwm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pwm@vger.kernel.org The Netronix EC implements an RTC with the following functionality: - Calendar-based time keeping with single-second resolution - Automatic power-on with single-minute resolution - Alarm at single-second resolution This binding only supports timekeeping for now. Signed-off-by: Jonathan Neuschäfer --- .../bindings/mfd/netronix,ntxec.yaml | 7 +++++ .../bindings/rtc/netronix,ntxec-rtc.yaml | 27 +++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 Documentation/devicetree/bindings/rtc/netronix,ntxec-rtc.yaml -- 2.27.0 diff --git a/Documentation/devicetree/bindings/mfd/netronix,ntxec.yaml b/Documentation/devicetree/bindings/mfd/netronix,ntxec.yaml index 6562c41c5a9a9..f6a32f46f47bb 100644 --- a/Documentation/devicetree/bindings/mfd/netronix,ntxec.yaml +++ b/Documentation/devicetree/bindings/mfd/netronix,ntxec.yaml @@ -34,6 +34,9 @@ properties: pwm: $ref: ../pwm/netronix,ntxec-pwm.yaml + rtc: + $ref: ../rtc/netronix,ntxec-rtc.yaml + required: - compatible - reg @@ -61,6 +64,10 @@ examples: compatible = "netronix,ntxec-pwm"; #pwm-cells = <1>; }; + + rtc { + compatible = "netronix,ntxec-rtc"; + }; }; }; diff --git a/Documentation/devicetree/bindings/rtc/netronix,ntxec-rtc.yaml b/Documentation/devicetree/bindings/rtc/netronix,ntxec-rtc.yaml new file mode 100644 index 0000000000000..4b301ef7319c8 --- /dev/null +++ b/Documentation/devicetree/bindings/rtc/netronix,ntxec-rtc.yaml @@ -0,0 +1,27 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/rtc/netronix,ntxec-rtc.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: RTC functionality in Netronix embedded controller + +maintainers: + - Jonathan Neuschäfer + +description: | + See also Documentation/devicetree/bindings/mfd/netronix,ntxec.yaml + + The Netronix EC contains an RTC, which can be used for time-keeping, alarm, + and automatic power-on. Note that not all of this functionality is currently + supported in this binding. + +allOf: + - $ref: "rtc.yaml#" + +properties: + compatible: + const: netronix,ntxec-rtc + +required: + - compatible From patchwork Sat Jun 20 22:42:19 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: 1313773 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=L0TS6ZsL; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 49q9hC6NJdz9sSS for ; Sun, 21 Jun 2020 08:43:55 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728718AbgFTWna (ORCPT ); Sat, 20 Jun 2020 18:43:30 -0400 Received: from mout.gmx.net ([212.227.17.22]:40633 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728401AbgFTWn3 (ORCPT ); Sat, 20 Jun 2020 18:43:29 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1592692962; bh=SJkG9V9Ioa9d4mEs8B+Ts1mrBz/DoBrNbjbG0YqcoW8=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=L0TS6ZsL9wzNE0nZD/qm5ZJjxYPd9mb0bHz+Wc89GxEVngTEO1oEtUnBDPVvqWDSW utlwhk8cyNqJfnConKj8VnRLNbAfPwQZqnawGcKdQqeFVaDWjUrjK7rrApjllI0D3p O3UGHr8naeDiHytOMobzDZmzy8GMBiHrY6pwXuwk= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from longitude ([5.146.194.186]) by mail.gmx.com (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N1wll-1ilEJH1IF7-012Gjq; Sun, 21 Jun 2020 00:42:42 +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 Subject: [RFC PATCH 08/10] rtc: New driver for RTC in Netronix embedded controller Date: Sun, 21 Jun 2020 00:42:19 +0200 Message-Id: <20200620224222.1312520-7-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200620224222.1312520-1-j.neuschaefer@gmx.net> References: <20200620224222.1312520-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:ZySx5t2KwCOIhxVvsNRQk0BHTuvPhh9i+aJrLHsgVrp4vASHns/ K/Sng6XDPFxIADTuQhRqPpAiIQTxA/wGOa2PSbQbB4sTuJ0aojUJGE8Ag92fPQLXO9nJD6G QLoS+fsnoA5cMrwfz9npyau2UOADYu9551W2HpisS3/JZwVYAkM5yt+jitcvhvxSNHOoB3r YTQOJ2gOZPtscWai0xOvQ== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:qUgUBIrzrMw=:9fm4eUEqTt5MBiuFfEhduT mWFDkntqpgEtUv2Z+wMPuN4r6bAeq4tndR38mrmzCTTwLZB0Bno3n8/u/bYcNzbzPW7js1XHK IH0+7IJFAo8/zNkJueuIs2Vm5K4HlDYNbSYdeuZWeiyeHGQJrnlTjqxQpaeQpKgGUsFi+uD6m 9Bo5bpxpM+l8enZ8zhHQak2cDovMNvBpPButuelU02VA9txy2JesT0BiCHjVezk6zEYs06tPp 64+TFHcukjJBVKgBGAbDcY9pmRVV2nebwkJPRsOym1se7tp8pE2rcl0h8b5m3lyvx4Au3ymqI aywGleTVEctLo2I17590XnBgKJ9AMqT0hex7+F4ksL0KL0KBecxuNZfTOMgjqWMcBXhsi7ZLd WM7y8jYuqrIlRp6Lnx0xvzh06TpAhJ4RjsESjmxksmj0uIKsMMwKy4UAPmY+AfBG59ABCTSgF W0Ibt/Rj7q6q1EqWOCZQRpPo7NZYmmNFT9W/5LUqPjCZaSe9gtWVlbE0uaJsikLno8UESeCIj YpMuokn3nRJl3P96FPGYYAIIDesCD+zukBOBbMCIpz67yrL00VEvdVCAO9Xb0H4dzjFkbUltM q3NUyH0qYR7hKkuZdzXvNm2BWzGd5NY7wvH1U0VvjTieArI5kK2wzKvdNCuMUzPizgkrBzuBr lfQpEoOHXG+S1di3VAODVLI1OfETY6qkhihTLJxFAxwQXcToKgWd8fG5WgvBH/zYKDNenF6uz N6SL36afGnNQyz2ZWH4V3XgYysSE3xrxVpJqEHhLGb10h7iA5cXsqc4w7OIJDw1pb/Wl/2r/Z 8Q+eGujEiDuRBivpi2Cz1mpICTIOQs30isN5H6gO73nZOV2Bp8oTCCBrRVv4RJ7HqFf3VmR5g QEJ8aA8sej17imekBzYUVZecSxj8fHMUAqp5Oppdjlt3Hm5ciaR211/cKwzJx2Nt28jA4rnPP GK5hbGIXWMeKvBD0o8p+szrDJtPl+u+cH80iRBr8jJ+PA/3Q5QGZ660fK6hjyEb16NG22QKVP L/ECG3hvFjnJdNMaNEpqNriFUDIsWnGaW1J5qp3ugwvB5F4zU5R1NTJGAWdbN2r5o1BjNABnH cwybOOoZixgQqd50QSyGd2l4h3JcHriVwhM+qV3h9yKHVwkp74WsYomw9NMRgSDY3RMzOMMJP S6uvfUe03QAQM/EL+X7vKcQ1HWp91d21pH3T7c2goOl7w0GVtcclM4l3ke8BskRkHXeih4Yqh PA7OqZbtxvORAmFOC Sender: linux-pwm-owner@vger.kernel.org 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 --- drivers/rtc/Kconfig | 4 ++ drivers/rtc/Makefile | 1 + drivers/rtc/rtc-ntxec.c | 115 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 120 insertions(+) create mode 100644 drivers/rtc/rtc-ntxec.c -- 2.27.0 diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig index b54d87d45c89b..2310d08933f9c 100644 --- a/drivers/rtc/Kconfig +++ b/drivers/rtc/Kconfig @@ -1300,6 +1300,10 @@ 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 + comment "on-CPU RTC drivers" config RTC_DRV_ASM9260 diff --git a/drivers/rtc/Makefile b/drivers/rtc/Makefile index 0721752c6ed4c..8653d04aefa99 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..44d5a5eedb597 --- /dev/null +++ b/drivers/rtc/rtc-ntxec.c @@ -0,0 +1,115 @@ +// SPDX-License-Identifier: GPL-2.0-only +// Copyright 2020 Jonathan Neuschäfer + +#include +#include +#include +#include +#include +#include + +struct ntxec_rtc { + struct device *dev; + struct ntxec *ec; +}; + +#define NTXEC_WRITE_YEAR 0x10 +#define NTXEC_WRITE_MONTH 0x11 +#define NTXEC_WRITE_DAY 0x12 +#define NTXEC_WRITE_HOUR 0x13 +#define NTXEC_WRITE_MINUTE 0x14 +#define NTXEC_WRITE_SECOND 0x15 + +#define NTXEC_READ_YM 0x20 +#define NTXEC_READ_DH 0x21 +#define NTXEC_READ_MS 0x22 + + +static int ntxec_read_time(struct device *dev, struct rtc_time *tm) +{ + struct ntxec_rtc *rtc = dev_get_drvdata(dev); + int res; + + res = ntxec_read16(rtc->ec, NTXEC_READ_YM); + if (res < 0) + return res; + + tm->tm_year = (res >> 8) + 100; + tm->tm_mon = (res & 0xff) - 1; + + res = ntxec_read16(rtc->ec, NTXEC_READ_DH); + if (res < 0) + return res; + + tm->tm_mday = res >> 8; + tm->tm_hour = res & 0xff; + + res = ntxec_read16(rtc->ec, NTXEC_READ_MS); + if (res < 0) + return res; + + tm->tm_min = res >> 8; + tm->tm_sec = res & 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 |= ntxec_write8(rtc->ec, NTXEC_WRITE_YEAR, tm->tm_year - 100); + res |= ntxec_write8(rtc->ec, NTXEC_WRITE_MONTH, tm->tm_mon + 1); + res |= ntxec_write8(rtc->ec, NTXEC_WRITE_DAY, tm->tm_mday); + res |= ntxec_write8(rtc->ec, NTXEC_WRITE_HOUR, tm->tm_hour); + res |= ntxec_write8(rtc->ec, NTXEC_WRITE_MINUTE, tm->tm_min); + res |= ntxec_write8(rtc->ec, NTXEC_WRITE_SECOND, tm->tm_sec); + + return (res < 0)? -EIO : 0; +} + +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 *rtcdev; + 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); + + rtcdev = devm_rtc_device_register(&pdev->dev, "ntxec-rtc", + &ntxec_rtc_ops, THIS_MODULE); + if (IS_ERR(rtcdev)) + return PTR_ERR(rtc); + + return 0; +} + +static const struct of_device_id ntxec_rtc_of_match[] = { + { .compatible = "netronix,ntxec-rtc" }, + { }, +}; +MODULE_DEVICE_TABLE(of, ntxec_rtc_of_match); + +static struct platform_driver ntxec_rtc_driver = { + .driver = { + .name = "ntxec-rtc", + .of_match_table = ntxec_rtc_of_match, + }, + .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 Sat Jun 20 22:42:20 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: 1313776 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=JBv4w0m4; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 49q9hY3Qybz9sQt for ; Sun, 21 Jun 2020 08:44:13 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729131AbgFTWoN (ORCPT ); Sat, 20 Jun 2020 18:44:13 -0400 Received: from mout.gmx.net ([212.227.15.18]:55943 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728547AbgFTWoM (ORCPT ); Sat, 20 Jun 2020 18:44:12 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1592693002; bh=exgY33UX1mwRdxvLq8yooJTHfmjPedUVVmEPFY8Wxms=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=JBv4w0m4fUZXFqvaoIbr9dXZUDiQqmvQ4ioKKwtnNr8qgyBa4BG/kOiVOASuUfdz3 yBjIZxS3dzErvIBYnwpky1YCgS0l7H4HVKd+2uPAAPrXdkPTrfPN+8ON0/SukiY+PA sdnQbFWz+tk/LUoxvqth+RzEMaAVmP+9GtfVokZA= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from longitude ([5.146.194.186]) by mail.gmx.com (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MmlT2-1j328S1M1O-00jnKT; Sun, 21 Jun 2020 00:43:22 +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 , Rob Herring Subject: [RFC PATCH 09/10] MAINTAINERS: Add entry for Netronix embedded controller Date: Sun, 21 Jun 2020 00:42:20 +0200 Message-Id: <20200620224222.1312520-8-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200620224222.1312520-1-j.neuschaefer@gmx.net> References: <20200620224222.1312520-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:a65/Uk4zRPdbL+IjcV4kAQ99Lb08INVuwG5/wNz6bYWQ+nM3Q9r W2TutNVZXIZOUC0etTK03LElim/glyhxLFYIlDNQtixa6qEIkcInbfnpQZT8T68b1EVXG3S OWV1HTw+ppWJfHlftINozC77z0hcFIPAi8An81cPnK4/3eQPKRO8Z1pjVoICXx0dx9bF6WN tcWUPjbQ5/Su6cKOt9qiw== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:SU2qUZVZ8c0=:/3Mhge4lP4yfuQJDIZRgR0 86BKuRLH7WVPJTbL8W0owLdBkDGHeaG9UT47pAoJYP8IfeVL3vADlbKbgm+auZYEHucvgRdL9 fJFj1bp/29hGVgPQqQRRCBMlm1p5HIOTfduwrRsV8YlQOdzhXvrSqZEo8eJVjz4OygZs7Iv/6 DIUUM87Kc3wrk1pOB0rxZi7aC7fSRufRgaROttB5wGiCCnRcInBouWQEVjVFXKi4hlB7+SMr1 WKXnzEqWE7zlR4hIO+ZsEWO2GWkBWPTU8/oBDbIXEc3NQJ23PbvniHtP4U/iA1xiIzF1+TUaN y5GPteuFASACUnekidZx/icd1yhXMB3I4ND/JSEQpXptG2PUJCKmelmoaxKL9p16sStZnpd1F wgd6jzuJqEN2h9bkraoVP8uUJbWMcx/8YXLY4vIeQ4S0vWUiKZp9kqbudPBJEj9mpM2alBeK7 sNy3LNp3Ytx8wCP0I2jdZ2MylBitP0I7g1D+cLOnwweHT96RNHmDxZy/39kVd6FrS8r2PKsyp JcgZSv1f3MAnpzx4dgMB1wpSiDDtGfD0fchfdCjD9tcBhiInnd0IyVnTDFGyTIexVH9iIhH2G wREdD8OZ4r3dvpfoxtNKpBD3bXJZP8F1e8YXYI0Lnsatmai7DXd+GxmaJpokGSTSeAsOeIoxM mqb0wgkCpRb5waPJlbQ8Fy/U0xwqXB8vMLvVBAxhoCO4CbQ2pyz49doDo0Hyi38hUIFdz9V6x hksBJuOBfro5J/m7uMSsfJukLaLwEu+r/UoTkOEgXXtNj7CZZfY3Q7vHwR5gepy9sttLlzh/+ 4GjzN5wCCzT+j3aEpseGoT+0SsPohsSZVomuwXFILCuWGOy9Wd+IXo2eCayCqvmK8cRN9+lfa 5UQJgUtOpTtpbAi33x3wM3OLl7rkq93mHEszi5aBdfrMdUwgfj5pexKanUGNHMHyYyNevZIUn 2X7w8Tp3p8Mf7J5ZGAqyzTaN4fvhBeRNnT0ROTGeNentL11rZ/LuLFBGXplL1qh2F5SxymYrf RLSPnsSJfgeFExQSz2vbygeelKnnJzUNDe3UToKBr1lrCUtcRED/y7tHC5GeoZ6JBBkEVbvVx bbWlvCNUSThgpz5ROBPR37Z0ehlC51dJhQX+RZOBMlkkAVDWZVOzJ8D89/z7GsHuNFsdN5soY B10kcBiNY4+hFpQc1ZsXIMku6byA+tWotmwEO11tO6K0c1y0en7KdFhRmgxy9SD+JGec8kTpC VLzmO1z4v03UOLN2j Sender: linux-pwm-owner@vger.kernel.org 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 --- MAINTAINERS | 11 +++++++++++ 1 file changed, 11 insertions(+) -- 2.27.0 diff --git a/MAINTAINERS b/MAINTAINERS index 68f21d46614c4..d4333f7490f5d 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -11850,6 +11850,17 @@ 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: Documentation/devicetree/bindings/pwm/netronix,ntxec-pwm.yaml +F: Documentation/devicetree/bindings/rtc/netronix,ntxec-rtc.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: Jakub Kicinski L: oss-drivers@netronome.com From patchwork Sat Jun 20 22:42:21 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: 1313774 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=CFnOTQM3; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 49q9hP09f9z9sQt for ; Sun, 21 Jun 2020 08:44:05 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728861AbgFTWoE (ORCPT ); Sat, 20 Jun 2020 18:44:04 -0400 Received: from mout.gmx.net ([212.227.17.20]:60347 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728547AbgFTWoD (ORCPT ); Sat, 20 Jun 2020 18:44:03 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1592693004; bh=VyVCIBxPFyt78YSnxS+0Id2tmE8pzSJjUVG0PtP0FGo=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=CFnOTQM3hDO8qn9SOfaIxccrUDsONIICDvI+jIsmU+SlgaKoyLBeI2FNpplaFvAWy 6vY1mnLluuZd7IZt/swaQFqEX18Q7jG2KaUvebExAJHnaAawbBx2eqD9VRW6+OUS7b rt5yw5PsHF5ZMIRapjiBMysuRzC8UMFUS1FKtUgw= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from longitude ([5.146.194.186]) by mail.gmx.com (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MkYbu-1j0qH413NO-00m7VT; Sun, 21 Jun 2020 00:43:24 +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 Subject: [RFC PATCH 10/10] ARM: dts: imx50-kobo-aura: Add Netronix embedded controller Date: Sun, 21 Jun 2020 00:42:21 +0200 Message-Id: <20200620224222.1312520-9-j.neuschaefer@gmx.net> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200620224222.1312520-1-j.neuschaefer@gmx.net> References: <20200620224222.1312520-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:4FNCq66znOgeVyoZjrNrgMQNLnnTq7LrgHosR3ZKBWDuWQR51Y9 hYPhfmsJMKVLhNUIXKWpXJ8DaN+Mi7bhYl3wdJNS0UubbVPRgXNfjSkkZ5Sakhi9Sdwyrqb n/bhq7zcYZO6wnOqrkTvllNX/Rorn0iDQKN/y2kqkLi3twA6ydDRZZjvdVGpX8tOPT+hgXi qyEaws9q/M2HxQVCbgODg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:UY/7ZGF2UsM=:2TV1b5ihDM1IbSjjYU1cq1 RurzmoY+h7ogNf0pk+B8diNEMciUuUtbF+eEBnMAlAYZQAeyf7ODTcGaAYuxubkKzrw6pRrKJ u7YKup/L3RbNQoPDjcWXk4fy6YId5jZy64LSPR1WidU++P1QdFUMTRGMWdhQZRHO2wIaO1BZn pHCfee3VGUHyqGqVCsLTVs+nflPhgABgpwXuXsfcI7/8A6YfGAsPsMbNIyWSZ9tHEGmFYIrXV 9sw+s9jn3cymB1+YgQBkvFyB3pz5SCd4jYb11PbjEXKNeBh8PslQ240dM4MRaMPBzmpsfqKzd KqKZ9BV56kgqBZ0rqvOt+lJiaiIHTK5vvbTwOq4x5h0CL1x2Y7X2N8h2G0eGp8UFoJKBezwZ/ bptNe9he5o2CR60qp6N7yD0sKvcY0Zven21jgG1dd8+DHfVHZ1rN2XY2vM5U/W0niVLm/JVfB gZ33qS2Thm0GwLuVsIxhLIKT0ZlBEUFS4VhQNhi98hXbiiZYHHR53hFQzWiP1sKO3z4Our42E 0IVOARxJspuAOEqe+aXN1hCpwcfpDg+BWJ7dgKhX4N+Fnp9gHg+7KNHXbkzcIqP3V92O0rPba M9ftV0TJkC6NfKOo/SJasHwCVxlJFzkbHcbK57O4PNMZ3cxmyVNamvu46vkMKdKRcqk/EJAQq 5gia4k5YBdK+aeFaDR09cV714TJyM6Dd7A/B79plDwQs/lzQiRlQLF0dmiJwtLG7fo6xX5evk 7RPAZWCIjix7UrczoIc39V/7i7ymswXVcynXVEd0ujyQOmWG1o3RzWj450uvLgZToixsKuuUq KGZmeDaq8Or82WumlQWOQrcyRQs8dI/KM0xj/TwIUJXahH4mAfR10uTlxIFg0sLxYZognpgVP qDruGDJNBKefU/b+VzCyuE+Mda+XtDSapia4GD9fseEy/7U2DRmZ36JKDE63uKdgfZtlFXuv4 A1cEFebGf3D/i8AJaFUFevkThCFTLPmDye9CabeWM486RdZriVTukJ920ITC2cAWzpAvJV93p XAsaI1gazr2r4BfRSecIP0hsrjuO7zsDsCAWskQTzEQ4rXEshJ1HGGFJuiIEeT9lcxPRspQmB O5GzmmA+VzRqk1K63LwvFdcz0X6nWMfZjvFiFUlHSpceygtOdqA11RG8sx5tyYrT4n1tlI7Xc ijf+a/KpCxLlVe1eTikWgm3UKYCPw6bjRo7MVI9Euzi3A+UP97FKrDiq8RN+x9J1Z4DzjO667 BmUzrKMJbsAVFhh5M Sender: linux-pwm-owner@vger.kernel.org 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 --- arch/arm/boot/dts/imx50-kobo-aura.dts | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) -- 2.27.0 diff --git a/arch/arm/boot/dts/imx50-kobo-aura.dts b/arch/arm/boot/dts/imx50-kobo-aura.dts index a0eaf869b9135..003a7d894902c 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,34 @@ &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>; + interrupt-controller; + #interrupt-cells = <1>; + + ec_pwm: pwm { + compatible = "netronix,ntxec-pwm"; + #pwm-cells = <2>; + }; + + rtc { + compatible = "netronix,ntxec-rtc"; + }; + }; }; &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