diff mbox series

[2/9] stm32mp1: pwr: use the last binding for pwr

Message ID 20200128101041.2.Ic3c189e7da6e6ff909e435d7011057b867559ba2@changeid
State Accepted
Delegated to: Patrick Delaunay
Headers show
Series stm32mp1 devicetre-tree and board update | expand

Commit Message

Patrick DELAUNAY Jan. 28, 2020, 9:10 a.m. UTC
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(-)

Comments

Patrice CHOTARD Feb. 13, 2020, 8:16 a.m. UTC | #1
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
Patrick DELAUNAY Feb. 14, 2020, 10:25 a.m. UTC | #2
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 mbox series

Patch

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 },
 	{ }