Message ID | 20170424160103.9447-10-icenowy@aosc.io (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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? 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 <icenowy@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>; >
于 2017年4月25日 GMT+08:00 下午5:24:13, Andre Przywara <andre.przywara@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 <icenowy@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>; >>
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>; + 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>;
Add support of AXP803 regulators in the Pine64 device tree, in order to enable many future functionalities, e.g. Wi-Fi. Signed-off-by: Icenowy Zheng <icenowy@aosc.io> --- .../arm64/boot/dts/allwinner/sun50i-a64-pine64.dts | 109 +++++++++++++++++++++ 1 file changed, 109 insertions(+)