linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/3] imx7d-remarkable2: Enable cyttsp5 and rohm,bd71815
@ 2022-12-20 11:29 Alistair Francis
  2022-12-20 11:29 ` [PATCH v2 1/3] ARM: dts: imx7d-remarkable2: Enable the cyttsp5 Alistair Francis
                   ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: Alistair Francis @ 2022-12-20 11:29 UTC (permalink / raw)
  To: linux-kernel, shawnguo, linux-arm-kernel, linux-imx, s.hauer,
	robh+dt, devicetree, krzysztof.kozlowski+dt
  Cc: linux, festevam, kernel, arnd, alistair23, jernej.skrabec,
	Alistair Francis

Enable the cyttsp5 and rohm,bd71815 in the device trees and
defconfig for the reMarkable 2.

v2:
 - Fixup DT formatting issues in path 3

Alistair Francis (3):
  ARM: dts: imx7d-remarkable2: Enable the cyttsp5
  ARM: imx_v6_v7_defconfig: Enable rohm,bd71815
  ARM: dts: imx7d-remarkable2: Enable the rohm,bd71815

 arch/arm/boot/dts/imx7d-remarkable2.dts | 257 ++++++++++++++++++++++++
 arch/arm/configs/imx_v6_v7_defconfig    |   5 +
 2 files changed, 262 insertions(+)

-- 
2.38.1


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH v2 1/3] ARM: dts: imx7d-remarkable2: Enable the cyttsp5
  2022-12-20 11:29 [PATCH v2 0/3] imx7d-remarkable2: Enable cyttsp5 and rohm,bd71815 Alistair Francis
@ 2022-12-20 11:29 ` Alistair Francis
  2022-12-20 13:20   ` Marco Felsch
  2022-12-20 11:29 ` [PATCH v2 2/3] ARM: imx_v6_v7_defconfig: Enable rohm,bd71815 Alistair Francis
  2022-12-20 11:29 ` [PATCH v2 3/3] ARM: dts: imx7d-remarkable2: Enable the rohm,bd71815 Alistair Francis
  2 siblings, 1 reply; 13+ messages in thread
From: Alistair Francis @ 2022-12-20 11:29 UTC (permalink / raw)
  To: linux-kernel, shawnguo, linux-arm-kernel, linux-imx, s.hauer,
	robh+dt, devicetree, krzysztof.kozlowski+dt
  Cc: linux, festevam, kernel, arnd, alistair23, jernej.skrabec,
	Alistair Francis

Add support for the cyttsp5 touchscreen controller for the reMarkable 2.

Signed-off-by: Alistair Francis <alistair@alistair23.me>
---
 arch/arm/boot/dts/imx7d-remarkable2.dts | 98 +++++++++++++++++++++++++
 1 file changed, 98 insertions(+)

diff --git a/arch/arm/boot/dts/imx7d-remarkable2.dts b/arch/arm/boot/dts/imx7d-remarkable2.dts
index 8b2f11e85e05..a138b292ec6a 100644
--- a/arch/arm/boot/dts/imx7d-remarkable2.dts
+++ b/arch/arm/boot/dts/imx7d-remarkable2.dts
@@ -8,6 +8,7 @@
 /dts-v1/;
 
 #include "imx7d.dtsi"
+#include <dt-bindings/input/linux-event-codes.h>
 
 / {
 	model = "reMarkable 2.0";
@@ -69,6 +70,18 @@ reg_digitizer: regulator-digitizer {
 		startup-delay-us = <100000>; /* 100 ms */
 	};
 
+	reg_touch: regulator-touch {
+		compatible = "regulator-fixed";
+		regulator-name = "VDD_3V3_TOUCH";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		pinctrl-names = "default", "sleep";
+		pinctrl-0 = <&pinctrl_touch_reg>;
+		pinctrl-1 = <&pinctrl_touch_reg>;
+		gpio = <&gpio1 11 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+	};
+
 	wifi_pwrseq: wifi_pwrseq {
 		compatible = "mmc-pwrseq-simple";
 		pinctrl-names = "default";
@@ -106,6 +119,68 @@ wacom_digitizer: digitizer@9 {
 	};
 };
 
+&i2c3 {
+	clock-frequency = <100000>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_i2c3>;
+	status = "okay";
+
+	touchscreen@24 {
+		compatible = "cypress,tt21000";
+		reg = <0x24>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_touch>;
+		interrupt-parent = <&gpio1>;
+		interrupts = <14 IRQ_TYPE_EDGE_FALLING>;
+		reset-gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
+		vdd-supply = <&reg_touch>;
+		touchscreen-size-x = <880>;
+		touchscreen-size-y = <1280>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		button@0 {
+			reg = <0>;
+			linux,keycodes = <KEY_HOMEPAGE>;
+		};
+
+		button@1 {
+			reg = <1>;
+			linux,keycodes = <KEY_MENU>;
+		};
+
+		button@2 {
+			reg = <2>;
+			linux,keycodes = <KEY_BACK>;
+		};
+
+		button@3 {
+			reg = <3>;
+			linux,keycodes = <KEY_SEARCH>;
+		};
+
+		button@4 {
+			reg = <4>;
+			linux,keycodes = <KEY_VOLUMEDOWN>;
+		};
+
+		button@5 {
+			reg = <5>;
+			linux,keycodes = <KEY_VOLUMEUP>;
+		};
+
+		button@6 {
+			reg = <6>;
+			linux,keycodes = <KEY_CAMERA>;
+		};
+
+		button@7 {
+			reg = <7>;
+			linux,keycodes = <KEY_POWER>;
+		};
+	};
+};
+
 &i2c4 {
 	clock-frequency = <100000>;
 	pinctrl-names = "default", "sleep";
@@ -232,6 +307,15 @@ MX7D_PAD_ENET1_RGMII_TXC__GPIO7_IO11	0x00000014
 		>;
 	};
 
+	pinctrl_touch: touchgrp {
+		fsl,pins = <
+			/* CYTTSP interrupt */
+			MX7D_PAD_GPIO1_IO14__GPIO1_IO14		0x54
+			/* CYTTSP reset */
+			MX7D_PAD_GPIO1_IO13__GPIO1_IO13		0x04
+		>;
+	};
+
 	pinctrl_i2c1: i2c1grp {
 		fsl,pins = <
 			MX7D_PAD_I2C1_SDA__I2C1_SDA		0x4000007f
@@ -239,6 +323,13 @@ MX7D_PAD_I2C1_SCL__I2C1_SCL		0x4000007f
 		>;
 	};
 
+	pinctrl_i2c3: i2c3grp {
+		fsl,pins = <
+			MX7D_PAD_I2C3_SDA__I2C3_SDA		0x4000007f
+			MX7D_PAD_I2C3_SCL__I2C3_SCL		0x4000007f
+		>;
+	};
+
 	pinctrl_i2c4: i2c4grp {
 		fsl,pins = <
 			MX7D_PAD_I2C4_SDA__I2C4_SDA		0x4000007f
@@ -246,6 +337,13 @@ MX7D_PAD_I2C4_SCL__I2C4_SCL		0x4000007f
 		>;
 	};
 
+	pinctrl_touch_reg: touchreggrp {
+		fsl,pins = <
+			/* TOUCH_PWR_EN */
+			MX7D_PAD_GPIO1_IO11__GPIO1_IO11		0x14
+		>;
+	};
+
 	pinctrl_uart1: uart1grp {
 		fsl,pins = <
 			MX7D_PAD_UART1_TX_DATA__UART1_DCE_TX	0x79
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v2 2/3] ARM: imx_v6_v7_defconfig: Enable rohm,bd71815
  2022-12-20 11:29 [PATCH v2 0/3] imx7d-remarkable2: Enable cyttsp5 and rohm,bd71815 Alistair Francis
  2022-12-20 11:29 ` [PATCH v2 1/3] ARM: dts: imx7d-remarkable2: Enable the cyttsp5 Alistair Francis
