Message ID | 20200128101041.2.Ic3c189e7da6e6ff909e435d7011057b867559ba2@changeid |
---|---|
State | Accepted |
Delegated to: | Patrick Delaunay |
Headers | show |
Series | stm32mp1 devicetre-tree and board update | expand |
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.delaunay@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.chotard@st.com> Thanks
Hi, > From: Patrick DELAUNAY <patrick.delaunay@st.com> > Sent: mardi 28 janvier 2020 10:11 > > 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.delaunay@st.com> > --- Applied to u-boot-stm32/master, thanks! Regards Patrick
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 }, { }
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.delaunay@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(-)