2023-02-25 11:37:36

by Alistair Francis

[permalink] [raw]
Subject: [PATCH v3 0/3] imx7d-remarkable2: Enable cyttsp5 and rohm,bd71815

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

v3:
- Remove unused sleep states
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 | 255 ++++++++++++++++++++++++
arch/arm/configs/imx_v6_v7_defconfig | 5 +
2 files changed, 260 insertions(+)

--
2.39.1



2023-02-25 11:37:48

by Alistair Francis

[permalink] [raw]
Subject: [PATCH v3 2/3] ARM: imx_v6_v7_defconfig: Enable rohm,bd71815

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

Signed-off-by: Alistair Francis <[email protected]>
---
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.39.1


2023-02-25 11:37:58

by Alistair Francis

[permalink] [raw]
Subject: [PATCH v3 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 288fc8611117..9ecb733545cc 100644
--- a/arch/arm/boot/dts/imx7d-remarkable2.dts
+++ b/arch/arm/boot/dts/imx7d-remarkable2.dts
@@ -91,6 +91,10 @@ wifi_pwrseq: wifi_pwrseq {
};
};

+&cpu0 {
+ cpu-supply = <&buck1_reg>;
+};
+
&clks {
assigned-clocks = <&clks IMX7D_CLKO2_ROOT_SRC>,
<&clks IMX7D_CLKO2_ROOT_DIV>;
@@ -118,6 +122,147 @@ wacom_digitizer: digitizer@9 {
};
};

+&i2c2 {
+ clock-frequency = <100000>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&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 = "ldodvref";
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ lpsr_reg: regulator@b {
+ reg = <0xb>;
+ regulator-compatible = "ldolpsr";
+ 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";
@@ -292,6 +437,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 */
@@ -322,6 +473,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.39.1


2023-02-25 14:22:09

by Matti Vaittinen

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

Hi Alistair,

On 2/25/23 13:37, Alistair Francis wrote:
> 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 288fc8611117..9ecb733545cc 100644
> --- a/arch/arm/boot/dts/imx7d-remarkable2.dts
> +++ b/arch/arm/boot/dts/imx7d-remarkable2.dts
> @@ -91,6 +91,10 @@ wifi_pwrseq: wifi_pwrseq {
> };
> };
>
> +&cpu0 {
> + cpu-supply = <&buck1_reg>;
> +};
> +
> &clks {
> assigned-clocks = <&clks IMX7D_CLKO2_ROOT_SRC>,
> <&clks IMX7D_CLKO2_ROOT_DIV>;
> @@ -118,6 +122,147 @@ wacom_digitizer: digitizer@9 {
> };
> };
>
> +&i2c2 {
> + clock-frequency = <100000>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&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";

I'm sure you have learned to regard my comments with certain care ;) (I
think it was you for whom I gave an advice - which resulted a board to
be bricked :| So, please treat my comment as if I did not know what I am
talking about).

Anyways, I believe the "regulator-compatible" is deprecated and should
no longer be used to match the node with the regulator? Instead, the
regulator node name itself should be used for the matching.

ref.
https://elixir.bootlin.com/linux/latest/source/drivers/regulator/of_regulator.c#L380

I don't think the regulator-compatible can even be found from the
regulator.yaml binding list...

With this remark - (and what ever it is worth):
Reviewed-by: Matti Vaittinen <[email protected]>

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

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


2023-02-25 20:37:26

by Fabio Estevam

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

On Sat, Feb 25, 2023 at 8:37 AM Alistair Francis <[email protected]> wrote:

> +&i2c2 {
> + clock-frequency = <100000>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&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>;

The binding document says #gpio-cells = <2>;

> +
> + regulators {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + buck1_reg: regulator@0 {
> + reg = <0>;

The regulator@0 and reg should not be present.

Please check Documentation/devicetree/bindings/mfd/rohm,bd71815-pmic.yaml

2023-02-26 05:51:02

by Alistair Francis

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

On Sun, Feb 26, 2023 at 12:22 AM Matti Vaittinen
<[email protected]> wrote:
>
> Hi Alistair,
>
> On 2/25/23 13:37, Alistair Francis wrote:
> > 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 288fc8611117..9ecb733545cc 100644
> > --- a/arch/arm/boot/dts/imx7d-remarkable2.dts
> > +++ b/arch/arm/boot/dts/imx7d-remarkable2.dts
> > @@ -91,6 +91,10 @@ wifi_pwrseq: wifi_pwrseq {
> > };
> > };
> >
> > +&cpu0 {
> > + cpu-supply = <&buck1_reg>;
> > +};
> > +
> > &clks {
> > assigned-clocks = <&clks IMX7D_CLKO2_ROOT_SRC>,
> > <&clks IMX7D_CLKO2_ROOT_DIV>;
> > @@ -118,6 +122,147 @@ wacom_digitizer: digitizer@9 {
> > };
> > };
> >
> > +&i2c2 {
> > + clock-frequency = <100000>;
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&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";
>
> I'm sure you have learned to regard my comments with certain care ;) (I
> think it was you for whom I gave an advice - which resulted a board to
> be bricked :| So, please treat my comment as if I did not know what I am
> talking about).

That was me! The board wasn't bricked though, luckily as it's my only
device. It took a month of full battery discharge cycles but I managed
to replace the device tree with a working one :)

>
> Anyways, I believe the "regulator-compatible" is deprecated and should
> no longer be used to match the node with the regulator? Instead, the
> regulator node name itself should be used for the matching.
>
> ref.
> https://elixir.bootlin.com/linux/latest/source/drivers/regulator/of_regulator.c#L380
>
> I don't think the regulator-compatible can even be found from the
> regulator.yaml binding list...

You're right. Thanks for that, I have removed them and replaced them
with "regulator-name" to match the documentation.

>
> With this remark - (and what ever it is worth):
> Reviewed-by: Matti Vaittinen <[email protected]>

Thanks!

Alistair

>
> --
> Matti Vaittinen
> Linux kernel developer at ROHM Semiconductors
> Oulu Finland
>
> ~~ When things go utterly wrong vim users can always type :help! ~~
>

2023-02-26 05:53:34

by Alistair Francis

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

On Sun, Feb 26, 2023 at 6:37 AM Fabio Estevam <[email protected]> wrote:
>
> On Sat, Feb 25, 2023 at 8:37 AM Alistair Francis <[email protected]> wrote:
>
> > +&i2c2 {
> > + clock-frequency = <100000>;
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&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>;
>
> The binding document says #gpio-cells = <2>;

Fixed!

>
> > +
> > + regulators {
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > +
> > + buck1_reg: regulator@0 {
> > + reg = <0>;
>
> The regulator@0 and reg should not be present.

Fixed

>
> Please check Documentation/devicetree/bindings/mfd/rohm,bd71815-pmic.yaml

Thanks, I double checked my latest code against the bindings.

Alistair