@ 2022-12-20 11:29 ` Alistair Francis
  2022-12-20 11:29 ` [PATCH v2 3/3] ARM: dts: imx7d-remarkable2: Enable the rohm,bd71815 Alistair Francis
  2 siblings, 0 replies; 13+ messages in thread
From: Alistair Francis @ 2022-12-20 11:29 UTC (permalink / raw)
  To: linux-kernel, shawnguo, linux-arm-kernel, linux-imx, s.hauer,
	robh+dt, devicetree, krzysztof.kozlowski+dt
  Cc: linux, festevam, kernel, arnd, alistair23, jernej.skrabec,
	Alistair Francis

The reMarkable 2 uses the rohm,bd71815 power controller, so enable it in
the defconfig.

Signed-off-by: Alistair Francis <alistair@alistair23.me>
---
 arch/arm/configs/imx_v6_v7_defconfig | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm/configs/imx_v6_v7_defconfig b/arch/arm/configs/imx_v6_v7_defconfig
index 025eb333dcaa..2b29599193a2 100644
--- a/arch/arm/configs/imx_v6_v7_defconfig
+++ b/arch/arm/configs/imx_v6_v7_defconfig
@@ -213,6 +213,7 @@ CONFIG_GPIO_SIOX=m
 CONFIG_GPIO_MAX732X=y
 CONFIG_GPIO_PCA953X=y
 CONFIG_GPIO_PCF857X=y
+CONFIG_GPIO_BD71815=y
 CONFIG_GPIO_STMPE=y
 CONFIG_GPIO_74X164=y
 CONFIG_POWER_RESET=y
@@ -242,8 +243,10 @@ CONFIG_MFD_MC13XXX_I2C=y
 CONFIG_MFD_SY7636A=y
 CONFIG_MFD_RN5T618=y
 CONFIG_MFD_STMPE=y
+CONFIG_MFD_ROHM_BD71828=y
 CONFIG_REGULATOR_FIXED_VOLTAGE=y
 CONFIG_REGULATOR_ANATOP=y
+CONFIG_REGULATOR_BD71815=y
 CONFIG_REGULATOR_DA9052=y
 CONFIG_REGULATOR_DA9062=y
 CONFIG_REGULATOR_DA9063=y
