On 1/28/20 10:10 AM, Patrick Delaunay wrote: > 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 }, > { }
Reviewed-by: Patrice Chotard <patrice.chot...@st.com> Thanks