[PATCH v3 2/2] arm64: dts: rockchip: Enable regulators for Radxa E20C

Jonas Karlman jonas at kwiboo.se
Mon May 5 16:12:54 PDT 2025


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 at 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 at 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";




More information about the linux-arm-kernel mailing list