Message ID | 20221220112927.440506-4-alistair@alistair23.me |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:e747:0:0:0:0:0 with SMTP id c7csp2912430wrn; Tue, 20 Dec 2022 03:33:56 -0800 (PST) X-Google-Smtp-Source: AMrXdXu+6/sgLNx8wINra9HCIgG4wOS3pzxyk3YoJLKfSRZ5Bly24Y+f1/k3z+Q9C3+gLaj+HWL0 X-Received: by 2002:a05:6402:1496:b0:46a:be66:c0e2 with SMTP id e22-20020a056402149600b0046abe66c0e2mr1637712edv.28.1671536036380; Tue, 20 Dec 2022 03:33:56 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671536036; cv=none; d=google.com; s=arc-20160816; b=vnxaRxcS3ft8ruI18HTyjlVkQaJkLt34fVQznOXhVKofXplk/Bk0o+l3S0D5J7rUYG vFKW7Dgha9/pCHHnJ/xH65XnJ2nrCkasBlcdfbynU1ddqkeyyNsdUlUeTJwM170OSPwc cLMUQbz1EHZ61GhkX8+jzPbhCR+eTWpW06DLnMsAePU+xjP4PNJOOldIEIzct0/443DD EjqCI+A8CpjJV6WMMpmrVl5tUk8hLRKmP+gDwM43/VApr8IhUE9EVD63fFH0RDf4bDu7 ZKMwtJd9l4hDIhHEa4sQHwOZp28jLUANgbrwJPUwsMpcx3Y+/11j7gS5HNdeNp7OS4An gCSA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :feedback-id:dkim-signature:dkim-signature; bh=GH62AyLJISEmcTjBHciDga5dnjECW2sy9VV41roQWv0=; b=qYaI21rlbcekRqf4dwCyWzDehXLlYoTALtYxMHXH/MwZqC/VLi4RdxosrvARFJmEUX EvswbIT0A5YUOAo7r2XxQWBw5UTLZKAql0OBqPYJZkvHubxRfrsEh/Q9LrSEnCaK9W5N E8UTg6YpyLCughbLEO3DSgyo6/7XnpTQB6wKwV/QDZ4HoU5hnWELV/TKBw+gleOOLrYR yiikFfWCWCA5k+gNtYWxCbe22O1SIhy9hA8R0uwFHVMaXgfqEB5Pk7+p308M5xxXqBJq 58BNiyoEZMmecew5z2yoi1+fkYdd1KMdIstMdtxo0+/0E6JC7xyQFk5Tr8Z+cV81cOFh nZ9Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@alistair23.me header.s=fm2 header.b=tp0a48y4; dkim=pass header.i=@messagingengine.com header.s=fm2 header.b=fMuWqlgh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id j8-20020a05640211c800b0046bdaa564bdsi13314593edw.419.2022.12.20.03.33.32; Tue, 20 Dec 2022 03:33:56 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@alistair23.me header.s=fm2 header.b=tp0a48y4; dkim=pass header.i=@messagingengine.com header.s=fm2 header.b=fMuWqlgh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229563AbiLTLaL (ORCPT <rfc822;abdi.embedded@gmail.com> + 99 others); Tue, 20 Dec 2022 06:30:11 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44820 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233289AbiLTLaC (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Tue, 20 Dec 2022 06:30:02 -0500 Received: from wout1-smtp.messagingengine.com (wout1-smtp.messagingengine.com [64.147.123.24]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EF6DE19025; Tue, 20 Dec 2022 03:29:59 -0800 (PST) Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.west.internal (Postfix) with ESMTP id 7AB6A32001FC; Tue, 20 Dec 2022 06:29:58 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute4.internal (MEProxy); Tue, 20 Dec 2022 06:29:59 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alistair23.me; h=cc:cc:content-transfer-encoding:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to; s=fm2; t=1671535798; x= 1671622198; bh=GH62AyLJISEmcTjBHciDga5dnjECW2sy9VV41roQWv0=; b=t p0a48y4Y6UYshSG7vSDLEot48wotk0RaWvXvZooFKY6lLzQAk0slevWW5cmlkFfv ZfXIKJaW17R8GugGjFbRNBCBcAmTkNyVp1p0k8hXoaJssbx++4L0kCR6MAywYCd1 2fnYqSZAZnCHQTynrXkj9bLhtKO0INGflSm+AY5Eqa50MzAQTnSPqNgFxsT7xXWw 2wv9F14M6043W03FQTDlw1fa0xowWBnADOZJ53NDCz5hBJVZEe4pPuBEraQztlzh VLXO6y4u9PLJkLVOWoiNSSWTHEVw3kUfjs9aIWn60U8ndG2OLk/M915lmeD1O7wz 0tn7LYqrHZ8sL9RD3QysA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:sender:subject :subject:to:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm2; t=1671535798; x=1671622198; bh=GH62AyLJISEmc TjBHciDga5dnjECW2sy9VV41roQWv0=; b=fMuWqlgh4hoGBf12Wfvr8+pXtPwE7 ij/6KFzaxwY72zWhvcB8EsG06TzuAd4QlRoEFhoL4grNhpWuX/k64hFPr3xU/Ys8 gpr/9AamqirqmbK50e5mra6Dh06HiSux9K7Ok/qTuoNNt+tQNkiCNhSaYHjrgixk rnMVoD1tjSUCoZRh02PiQEvNLPrLtujZnRuvCSQPBoKNRn+32ZrEQWYaKs0amILs 9MKUZZvc1lZCzakgxhmVOILQ2S6mzX0cBremAyIIYxgZupOt5ScgH5ZP1F5h8hj8 TMzWUN4otPKIBwA75BI0mmGk8psvbvTNwMqYOPGzQDsp9v/fBP7CE1aCw== X-ME-Sender: <xms:tZyhYxTNHc5KMZt8H_0a_zoLgbjX3ZUoUQY3Y1q2CPkFSNoO4UHJjw> <xme:tZyhY6xlVjc6r4g6yVJQljYtxDrAumC1lHofuH1Rviw1VuWQuuHgSMmkEL1UrWwlv qGWHwNBQSvRQCgqtNY> X-ME-Received: <xmr:tZyhY20qEgmJ9pkphL4Tkdz0QGLXoagGUUqbeVIFGaCaKlpi-1dr2vLdnMs_BACiJf0bkNWNE_Yv> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrgeeigddtudcutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecunecujfgurhephffvvefufffkofgjfhgggfestdekre dtredttdenucfhrhhomheptehlihhsthgrihhrucfhrhgrnhgtihhsuceorghlihhsthgr ihhrsegrlhhishhtrghirhdvfedrmhgvqeenucggtffrrghtthgvrhhnpeeitdefkeetle dvleevveeuueejffeugfeuvdetkeevjeejueetudeftefhgfehheenucevlhhushhtvghr ufhiiigvpedunecurfgrrhgrmhepmhgrihhlfhhrohhmpegrlhhishhtrghirhesrghlih hsthgrihhrvdefrdhmvg X-ME-Proxy: <xmx:tZyhY5BqORa9miBJdauQ6lVwjORAnptZLFO3XPATf9otNRhVUvgHLg> <xmx:tZyhY6iDM2Vcngq9e2V1M5p_vOSVG9gRRJdssEPr0gxqbOJBWUlcGA> <xmx:tZyhY9qa_u5N_iycrWgznCFpZQVMpXtn03tXifBh23BPIXiP1Dfx3A> <xmx:tpyhYxTHLA9T2GXkv3ko7Q7QPHIguviTpbcOwdy_wfasCSuZbFWaBA> Feedback-ID: ifd214418:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 20 Dec 2022 06:29:52 -0500 (EST) From: Alistair Francis <alistair@alistair23.me> To: linux-kernel@vger.kernel.org, shawnguo@kernel.org, linux-arm-kernel@lists.infradead.org, linux-imx@nxp.com, s.hauer@pengutronix.de, robh+dt@kernel.org, devicetree@vger.kernel.org, krzysztof.kozlowski+dt@linaro.org Cc: linux@armlinux.org.uk, festevam@gmail.com, kernel@pengutronix.de, arnd@arndb.de, alistair23@gmail.com, jernej.skrabec@gmail.com, Alistair Francis <alistair@alistair23.me> Subject: [PATCH v2 3/3] ARM: dts: imx7d-remarkable2: Enable the rohm,bd71815 Date: Tue, 20 Dec 2022 21:29:27 +1000 Message-Id: <20221220112927.440506-4-alistair@alistair23.me> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221220112927.440506-1-alistair@alistair23.me> References: <20221220112927.440506-1-alistair@alistair23.me> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1752732571334154397?= X-GMAIL-MSGID: =?utf-8?q?1752732571334154397?= |
Series |
imx7d-remarkable2: Enable cyttsp5 and rohm,bd71815
|
|
Commit Message
Alistair Francis
Dec. 20, 2022, 11:29 a.m. UTC
Add support for the rohm,bd71815 power controller controller for the
reMarkable 2.
Signed-off-by: Alistair Francis <alistair@alistair23.me>
---
arch/arm/boot/dts/imx7d-remarkable2.dts | 159 ++++++++++++++++++++++++
1 file changed, 159 insertions(+)
Comments
Hi Alistair, thanks for your patch, please see below. On 22-12-20, Alistair Francis wrote: > Add support for the rohm,bd71815 power controller controller for the > reMarkable 2. > > Signed-off-by: Alistair Francis <alistair@alistair23.me> > --- > arch/arm/boot/dts/imx7d-remarkable2.dts | 159 ++++++++++++++++++++++++ > 1 file changed, 159 insertions(+) > > diff --git a/arch/arm/boot/dts/imx7d-remarkable2.dts b/arch/arm/boot/dts/imx7d-remarkable2.dts > index a138b292ec6a..4387d30d6180 100644 > --- a/arch/arm/boot/dts/imx7d-remarkable2.dts > +++ b/arch/arm/boot/dts/imx7d-remarkable2.dts > @@ -92,6 +92,10 @@ wifi_pwrseq: wifi_pwrseq { > }; > }; > > +&cpu0 { > + cpu-supply = <&buck1_reg>; > +}; > + > &clks { > assigned-clocks = <&clks IMX7D_CLKO2_ROOT_SRC>, > <&clks IMX7D_CLKO2_ROOT_DIV>; > @@ -119,6 +123,148 @@ wacom_digitizer: digitizer@9 { > }; > }; > > +&i2c2 { > + clock-frequency = <100000>; We can set this now to 400kHz since the driver can handle quirks now internal. > + pinctrl-names = "default", "sleep"; > + pinctrl-0 = <&pinctrl_i2c2>; > + pinctrl-1 = <&pinctrl_i2c2>; Do we need a "sleep" config here since this will be the same configuration as the "default" one. > + status = "okay"; > + > + bd71815: pmic@4b { > + compatible = "rohm,bd71815"; > + reg = <0x4b>; > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_bd71815>; > + interrupt-parent = <&gpio6>; /* PMIC_INT_B GPIO6_IO16 */ > + interrupts = <16 IRQ_TYPE_LEVEL_LOW>; > + gpio-controller; > + clocks = <&clks IMX7D_CLKO2_ROOT_SRC>; > + clock-output-names = "bd71815-32k-out"; > + #clock-cells = <0>; > + #gpio-cells = <1>; > + > + regulators { > + #address-cells = <1>; > + #size-cells = <0>; > + > + buck1_reg: regulator@0 { > + reg = <0>; > + regulator-compatible = "buck1"; > + regulator-min-microvolt = <800000>; > + regulator-max-microvolt = <2000000>; > + regulator-boot-on; > + regulator-always-on; > + regulator-ramp-delay = <1250>; > + }; > + > + buck2_reg: regulator@1 { > + reg = <1>; > + regulator-compatible = "buck2"; > + regulator-min-microvolt = <800000>; > + regulator-max-microvolt = <2000000>; > + regulator-boot-on; > + regulator-always-on; > + regulator-ramp-delay = <1250>; > + }; > + > + buck3_reg: regulator@2 { > + reg = <2>; > + regulator-compatible = "buck3"; > + regulator-min-microvolt = <1200000>; > + regulator-max-microvolt = <2700000>; > + regulator-boot-on; > + regulator-always-on; > + }; > + > + buck4_reg: regulator@3 { > + reg = <3>; > + regulator-compatible = "buck4"; > + regulator-min-microvolt = <1100000>; > + regulator-max-microvolt = <1850000>; > + regulator-boot-on; > + regulator-always-on; > + }; > + > + buck5_reg: regulator@4 { > + reg = <4>; > + regulator-compatible = "buck5"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <3300000>; > + regulator-boot-on; > + regulator-always-on; > + }; > + > + ldo1_reg: regulator@5 { > + reg = <5>; > + regulator-compatible = "ldo1"; > + regulator-min-microvolt = <800000>; > + regulator-max-microvolt = <3300000>; > + regulator-boot-on; > + regulator-always-on; > + }; > + > + ldo2_reg: regulator@6 { > + reg = <6>; > + regulator-compatible = "ldo2"; > + regulator-min-microvolt = <800000>; > + regulator-max-microvolt = <3300000>; > + regulator-boot-on; > + regulator-always-on; > + }; > + > + ldo3_reg: regulator@7 { > + reg = <7>; > + regulator-compatible = "ldo3"; > + regulator-min-microvolt = <800000>; > + regulator-max-microvolt = <3300000>; > + regulator-boot-on; > + regulator-always-on; > + }; > + > + ldo4_reg: regulator@8 { > + reg = <8>; > + regulator-compatible = "ldo4"; > + regulator-min-microvolt = <800000>; > + regulator-max-microvolt = <3300000>; > + regulator-boot-on; > + regulator-always-on; > + }; > + > + ldo5_reg: regulator@9 { > + reg = <9>; > + regulator-compatible = "ldo5"; > + regulator-min-microvolt = <800000>; > + regulator-max-microvolt = <3300000>; > + regulator-boot-on; > + regulator-always-on; > + }; > + > + dvref_reg: regulator@a { > + reg = <0xa>; > + regulator-compatible = "dvref"; > + regulator-boot-on; > + regulator-always-on; > + }; > + > + lpsr_reg: regulator@b { > + reg = <0xb>; > + regulator-compatible = "lpsr"; > + regulator-boot-on; > + regulator-always-on; > + }; > + > + wled_reg: regulator@c { > + reg = <0xc>; > + regulator-compatible = "wled"; > + regulator-min-microamp = <10>; > + regulator-max-microamp = <25000>; > + regulator-boot-on; > + regulator-always-on; > + }; Note: You have marked all regulators as always on, this is rather suboptimal due to power consumption. Regards, Marco > + }; > + }; > +}; > + > &i2c3 { > clock-frequency = <100000>; > pinctrl-names = "default"; > @@ -293,6 +439,12 @@ MX7D_PAD_LPSR_GPIO1_IO01__GPIO1_IO1 0x00000034 /* WACOM INT */ > }; > > &iomuxc { > + pinctrl_bd71815: bd71815grp { > + fsl,pins = < > + MX7D_PAD_SAI1_RX_SYNC__GPIO6_IO16 0x59 > + >; > + }; > + > pinctrl_brcm_reg: brcmreggrp { > fsl,pins = < > /* WIFI_PWR_EN */ > @@ -323,6 +475,13 @@ MX7D_PAD_I2C1_SCL__I2C1_SCL 0x4000007f > >; > }; > > + pinctrl_i2c2: i2c2grp { > + fsl,pins = < > + MX7D_PAD_I2C2_SDA__I2C2_SDA 0x4000007f > + MX7D_PAD_I2C2_SCL__I2C2_SCL 0x4000007f > + >; > + }; > + > pinctrl_i2c3: i2c3grp { > fsl,pins = < > MX7D_PAD_I2C3_SDA__I2C3_SDA 0x4000007f > -- > 2.38.1 > > >
On Tue, Dec 20, 2022 at 11:17 PM Marco Felsch <m.felsch@pengutronix.de> wrote: > > Hi Alistair, > > thanks for your patch, please see below. > > On 22-12-20, Alistair Francis wrote: > > Add support for the rohm,bd71815 power controller controller for the > > reMarkable 2. > > > > Signed-off-by: Alistair Francis <alistair@alistair23.me> > > --- > > arch/arm/boot/dts/imx7d-remarkable2.dts | 159 ++++++++++++++++++++++++ > > 1 file changed, 159 insertions(+) > > > > diff --git a/arch/arm/boot/dts/imx7d-remarkable2.dts b/arch/arm/boot/dts/imx7d-remarkable2.dts > > index a138b292ec6a..4387d30d6180 100644 > > --- a/arch/arm/boot/dts/imx7d-remarkable2.dts > > +++ b/arch/arm/boot/dts/imx7d-remarkable2.dts > > @@ -92,6 +92,10 @@ wifi_pwrseq: wifi_pwrseq { > > }; > > }; > > > > +&cpu0 { > > + cpu-supply = <&buck1_reg>; > > +}; > > + > > &clks { > > assigned-clocks = <&clks IMX7D_CLKO2_ROOT_SRC>, > > <&clks IMX7D_CLKO2_ROOT_DIV>; > > @@ -119,6 +123,148 @@ wacom_digitizer: digitizer@9 { > > }; > > }; > > > > +&i2c2 { > > + clock-frequency = <100000>; > > We can set this now to 400kHz since the driver can handle quirks now > internal. After a discussion on the first patch I'm going to leave this as is. Let me know if you do want me to change it. > > > + pinctrl-names = "default", "sleep"; > > + pinctrl-0 = <&pinctrl_i2c2>; > > + pinctrl-1 = <&pinctrl_i2c2>; > > Do we need a "sleep" config here since this will be the same > configuration as the "default" one. Nope, dropped. > > > + status = "okay"; > > + > > + bd71815: pmic@4b { > > + compatible = "rohm,bd71815"; > > + reg = <0x4b>; > > + pinctrl-names = "default"; > > + pinctrl-0 = <&pinctrl_bd71815>; > > + interrupt-parent = <&gpio6>; /* PMIC_INT_B GPIO6_IO16 */ > > + interrupts = <16 IRQ_TYPE_LEVEL_LOW>; > > + gpio-controller; > > + clocks = <&clks IMX7D_CLKO2_ROOT_SRC>; > > + clock-output-names = "bd71815-32k-out"; > > + #clock-cells = <0>; > > + #gpio-cells = <1>; > > + > > + regulators { > > + #address-cells = <1>; > > + #size-cells = <0>; > > + > > + buck1_reg: regulator@0 { > > + reg = <0>; > > + regulator-compatible = "buck1"; > > + regulator-min-microvolt = <800000>; > > + regulator-max-microvolt = <2000000>; > > + regulator-boot-on; > > + regulator-always-on; > > + regulator-ramp-delay = <1250>; > > + }; > > + > > + buck2_reg: regulator@1 { > > + reg = <1>; > > + regulator-compatible = "buck2"; > > + regulator-min-microvolt = <800000>; > > + regulator-max-microvolt = <2000000>; > > + regulator-boot-on; > > + regulator-always-on; > > + regulator-ramp-delay = <1250>; > > + }; > > + > > + buck3_reg: regulator@2 { > > + reg = <2>; > > + regulator-compatible = "buck3"; > > + regulator-min-microvolt = <1200000>; > > + regulator-max-microvolt = <2700000>; > > + regulator-boot-on; > > + regulator-always-on; > > + }; > > + > > + buck4_reg: regulator@3 { > > + reg = <3>; > > + regulator-compatible = "buck4"; > > + regulator-min-microvolt = <1100000>; > > + regulator-max-microvolt = <1850000>; > > + regulator-boot-on; > > + regulator-always-on; > > + }; > > + > > + buck5_reg: regulator@4 { > > + reg = <4>; > > + regulator-compatible = "buck5"; > > + regulator-min-microvolt = <1800000>; > > + regulator-max-microvolt = <3300000>; > > + regulator-boot-on; > > + regulator-always-on; > > + }; > > + > > + ldo1_reg: regulator@5 { > > + reg = <5>; > > + regulator-compatible = "ldo1"; > > + regulator-min-microvolt = <800000>; > > + regulator-max-microvolt = <3300000>; > > + regulator-boot-on; > > + regulator-always-on; > > + }; > > + > > + ldo2_reg: regulator@6 { > > + reg = <6>; > > + regulator-compatible = "ldo2"; > > + regulator-min-microvolt = <800000>; > > + regulator-max-microvolt = <3300000>; > > + regulator-boot-on; > > + regulator-always-on; > > + }; > > + > > + ldo3_reg: regulator@7 { > > + reg = <7>; > > + regulator-compatible = "ldo3"; > > + regulator-min-microvolt = <800000>; > > + regulator-max-microvolt = <3300000>; > > + regulator-boot-on; > > + regulator-always-on; > > + }; > > + > > + ldo4_reg: regulator@8 { > > + reg = <8>; > > + regulator-compatible = "ldo4"; > > + regulator-min-microvolt = <800000>; > > + regulator-max-microvolt = <3300000>; > > + regulator-boot-on; > > + regulator-always-on; > > + }; > > + > > + ldo5_reg: regulator@9 { > > + reg = <9>; > > + regulator-compatible = "ldo5"; > > + regulator-min-microvolt = <800000>; > > + regulator-max-microvolt = <3300000>; > > + regulator-boot-on; > > + regulator-always-on; > > + }; > > + > > + dvref_reg: regulator@a { > > + reg = <0xa>; > > + regulator-compatible = "dvref"; > > + regulator-boot-on; > > + regulator-always-on; > > + }; > > + > > + lpsr_reg: regulator@b { > > + reg = <0xb>; > > + regulator-compatible = "lpsr"; > > + regulator-boot-on; > > + regulator-always-on; > > + }; > > + > > + wled_reg: regulator@c { > > + reg = <0xc>; > > + regulator-compatible = "wled"; > > + regulator-min-microamp = <10>; > > + regulator-max-microamp = <25000>; > > + regulator-boot-on; > > + regulator-always-on; > > + }; > > Note: You have marked all regulators as always on, this is rather > suboptimal due to power consumption. Good point. The power consumption is already pretty bad, as mainline doesn't support the i.MX deep sleep. As I know this works I'd like to keep it as is. I'll test to see if removing them doesn't break anything and then send a follow up patch. Alistair > > Regards, > Marco >
ma 9. tammik. 2023 klo 14.32 Alistair Francis (alistair23@gmail.com) kirjoitti: > > On Tue, Dec 20, 2022 at 11:17 PM Marco Felsch <m.felsch@pengutronix.de> wrote: > > > > Hi Alistair, > > > > thanks for your patch, please see below. > > > > On 22-12-20, Alistair Francis wrote: > > > Add support for the rohm,bd71815 power controller controller for the > > > reMarkable 2. > > > > > > Signed-off-by: Alistair Francis <alistair@alistair23.me> > > > --- > > > arch/arm/boot/dts/imx7d-remarkable2.dts | 159 ++++++++++++++++++++++++ > > > 1 file changed, 159 insertions(+) > > > > > > diff --git a/arch/arm/boot/dts/imx7d-remarkable2.dts b/arch/arm/boot/dts/imx7d-remarkable2.dts > > > index a138b292ec6a..4387d30d6180 100644 > > > --- a/arch/arm/boot/dts/imx7d-remarkable2.dts > > > +++ b/arch/arm/boot/dts/imx7d-remarkable2.dts > > > @@ -92,6 +92,10 @@ wifi_pwrseq: wifi_pwrseq { > > > }; > > > }; > > > > > > +&cpu0 { > > > + cpu-supply = <&buck1_reg>; > > > +}; > > > + > > > &clks { > > > assigned-clocks = <&clks IMX7D_CLKO2_ROOT_SRC>, > > > <&clks IMX7D_CLKO2_ROOT_DIV>; > > > @@ -119,6 +123,148 @@ wacom_digitizer: digitizer@9 { > > > }; > > > }; > > > > > > +&i2c2 { > > > + clock-frequency = <100000>; > > > > We can set this now to 400kHz since the driver can handle quirks now > > internal. > > After a discussion on the first patch I'm going to leave this as is. > Let me know if you do want me to change it. > > > > > > + pinctrl-names = "default", "sleep"; > > > + pinctrl-0 = <&pinctrl_i2c2>; > > > + pinctrl-1 = <&pinctrl_i2c2>; > > > > Do we need a "sleep" config here since this will be the same > > configuration as the "default" one. > > Nope, dropped. > > > > > > + status = "okay"; > > > + > > > + bd71815: pmic@4b { > > > + compatible = "rohm,bd71815"; > > > + reg = <0x4b>; > > > + pinctrl-names = "default"; > > > + pinctrl-0 = <&pinctrl_bd71815>; > > > + interrupt-parent = <&gpio6>; /* PMIC_INT_B GPIO6_IO16 */ > > > + interrupts = <16 IRQ_TYPE_LEVEL_LOW>; > > > + gpio-controller; > > > + clocks = <&clks IMX7D_CLKO2_ROOT_SRC>; > > > + clock-output-names = "bd71815-32k-out"; > > > + #clock-cells = <0>; > > > + #gpio-cells = <1>; > > > + > > > + regulators { > > > + #address-cells = <1>; > > > + #size-cells = <0>; > > > + > > > + buck1_reg: regulator@0 { > > > + reg = <0>; > > > + regulator-compatible = "buck1"; > > > + regulator-min-microvolt = <800000>; > > > + regulator-max-microvolt = <2000000>; > > > + regulator-boot-on; > > > + regulator-always-on; > > > + regulator-ramp-delay = <1250>; > > > + }; > > > + > > > + buck2_reg: regulator@1 { > > > + reg = <1>; > > > + regulator-compatible = "buck2"; > > > + regulator-min-microvolt = <800000>; > > > + regulator-max-microvolt = <2000000>; > > > + regulator-boot-on; > > > + regulator-always-on; > > > + regulator-ramp-delay = <1250>; > > > + }; > > > + > > > + buck3_reg: regulator@2 { > > > + reg = <2>; > > > + regulator-compatible = "buck3"; > > > + regulator-min-microvolt = <1200000>; > > > + regulator-max-microvolt = <2700000>; > > > + regulator-boot-on; > > > + regulator-always-on; > > > + }; > > > + > > > + buck4_reg: regulator@3 { > > > + reg = <3>; > > > + regulator-compatible = "buck4"; > > > + regulator-min-microvolt = <1100000>; > > > + regulator-max-microvolt = <1850000>; > > > + regulator-boot-on; > > > + regulator-always-on; > > > + }; > > > + > > > + buck5_reg: regulator@4 { > > > + reg = <4>; > > > + regulator-compatible = "buck5"; > > > + regulator-min-microvolt = <1800000>; > > > + regulator-max-microvolt = <3300000>; > > > + regulator-boot-on; > > > + regulator-always-on; > > > + }; > > > + > > > + ldo1_reg: regulator@5 { > > > + reg = <5>; > > > + regulator-compatible = "ldo1"; > > > + regulator-min-microvolt = <800000>; > > > + regulator-max-microvolt = <3300000>; > > > + regulator-boot-on; > > > + regulator-always-on; > > > + }; > > > + > > > + ldo2_reg: regulator@6 { > > > + reg = <6>; > > > + regulator-compatible = "ldo2"; > > > + regulator-min-microvolt = <800000>; > > > + regulator-max-microvolt = <3300000>; > > > + regulator-boot-on; > > > + regulator-always-on; > > > + }; > > > + > > > + ldo3_reg: regulator@7 { > > > + reg = <7>; > > > + regulator-compatible = "ldo3"; > > > + regulator-min-microvolt = <800000>; > > > + regulator-max-microvolt = <3300000>; > > > + regulator-boot-on; > > > + regulator-always-on; > > > + }; > > > + > > > + ldo4_reg: regulator@8 { > > > + reg = <8>; > > > + regulator-compatible = "ldo4"; > > > + regulator-min-microvolt = <800000>; > > > + regulator-max-microvolt = <3300000>; > > > + regulator-boot-on; > > > + regulator-always-on; > > > + }; > > > + > > > + ldo5_reg: regulator@9 { > > > + reg = <9>; > > > + regulator-compatible = "ldo5"; > > > + regulator-min-microvolt = <800000>; > > > + regulator-max-microvolt = <3300000>; > > > + regulator-boot-on; > > > + regulator-always-on; > > > + }; > > > + > > > + dvref_reg: regulator@a { > > > + reg = <0xa>; > > > + regulator-compatible = "dvref"; > > > + regulator-boot-on; > > > + regulator-always-on; > > > + }; > > > + > > > + lpsr_reg: regulator@b { > > > + reg = <0xb>; > > > + regulator-compatible = "lpsr"; > > > + regulator-boot-on; > > > + regulator-always-on; > > > + }; > > > + > > > + wled_reg: regulator@c { > > > + reg = <0xc>; > > > + regulator-compatible = "wled"; > > > + regulator-min-microamp = <10>; > > > + regulator-max-microamp = <25000>; > > > + regulator-boot-on; > > > + regulator-always-on; > > > + }; > > > > Note: You have marked all regulators as always on, this is rather > > suboptimal due to power consumption. > > Good point. The power consumption is already pretty bad, as mainline > doesn't support the i.MX deep sleep. As I know this works I'd like to > keep it as is. I'll test to see if removing them doesn't break > anything and then send a follow up patch. I'd like to suggest also seeing what removing the "regulator-boot-on" causes. As far as I understand, the "regulator-boot-on" mainly (only?) intended to be used in situations where the regulator state can not be reliably read from the hardware at the boot-up. AFAIR, unlike the BD71837 and BD71847, the BD71815 does not have this limitation. (This is just my understanding - which is based on some age-old discussions with Mark Brown - hence this comment is just a suggestion to try this while testing, not a comment intended to be demanding for a change) Yours Matti
On Tue, Jan 10, 2023 at 5:13 AM Matti Vaittinen <mazziesaccount@gmail.com> wrote: > > ma 9. tammik. 2023 klo 14.32 Alistair Francis (alistair23@gmail.com) kirjoitti: > > > > On Tue, Dec 20, 2022 at 11:17 PM Marco Felsch <m.felsch@pengutronix.de> wrote: > > > > > > Hi Alistair, > > > > > > thanks for your patch, please see below. > > > > > > On 22-12-20, Alistair Francis wrote: > > > > Add support for the rohm,bd71815 power controller controller for the > > > > reMarkable 2. > > > > > > > > Signed-off-by: Alistair Francis <alistair@alistair23.me> > > > > --- > > > > arch/arm/boot/dts/imx7d-remarkable2.dts | 159 ++++++++++++++++++++++++ > > > > 1 file changed, 159 insertions(+) > > > > > > > > diff --git a/arch/arm/boot/dts/imx7d-remarkable2.dts b/arch/arm/boot/dts/imx7d-remarkable2.dts > > > > index a138b292ec6a..4387d30d6180 100644 > > > > --- a/arch/arm/boot/dts/imx7d-remarkable2.dts > > > > +++ b/arch/arm/boot/dts/imx7d-remarkable2.dts > > > > @@ -92,6 +92,10 @@ wifi_pwrseq: wifi_pwrseq { > > > > }; > > > > }; > > > > > > > > +&cpu0 { > > > > + cpu-supply = <&buck1_reg>; > > > > +}; > > > > + > > > > &clks { > > > > assigned-clocks = <&clks IMX7D_CLKO2_ROOT_SRC>, > > > > <&clks IMX7D_CLKO2_ROOT_DIV>; > > > > @@ -119,6 +123,148 @@ wacom_digitizer: digitizer@9 { > > > > }; > > > > }; > > > > > > > > +&i2c2 { > > > > + clock-frequency = <100000>; > > > > > > We can set this now to 400kHz since the driver can handle quirks now > > > internal. > > > > After a discussion on the first patch I'm going to leave this as is. > > Let me know if you do want me to change it. > > > > > > > > > + pinctrl-names = "default", "sleep"; > > > > + pinctrl-0 = <&pinctrl_i2c2>; > > > > + pinctrl-1 = <&pinctrl_i2c2>; > > > > > > Do we need a "sleep" config here since this will be the same > > > configuration as the "default" one. > > > > Nope, dropped. > > > > > > > > > + status = "okay"; > > > > + > > > > + bd71815: pmic@4b { > > > > + compatible = "rohm,bd71815"; > > > > + reg = <0x4b>; > > > > + pinctrl-names = "default"; > > > > + pinctrl-0 = <&pinctrl_bd71815>; > > > > + interrupt-parent = <&gpio6>; /* PMIC_INT_B GPIO6_IO16 */ > > > > + interrupts = <16 IRQ_TYPE_LEVEL_LOW>; > > > > + gpio-controller; > > > > + clocks = <&clks IMX7D_CLKO2_ROOT_SRC>; > > > > + clock-output-names = "bd71815-32k-out"; > > > > + #clock-cells = <0>; > > > > + #gpio-cells = <1>; > > > > + > > > > + regulators { > > > > + #address-cells = <1>; > > > > + #size-cells = <0>; > > > > + > > > > + buck1_reg: regulator@0 { > > > > + reg = <0>; > > > > + regulator-compatible = "buck1"; > > > > + regulator-min-microvolt = <800000>; > > > > + regulator-max-microvolt = <2000000>; > > > > + regulator-boot-on; > > > > + regulator-always-on; > > > > + regulator-ramp-delay = <1250>; > > > > + }; > > > > + > > > > + buck2_reg: regulator@1 { > > > > + reg = <1>; > > > > + regulator-compatible = "buck2"; > > > > + regulator-min-microvolt = <800000>; > > > > + regulator-max-microvolt = <2000000>; > > > > + regulator-boot-on; > > > > + regulator-always-on; > > > > + regulator-ramp-delay = <1250>; > > > > + }; > > > > + > > > > + buck3_reg: regulator@2 { > > > > + reg = <2>; > > > > + regulator-compatible = "buck3"; > > > > + regulator-min-microvolt = <1200000>; > > > > + regulator-max-microvolt = <2700000>; > > > > + regulator-boot-on; > > > > + regulator-always-on; > > > > + }; > > > > + > > > > + buck4_reg: regulator@3 { > > > > + reg = <3>; > > > > + regulator-compatible = "buck4"; > > > > + regulator-min-microvolt = <1100000>; > > > > + regulator-max-microvolt = <1850000>; > > > > + regulator-boot-on; > > > > + regulator-always-on; > > > > + }; > > > > + > > > > + buck5_reg: regulator@4 { > > > > + reg = <4>; > > > > + regulator-compatible = "buck5"; > > > > + regulator-min-microvolt = <1800000>; > > > > + regulator-max-microvolt = <3300000>; > > > > + regulator-boot-on; > > > > + regulator-always-on; > > > > + }; > > > > + > > > > + ldo1_reg: regulator@5 { > > > > + reg = <5>; > > > > + regulator-compatible = "ldo1"; > > > > + regulator-min-microvolt = <800000>; > > > > + regulator-max-microvolt = <3300000>; > > > > + regulator-boot-on; > > > > + regulator-always-on; > > > > + }; > > > > + > > > > + ldo2_reg: regulator@6 { > > > > + reg = <6>; > > > > + regulator-compatible = "ldo2"; > > > > + regulator-min-microvolt = <800000>; > > > > + regulator-max-microvolt = <3300000>; > > > > + regulator-boot-on; > > > > + regulator-always-on; > > > > + }; > > > > + > > > > + ldo3_reg: regulator@7 { > > > > + reg = <7>; > > > > + regulator-compatible = "ldo3"; > > > > + regulator-min-microvolt = <800000>; > > > > + regulator-max-microvolt = <3300000>; > > > > + regulator-boot-on; > > > > + regulator-always-on; > > > > + }; > > > > + > > > > + ldo4_reg: regulator@8 { > > > > + reg = <8>; > > > > + regulator-compatible = "ldo4"; > > > > + regulator-min-microvolt = <800000>; > > > > + regulator-max-microvolt = <3300000>; > > > > + regulator-boot-on; > > > > + regulator-always-on; > > > > + }; > > > > + > > > > + ldo5_reg: regulator@9 { > > > > + reg = <9>; > > > > + regulator-compatible = "ldo5"; > > > > + regulator-min-microvolt = <800000>; > > > > + regulator-max-microvolt = <3300000>; > > > > + regulator-boot-on; > > > > + regulator-always-on; > > > > + }; > > > > + > > > > + dvref_reg: regulator@a { > > > > + reg = <0xa>; > > > > + regulator-compatible = "dvref"; > > > > + regulator-boot-on; > > > > + regulator-always-on; > > > > + }; > > > > + > > > > + lpsr_reg: regulator@b { > > > > + reg = <0xb>; > > > > + regulator-compatible = "lpsr"; > > > > + regulator-boot-on; > > > > + regulator-always-on; > > > > + }; > > > > + > > > > + wled_reg: regulator@c { > > > > + reg = <0xc>; > > > > + regulator-compatible = "wled"; > > > > + regulator-min-microamp = <10>; > > > > + regulator-max-microamp = <25000>; > > > > + regulator-boot-on; > > > > + regulator-always-on; > > > > + }; > > > > > > Note: You have marked all regulators as always on, this is rather > > > suboptimal due to power consumption. > > > > Good point. The power consumption is already pretty bad, as mainline > > doesn't support the i.MX deep sleep. As I know this works I'd like to > > keep it as is. I'll test to see if removing them doesn't break > > anything and then send a follow up patch. > > I'd like to suggest also seeing what removing the "regulator-boot-on" > causes. As far as I understand, the "regulator-boot-on" mainly (only?) > intended to be used in situations where the regulator state can not be > reliably read from the hardware at the boot-up. AFAIR, unlike the > BD71837 and BD71847, > the BD71815 does not have this limitation. (This is just my > understanding - which is based on some age-old discussions with Mark > Brown - hence this comment is just a suggestion to try this while > testing, not a comment intended to be demanding for a change) I have tried removing both "regulator-boot-on" and "regulator-always-on". After one boot to userspace (where the display didn't work correctly) the device now seems to not power up at all. Even u-boot is failing to start. I'm not sure if the regulators are now in some strange state or if something is fried. I'm currently waiting for the battery to discharge to see if that helps. Alistair > > Yours > Matti > > -- > > Matti Vaittinen > Linux kernel developer at ROHM Semiconductors > Oulu Finland > > ~~ When things go utterly wrong vim users can always type :help! ~~ > > Discuss - Estimate - Plan - Report and finally accomplish this: > void do_work(int time) __attribute__ ((const));
On 1/20/23 11:17, Alistair Francis wrote: > On Tue, Jan 10, 2023 at 5:13 AM Matti Vaittinen > <mazziesaccount@gmail.com> wrote: >> >> ma 9. tammik. 2023 klo 14.32 Alistair Francis (alistair23@gmail.com) kirjoitti: >>> >>> On Tue, Dec 20, 2022 at 11:17 PM Marco Felsch <m.felsch@pengutronix.de> wrote: >>>> >>>> Hi Alistair, >>>> >>>> thanks for your patch, please see below. >>>> >>>> On 22-12-20, Alistair Francis wrote: >>>>> Add support for the rohm,bd71815 power controller controller for the >>>>> reMarkable 2. >>>>> >>>>> Signed-off-by: Alistair Francis <alistair@alistair23.me> >>>>> --- >>>>> arch/arm/boot/dts/imx7d-remarkable2.dts | 159 ++++++++++++++++++++++++ >>>>> 1 file changed, 159 insertions(+) >>>>> >>>>> diff --git a/arch/arm/boot/dts/imx7d-remarkable2.dts b/arch/arm/boot/dts/imx7d-remarkable2.dts >>>>> index a138b292ec6a..4387d30d6180 100644 >>>>> --- a/arch/arm/boot/dts/imx7d-remarkable2.dts >>>>> +++ b/arch/arm/boot/dts/imx7d-remarkable2.dts >>>>> @@ -92,6 +92,10 @@ wifi_pwrseq: wifi_pwrseq { >>>>> }; >>>>> }; >>>>> >>>>> +&cpu0 { >>>>> + cpu-supply = <&buck1_reg>; >>>>> +}; >>>>> + >>>>> &clks { >>>>> assigned-clocks = <&clks IMX7D_CLKO2_ROOT_SRC>, >>>>> <&clks IMX7D_CLKO2_ROOT_DIV>; >>>>> @@ -119,6 +123,148 @@ wacom_digitizer: digitizer@9 { >>>>> }; >>>>> }; >>>>> >>>>> +&i2c2 { >>>>> + clock-frequency = <100000>; >>>> >>>> We can set this now to 400kHz since the driver can handle quirks now >>>> internal. >>> >>> After a discussion on the first patch I'm going to leave this as is. >>> Let me know if you do want me to change it. >>> >>>> >>>>> + pinctrl-names = "default", "sleep"; >>>>> + pinctrl-0 = <&pinctrl_i2c2>; >>>>> + pinctrl-1 = <&pinctrl_i2c2>; >>>> >>>> Do we need a "sleep" config here since this will be the same >>>> configuration as the "default" one. >>> >>> Nope, dropped. >>> >>>> >>>>> + status = "okay"; >>>>> + >>>>> + bd71815: pmic@4b { >>>>> + compatible = "rohm,bd71815"; >>>>> + reg = <0x4b>; >>>>> + pinctrl-names = "default"; >>>>> + pinctrl-0 = <&pinctrl_bd71815>; >>>>> + interrupt-parent = <&gpio6>; /* PMIC_INT_B GPIO6_IO16 */ >>>>> + interrupts = <16 IRQ_TYPE_LEVEL_LOW>; >>>>> + gpio-controller; >>>>> + clocks = <&clks IMX7D_CLKO2_ROOT_SRC>; >>>>> + clock-output-names = "bd71815-32k-out"; >>>>> + #clock-cells = <0>; >>>>> + #gpio-cells = <1>; >>>>> + >>>>> + regulators { >>>>> + #address-cells = <1>; >>>>> + #size-cells = <0>; >>>>> + >>>>> + buck1_reg: regulator@0 { >>>>> + reg = <0>; >>>>> + regulator-compatible = "buck1"; >>>>> + regulator-min-microvolt = <800000>; >>>>> + regulator-max-microvolt = <2000000>; >>>>> + regulator-boot-on; >>>>> + regulator-always-on; >>>>> + regulator-ramp-delay = <1250>; >>>>> + }; >>>>> + >>>>> + buck2_reg: regulator@1 { >>>>> + reg = <1>; >>>>> + regulator-compatible = "buck2"; >>>>> + regulator-min-microvolt = <800000>; >>>>> + regulator-max-microvolt = <2000000>; >>>>> + regulator-boot-on; >>>>> + regulator-always-on; >>>>> + regulator-ramp-delay = <1250>; >>>>> + }; >>>>> + >>>>> + buck3_reg: regulator@2 { >>>>> + reg = <2>; >>>>> + regulator-compatible = "buck3"; >>>>> + regulator-min-microvolt = <1200000>; >>>>> + regulator-max-microvolt = <2700000>; >>>>> + regulator-boot-on; >>>>> + regulator-always-on; >>>>> + }; >>>>> + >>>>> + buck4_reg: regulator@3 { >>>>> + reg = <3>; >>>>> + regulator-compatible = "buck4"; >>>>> + regulator-min-microvolt = <1100000>; >>>>> + regulator-max-microvolt = <1850000>; >>>>> + regulator-boot-on; >>>>> + regulator-always-on; >>>>> + }; >>>>> + >>>>> + buck5_reg: regulator@4 { >>>>> + reg = <4>; >>>>> + regulator-compatible = "buck5"; >>>>> + regulator-min-microvolt = <1800000>; >>>>> + regulator-max-microvolt = <3300000>; >>>>> + regulator-boot-on; >>>>> + regulator-always-on; >>>>> + }; >>>>> + >>>>> + ldo1_reg: regulator@5 { >>>>> + reg = <5>; >>>>> + regulator-compatible = "ldo1"; >>>>> + regulator-min-microvolt = <800000>; >>>>> + regulator-max-microvolt = <3300000>; >>>>> + regulator-boot-on; >>>>> + regulator-always-on; >>>>> + }; >>>>> + >>>>> + ldo2_reg: regulator@6 { >>>>> + reg = <6>; >>>>> + regulator-compatible = "ldo2"; >>>>> + regulator-min-microvolt = <800000>; >>>>> + regulator-max-microvolt = <3300000>; >>>>> + regulator-boot-on; >>>>> + regulator-always-on; >>>>> + }; >>>>> + >>>>> + ldo3_reg: regulator@7 { >>>>> + reg = <7>; >>>>> + regulator-compatible = "ldo3"; >>>>> + regulator-min-microvolt = <800000>; >>>>> + regulator-max-microvolt = <3300000>; >>>>> + regulator-boot-on; >>>>> + regulator-always-on; >>>>> + }; >>>>> + >>>>> + ldo4_reg: regulator@8 { >>>>> + reg = <8>; >>>>> + regulator-compatible = "ldo4"; >>>>> + regulator-min-microvolt = <800000>; >>>>> + regulator-max-microvolt = <3300000>; >>>>> + regulator-boot-on; >>>>> + regulator-always-on; >>>>> + }; >>>>> + >>>>> + ldo5_reg: regulator@9 { >>>>> + reg = <9>; >>>>> + regulator-compatible = "ldo5"; >>>>> + regulator-min-microvolt = <800000>; >>>>> + regulator-max-microvolt = <3300000>; >>>>> + regulator-boot-on; >>>>> + regulator-always-on; >>>>> + }; >>>>> + >>>>> + dvref_reg: regulator@a { >>>>> + reg = <0xa>; >>>>> + regulator-compatible = "dvref"; >>>>> + regulator-boot-on; >>>>> + regulator-always-on; >>>>> + }; >>>>> + >>>>> + lpsr_reg: regulator@b { >>>>> + reg = <0xb>; >>>>> + regulator-compatible = "lpsr"; >>>>> + regulator-boot-on; >>>>> + regulator-always-on; >>>>> + }; >>>>> + >>>>> + wled_reg: regulator@c { >>>>> + reg = <0xc>; >>>>> + regulator-compatible = "wled"; >>>>> + regulator-min-microamp = <10>; >>>>> + regulator-max-microamp = <25000>; >>>>> + regulator-boot-on; >>>>> + regulator-always-on; >>>>> + }; >>>> >>>> Note: You have marked all regulators as always on, this is rather >>>> suboptimal due to power consumption. >>> >>> Good point. The power consumption is already pretty bad, as mainline >>> doesn't support the i.MX deep sleep. As I know this works I'd like to >>> keep it as is. I'll test to see if removing them doesn't break >>> anything and then send a follow up patch. >> >> I'd like to suggest also seeing what removing the "regulator-boot-on" >> causes. As far as I understand, the "regulator-boot-on" mainly (only?) >> intended to be used in situations where the regulator state can not be >> reliably read from the hardware at the boot-up. AFAIR, unlike the >> BD71837 and BD71847, >> the BD71815 does not have this limitation. (This is just my >> understanding - which is based on some age-old discussions with Mark >> Brown - hence this comment is just a suggestion to try this while >> testing, not a comment intended to be demanding for a change) > > I have tried removing both "regulator-boot-on" and "regulator-always-on". > > After one boot to userspace (where the display didn't work correctly) > the device now seems to not power up at all. Even u-boot is failing to > start. I'm not sure if the regulators are now in some strange state or > if something is fried. Ouch. This does not sound good at all. Sorry for a bad advice. :( I can only assume the "power dependencies" are not modelled correctly - Eg. some required power-rails are not marked to be used by devices that actually need them. This is probably being worked around using the regulator-boot-on / regulator-always-on - which will cause the Linux to turn on these rails when the driver is load. My understanding is that this is not the intended use-case for the regulator-boot-on flag though. Also, as was said - the side-effect of always-on is that there will be no power-saving options - which is still better for an user than a fried device would be :| > > I'm currently waiting for the battery to discharge to see if that helps. > /me keeps fingers crossed. You wouldn't guess how hard it was to type this! Yours, -- Matti
On Sat, Jan 21, 2023 at 12:01 AM Matti Vaittinen <mazziesaccount@gmail.com> wrote: > > On 1/20/23 11:17, Alistair Francis wrote: > > On Tue, Jan 10, 2023 at 5:13 AM Matti Vaittinen > > <mazziesaccount@gmail.com> wrote: > >> > >> ma 9. tammik. 2023 klo 14.32 Alistair Francis (alistair23@gmail.com) kirjoitti: > >>> > >>> On Tue, Dec 20, 2022 at 11:17 PM Marco Felsch <m.felsch@pengutronix.de> wrote: > >>>> > >>>> Hi Alistair, > >>>> > >>>> thanks for your patch, please see below. > >>>> > >>>> On 22-12-20, Alistair Francis wrote: > >>>>> Add support for the rohm,bd71815 power controller controller for the > >>>>> reMarkable 2. > >>>>> > >>>>> Signed-off-by: Alistair Francis <alistair@alistair23.me> > >>>>> --- > >>>>> arch/arm/boot/dts/imx7d-remarkable2.dts | 159 ++++++++++++++++++++++++ > >>>>> 1 file changed, 159 insertions(+) > >>>>> > >>>>> diff --git a/arch/arm/boot/dts/imx7d-remarkable2.dts b/arch/arm/boot/dts/imx7d-remarkable2.dts > >>>>> index a138b292ec6a..4387d30d6180 100644 > >>>>> --- a/arch/arm/boot/dts/imx7d-remarkable2.dts > >>>>> +++ b/arch/arm/boot/dts/imx7d-remarkable2.dts > >>>>> @@ -92,6 +92,10 @@ wifi_pwrseq: wifi_pwrseq { > >>>>> }; > >>>>> }; > >>>>> > >>>>> +&cpu0 { > >>>>> + cpu-supply = <&buck1_reg>; > >>>>> +}; > >>>>> + > >>>>> &clks { > >>>>> assigned-clocks = <&clks IMX7D_CLKO2_ROOT_SRC>, > >>>>> <&clks IMX7D_CLKO2_ROOT_DIV>; > >>>>> @@ -119,6 +123,148 @@ wacom_digitizer: digitizer@9 { > >>>>> }; > >>>>> }; > >>>>> > >>>>> +&i2c2 { > >>>>> + clock-frequency = <100000>; > >>>> > >>>> We can set this now to 400kHz since the driver can handle quirks now > >>>> internal. > >>> > >>> After a discussion on the first patch I'm going to leave this as is. > >>> Let me know if you do want me to change it. > >>> > >>>> > >>>>> + pinctrl-names = "default", "sleep"; > >>>>> + pinctrl-0 = <&pinctrl_i2c2>; > >>>>> + pinctrl-1 = <&pinctrl_i2c2>; > >>>> > >>>> Do we need a "sleep" config here since this will be the same > >>>> configuration as the "default" one. > >>> > >>> Nope, dropped. > >>> > >>>> > >>>>> + status = "okay"; > >>>>> + > >>>>> + bd71815: pmic@4b { > >>>>> + compatible = "rohm,bd71815"; > >>>>> + reg = <0x4b>; > >>>>> + pinctrl-names = "default"; > >>>>> + pinctrl-0 = <&pinctrl_bd71815>; > >>>>> + interrupt-parent = <&gpio6>; /* PMIC_INT_B GPIO6_IO16 */ > >>>>> + interrupts = <16 IRQ_TYPE_LEVEL_LOW>; > >>>>> + gpio-controller; > >>>>> + clocks = <&clks IMX7D_CLKO2_ROOT_SRC>; > >>>>> + clock-output-names = "bd71815-32k-out"; > >>>>> + #clock-cells = <0>; > >>>>> + #gpio-cells = <1>; > >>>>> + > >>>>> + regulators { > >>>>> + #address-cells = <1>; > >>>>> + #size-cells = <0>; > >>>>> + > >>>>> + buck1_reg: regulator@0 { > >>>>> + reg = <0>; > >>>>> + regulator-compatible = "buck1"; > >>>>> + regulator-min-microvolt = <800000>; > >>>>> + regulator-max-microvolt = <2000000>; > >>>>> + regulator-boot-on; > >>>>> + regulator-always-on; > >>>>> + regulator-ramp-delay = <1250>; > >>>>> + }; > >>>>> + > >>>>> + buck2_reg: regulator@1 { > >>>>> + reg = <1>; > >>>>> + regulator-compatible = "buck2"; > >>>>> + regulator-min-microvolt = <800000>; > >>>>> + regulator-max-microvolt = <2000000>; > >>>>> + regulator-boot-on; > >>>>> + regulator-always-on; > >>>>> + regulator-ramp-delay = <1250>; > >>>>> + }; > >>>>> + > >>>>> + buck3_reg: regulator@2 { > >>>>> + reg = <2>; > >>>>> + regulator-compatible = "buck3"; > >>>>> + regulator-min-microvolt = <1200000>; > >>>>> + regulator-max-microvolt = <2700000>; > >>>>> + regulator-boot-on; > >>>>> + regulator-always-on; > >>>>> + }; > >>>>> + > >>>>> + buck4_reg: regulator@3 { > >>>>> + reg = <3>; > >>>>> + regulator-compatible = "buck4"; > >>>>> + regulator-min-microvolt = <1100000>; > >>>>> + regulator-max-microvolt = <1850000>; > >>>>> + regulator-boot-on; > >>>>> + regulator-always-on; > >>>>> + }; > >>>>> + > >>>>> + buck5_reg: regulator@4 { > >>>>> + reg = <4>; > >>>>> + regulator-compatible = "buck5"; > >>>>> + regulator-min-microvolt = <1800000>; > >>>>> + regulator-max-microvolt = <3300000>; > >>>>> + regulator-boot-on; > >>>>> + regulator-always-on; > >>>>> + }; > >>>>> + > >>>>> + ldo1_reg: regulator@5 { > >>>>> + reg = <5>; > >>>>> + regulator-compatible = "ldo1"; > >>>>> + regulator-min-microvolt = <800000>; > >>>>> + regulator-max-microvolt = <3300000>; > >>>>> + regulator-boot-on; > >>>>> + regulator-always-on; > >>>>> + }; > >>>>> + > >>>>> + ldo2_reg: regulator@6 { > >>>>> + reg = <6>; > >>>>> + regulator-compatible = "ldo2"; > >>>>> + regulator-min-microvolt = <800000>; > >>>>> + regulator-max-microvolt = <3300000>; > >>>>> + regulator-boot-on; > >>>>> + regulator-always-on; > >>>>> + }; > >>>>> + > >>>>> + ldo3_reg: regulator@7 { > >>>>> + reg = <7>; > >>>>> + regulator-compatible = "ldo3"; > >>>>> + regulator-min-microvolt = <800000>; > >>>>> + regulator-max-microvolt = <3300000>; > >>>>> + regulator-boot-on; > >>>>> + regulator-always-on; > >>>>> + }; > >>>>> + > >>>>> + ldo4_reg: regulator@8 { > >>>>> + reg = <8>; > >>>>> + regulator-compatible = "ldo4"; > >>>>> + regulator-min-microvolt = <800000>; > >>>>> + regulator-max-microvolt = <3300000>; > >>>>> + regulator-boot-on; > >>>>> + regulator-always-on; > >>>>> + }; > >>>>> + > >>>>> + ldo5_reg: regulator@9 { > >>>>> + reg = <9>; > >>>>> + regulator-compatible = "ldo5"; > >>>>> + regulator-min-microvolt = <800000>; > >>>>> + regulator-max-microvolt = <3300000>; > >>>>> + regulator-boot-on; > >>>>> + regulator-always-on; > >>>>> + }; > >>>>> + > >>>>> + dvref_reg: regulator@a { > >>>>> + reg = <0xa>; > >>>>> + regulator-compatible = "dvref"; > >>>>> + regulator-boot-on; > >>>>> + regulator-always-on; > >>>>> + }; > >>>>> + > >>>>> + lpsr_reg: regulator@b { > >>>>> + reg = <0xb>; > >>>>> + regulator-compatible = "lpsr"; > >>>>> + regulator-boot-on; > >>>>> + regulator-always-on; > >>>>> + }; > >>>>> + > >>>>> + wled_reg: regulator@c { > >>>>> + reg = <0xc>; > >>>>> + regulator-compatible = "wled"; > >>>>> + regulator-min-microamp = <10>; > >>>>> + regulator-max-microamp = <25000>; > >>>>> + regulator-boot-on; > >>>>> + regulator-always-on; > >>>>> + }; > >>>> > >>>> Note: You have marked all regulators as always on, this is rather > >>>> suboptimal due to power consumption. > >>> > >>> Good point. The power consumption is already pretty bad, as mainline > >>> doesn't support the i.MX deep sleep. As I know this works I'd like to > >>> keep it as is. I'll test to see if removing them doesn't break > >>> anything and then send a follow up patch. > >> > >> I'd like to suggest also seeing what removing the "regulator-boot-on" > >> causes. As far as I understand, the "regulator-boot-on" mainly (only?) > >> intended to be used in situations where the regulator state can not be > >> reliably read from the hardware at the boot-up. AFAIR, unlike the > >> BD71837 and BD71847, > >> the BD71815 does not have this limitation. (This is just my > >> understanding - which is based on some age-old discussions with Mark > >> Brown - hence this comment is just a suggestion to try this while > >> testing, not a comment intended to be demanding for a change) > > > > I have tried removing both "regulator-boot-on" and "regulator-always-on". > > > > After one boot to userspace (where the display didn't work correctly) > > the device now seems to not power up at all. Even u-boot is failing to > > start. I'm not sure if the regulators are now in some strange state or > > if something is fried. > > Ouch. This does not sound good at all. Sorry for a bad advice. :( Yeah, it was a bit of a shock! No worries, the advice was good! Just unlucky that the vendor hardware and kernel aren't up to par. > > I can only assume the "power dependencies" are not modelled correctly - > Eg. some required power-rails are not marked to be used by devices that > actually need them. This is probably being worked around using the > regulator-boot-on / regulator-always-on - which will cause the Linux to > turn on these rails when the driver is load. My understanding is that > this is not the intended use-case for the regulator-boot-on flag though. Yeah, I'm guessing that's what is happening. It seems that somehow a rail for the power controller is being turned off. As the device can't be woken up with the physical button or a charger about 30 seconds after boot. > Also, as was said - the side-effect of always-on is that there will be > no power-saving options - which is still better for an user than a fried > device would be :| I think for now that's what we are stuck with. It's very difficult to debug as the device is sealed. > > > > > I'm currently waiting for the battery to discharge to see if that helps. > > > > /me keeps fingers crossed. You wouldn't guess how hard it was to type this! Thanks! Once the battery depleted I managed to get signs of life. Now I just need to quickly revert to the old device tree :) Alistair > > Yours, > -- Matti > > -- > Matti Vaittinen > Linux kernel developer at ROHM Semiconductors > Oulu Finland > > ~~ When things go utterly wrong vim users can always type :help! ~~ >
diff --git a/arch/arm/boot/dts/imx7d-remarkable2.dts b/arch/arm/boot/dts/imx7d-remarkable2.dts index a138b292ec6a..4387d30d6180 100644 --- a/arch/arm/boot/dts/imx7d-remarkable2.dts +++ b/arch/arm/boot/dts/imx7d-remarkable2.dts @@ -92,6 +92,10 @@ wifi_pwrseq: wifi_pwrseq { }; }; +&cpu0 { + cpu-supply = <&buck1_reg>; +}; + &clks { assigned-clocks = <&clks IMX7D_CLKO2_ROOT_SRC>, <&clks IMX7D_CLKO2_ROOT_DIV>; @@ -119,6 +123,148 @@ wacom_digitizer: digitizer@9 { }; }; +&i2c2 { + clock-frequency = <100000>; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&pinctrl_i2c2>; + pinctrl-1 = <&pinctrl_i2c2>; + status = "okay"; + + bd71815: pmic@4b { + compatible = "rohm,bd71815"; + reg = <0x4b>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_bd71815>; + interrupt-parent = <&gpio6>; /* PMIC_INT_B GPIO6_IO16 */ + interrupts = <16 IRQ_TYPE_LEVEL_LOW>; + gpio-controller; + clocks = <&clks IMX7D_CLKO2_ROOT_SRC>; + clock-output-names = "bd71815-32k-out"; + #clock-cells = <0>; + #gpio-cells = <1>; + + regulators { + #address-cells = <1>; + #size-cells = <0>; + + buck1_reg: regulator@0 { + reg = <0>; + regulator-compatible = "buck1"; + regulator-min-microvolt = <800000>; + regulator-max-microvolt = <2000000>; + regulator-boot-on; + regulator-always-on; + regulator-ramp-delay = <1250>; + }; + + buck2_reg: regulator@1 { + reg = <1>; + regulator-compatible = "buck2"; + regulator-min-microvolt = <800000>; + regulator-max-microvolt = <2000000>; + regulator-boot-on; + regulator-always-on; + regulator-ramp-delay = <1250>; + }; + + buck3_reg: regulator@2 { + reg = <2>; + regulator-compatible = "buck3"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <2700000>; + regulator-boot-on; + regulator-always-on; + }; + + buck4_reg: regulator@3 { + reg = <3>; + regulator-compatible = "buck4"; + regulator-min-microvolt = <1100000>; + regulator-max-microvolt = <1850000>; + regulator-boot-on; + regulator-always-on; + }; + + buck5_reg: regulator@4 { + reg = <4>; + regulator-compatible = "buck5"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + regulator-always-on; + }; + + ldo1_reg: regulator@5 { + reg = <5>; + regulator-compatible = "ldo1"; + regulator-min-microvolt = <800000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + regulator-always-on; + }; + + ldo2_reg: regulator@6 { + reg = <6>; + regulator-compatible = "ldo2"; + regulator-min-microvolt = <800000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + regulator-always-on; + }; + + ldo3_reg: regulator@7 { + reg = <7>; + regulator-compatible = "ldo3"; + regulator-min-microvolt = <800000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + regulator-always-on; + }; + + ldo4_reg: regulator@8 { + reg = <8>; + regulator-compatible = "ldo4"; + regulator-min-microvolt = <800000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + regulator-always-on; + }; + + ldo5_reg: regulator@9 { + reg = <9>; + regulator-compatible = "ldo5"; + regulator-min-microvolt = <800000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + regulator-always-on; + }; + + dvref_reg: regulator@a { + reg = <0xa>; + regulator-compatible = "dvref"; + regulator-boot-on; + regulator-always-on; + }; + + lpsr_reg: regulator@b { + reg = <0xb>; + regulator-compatible = "lpsr"; + regulator-boot-on; + regulator-always-on; + }; + + wled_reg: regulator@c { + reg = <0xc>; + regulator-compatible = "wled"; + regulator-min-microamp = <10>; + regulator-max-microamp = <25000>; + regulator-boot-on; + regulator-always-on; + }; + }; + }; +}; + &i2c3 { clock-frequency = <100000>; pinctrl-names = "default"; @@ -293,6 +439,12 @@ MX7D_PAD_LPSR_GPIO1_IO01__GPIO1_IO1 0x00000034 /* WACOM INT */ }; &iomuxc { + pinctrl_bd71815: bd71815grp { + fsl,pins = < + MX7D_PAD_SAI1_RX_SYNC__GPIO6_IO16 0x59 + >; + }; + pinctrl_brcm_reg: brcmreggrp { fsl,pins = < /* WIFI_PWR_EN */ @@ -323,6 +475,13 @@ MX7D_PAD_I2C1_SCL__I2C1_SCL 0x4000007f >; }; + pinctrl_i2c2: i2c2grp { + fsl,pins = < + MX7D_PAD_I2C2_SDA__I2C2_SDA 0x4000007f + MX7D_PAD_I2C2_SCL__I2C2_SCL 0x4000007f + >; + }; + pinctrl_i2c3: i2c3grp { fsl,pins = < MX7D_PAD_I2C3_SDA__I2C3_SDA 0x4000007f