Update the driver to use the latest binding from kernel v5.5-rc1:
no more use syscon or regmap to access to pwr register and
only one pwr_regulators node with the compatibility "st,stm32mp1,pwr-reg"
is available.

Signed-off-by: Patrick Delaunay <patrick.delau...@st.com>
---

 arch/arm/dts/stm32mp157-u-boot.dtsi        |  2 +-
 arch/arm/dts/stm32mp157a-avenger96.dts     |  8 ++--
 arch/arm/dts/stm32mp157a-dk1.dts           |  8 ++--
 arch/arm/dts/stm32mp157c-ed1.dts           |  8 ++--
 arch/arm/dts/stm32mp157c.dtsi              | 46 +++++++++-------------
 arch/arm/dts/stm32mp15xx-dhcom.dtsi        |  8 ++--
 arch/arm/mach-stm32mp/include/mach/stm32.h |  1 -
 arch/arm/mach-stm32mp/pwr_regulator.c      | 23 ++++++-----
 arch/arm/mach-stm32mp/syscon.c             |  1 -
 9 files changed, 42 insertions(+), 63 deletions(-)

diff --git a/arch/arm/dts/stm32mp157-u-boot.dtsi 
b/arch/arm/dts/stm32mp157-u-boot.dtsi
index 0d1d387e54..cb8d60e33d 100644
--- a/arch/arm/dts/stm32mp157-u-boot.dtsi
+++ b/arch/arm/dts/stm32mp157-u-boot.dtsi
@@ -128,7 +128,7 @@
        u-boot,dm-pre-reloc;
 };
 
-&pwr {
+&pwr_regulators {
        u-boot,dm-pre-reloc;
 };
 
diff --git a/arch/arm/dts/stm32mp157a-avenger96.dts 
b/arch/arm/dts/stm32mp157a-avenger96.dts
index 5b15a4a915..232fe70905 100644
--- a/arch/arm/dts/stm32mp157a-avenger96.dts
+++ b/arch/arm/dts/stm32mp157a-avenger96.dts
@@ -282,11 +282,9 @@
        status = "okay";
 };
 
