Enable pwm and fixed regulators for Radxa E20C. The pwm regulator is
used to power the CPU and GPU. Note that the LPDDR4 voltage is 1.1V.
Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
---
.../boot/dts/rockchip/rk3528-radxa-e20c.dts | 73 +++++++++++++++++++
1 file changed, 73 insertions(+)
diff --git a/arch/arm64/boot/dts/rockchip/rk3528-radxa-e20c.dts b/arch/arm64/boot/dts/rockchip/rk3528-radxa-e20c.dts
index 57a446b5cbd6..14770bd63ae7 100644
--- a/arch/arm64/boot/dts/rockchip/rk3528-radxa-e20c.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3528-radxa-e20c.dts
@@ -9,6 +9,7 @@
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
+#include <dt-bindings/pwm/pwm.h>
#include "rk3528.dtsi"
/ {
@@ -80,6 +81,26 @@ led-wan {
};
};
+ vdd_0v9: regulator-0v9-vdd {
+ compatible = "regulator-fixed";
+ regulator-name = "vdd_0v9";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <900000>;
+ regulator-max-microvolt = <900000>;
+ vin-supply = <&vcc5v0_sys>;
+ };
+
+ vcc_ddr: regulator-1v1-vcc-ddr {
+ compatible = "regulator-fixed";
+ regulator-name = "vcc_ddr";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <1100000>;
+ regulator-max-microvolt = <1100000>;
+ vin-supply = <&vcc5v0_sys>;
+ };
+
vcc_1v8: regulator-1v8-vcc {
compatible = "regulator-fixed";
regulator-name = "vcc_1v8";
@@ -108,6 +129,46 @@ vcc5v0_sys: regulator-5v0-vcc-sys {
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
};
+
+ vdd_arm: regulator-vdd-arm {
+ compatible = "pwm-regulator";
+ pwms = <&pwm1 0 5000 PWM_POLARITY_INVERTED>;
+ pwm-supply = <&vcc5v0_sys>;
+ regulator-name = "vdd_arm";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <746000>;
+ regulator-max-microvolt = <1201000>;
+ regulator-settling-time-up-us = <250>;
+ };
+
+ vdd_logic: regulator-vdd-logic {
+ compatible = "pwm-regulator";
+ pwms = <&pwm2 0 5000 PWM_POLARITY_INVERTED>;
+ pwm-supply = <&vcc5v0_sys>;
+ regulator-name = "vdd_logic";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <705000>;
+ regulator-max-microvolt = <1006000>;
+ regulator-settling-time-up-us = <250>;
+ };
+};
+
+&cpu0 {
+ cpu-supply = <&vdd_arm>;
+};
+
+&cpu1 {
+ cpu-supply = <&vdd_arm>;
+};
+
+&cpu2 {
+ cpu-supply = <&vdd_arm>;
+};
+
+&cpu3 {
+ cpu-supply = <&vdd_arm>;
};
&pinctrl {
@@ -132,6 +193,18 @@ wan_led_g: wan-led-g {
};
};
+&pwm1 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pwm1m0_pins>;
+ status = "okay";
+};
+
+&pwm2 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pwm2m0_pins>;
+ status = "okay";
+};
+
&saradc {
vref-supply = <&vcc_1v8>;
status = "okay";
--
2.25.1
On 2025-04-01 14:00, Chukun Pan wrote: > Enable pwm and fixed regulators for Radxa E20C. The pwm regulator is > used to power the CPU and GPU. Note that the LPDDR4 voltage is 1.1V. > > Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn> This seem to match the schematics of the E20C and the regulators work on my E20C: regulator use open bypass opmode voltage current min max --------------------------------------------------------------------------------------- regulator-dummy 1 0 0 unknown 0mV 0mA 0mV 0mV vcc5v0_sys 7 6 0 unknown 5000mV 0mA 5000mV 5000mV vdd_0v9 1 0 0 unknown 900mV 0mA 900mV 900mV vcc_ddr 1 0 0 unknown 1100mV 0mA 1100mV 1100mV vcc_3v3 5 5 0 unknown 3300mV 0mA 3300mV 3300mV ffbf0000.mmc-vmmc 1 0mA 3300mV 3400mV ffc30000.mmc-vmmc 1 0mA 3300mV 3400mV 1-0050-vcc 0 0mA 0mV 0mV ffbe0000.ethernet-phy 1 0mA 0mV 0mV vcc_1v8 3 2 0 unknown 1800mV 0mA 1800mV 1800mV ffbf0000.mmc-vqmmc 1 0mA 0mV 0mV ffae0000.adc-vref 1 0mA 0mV 0mV vccio_sd 2 1 0 unknown 1800mV 0mA 1800mV 3300mV ffc30000.mmc-vqmmc 1 0mA 1800mV 1950mV vdd_arm 1 0 0 unknown 1201mV 0mA 746mV 1201mV vdd_logic 1 0 0 unknown 1006mV 0mA 705mV 1006mV Without any opp table or the pwm-regulators not being initialized in U-Boot they seem to default to max voltage, should be fine so this is: Reviewed-by: Jonas Karlman <jonas@kwiboo.se> Regards, Jonas > --- > .../boot/dts/rockchip/rk3528-radxa-e20c.dts | 73 +++++++++++++++++++ > 1 file changed, 73 insertions(+) > > diff --git a/arch/arm64/boot/dts/rockchip/rk3528-radxa-e20c.dts b/arch/arm64/boot/dts/rockchip/rk3528-radxa-e20c.dts > index 57a446b5cbd6..14770bd63ae7 100644 > --- a/arch/arm64/boot/dts/rockchip/rk3528-radxa-e20c.dts > +++ b/arch/arm64/boot/dts/rockchip/rk3528-radxa-e20c.dts > @@ -9,6 +9,7 @@ > > #include <dt-bindings/input/input.h> > #include <dt-bindings/leds/common.h> > +#include <dt-bindings/pwm/pwm.h> > #include "rk3528.dtsi" > > / { > @@ -80,6 +81,26 @@ led-wan { > }; > }; > > + vdd_0v9: regulator-0v9-vdd { > + compatible = "regulator-fixed"; > + regulator-name = "vdd_0v9"; > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <900000>; > + regulator-max-microvolt = <900000>; > + vin-supply = <&vcc5v0_sys>; > + }; > + > + vcc_ddr: regulator-1v1-vcc-ddr { > + compatible = "regulator-fixed"; > + regulator-name = "vcc_ddr"; > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <1100000>; > + regulator-max-microvolt = <1100000>; > + vin-supply = <&vcc5v0_sys>; > + }; > + > vcc_1v8: regulator-1v8-vcc { > compatible = "regulator-fixed"; > regulator-name = "vcc_1v8"; > @@ -108,6 +129,46 @@ vcc5v0_sys: regulator-5v0-vcc-sys { > regulator-min-microvolt = <5000000>; > regulator-max-microvolt = <5000000>; > }; > + > + vdd_arm: regulator-vdd-arm { > + compatible = "pwm-regulator"; > + pwms = <&pwm1 0 5000 PWM_POLARITY_INVERTED>; > + pwm-supply = <&vcc5v0_sys>; > + regulator-name = "vdd_arm"; > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <746000>; > + regulator-max-microvolt = <1201000>; > + regulator-settling-time-up-us = <250>; > + }; > + > + vdd_logic: regulator-vdd-logic { > + compatible = "pwm-regulator"; > + pwms = <&pwm2 0 5000 PWM_POLARITY_INVERTED>; > + pwm-supply = <&vcc5v0_sys>; > + regulator-name = "vdd_logic"; > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <705000>; > + regulator-max-microvolt = <1006000>; > + regulator-settling-time-up-us = <250>; > + }; > +}; > + > +&cpu0 { > + cpu-supply = <&vdd_arm>; > +}; > + > +&cpu1 { > + cpu-supply = <&vdd_arm>; > +}; > + > +&cpu2 { > + cpu-supply = <&vdd_arm>; > +}; > + > +&cpu3 { > + cpu-supply = <&vdd_arm>; > }; > > &pinctrl { > @@ -132,6 +193,18 @@ wan_led_g: wan-led-g { > }; > }; > > +&pwm1 { > + pinctrl-names = "default"; > + pinctrl-0 = <&pwm1m0_pins>; > + status = "okay"; > +}; > + > +&pwm2 { > + pinctrl-names = "default"; > + pinctrl-0 = <&pwm2m0_pins>; > + status = "okay"; > +}; > + > &saradc { > vref-supply = <&vcc_1v8>; > status = "okay";
© 2016 - 2025 Red Hat, Inc.