2022-12-15 12:18:44

by Alistair Francis

[permalink] [raw]
Subject: [PATCH 3/3] ARM: dts: imx7d-remarkable2: Enable the rohm,bd71815

Add support for the rohm,bd71815 power controller controller for the
reMarkable 2.

Signed-off-by: Alistair Francis <[email protected]>
---
arch/arm/boot/dts/imx7d-remarkable2.dts | 158 ++++++++++++++++++++++++
1 file changed, 158 insertions(+)

diff --git a/arch/arm/boot/dts/imx7d-remarkable2.dts b/arch/arm/boot/dts/imx7d-remarkable2.dts
index a138b292ec6a..e61ef3bd2eb9 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,147 @@ 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 {
+ #clock-cells = <0>;
+
+ 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>;
+ clocks = <&clks IMX7D_CLKO2_ROOT_SRC>;
+ clock-output-names = "bd71815-32k-out";
+
+ 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@10 {
+ reg = <10>;
+ regulator-compatible = "dvref";
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ lpsr_reg: regulator@11 {
+ reg = <11>;
+ regulator-compatible = "lpsr";
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ wled_reg: regulator@12 {
+ reg = <12>;
+ 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 +438,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 +474,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


2022-12-16 11:53:38

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH 3/3] ARM: dts: imx7d-remarkable2: Enable the rohm,bd71815

On 15/12/2022 12:56, Alistair Francis wrote:
> Add support for the rohm,bd71815 power controller controller for the
> reMarkable 2.

Thank you for your patch. There is something to discuss/improve.

>
> Signed-off-by: Alistair Francis <[email protected]>
> ---
> arch/arm/boot/dts/imx7d-remarkable2.dts | 158 ++++++++++++++++++++++++
> 1 file changed, 158 insertions(+)
>
> diff --git a/arch/arm/boot/dts/imx7d-remarkable2.dts b/arch/arm/boot/dts/imx7d-remarkable2.dts
> index a138b292ec6a..e61ef3bd2eb9 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,147 @@ 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 {
> + #clock-cells = <0>;

compatible and reg are usually first properties.

> +
> + 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>;
> + clocks = <&clks IMX7D_CLKO2_ROOT_SRC>;
> + clock-output-names = "bd71815-32k-out";
> +
> + regulators {
> + #address-cells = <1>;
> + #size-cells = <0>;

Does not look like you tested the DTS against bindings. Please run `make
dtbs_check` (see Documentation/devicetree/bindings/writing-schema.rst
for instructions).
> +
> + 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@10 {
> + reg = <10>;

Aren't you now mixing hex and dec numbers?

> + regulator-compatible = "dvref";
> + regulator-boot-on;
> + regulator-always-on;
> + };
Best regards,
Krzysztof