[PATCH 2/9] stm32mp1: pwr: use the last binding for pwr
Patrice CHOTARD
patrice.chotard at st.com
Thu Feb 13 09:16:40 CET 2020
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 at 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 at 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 at 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 at st.com>
Thanks
More information about the U-Boot
mailing list