[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