@@ -380,6 +383,7 @@ CONFIG_RTC_DRV_ISL1208=y
 CONFIG_RTC_DRV_PCF8523=y
 CONFIG_RTC_DRV_PCF8563=y
 CONFIG_RTC_DRV_M41T80=y
+CONFIG_RTC_DRV_BD70528=y
 CONFIG_RTC_DRV_RC5T619=y
 CONFIG_RTC_DRV_RV3029C2=y
 CONFIG_RTC_DRV_DA9063=y
@@ -396,6 +400,7 @@ CONFIG_STAGING=y
 CONFIG_STAGING_MEDIA=y
 CONFIG_VIDEO_IMX_MEDIA=y
 CONFIG_COMMON_CLK_PWM=y
+CONFIG_COMMON_CLK_BD718XX=y
 CONFIG_CLK_IMX8MM=y
 CONFIG_CLK_IMX8MN=y
 CONFIG_CLK_IMX8MP=y
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v2 3/3] ARM: dts: imx7d-remarkable2: Enable the rohm,bd71815
  2022-12-20 11:29 [PATCH v2 0/3] imx7d-remarkable2: Enable cyttsp5 and rohm,bd71815 Alistair Francis
  2022-12-20 11:29 ` [PATCH v2 1/3] ARM: dts: imx7d-remarkable2: Enable the cyttsp5 Alistair Francis
  2022-12-20 11:29 ` [PATCH v2 2/3] ARM: imx_v6_v7_defconfig: Enable rohm,bd71815 Alistair Francis
@ 2022-12-20 11:29 ` Alistair Francis
  2022-12-20 13:17   ` Marco Felsch
  2 siblings, 1 reply; 13+ messages in thread
From: Alistair Francis @ 2022-12-20 11:29 UTC (permalink / raw)
  To: linux-kernel, shawnguo, linux-arm-kernel, linux-imx, s.hauer,
	robh+dt, devicetree, krzysztof.kozlowski+dt
  Cc: linux, festevam, kernel, arnd, alistair23, jernej.skrabec,
	Alistair Francis

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>;
+	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
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 3/3] ARM: dts: imx7d-remarkable2: Enable the rohm,bd71815
  2022-12-20 11:29 ` [PATCH v2 3/3] ARM: dts: imx7d-remarkable2: Enable the rohm,bd71815 Alistair Francis
@ 2022-12-20 13:17   ` Marco Felsch
  2023-01-09 12:11     ` Alistair Francis
  0 siblings, 1 reply; 13+ messages in thread
From: Marco Felsch @ 2022-12-20 13:17 UTC (permalink / raw)
  To: Alistair Francis
  Cc: linux-kernel, shawnguo, linux-arm-kernel, linux-imx, s.hauer,
	robh+dt, devicetree, krzysztof.kozlowski+dt, arnd, linux,
	jernej.skrabec, kernel, alistair23, festevam

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
> 
> 
> 

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 1/3] ARM: dts: imx7d-remarkable2: Enable the cyttsp5
  2022-12-20 11:29 ` [PATCH v2 1/3] ARM: dts: imx7d-remarkable2: Enable the cyttsp5 Alistair Francis
@ 2022-12-20 13:20   ` Marco Felsch
  2022-12-20 16:50     ` Ahmad Fatoum
  0 siblings, 1 reply; 13+ messages in thread
From: Marco Felsch @ 2022-12-20 13:20 UTC (permalink / raw)
  To: Alistair Francis
  Cc: linux-kernel, shawnguo, linux-arm-kernel, linux-imx, s.hauer,
	robh+dt, devicetree, krzysztof.kozlowski+dt, arnd, linux,
	jernej.skrabec, kernel, alistair23, festevam

Hi Alistair,                                                                                                                            

thanks for your patch, please see below.

