Re: [U-Boot] Rockchip RK3288 u-boot with mainline kernel

Hi Heiko,
Thanks very much for the link. I got it, went to the branch, applied my patches from main denx u-boot and got it to work!
The only odd thing is, I have to do this:
regulator dev vcc_lan regulator enable
Or else I can't use the networking.
When I boot up I see:
=> regulator status Name Enabled uV mA Mode ... vcc_lan disabled - - -
I've studied all of the various rk3288*.dts* examples but have no idea why the vcc_lan does not start up upon boot. My dtsi file is below. Thanks for any help.
Cheers,
Rick
#include "rk3288.dtsi"
/ { memory { device_type = "memory"; reg = <0x0 0x80000000>; };
ext_gmac: external-gmac-clock { compatible = "fixed-clock"; clock-frequency = <125000000>; clock-output-names = "ext_gmac"; #clock-cells = <0>; };
gpio-keys { compatible = "gpio-keys"; #address-cells = <1>; #size-cells = <0>; autorepeat;
pinctrl-names = "default"; pinctrl-0 = <&pwrbtn>;
button@0 { gpios = <&gpio0 5 GPIO_ACTIVE_LOW>; label = "GPIO Key Power"; linux,input-type = <1>; gpio-key,wakeup = <1>; debounce-interval = <100>; }; };
leds { u-boot,dm-pre-reloc; compatible = "gpio-leds";
power { u-boot,dm-pre-reloc; gpios = <&gpio0 11 GPIO_ACTIVE_HIGH>; label = "sct36:blue:power"; linux,default-trigger = "default-on"; pinctrl-names = "default"; pinctrl-0 = <&power_led>; default-state = "on"; };
work { u-boot,dm-pre-reloc; gpios = <&gpio7 0 GPIO_ACTIVE_HIGH>; label = "sct36:amber:user"; linux,default-trigger = "rc-feedback"; pinctrl-names = "default"; pinctrl-0 = <&work_led>; }; };
vcc_sys: vsys-regulator { compatible = "regulator-fixed"; regulator-name = "vcc_sys"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; regulator-always-on; regulator-boot-on; };
/* * */ vcc_sd: sdmmc-regulator { compatible = "regulator-fixed"; regulator-name = "vcc_sd"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; startup-delay-us = <100000>; vin-supply = <&vcc_io>; }; };
&cpu0 { cpu0-supply = <&vdd_cpu>; };
&emmc { broken-cd; bus-width = <8>; cap-mmc-highspeed; disable-wp; non-removable; num-slots = <1>; pinctrl-names = "default"; pinctrl-0 = <&emmc_clk>, <&emmc_cmd>, <&emmc_pwr>, <&emmc_bus8>; vmmc-supply = <&vcc_io>; vqmmc-supply = <&vccio_sd>; status = "okay"; };
&sdmmc { bus-width = <4>; cap-mmc-highspeed; cap-sd-highspeed; card-detect-delay = <200>; disable-wp; /* wp not hooked up */ num-slots = <1>; pinctrl-names = "default"; pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>; supports-sd; vmmc-supply = <&vcc_sd>; vqmmc-supply = <&vccio_sd>; status = "okay"; };
&gpu { mali-supply = <&vdd_gpu>; status = "okay"; };
&gmac { assigned-clocks = <&cru SCLK_MAC>; assigned-clock-parents = <&ext_gmac>; clock_in_out = "input"; pinctrl-names = "default"; pinctrl-0 = <&rgmii_pins>, <&phy_rst>, <&phy_pmeb>, <&phy_int>; phy-supply = <&vcc_lan>; phy-mode = "rgmii"; snps,reset-active-low; snps,reset-delays-us = <0 10000 1000000>; snps,reset-gpio = <&gpio4 8 GPIO_ACTIVE_LOW>; tx_delay = <0x30>; rx_delay = <0x10>; status = "okay"; };
&hdmi { ddc-i2c-bus = <&i2c5>; status = "okay"; };
&i2c0 { status = "okay"; clock-frequency = <400000>;
rk808: pmic@1b { compatible = "rockchip,rk808"; reg = <0x1b>; interrupt-parent = <&gpio0>; interrupts = <4 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; pinctrl-0 = <&pmic_int &global_pwroff>; rockchip,system-power-controller; wakeup-source; #clock-cells = <1>; clock-output-names = "xin32k", "rk808-clkout2";
vcc1-supply = <&vcc_sys>; vcc2-supply = <&vcc_sys>; vcc3-supply = <&vcc_sys>; vcc4-supply = <&vcc_sys>; vcc6-supply = <&vcc_sys>; vcc7-supply = <&vcc_sys>; vcc8-supply = <&vcc_sys>; vcc9-supply = <&vcc_sys>; vcc10-supply = <&vcc_sys>; vcc11-supply = <&vcc_sys>; vcc12-supply = <&vcc_sys>; vddio-supply = <&vcc_io>;
regulators { vdd_cpu: DCDC_REG1 { regulator-always-on; regulator-boot-on; regulator-min-microvolt = <750000>; regulator-max-microvolt = <1350000>; regulator-name = "vdd_arm"; regulator-state-mem { regulator-off-in-suspend; }; };
vdd_gpu: DCDC_REG2 { regulator-always-on; regulator-boot-on; regulator-min-microvolt = <850000>; regulator-max-microvolt = <1250000>; regulator-name = "vdd_gpu"; regulator-state-mem { regulator-on-in-suspend; regulator-suspend-microvolt = <1000000>; }; };
vcc_ddr: DCDC_REG3 { regulator-always-on; regulator-boot-on; regulator-name = "vcc_ddr"; regulator-state-mem { regulator-on-in-suspend; }; };
vcc_io: DCDC_REG4 { regulator-always-on; regulator-boot-on; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-name = "vcc_io"; regulator-state-mem { regulator-on-in-suspend; regulator-suspend-microvolt = <3300000>; }; };
vcc33_ldo1: LDO_REG1 { regulator-always-on; regulator-boot-on; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-name = "vcc33_ldo1"; regulator-state-mem { regulator-on-in-suspend; regulator-suspend-microvolt = <3300000>; }; };
vdd_10: LDO_REG3 { regulator-always-on; regulator-boot-on; regulator-min-microvolt = <1000000>; regulator-max-microvolt = <1000000>; regulator-name = "vdd_10"; regulator-state-mem { regulator-on-in-suspend; regulator-suspend-microvolt = <1000000>; }; };
vccio_sd: LDO_REG4 { regulator-always-on; regulator-boot-on; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <3300000>; regulator-name = "vccio_sd"; regulator-state-mem { regulator-on-in-suspend; regulator-suspend-microvolt = <3300000>; }; };
vcc33_sd: LDO_REG5 { regulator-always-on; regulator-boot-on; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-name = "vcc33_sd"; regulator-state-mem { regulator-on-in-suspend; regulator-suspend-microvolt = <3300000>; }; };
vcc18_codec: LDO_REG6 { regulator-always-on; regulator-boot-on; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-name = "vcc18_codec"; regulator-state-mem { regulator-on-in-suspend; regulator-suspend-microvolt = <1800000>; }; };
vdd10_lcd: LDO_REG7 { regulator-name = "vdd10_lcd"; regulator-min-microvolt = <1000000>; regulator-max-microvolt = <1000000>; regulator-always-on; };
vcc33_ccd: LDO_REG8 { regulator-always-on; regulator-boot-on; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-name = "vcc33_ccd"; regulator-suspend-mem-disabled; };
vcc_lcd: SWITCH_REG1 { regulator-always-on; regulator-boot-on; regulator-name = "vcc_lcd"; regulator-state-mem { regulator-on-in-suspend; }; };
vcc_lan: SWITCH_REG2 { regulator-always-on; regulator-boot-on; regulator-name = "vcc_lan"; regulator-state-mem { regulator-on-in-suspend; }; }; }; }; };
&i2c2 { status = "okay"; headset: nau8825@1a { compatible = "nuvoton,nau8825"; #sound-dai-cells = <0>; reg = <0x1a>; interrupt-parent = <&gpio6>; interrupts = <5 IRQ_TYPE_LEVEL_LOW>; nuvoton,jkdet-enable = <1>; nuvoton,jkdet-pull-enable = <1>; nuvoton,jkdet-pull-up = <0>; nuvoton,jkdet-polarity = <1>; nuvoton,vref-impedance = <2>; nuvoton,micbias-voltage = <6>; nuvoton,sar-threshold-num = <4>; nuvoton,sar-threshold = <0xa 0x14 0x26 0x73>; nuvoton,sar-hysteresis = <0>; nuvoton,sar-voltage = <6>; nuvoton,sar-compare-time = <0>; nuvoton,sar-sampling-time = <0>; nuvoton,short-key-debounce = <3>; nuvoton,jack-insert-debounce = <7>; nuvoton,jack-eject-debounce = <7>; clock-names = "mclk"; clocks = <&cru SCLK_I2S0_OUT>; }; };
&i2c5 { status = "okay"; };
&wdt { status = "okay"; };
&pwm0 { status = "okay"; };
&uart0 { status = "okay"; };
&uart1 { status = "okay"; };
&uart2 { status = "okay"; };
&uart3 { status = "okay"; };
&uart4 { status = "okay"; };
&tsadc { rockchip,hw-tshut-mode = <1>; /* tshut mode 0:CRU 1:GPIO */ rockchip,hw-tshut-polarity = <1>; /* tshut polarity 0:LOW 1:HIGH */ status = "okay"; };
&usbphy { status = "okay"; };
&usb_host0_ehci { status = "okay"; };
&usb_host1 { status = "okay"; };
&usb_otg { status= "okay"; };
&vopb { status = "okay"; };
&vopb_mmu { status = "okay"; };
&vopl { status = "okay"; };
&vopl_mmu { status = "okay"; };
&pinctrl { pcfg_pull_none_drv_8ma: pcfg-pull-none-drv-8ma { drive-strength = <8>; };
pcfg_pull_up_drv_8ma: pcfg-pull-up-drv-8ma { bias-pull-up; drive-strength = <8>; };
pcfg_output_high: pcfg-output-high { output-high; };
pcfg_output_low: pcfg-output-low { output-low; };
buttons { pwrbtn: pwrbtn { rockchip,pins = <0 5 RK_FUNC_GPIO &pcfg_pull_up>; }; };
leds { power_led: power-led { rockchip,pins = <0 11 RK_FUNC_GPIO &pcfg_pull_none>; };
work_led: work-led { rockchip,pins = <7 0 RK_FUNC_GPIO &pcfg_pull_none>; }; };
pmic { pmic_int: pmic-int { rockchip,pins = <RK_GPIO0 4 RK_FUNC_GPIO &pcfg_pull_up>; }; };
sdmmc { /* * Default drive strength isn't enough to achieve even * high-speed mode on EVB board so bump up to 8ma. */ sdmmc_bus4: sdmmc-bus4 { rockchip,pins = <6 16 RK_FUNC_1 &pcfg_pull_up_drv_8ma>, <6 17 RK_FUNC_1 &pcfg_pull_up_drv_8ma>, <6 18 RK_FUNC_1 &pcfg_pull_up_drv_8ma>, <6 19 RK_FUNC_1 &pcfg_pull_up_drv_8ma>; };
sdmmc_clk: sdmmc-clk { rockchip,pins = <6 20 RK_FUNC_1 &pcfg_pull_none_drv_8ma>; };
sdmmc_cmd: sdmmc-cmd { rockchip,pins = <6 21 RK_FUNC_1 &pcfg_pull_up_drv_8ma>; };
};
gmac { phy_int: phy-int { rockchip,pins = <0 8 RK_FUNC_GPIO &pcfg_pull_up>; };
phy_pmeb: phy-pmeb { rockchip,pins = <0 7 RK_FUNC_GPIO &pcfg_pull_up>; };
phy_rst: phy-rst { rockchip,pins = <4 8 RK_FUNC_GPIO &pcfg_output_high>; }; };
usb { host_vbus_drv: host-vbus-drv { /* note: 2 10 us USB2, 2 11 is USB3 */ rockchip,pins = <2 10 RK_FUNC_GPIO &pcfg_pull_none>, <2 11 RK_FUNC_GPIO &pcfg_pull_none>; };
pwr_3g: pwr-3g { rockchip,pins = <7 8 RK_FUNC_GPIO &pcfg_pull_none>; }; }; };

Hi Rick,
Am Samstag, 3. Dezember 2016, 10:07:25 CET schrieb Rick Bronson:
Thanks very much for the link. I got it, went to the branch, applied my patches from main denx u-boot and got it to work!
The only odd thing is, I have to do this:
regulator dev vcc_lan regulator enable
Or else I can't use the networking.
When I boot up I see:
=> regulator status Name Enabled uV mA Mode ... vcc_lan disabled - - -
I've studied all of the various rk3288*.dts* examples but have no idea why the vcc_lan does not start up upon boot. My dtsi file is below. Thanks for any help.
Firefly and Rock2 use an act8846 as pmic while your board seems to use the rk808. The switch used to control your vcc_lan is most likely off on boot while the regulator used on firefly etc is most likely simply on on boot.
I don't know if the devicemanager-part of uboot actually handles such regulator-supplies at all.
Heiko
participants (2)
-
Heiko Stuebner
-
Rick Bronson