于 2017年4月25日 GMT+08:00 下午5:24:13, Andre Przywara <andre.przyw...@arm.com> 写到: >Hi, > >On 24/04/17 17:01, Icenowy Zheng wrote: >> Add support of AXP803 regulators in the Pine64 device tree, in order >to >> enable many future functionalities, e.g. Wi-Fi. > >In general that's quite some code to just achieve some device power >plane switching, but that's another discussion, I guess ;-) > >To me this patch here like a lot of churn to be duplicated in each >board's DT. >Can't we provide some sane defaults, either in axp803.dtsi or in an >extra file (allwinner-ref-axp803.dtsi?), and only overwrite them in a >board's DT if a board deviates?
For critical regulators you're right, however, peripherals' power seems to vary a lot, e.g. Wi-Fi and HDMI. The DLDO1 for HDMI and DLDO4 for Wi-Fi design is only adopted by Pine64; according to BPi M64 schematics, Wi-Fi is DLDO2 and Wi-Fi IO voltage is DLDO4 (on Pine64 it's ELDO1 which is forced to be 1.8v because it's connected to CPVDD); on Orange Pi Win {,Plus} Wi-Fi is ALDO1, Wi-Fi IO is DLDO4 and HDMI is DLDO3. >Because it seems like many boards are actually based on some Allwinner >reference design and use very similar, if not identical settings. > >Also one thing below ... > >> >> Signed-off-by: Icenowy Zheng <icen...@aosc.io> >> --- >> .../arm64/boot/dts/allwinner/sun50i-a64-pine64.dts | 109 >+++++++++++++++++++++ >> 1 file changed, 109 insertions(+) >> >> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts >b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts >> index 3e1b44292534..abc1879e91f2 100644 >> --- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts >> +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts >> @@ -106,6 +106,115 @@ >> }; >> }; >> >> +#include "axp803.dtsi" >> + >> +®_aldo1 { >> + regulator-min-microvolt = <2800000>; >> + regulator-max-microvolt = <2800000>; >> + regulator-name = "vcc-csi"; >> +}; >> + >> +®_aldo2 { >> + regulator-always-on; >> + regulator-min-microvolt = <1800000>; >> + regulator-max-microvolt = <3300000>; >> + regulator-name = "vcc-pl"; >> +}; >> + >> +®_aldo3 { >> + regulator-always-on; >> + regulator-min-microvolt = <2700000>; >> + regulator-max-microvolt = <3300000>; >> + regulator-name = "vcc-pll-avcc"; >> +}; >> + >> +®_dc1sw { >> + regulator-name = "vcc-phy"; >> +}; >> + >> +®_dcdc1 { >> + regulator-always-on; >> + regulator-min-microvolt = <3300000>; >> + regulator-max-microvolt = <3300000>; >> + regulator-name = "vcc-3v3"; >> +}; >> + >> +®_dcdc2 { >> + regulator-always-on; >> + regulator-min-microvolt = <1000000>; >> + regulator-max-microvolt = <1300000>; >> + regulator-name = "vdd-cpux"; >> +}; >> + >> +/* DCDC3 is polyphased with DCDC2 */ >> + >> +®_dcdc5 { >> + regulator-always-on; >> + regulator-min-microvolt = <1500000>; >> + regulator-max-microvolt = <1500000>; > >On the Pine64 there is DDR3L DRAM, running at 1.35V. > >Cheers, >Andre. > > >> + regulator-name = "vcc-dram"; >> +}; >> + >> +®_dcdc6 { >> + regulator-always-on; >> + regulator-min-microvolt = <1100000>; >> + regulator-max-microvolt = <1100000>; >> + regulator-name = "vdd-sys"; >> +}; >> + >> +®_dldo1 { >> + regulator-min-microvolt = <3300000>; >> + regulator-max-microvolt = <3300000>; >> + regulator-name = "vcc-hdmi"; >> +}; >> + >> +®_dldo2 { >> + regulator-min-microvolt = <3300000>; >> + regulator-max-microvolt = <3300000>; >> + regulator-name = "vcc-mipi"; >> +}; >> + >> +®_dldo3 { >> + regulator-min-microvolt = <3300000>; >> + regulator-max-microvolt = <3300000>; >> + regulator-name = "avdd-csi"; >> +}; >> + >> +®_dldo4 { >> + regulator-min-microvolt = <3300000>; >> + regulator-max-microvolt = <3300000>; >> + regulator-name = "vcc-wifi"; >> +}; >> + >> +®_eldo1 { >> + regulator-min-microvolt = <1800000>; >> + regulator-max-microvolt = <1800000>; >> + regulator-name = "cpvdd"; >> +}; >> + >> +®_eldo3 { >> + regulator-min-microvolt = <1800000>; >> + regulator-max-microvolt = <1800000>; >> + regulator-name = "vdd-1v8-csi"; >> +}; >> + >> +®_fldo1 { >> + regulator-min-microvolt = <1200000>; >> + regulator-max-microvolt = <1200000>; >> + regulator-name = "vcc-1v2-hsic"; >> +}; >> + >> +®_fldo2 { >> + regulator-always-on; >> + regulator-min-microvolt = <1100000>; >> + regulator-max-microvolt = <1100000>; >> + regulator-name = "vdd-cpus"; >> +}; >> + >> +®_rtc_ldo { >> + regulator-name = "vcc-rtc"; >> +}; >> + >> &uart0 { >> pinctrl-names = "default"; >> pinctrl-0 = <&uart0_pins_a>; >>