On 22-12-20, Alistair Francis wrote:
> Add support for the cyttsp5 touchscreen controller for the reMarkable 2.
> 
> Signed-off-by: Alistair Francis <alistair@alistair23.me>
> ---
>  arch/arm/boot/dts/imx7d-remarkable2.dts | 98 +++++++++++++++++++++++++
>  1 file changed, 98 insertions(+)
> 
> diff --git a/arch/arm/boot/dts/imx7d-remarkable2.dts b/arch/arm/boot/dts/imx7d-remarkable2.dts
> index 8b2f11e85e05..a138b292ec6a 100644
> --- a/arch/arm/boot/dts/imx7d-remarkable2.dts
> +++ b/arch/arm/boot/dts/imx7d-remarkable2.dts
> @@ -8,6 +8,7 @@
>  /dts-v1/;
>  
>  #include "imx7d.dtsi"
> +#include <dt-bindings/input/linux-event-codes.h>
>  
>  / {
>  	model = "reMarkable 2.0";
> @@ -69,6 +70,18 @@ reg_digitizer: regulator-digitizer {
>  		startup-delay-us = <100000>; /* 100 ms */
>  	};
>  
> +	reg_touch: regulator-touch {
> +		compatible = "regulator-fixed";
> +		regulator-name = "VDD_3V3_TOUCH";
> +		regulator-min-microvolt = <3300000>;
> +		regulator-max-microvolt = <3300000>;
> +		pinctrl-names = "default", "sleep";
> +		pinctrl-0 = <&pinctrl_touch_reg>;
> +		pinctrl-1 = <&pinctrl_touch_reg>;

Why do we need a "sleep" state here?

> +		gpio = <&gpio1 11 GPIO_ACTIVE_HIGH>;
> +		enable-active-high;
> +	};
> +
>  	wifi_pwrseq: wifi_pwrseq {
>  		compatible = "mmc-pwrseq-simple";
>  		pinctrl-names = "default";
> @@ -106,6 +119,68 @@ wacom_digitizer: digitizer@9 {
>  	};
>  };
>  
> +&i2c3 {
> +	clock-frequency = <100000>;

This can be set to 400kHz, the driver handle the quirks internal.

Regards,
  Marco

> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_i2c3>;
> +	status = "okay";
> +
> +	touchscreen@24 {
> +		compatible = "cypress,tt21000";
> +		reg = <0x24>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_touch>;
> +		interrupt-parent = <&gpio1>;
> +		interrupts = <14 IRQ_TYPE_EDGE_FALLING>;
> +		reset-gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
> +		vdd-supply = <&reg_touch>;
> +		touchscreen-size-x = <880>;
> +		touchscreen-size-y = <1280>;
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +
> +		button@0 {
> +			reg = <0>;
> +			linux,keycodes = <KEY_HOMEPAGE>;
> +		};
> +
> +		button@1 {
> +			reg = <1>;
> +			linux,keycodes = <KEY_MENU>;
> +		};
> +
> +		button@2 {
> +			reg = <2>;
> +			linux,keycodes = <KEY_BACK>;
> +		};
> +
> +		button@3 {
> +			reg = <3>;
> +			linux,keycodes = <KEY_SEARCH>;
> +		};
> +
> +		button@4 {
> +			reg = <4>;
> +			linux,keycodes = <KEY_VOLUMEDOWN>;
> +		};
> +
> +		button@5 {
> +			reg = <5>;
> +			linux,keycodes = <KEY_VOLUMEUP>;
> +		};
> +
> +		button@6 {
> +			reg = <6>;
> +			linux,keycodes = <KEY_CAMERA>;
> +		};
> +
> +		button@7 {
> +			reg = <7>;
> +			linux,keycodes = <KEY_POWER>;
> +		};
> +	};
> +};
> +
>  &i2c4 {
>  	clock-frequency = <100000>;
>  	pinctrl-names = "default", "sleep";
> @@ -232,6 +307,15 @@ MX7D_PAD_ENET1_RGMII_TXC__GPIO7_IO11	0x00000014
>  		>;
>  	};
>  
> +	pinctrl_touch: touchgrp {
> +		fsl,pins = <
> +			/* CYTTSP interrupt */
> +			MX7D_PAD_GPIO1_IO14__GPIO1_IO14		0x54
> +			/* CYTTSP reset */
> +			MX7D_PAD_GPIO1_IO13__GPIO1_IO13		0x04
> +		>;
> +	};
> +
>  	pinctrl_i2c1: i2c1grp {
>  		fsl,pins = <
>  			MX7D_PAD_I2C1_SDA__I2C1_SDA		0x4000007f
> @@ -239,6 +323,13 @@ MX7D_PAD_I2C1_SCL__I2C1_SCL		0x4000007f
>  		>;
>  	};
>  
> +	pinctrl_i2c3: i2c3grp {
> +		fsl,pins = <
> +			MX7D_PAD_I2C3_SDA__I2C3_SDA		0x4000007f
> +			MX7D_PAD_I2C3_SCL__I2C3_SCL		0x4000007f
> +		>;
> +	};
> +
>  	pinctrl_i2c4: i2c4grp {
>  		fsl,pins = <
>  			MX7D_PAD_I2C4_SDA__I2C4_SDA		0x4000007f
> @@ -246,6 +337,13 @@ MX7D_PAD_I2C4_SCL__I2C4_SCL		0x4000007f
>  		>;
>  	};
>  
> +	pinctrl_touch_reg: touchreggrp {
> +		fsl,pins = <
> +			/* TOUCH_PWR_EN */
> +			MX7D_PAD_GPIO1_IO11__GPIO1_IO11		0x14
> +		>;
> +	};
> +
>  	pinctrl_uart1: uart1grp {
>  		fsl,pins = <
>  			MX7D_PAD_UART1_TX_DATA__UART1_DCE_TX	0x79
> -- 
> 2.38.1
> 
> 
> 

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 1/3] ARM: dts: imx7d-remarkable2: Enable the cyttsp5
  2022-12-20 13:20   ` Marco Felsch
@ 2022-12-20 16:50     ` Ahmad Fatoum
  2023-01-06 12:44       ` Alistair Francis
  0 siblings, 1 reply; 13+ messages in thread
From: Ahmad Fatoum @ 2022-12-20 16:50 UTC (permalink / raw)
  To: Marco Felsch, Alistair Francis
  Cc: devicetree, kernel, arnd, festevam, s.hauer, linux-kernel,
	jernej.skrabec, linux, robh+dt, linux-imx,
	krzysztof.kozlowski+dt, alistair23, shawnguo, linux-arm-kernel

Hello Alistair,
Hello Marco,

On 20.12.22 14:20, Marco Felsch wrote:
> Hi Alistair,                                                                                                                            
> 
> thanks for your patch, please see below.
> 
> On 22-12-20, Alistair Francis wrote:
>> Add support for the cyttsp5 touchscreen controller for the reMarkable 2.
>>
>> Signed-off-by: Alistair Francis <alistair@alistair23.me>
>> ---
>>  arch/arm/boot/dts/imx7d-remarkable2.dts | 98 +++++++++++++++++++++++++
>>  1 file changed, 98 insertions(+)
>>
>> diff --git a/arch/arm/boot/dts/imx7d-remarkable2.dts b/arch/arm/boot/dts/imx7d-remarkable2.dts
>> index 8b2f11e85e05..a138b292ec6a 100644
>> --- a/arch/arm/boot/dts/imx7d-remarkable2.dts
>> +++ b/arch/arm/boot/dts/imx7d-remarkable2.dts
>> @@ -8,6 +8,7 @@
>>  /dts-v1/;
>>  
>>  #include "imx7d.dtsi"
>> +#include <dt-bindings/input/linux-event-codes.h>
>>  
>>  / {
>>  	model = "reMarkable 2.0";
>> @@ -69,6 +70,18 @@ reg_digitizer: regulator-digitizer {
>>  		startup-delay-us = <100000>; /* 100 ms */
>>  	};
>>  
>> +	reg_touch: regulator-touch {
>> +		compatible = "regulator-fixed";
>> +		regulator-name = "VDD_3V3_TOUCH";
>> +		regulator-min-microvolt = <3300000>;
>> +		regulator-max-microvolt = <3300000>;
>> +		pinctrl-names = "default", "sleep";
>> +		pinctrl-0 = <&pinctrl_touch_reg>;
>> +		pinctrl-1 = <&pinctrl_touch_reg>;
> 
> Why do we need a "sleep" state here?
> 
>> +		gpio = <&gpio1 11 GPIO_ACTIVE_HIGH>;
>> +		enable-active-high;
>> +	};
>> +
>>  	wifi_pwrseq: wifi_pwrseq {
>>  		compatible = "mmc-pwrseq-simple";
>>  		pinctrl-names = "default";
>> @@ -106,6 +119,68 @@ wacom_digitizer: digitizer@9 {
>>  	};
>>  };
>>  
>> +&i2c3 {
>> +	clock-frequency = <100000>;
> 
> This can be set to 400kHz, the driver handle the quirks internal.

I would either leave this at 100kHz or increase to the maximum of
384 kHz. DT is supposed to describe the hardware and if 400 kHz
isn't a safe frequency, it should be avoided, even if the Linux
driver handles it gracefully.

Cheers,
Ahmad

> 
> Regards,
>   Marco
> 
>> +	pinctrl-names = "default";
>> +	pinctrl-0 = <&pinctrl_i2c3>;
>> +	status = "okay";
>> +
>> +	touchscreen@24 {
>> +		compatible = "cypress,tt21000";
>> +		reg = <0x24>;
>> +		pinctrl-names = "default";
>> +		pinctrl-0 = <&pinctrl_touch>;
>> +		interrupt-parent = <&gpio1>;
>> +		interrupts = <14 IRQ_TYPE_EDGE_FALLING>;
>> +		reset-gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
>> +		vdd-supply = <&reg_touch>;
>> +		touchscreen-size-x = <880>;
>> +		touchscreen-size-y = <1280>;
>> +		#address-cells = <1>;
>> +		#size-cells = <0>;
>> +
>> +		button@0 {
>> +			reg = <0>;
>> +			linux,keycodes = <KEY_HOMEPAGE>;
>> +		};
>> +
>> +		button@1 {
>> +			reg = <1>;
>> +			linux,keycodes = <KEY_MENU>;
>> +		};
>> +
>> +		button@2 {
>> +			reg = <2>;
>> +			linux,keycodes = <KEY_BACK>;
>> +		};
>> +
>> +		button@3 {
>> +			reg = <3>;
>> +			linux,keycodes = <KEY_SEARCH>;
>> +		};
>> +
>> +		button@4 {
>> +			reg = <4>;
>> +			linux,keycodes = <KEY_VOLUMEDOWN>;
>> +		};
>> +
>> +		button@5 {
>> +			reg = <5>;
>> +			linux,keycodes = <KEY_VOLUMEUP>;
>> +		};
>> +
>> +		button@6 {
>> +			reg = <6>;
>> +			linux,keycodes = <KEY_CAMERA>;
>> +		};
>> +
>> +		button@7 {
>> +			reg = <7>;
>> +			linux,keycodes = <KEY_POWER>;
>> +		};
>> +	};
>> +};
>> +
>>  &i2c4 {
>>  	clock-frequency = <100000>;
>>  	pinctrl-names = "default", "sleep";
>> @@ -232,6 +307,15 @@ MX7D_PAD_ENET1_RGMII_TXC__GPIO7_IO11	0x00000014
>>  		>;
>>  	};
>>  
>> +	pinctrl_touch: touchgrp {
>> +		fsl,pins = <
>> +			/* CYTTSP interrupt */
>> +			MX7D_PAD_GPIO1_IO14__GPIO1_IO14		0x54
>> +			/* CYTTSP reset */
>> +			MX7D_PAD_GPIO1_IO13__GPIO1_IO13		0x04
>> +		>;
>> +	};
>> +
>>  	pinctrl_i2c1: i2c1grp {
>>  		fsl,pins = <
>>  			MX7D_PAD_I2C1_SDA__I2C1_SDA		0x4000007f
>> @@ -239,6 +323,13 @@ MX7D_PAD_I2C1_SCL__I2C1_SCL		0x4000007f
>>  		>;
>>  	};
>>  
>> +	pinctrl_i2c3: i2c3grp {
>> +		fsl,pins = <
>> +			MX7D_PAD_I2C3_SDA__I2C3_SDA		0x4000007f
>> +			MX7D_PAD_I2C3_SCL__I2C3_SCL		0x4000007f
>> +		>;
>> +	};
>> +
>>  	pinctrl_i2c4: i2c4grp {
>>  		fsl,pins = <
>>  			MX7D_PAD_I2C4_SDA__I2C4_SDA		0x4000007f
>> @@ -246,6 +337,13 @@ MX7D_PAD_I2C4_SCL__I2C4_SCL		0x4000007f
>>  		>;
>>  	};
>>  
>> +	pinctrl_touch_reg: touchreggrp {
>> +		fsl,pins = <
>> +			/* TOUCH_PWR_EN */
>> +			MX7D_PAD_GPIO1_IO11__GPIO1_IO11		0x14
>> +		>;
>> +	};
>> +
>>  	pinctrl_uart1: uart1grp {
>>  		fsl,pins = <
>>  			MX7D_PAD_UART1_TX_DATA__UART1_DCE_TX	0x79
>> -- 
>> 2.38.1
>>
>>
>>
> 
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 1/3] ARM: dts: imx7d-remarkable2: Enable the cyttsp5
  2022-12-20 16:50     ` Ahmad Fatoum
@ 2023-01-06 12:44       ` Alistair Francis
  0 siblings, 0 replies; 13+ messages in thread
From: Alistair Francis @ 2023-01-06 12:44 UTC (permalink / raw)
  To: Ahmad Fatoum
  Cc: Marco Felsch, Alistair Francis, devicetree, kernel, arnd,
	festevam, s.hauer, linux-kernel, jernej.skrabec, linux, robh+dt,
	linux-imx, krzysztof.kozlowski+dt, shawnguo, linux-arm-kernel

On Wed, Dec 21, 2022 at 2:51 AM Ahmad Fatoum <a.fatoum@pengutronix.de> wrote:
>
> Hello Alistair,
> Hello Marco,
>
> On 20.12.22 14:20, Marco Felsch wrote:
> > Hi Alistair,
> >
> > thanks for your patch, please see below.
> >
> > On 22-12-20, Alistair Francis wrote:
> >> Add support for the cyttsp5 touchscreen controller for the reMarkable 2.
> >>
> >> Signed-off-by: Alistair Francis <alistair@alistair23.me>
> >> ---
> >>  arch/arm/boot/dts/imx7d-remarkable2.dts | 98 +++++++++++++++++++++++++
> >>  1 file changed, 98 insertions(+)
> >>
> >> diff --git a/arch/arm/boot/dts/imx7d-remarkable2.dts b/arch/arm/boot/dts/imx7d-remarkable2.dts
> >> index 8b2f11e85e05..a138b292ec6a 100644
> >> --- a/arch/arm/boot/dts/imx7d-remarkable2.dts
> >> +++ b/arch/arm/boot/dts/imx7d-remarkable2.dts
> >> @@ -8,6 +8,7 @@
> >>  /dts-v1/;
> >>
> >>  #include "imx7d.dtsi"
> >> +#include <dt-bindings/input/linux-event-codes.h>
> >>
> >>  / {
> >>      model = "reMarkable 2.0";
> >> @@ -69,6 +70,18 @@ reg_digitizer: regulator-digitizer {
> >>              startup-delay-us = <100000>; /* 100 ms */
> >>      };
> >>
> >> +    reg_touch: regulator-touch {
> >> +            compatible = "regulator-fixed";
> >> +            regulator-name = "VDD_3V3_TOUCH";
> >> +            regulator-min-microvolt = <3300000>;
> >> +            regulator-max-microvolt = <3300000>;
> >> +            pinctrl-names = "default", "sleep";
> >> +            pinctrl-0 = <&pinctrl_touch_reg>;
> >> +            pinctrl-1 = <&pinctrl_touch_reg>;
> >
> > Why do we need a "sleep" state here?

Removed

> >
> >> +            gpio = <&gpio1 11 GPIO_ACTIVE_HIGH>;
> >> +            enable-active-high;
> >> +    };
> >> +
> >>      wifi_pwrseq: wifi_pwrseq {
> >>              compatible = "mmc-pwrseq-simple";
> >>              pinctrl-names = "default";
> >> @@ -106,6 +119,68 @@ wacom_digitizer: digitizer@9 {
> >>      };
> >>  };
> >>
> >> +&i2c3 {
> >> +    clock-frequency = <100000>;
> >
> > This can be set to 400kHz, the driver handle the quirks internal.
>
> I would either leave this at 100kHz or increase to the maximum of
> 384 kHz. DT is supposed to describe the hardware and if 400 kHz
> isn't a safe frequency, it should be avoided, even if the Linux
> driver handles it gracefully.

I'm going to leave this at 100kHz then. Let me know if you want me to
bump it to 384kHz instead.

Alistair

>
> Cheers,
> Ahmad
>
> >
> > Regards,
> >   Marco
> >
> >> +    pinctrl-names = "default";
> >> +    pinctrl-0 = <&pinctrl_i2c3>;
> >> +    status = "okay";
> >> +
> >> +    touchscreen@24 {
> >> +            compatible = "cypress,tt21000";
> >> +            reg = <0x24>;
> >> +            pinctrl-names = "default";
> >> +            pinctrl-0 = <&pinctrl_touch>;
> >> +            interrupt-parent = <&gpio1>;
> >> +            interrupts = <14 IRQ_TYPE_EDGE_FALLING>;
> >> +            reset-gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
> >> +            vdd-supply = <&reg_touch>;
> >> +            touchscreen-size-x = <880>;
> >> +            touchscreen-size-y = <1280>;
> >> +            #address-cells = <1>;
> >> +            #size-cells = <0>;
> >> +
> >> +            button@0 {
> >> +                    reg = <0>;
> >> +                    linux,keycodes = <KEY_HOMEPAGE>;
> >> +            };
> >> +
> >> +            button@1 {
> >> +                    reg = <1>;
> >> +                    linux,keycodes = <KEY_MENU>;
> >> +            };
> >> +
> >> +            button@2 {
> >> +                    reg = <2>;
> >> +                    linux,keycodes = <KEY_BACK>;
> >> +            };
> >> +
> >> +            button@3 {
> >> +                    reg = <3>;
> >> +                    linux,keycodes = <KEY_SEARCH>;
> >> +            };
> >> +
> >> +            button@4 {
> >> +                    reg = <4>;
> >> +                    linux,keycodes = <KEY_VOLUMEDOWN>;
> >> +            };
> >> +
> >> +            button@5 {
> >> +                    reg = <5>;
> >> +                    linux,keycodes = <KEY_VOLUMEUP>;
> >> +            };
> >> +
> >> +            button@6 {
> >> +                    reg = <6>;
> >> +                    linux,keycodes = <KEY_CAMERA>;
> >> +            };
> >> +
> >> +            button@7 {
> >> +                    reg = <7>;
> >> +                    linux,keycodes = <KEY_POWER>;
> >> +            };
> >> +    };
> >> +};
> >> +
> >>  &i2c4 {
> >>      clock-frequency = <100000>;
> >>      pinctrl-names = "default", "sleep";
> >> @@ -232,6 +307,15 @@ MX7D_PAD_ENET1_RGMII_TXC__GPIO7_IO11    0x00000014
> >>              >;
> >>      };
> >>
> >> +    pinctrl_touch: touchgrp {
> >> +            fsl,pins = <
> >> +                    /* CYTTSP interrupt */
> >> +                    MX7D_PAD_GPIO1_IO14__GPIO1_IO14         0x54
> >> +                    /* CYTTSP reset */
> >> +                    MX7D_PAD_GPIO1_IO13__GPIO1_IO13         0x04
> >> +            >;
> >> +    };
> >> +
> >>      pinctrl_i2c1: i2c1grp {
> >>              fsl,pins = <
> >>                      MX7D_PAD_I2C1_SDA__I2C1_SDA             0x4000007f
> >> @@ -239,6 +323,13 @@ MX7D_PAD_I2C1_SCL__I2C1_SCL             0x4000007f
> >>              >;
> >>      };
> >>
> >> +    pinctrl_i2c3: i2c3grp {
> >> +            fsl,pins = <
> >> +                    MX7D_PAD_I2C3_SDA__I2C3_SDA             0x4000007f
> >> +                    MX7D_PAD_I2C3_SCL__I2C3_SCL             0x4000007f
> >> +            >;
> >> +    };
> >> +
> >>      pinctrl_i2c4: i2c4grp {
> >>              fsl,pins = <
> >>                      MX7D_PAD_I2C4_SDA__I2C4_SDA             0x4000007f
> >> @@ -246,6 +337,13 @@ MX7D_PAD_I2C4_SCL__I2C4_SCL             0x4000007f
> >>              >;
> >>      };
> >>
> >> +    pinctrl_touch_reg: touchreggrp {
> >> +            fsl,pins = <
> >> +                    /* TOUCH_PWR_EN */
> >> +                    MX7D_PAD_GPIO1_IO11__GPIO1_IO11         0x14
> >> +            >;
> >> +    };
> >> +
> >>      pinctrl_uart1: uart1grp {
> >>              fsl,pins = <
> >>                      MX7D_PAD_UART1_TX_DATA__UART1_DCE_TX    0x79
> >> --
> >> 2.38.1
> >>
> >>
> >>
> >
> >
>
> --
> Pengutronix e.K.                           |                             |
> Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
> 31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
> Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 3/3] ARM: dts: imx7d-remarkable2: Enable the rohm,bd71815
  2022-12-20 13:17   ` Marco Felsch
@ 2023-01-09 12:11     ` Alistair Francis
  2023-01-09 19:13       ` Matti Vaittinen
  0 siblings, 1 reply; 13+ messages in thread
From: Alistair Francis @ 2023-01-09 12:11 UTC (permalink / raw)
  To: Marco Felsch
  Cc: Alistair Francis, linux-kernel, shawnguo, linux-arm-kernel,
	linux-imx, s.hauer, robh+dt, devicetree, krzysztof.kozlowski+dt,
	arnd, linux, jernej.skrabec, kernel, festevam

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
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 3/3] ARM: dts: imx7d-remarkable2: Enable the rohm,bd71815
  2023-01-09 12:11     ` Alistair Francis
@ 2023-01-09 19:13       ` Matti Vaittinen
  2023-01-20  9:17         ` Alistair Francis
  0 siblings, 1 reply; 13+ messages in thread
From: Matti Vaittinen @ 2023-01-09 19:13 UTC (permalink / raw)
  To: Alistair Francis
  Cc: Marco Felsch, Alistair Francis, linux-kernel, shawnguo,
	linux-arm-kernel, linux-imx, s.hauer, robh+dt, devicetree,
	krzysztof.kozlowski+dt, arnd, linux, jernej.skrabec, kernel,
	festevam

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

-- 

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));

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 3/3] ARM: dts: imx7d-remarkable2: Enable the rohm,bd71815
  2023-01-09 19:13       ` Matti Vaittinen