-&pwr {
-       pwr-regulators {
-               vdd-supply = <&vdd>;
-               vdd_3v3_usbfs-supply = <&vdd_usb>;
-       };
+&pwr_regulators {
+       vdd-supply = <&vdd>;
+       vdd_3v3_usbfs-supply = <&vdd_usb>;
 };
 
 &rng1 {
diff --git a/arch/arm/dts/stm32mp157a-dk1.dts b/arch/arm/dts/stm32mp157a-dk1.dts
index 4652253012..dc61bfc3d5 100644
--- a/arch/arm/dts/stm32mp157a-dk1.dts
+++ b/arch/arm/dts/stm32mp157a-dk1.dts
@@ -397,11 +397,9 @@
        status = "okay";
 };
 
-&pwr {
-       pwr-regulators {
-               vdd-supply = <&vdd>;
-               vdd_3v3_usbfs-supply = <&vdd_usb>;
-       };
+&pwr_regulators {
+       vdd-supply = <&vdd>;
+       vdd_3v3_usbfs-supply = <&vdd_usb>;
 };
 
 &rng1 {
diff --git a/arch/arm/dts/stm32mp157c-ed1.dts b/arch/arm/dts/stm32mp157c-ed1.dts
index bc4d7e1ab5..acb59f24cc 100644
--- a/arch/arm/dts/stm32mp157c-ed1.dts
+++ b/arch/arm/dts/stm32mp157c-ed1.dts
@@ -263,11 +263,9 @@
        status = "okay";
 };
 
-&pwr {
-       pwr-regulators {
-               vdd-supply = <&vdd>;
-               vdd_3v3_usbfs-supply = <&vdd_usb>;
-       };
+&pwr_regulators {
+       vdd-supply = <&vdd>;
+       vdd_3v3_usbfs-supply = <&vdd_usb>;
 };
 
 &rng1 {
diff --git a/arch/arm/dts/stm32mp157c.dtsi b/arch/arm/dts/stm32mp157c.dtsi
index 28a7e4c08a..22a9386248 100644
--- a/arch/arm/dts/stm32mp157c.dtsi
+++ b/arch/arm/dts/stm32mp157c.dtsi
@@ -1110,36 +1110,26 @@
                        #reset-cells = <1>;
                };
 
-               pwr: pwr@50001000 {
-                       compatible = "st,stm32mp1-pwr", "st,stm32-pwr", 
"syscon", "simple-mfd";
-                       reg = <0x50001000 0x400>;
-                       system-power-controller;
-                       interrupts = <GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH>;
-                       st,sysrcc = <&rcc>;
-                       clocks = <&rcc PLL2_R>;
-                       clock-names = "phyclk";
-
-                       pwr-regulators {
-                               compatible = "st,stm32mp1,pwr-reg";
-                               st,tzcr = <&rcc 0x0 0x1>;
-
-                               reg11: reg11 {
-                                       regulator-name = "reg11";
-                                       regulator-min-microvolt = <1100000>;
-                                       regulator-max-microvolt = <1100000>;
-                               };
+               pwr_regulators: pwr@50001000 {
+                       compatible = "st,stm32mp1,pwr-reg";
+                       reg = <0x50001000 0x10>;
+
+                       reg11: reg11 {
+                               regulator-name = "reg11";
+                               regulator-min-microvolt = <1100000>;
+                               regulator-max-microvolt = <1100000>;
+                       };
 
-                               reg18: reg18 {
-                                       regulator-name = "reg18";
-                                       regulator-min-microvolt = <1800000>;
-                                       regulator-max-microvolt = <1800000>;
-                               };
+                       reg18: reg18 {
+                               regulator-name = "reg18";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                       };
 
-                               usb33: usb33 {
-                                       regulator-name = "usb33";
-                                       regulator-min-microvolt = <3300000>;
-                                       regulator-max-microvolt = <3300000>;
-                               };
+                       usb33: usb33 {
+                               regulator-name = "usb33";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
                        };
                };
 
diff --git a/arch/arm/dts/stm32mp15xx-dhcom.dtsi 
b/arch/arm/dts/stm32mp15xx-dhcom.dtsi
index 96661ae783..bed69c97b6 100644
--- a/arch/arm/dts/stm32mp15xx-dhcom.dtsi
+++ b/arch/arm/dts/stm32mp15xx-dhcom.dtsi
@@ -217,11 +217,9 @@
        status = "okay";
 };
 
-&pwr {
-       pwr-regulators {
-               vdd-supply = <&vdd>;
-               vdd_3v3_usbfs-supply = <&vdd_usb>;
-       };
+&pwr_regulators {
+       vdd-supply = <&vdd>;
+       vdd_3v3_usbfs-supply = <&vdd_usb>;
 };
 
 &qspi {
diff --git a/arch/arm/mach-stm32mp/include/mach/stm32.h 
b/arch/arm/mach-stm32mp/include/mach/stm32.h
index 88126b8cdb..f0636005e5 100644
--- a/arch/arm/mach-stm32mp/include/mach/stm32.h
+++ b/arch/arm/mach-stm32mp/include/mach/stm32.h
@@ -37,7 +37,6 @@
 /* enumerated used to identify the SYSCON driver instance */
 enum {
        STM32MP_SYSCON_UNKNOWN,
-       STM32MP_SYSCON_PWR,
        STM32MP_SYSCON_SYSCFG,
 };
 
diff --git a/arch/arm/mach-stm32mp/pwr_regulator.c 
b/arch/arm/mach-stm32mp/pwr_regulator.c
index 9484645dbd..f00e7527c2 100644
--- a/arch/arm/mach-stm32mp/pwr_regulator.c
+++ b/arch/arm/mach-stm32mp/pwr_regulator.c
@@ -6,8 +6,8 @@
 #include <common.h>
 #include <dm.h>
 #include <errno.h>
-#include <regmap.h>
 #include <syscon.h>
+#include <asm/io.h>
 #include <power/pmic.h>
 #include <power/regulator.h>
 
@@ -26,7 +26,7 @@ struct stm32mp_pwr_reg_info {
 };
 
 struct stm32mp_pwr_priv {
-       struct regmap *regmap;
+       fdt_addr_t base;
 };
 
 static int stm32mp_pwr_write(struct udevice *dev, uint reg,
@@ -38,7 +38,9 @@ static int stm32mp_pwr_write(struct udevice *dev, uint reg,
        if (len != 4)
                return -EINVAL;
 
-       return regmap_write(priv->regmap, STM32MP_PWR_CR3, val);
+       writel(val, priv->base + STM32MP_PWR_CR3);
+
+       return 0;
 }
 
 static int stm32mp_pwr_read(struct udevice *dev, uint reg, uint8_t *buff,
@@ -49,21 +51,18 @@ static int stm32mp_pwr_read(struct udevice *dev, uint reg, 
uint8_t *buff,
        if (len != 4)
                return -EINVAL;
 
-       return regmap_read(priv->regmap, STM32MP_PWR_CR3, (u32 *)buff);
+       *(u32 *)buff = readl(priv->base + STM32MP_PWR_CR3);
+
+       return 0;
 }
 
 static int stm32mp_pwr_ofdata_to_platdata(struct udevice *dev)
 {
        struct stm32mp_pwr_priv *priv = dev_get_priv(dev);
-       struct regmap *regmap;
 
-       regmap = syscon_get_regmap_by_driver_data(STM32MP_SYSCON_PWR);
-       if (IS_ERR(regmap)) {
-               pr_err("%s: unable to find regmap (%ld)\n", __func__,
-                      PTR_ERR(regmap));
-               return PTR_ERR(regmap);
-       }
-       priv->regmap = regmap;
+       priv->base = dev_read_addr(dev);
+       if (priv->base == FDT_ADDR_T_NONE)
+               return -EINVAL;
 
        return 0;
 }
diff --git a/arch/arm/mach-stm32mp/syscon.c b/arch/arm/mach-stm32mp/syscon.c
index 6070837bf0..3e61ce4097 100644
--- a/arch/arm/mach-stm32mp/syscon.c
+++ b/arch/arm/mach-stm32mp/syscon.c
@@ -9,7 +9,6 @@
 #include <asm/arch/stm32.h>
 
 static const struct udevice_id stm32mp_syscon_ids[] = {
-       { .compatible = "st,stm32mp1-pwr", .data = STM32MP_SYSCON_PWR },
        { .compatible = "st,stm32mp157-syscfg",
          .data = STM32MP_SYSCON_SYSCFG },
        { }
-- 
2.17.1

Reply via email to