@ 2023-01-20  9:17         ` Alistair Francis
  2023-01-20 14:01           ` Matti Vaittinen
  0 siblings, 1 reply; 13+ messages in thread
From: Alistair Francis @ 2023-01-20  9:17 UTC (permalink / raw)
  To: Matti Vaittinen
  Cc: Marco Felsch, Alistair Francis, linux-kernel, shawnguo,
	linux-arm-kernel, linux-imx, s.hauer, robh+dt, devicetree,
	krzysztof.kozlowski+dt, arnd, linux, jernej.skrabec, kernel,
	festevam

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));

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 3/3] ARM: dts: imx7d-remarkable2: Enable the rohm,bd71815
  2023-01-20  9:17         ` Alistair Francis
@ 2023-01-20 14:01           ` Matti Vaittinen
  2023-01-21 12:47             ` Alistair Francis
  0 siblings, 1 reply; 13+ messages in thread
From: Matti Vaittinen @ 2023-01-20 14:01 UTC (permalink / raw)
  To: Alistair Francis
  Cc: Marco Felsch, Alistair Francis, linux-kernel, shawnguo,
	linux-arm-kernel, linux-imx, s.hauer, robh+dt, devicetree,
	krzysztof.kozlowski+dt, arnd, linux, jernej.skrabec, kernel,
	festevam

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

-- 
Matti Vaittinen
Linux kernel developer at ROHM Semiconductors
Oulu Finland

~~ When things go utterly wrong vim users can always type :help! ~~


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 3/3] ARM: dts: imx7d-remarkable2: Enable the rohm,bd71815
  2023-01-20 14:01           ` Matti Vaittinen
@ 2023-01-21 12:47             ` Alistair Francis
  0 siblings, 0 replies; 13+ messages in thread
From: Alistair Francis @ 2023-01-21 12:47 UTC (permalink / raw)
  To: Matti Vaittinen
  Cc: Marco Felsch, Alistair Francis, linux-kernel, shawnguo,
	linux-arm-kernel, linux-imx, s.hauer, robh+dt, devicetree,
	krzysztof.kozlowski+dt, arnd, linux, jernej.skrabec, kernel,
	festevam

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! ~~
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2023-01-21 12:47 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-12-20 11:29 [PATCH v2 0/3] imx7d-remarkable2: Enable cyttsp5 and rohm,bd71815 Alistair Francis
2022-12-20 11:29 ` [PATCH v2 1/3] ARM: dts: imx7d-remarkable2: Enable the cyttsp5 Alistair Francis
2022-12-20 13:20   ` Marco Felsch
2022-12-20 16:50     ` Ahmad Fatoum
2023-01-06 12:44       ` Alistair Francis
2022-12-20 11:29 ` [PATCH v2 2/3] ARM: imx_v6_v7_defconfig: Enable rohm,bd71815 Alistair Francis
2022-12-20 11:29 ` [PATCH v2 3/3] ARM: dts: imx7d-remarkable2: Enable the rohm,bd71815 Alistair Francis
2022-12-20 13:17   ` Marco Felsch
2023-01-09 12:11     ` Alistair Francis
2023-01-09 19:13       ` Matti Vaittinen
2023-01-20  9:17         ` Alistair Francis
2023-01-20 14:01           ` Matti Vaittinen
2023-01-21 12:47             ` Alistair Francis

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).