diff mbox series

[U-Boot,RESEND,2/2] net: designware: add clock support

Message ID 1511942771-7961-3-git-send-email-patrice.chotard@st.com
State Accepted
Commit 463aef3
Delegated to: Joe Hershberger
Headers show
Series Add clock support for designware net driver | expand

Commit Message

Patrice CHOTARD Nov. 29, 2017, 8:06 a.m. UTC
From: Patrice Chotard <patrice.chotard@st.com>

This implementation manages several clocks, disable and
free all of them in case of error during probe and in remove
callback.

Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
---
 drivers/net/designware.c | 43 +++++++++++++++++++++++++++++++++++++++++++
 drivers/net/designware.h |  4 ++++
 2 files changed, 47 insertions(+)

Comments

Simon Glass Dec. 2, 2017, 3:29 a.m. UTC | #1
On 29 November 2017 at 01:06,  <patrice.chotard@st.com> wrote:
> From: Patrice Chotard <patrice.chotard@st.com>
>
> This implementation manages several clocks, disable and
> free all of them in case of error during probe and in remove
> callback.
>
> Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
> ---
>  drivers/net/designware.c | 43 +++++++++++++++++++++++++++++++++++++++++++
>  drivers/net/designware.h |  4 ++++
>  2 files changed, 47 insertions(+)

Reviewed-by: Simon Glass <sjg@chromium.org>
Joe Hershberger Dec. 5, 2017, 8:38 p.m. UTC | #2
On Wed, Nov 29, 2017 at 2:06 AM,  <patrice.chotard@st.com> wrote:
> From: Patrice Chotard <patrice.chotard@st.com>
>
> This implementation manages several clocks, disable and
> free all of them in case of error during probe and in remove
> callback.
>
> Signed-off-by: Patrice Chotard <patrice.chotard@st.com>

Acked-by: Joe Hershberger <joe.hershberger@ni.com>
Joe Hershberger Jan. 22, 2018, 4:49 p.m. UTC | #3
Hi Patrice,

https://patchwork.ozlabs.org/patch/842491/ was applied to http://git.denx.de/?p=u-boot/u-boot-net.git

Thanks!
-Joe
Jonathan Gray Feb. 16, 2018, 7:17 a.m. UTC | #4
On Wed, Nov 29, 2017 at 09:06:11AM +0100, patrice.chotard@st.com wrote:
> From: Patrice Chotard <patrice.chotard@st.com>
> 
> This implementation manages several clocks, disable and
> free all of them in case of error during probe and in remove
> callback.
> 
> Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
> ---
>  drivers/net/designware.c | 43 +++++++++++++++++++++++++++++++++++++++++++
>  drivers/net/designware.h |  4 ++++
>  2 files changed, 47 insertions(+)

RK3288 Ethernet on the ASUS Tinker Board fails to probe with master
(32fe36574ea5e6ea55313e16547b98a984af7767) but worked with 2018.01.

ba1f966725223c605ed504b09446c52a3f201c2b is the first bad commit
commit ba1f966725223c605ed504b09446c52a3f201c2b
Author: Patrice Chotard <patrice.chotard@st.com>
Date:   Wed Nov 29 09:06:11 2017 +0100

    net: designware: add clock support
    
    This implementation manages several clocks, disable and
    free all of them in case of error during probe and in remove
    callback.
    
    Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
    Reviewed-by: Simon Glass <sjg@chromium.org>
    Acked-by: Joe Hershberger <joe.hershberger@ni.com>

:040000 040000 6f1002af4c0f3ed7ab6f2418d4f2de00bbe454a7 e18d2a6c24cbfd055c89fa250946bf85199fff90 M      drivers

U-Boot 2018.03-rc2-00047-gc1531533c5 (Feb 16 2018 - 15:38:39 +1100)

Model: Tinker-RK3288
DRAM:  2 GiB
MMC:   dwmmc@ff0c0000: 1
Loading Environment from MMC... *** Warning - bad CRC, using default environment

Failed (-5)
In:    serial
Out:   serial
Err:   serial
Model: Tinker-RK3288
Net:   failed to enable clock 0
No ethernet found.
Hit any key to stop autoboot:  0
=> dm tree
 Class	    Probed  Driver	Name
----------------------------------------
 root	    [ + ]   root_drive	root_driver
 clk	    [	]   fixed_rate	|-- oscillator
 mmc	    [ + ]   rockchip_r	|-- dwmmc@ff0c0000
 blk	    [ + ]   mmc_blk	|   `-- dwmmc@ff0c0000.blk
 adc	    [ + ]   rockchip_s	|-- saradc@ff100000
 i2c	    [	]   i2c_rockch	|-- i2c@ff170000
 serial	    [	]   ns16550_se	|-- serial@ff180000
 serial	    [	]   ns16550_se	|-- serial@ff190000
 serial	    [ + ]   ns16550_se	|-- serial@ff690000
 serial	    [	]   ns16550_se	|-- serial@ff1b0000
 serial	    [	]   ns16550_se	|-- serial@ff1c0000
 eth	    [	]   gmac_rockc	|-- ethernet@ff290000
 usb	    [	]   dwc2_usb	|-- usb@ff540000
 usb	    [	]   dwc2_usb	|-- usb@ff580000
 ram	    [	]   rockchip_r	|-- dmc@ff610000
 i2c	    [ + ]   i2c_rockch	|-- i2c@ff650000
 pmic	    [ + ]   rk8xx pmic	|   `-- pmic@1b
 regulator  [	]   rk8xx_buck	|	|-- DCDC_REG1
 regulator  [	]   rk8xx_buck	|	|-- DCDC_REG2
 regulator  [	]   rk8xx_buck	|	|-- DCDC_REG3
 regulator  [	]   rk8xx_buck	|	|-- DCDC_REG4
 regulator  [	]   rk8xx_ldo	|	|-- LDO_REG1
 regulator  [	]   rk8xx_ldo	|	|-- LDO_REG2
 regulator  [	]   rk8xx_ldo	|	|-- LDO_REG3
 regulator  [	]   rk8xx_ldo	|	|-- LDO_REG4
 regulator  [ + ]   rk8xx_ldo	|	|-- LDO_REG5
 regulator  [	]   rk8xx_ldo	|	|-- LDO_REG6
 regulator  [	]   rk8xx_ldo	|	|-- LDO_REG7
 regulator  [	]   rk8xx_ldo	|	|-- LDO_REG8
 regulator  [	]   rk8xx_swit	|	|-- SWITCH_REG1
 regulator  [	]   rk8xx_swit	|	`-- SWITCH_REG2
 i2c	    [ + ]   i2c_rockch	|-- i2c@ff660000
 i2c_eeprom [ + ]   i2c_eeprom	|   `-- m24c08@50
 pwm	    [	]   rk_pwm	|-- pwm@ff680000
 pwm	    [	]   rk_pwm	|-- pwm@ff680010
 syscon	    [ + ]   rk3288_sys	|-- power-management@ff730000
 syscon	    [	]   rk3288_sys	|-- syscon@ff740000
 clk	    [ + ]   rockchip_r	|-- clock-controller@ff760000
 sysreset   [	]   rockchip_s	|   `-- sysreset
 syscon	    [ + ]   rk3288_sys	|-- syscon@ff770000
 syscon	    [	]   rk3288_sys	|-- syscon@ffac0000
 pinctrl    [ + ]   rockchip_r	|-- pinctrl
 gpio	    [	]   gpio_rockc	|   |-- gpio0@ff750000
 gpio	    [	]   gpio_rockc	|   |-- gpio1@ff780000
 gpio	    [	]   gpio_rockc	|   |-- gpio2@ff790000
 gpio	    [	]   gpio_rockc	|   |-- gpio3@ff7a0000
 gpio	    [ + ]   gpio_rockc	|   |-- gpio4@ff7b0000
 gpio	    [	]   gpio_rockc	|   |-- gpio5@ff7c0000
 gpio	    [	]   gpio_rockc	|   |-- gpio6@ff7d0000
 gpio	    [ + ]   gpio_rockc	|   |-- gpio7@ff7e0000
 gpio	    [	]   gpio_rockc	|   |-- gpio8@ff7f0000
 pinconfig  [	]   pinconfig	|   |-- pcfg-pull-up
 pinconfig  [	]   pinconfig	|   |-- pcfg-pull-down
 pinconfig  [	]   pinconfig	|   |-- pcfg-pull-none
 pinconfig  [	]   pinconfig	|   |-- pcfg-pull-none-12ma
 pinconfig  [ + ]   pinconfig	|   |-- sleep
 pinconfig  [ + ]   pinconfig	|   |	|-- global-pwroff
 pinconfig  [	]   pinconfig	|   |	|-- ddrio-pwroff
 pinconfig  [	]   pinconfig	|   |	|-- ddr0-retention
 pinconfig  [	]   pinconfig	|   |	`-- ddr1-retention
 pinconfig  [ + ]   pinconfig	|   |-- i2c0
 pinconfig  [ + ]   pinconfig	|   |	`-- i2c0-xfer
 pinconfig  [	]   pinconfig	|   |-- i2c1
 pinconfig  [	]   pinconfig	|   |	`-- i2c1-xfer
 pinconfig  [ + ]   pinconfig	|   |-- i2c2
 pinconfig  [ + ]   pinconfig	|   |	`-- i2c2-xfer
 pinconfig  [	]   pinconfig	|   |-- i2c3
 pinconfig  [	]   pinconfig	|   |	`-- i2c3-xfer
 pinconfig  [	]   pinconfig	|   |-- i2c4
 pinconfig  [	]   pinconfig	|   |	`-- i2c4-xfer
 pinconfig  [	]   pinconfig	|   |-- i2c5
 pinconfig  [	]   pinconfig	|   |	`-- i2c5-xfer
 pinconfig  [	]   pinconfig	|   |-- i2s0
 pinconfig  [	]   pinconfig	|   |	`-- i2s0-bus
 pinconfig  [	]   pinconfig	|   |-- lcdc0
 pinconfig  [	]   pinconfig	|   |	`-- lcdc0-ctl
 pinconfig  [ + ]   pinconfig	|   |-- sdmmc
 pinconfig  [ + ]   pinconfig	|   |	|-- sdmmc-clk
 pinconfig  [ + ]   pinconfig	|   |	|-- sdmmc-cmd
 pinconfig  [ + ]   pinconfig	|   |	|-- sdmcc-cd
 pinconfig  [	]   pinconfig	|   |	|-- sdmmc-bus1
 pinconfig  [ + ]   pinconfig	|   |	|-- sdmmc-bus4
 pinconfig  [ + ]   pinconfig	|   |	`-- sdmmc-pwr
 pinconfig  [	]   pinconfig	|   |-- sdio0
 pinconfig  [	]   pinconfig	|   |	|-- sdio0-bus1
 pinconfig  [	]   pinconfig	|   |	|-- sdio0-bus4
 pinconfig  [	]   pinconfig	|   |	|-- sdio0-cmd
 pinconfig  [	]   pinconfig	|   |	|-- sdio0-clk
 pinconfig  [	]   pinconfig	|   |	|-- sdio0-cd
 pinconfig  [	]   pinconfig	|   |	|-- sdio0-wp
 pinconfig  [	]   pinconfig	|   |	|-- sdio0-pwr
 pinconfig  [	]   pinconfig	|   |	|-- sdio0-bkpwr
 pinconfig  [	]   pinconfig	|   |	`-- sdio0-int
 pinconfig  [	]   pinconfig	|   |-- sdio1
 pinconfig  [	]   pinconfig	|   |	|-- sdio1-bus1
 pinconfig  [	]   pinconfig	|   |	|-- sdio1-bus4
 pinconfig  [	]   pinconfig	|   |	|-- sdio1-cd
 pinconfig  [	]   pinconfig	|   |	|-- sdio1-wp
 pinconfig  [	]   pinconfig	|   |	|-- sdio1-bkpwr
 pinconfig  [	]   pinconfig	|   |	|-- sdio1-int
 pinconfig  [	]   pinconfig	|   |	|-- sdio1-cmd
 pinconfig  [	]   pinconfig	|   |	|-- sdio1-clk
 pinconfig  [	]   pinconfig	|   |	`-- sdio1-pwr
 pinconfig  [	]   pinconfig	|   |-- emmc
 pinconfig  [	]   pinconfig	|   |	|-- emmc-clk
 pinconfig  [	]   pinconfig	|   |	|-- emmc-cmd
 pinconfig  [	]   pinconfig	|   |	|-- emmc-pwr
 pinconfig  [	]   pinconfig	|   |	|-- emmc-bus1
 pinconfig  [	]   pinconfig	|   |	|-- emmc-bus4
 pinconfig  [	]   pinconfig	|   |	`-- emmc-bus8
 pinconfig  [	]   pinconfig	|   |-- spi0
 pinconfig  [	]   pinconfig	|   |	|-- spi0-clk
 pinconfig  [	]   pinconfig	|   |	|-- spi0-cs0
 pinconfig  [	]   pinconfig	|   |	|-- spi0-tx
 pinconfig  [	]   pinconfig	|   |	|-- spi0-rx
 pinconfig  [	]   pinconfig	|   |	`-- spi0-cs1
 pinconfig  [	]   pinconfig	|   |-- spi1
 pinconfig  [	]   pinconfig	|   |	|-- spi1-clk
 pinconfig  [	]   pinconfig	|   |	|-- spi1-cs0
 pinconfig  [	]   pinconfig	|   |	|-- spi1-rx
 pinconfig  [	]   pinconfig	|   |	`-- spi1-tx
 pinconfig  [	]   pinconfig	|   |-- spi2
 pinconfig  [	]   pinconfig	|   |	|-- spi2-cs1
 pinconfig  [	]   pinconfig	|   |	|-- spi2-clk
 pinconfig  [	]   pinconfig	|   |	|-- spi2-cs0
 pinconfig  [	]   pinconfig	|   |	|-- spi2-rx
 pinconfig  [	]   pinconfig	|   |	`-- spi2-tx
 pinconfig  [	]   pinconfig	|   |-- uart0
 pinconfig  [	]   pinconfig	|   |	|-- uart0-xfer
 pinconfig  [	]   pinconfig	|   |	|-- uart0-cts
 pinconfig  [	]   pinconfig	|   |	`-- uart0-rts
 pinconfig  [	]   pinconfig	|   |-- uart1
 pinconfig  [	]   pinconfig	|   |	|-- uart1-xfer
 pinconfig  [	]   pinconfig	|   |	|-- uart1-cts
 pinconfig  [	]   pinconfig	|   |	`-- uart1-rts
 pinconfig  [ + ]   pinconfig	|   |-- uart2
 pinconfig  [ + ]   pinconfig	|   |	`-- uart2-xfer
 pinconfig  [	]   pinconfig	|   |-- uart3
 pinconfig  [	]   pinconfig	|   |	|-- uart3-xfer
 pinconfig  [	]   pinconfig	|   |	|-- uart3-cts
 pinconfig  [	]   pinconfig	|   |	`-- uart3-rts
 pinconfig  [	]   pinconfig	|   |-- uart4
 pinconfig  [	]   pinconfig	|   |	|-- uart4-xfer
 pinconfig  [	]   pinconfig	|   |	|-- uart4-cts
 pinconfig  [	]   pinconfig	|   |	`-- uart4-rts
 pinconfig  [	]   pinconfig	|   |-- tsadc
 pinconfig  [	]   pinconfig	|   |	`-- otp-out
 pinconfig  [	]   pinconfig	|   |-- pwm0
 pinconfig  [	]   pinconfig	|   |	`-- pwm0-pin
 pinconfig  [	]   pinconfig	|   |-- pwm1
 pinconfig  [	]   pinconfig	|   |	`-- pwm1-pin
 pinconfig  [	]   pinconfig	|   |-- pwm2
 pinconfig  [	]   pinconfig	|   |	`-- pwm2-pin
 pinconfig  [	]   pinconfig	|   |-- pwm3
 pinconfig  [	]   pinconfig	|   |	`-- pwm3-pin
 pinconfig  [ + ]   pinconfig	|   |-- gmac
 pinconfig  [ + ]   pinconfig	|   |	|-- rgmii-pins
 pinconfig  [	]   pinconfig	|   |	`-- rmii-pins
 pinconfig  [	]   pinconfig	|   |-- spdif
 pinconfig  [	]   pinconfig	|   |	`-- spdif-tx
 pinconfig  [	]   pinconfig	|   |-- pcfg-pull-none-drv-8ma
 pinconfig  [	]   pinconfig	|   |-- pcfg-pull-up-drv-8ma
 pinconfig  [	]   pinconfig	|   |-- backlight
 pinconfig  [	]   pinconfig	|   |	`-- bl-en
 pinconfig  [	]   pinconfig	|   |-- buttons
 pinconfig  [	]   pinconfig	|   |	`-- pwrbtn
 pinconfig  [	]   pinconfig	|   |-- eth_phy
 pinconfig  [	]   pinconfig	|   |	`-- eth-phy-pwr
 pinconfig  [ + ]   pinconfig	|   |-- pmic
 pinconfig  [ + ]   pinconfig	|   |	`-- pmic-int
 pinconfig  [	]   pinconfig	|   `-- usb
 pinconfig  [	]   pinconfig	|	|-- host-vbus-drv
 pinconfig  [	]   pinconfig	|	`-- pwr-3g
 clk	    [ + ]   fixed_rate	|-- external-gmac-clock
 regulator  [	]   fixed regu	|-- vsys-regulator
 regulator  [ + ]   fixed regu	|-- sdmmc-regulator
 regulator  [	]   fixed regu	`-- usb-host-regulator
=>

U-Boot 2018.01 (Feb 06 2018 - 23:24:11 -0700)

Model: Tinker-RK3288
DRAM:  2 GiB
MMC:   dwmmc@ff0c0000: 1
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Model: Tinker-RK3288
Net:   eth0: ethernet@ff290000
Hit any key to stop autoboot:  0
=> dm tree
 Class	    Probed  Driver	Name
----------------------------------------
 root	    [ + ]   root_drive	root_driver
 clk	    [	]   fixed_rate	|-- oscillator
 mmc	    [ + ]   rockchip_r	|-- dwmmc@ff0c0000
 blk	    [ + ]   mmc_blk	|   `-- dwmmc@ff0c0000.blk
 adc	    [ + ]   rockchip_s	|-- saradc@ff100000
 i2c	    [	]   i2c_rockch	|-- i2c@ff170000
 serial	    [	]   ns16550_se	|-- serial@ff180000
 serial	    [	]   ns16550_se	|-- serial@ff190000
 serial	    [ + ]   ns16550_se	|-- serial@ff690000
 serial	    [	]   ns16550_se	|-- serial@ff1b0000
 serial	    [	]   ns16550_se	|-- serial@ff1c0000
 eth	    [ + ]   gmac_rockc	|-- ethernet@ff290000
 usb	    [	]   dwc2_usb	|-- usb@ff540000
 usb	    [	]   dwc2_usb	|-- usb@ff580000
 ram	    [	]   rockchip_r	|-- dmc@ff610000
 i2c	    [ + ]   i2c_rockch	|-- i2c@ff650000
 pmic	    [ + ]   rk8xx pmic	|   `-- pmic@1b
 regulator  [	]   rk8xx_buck	|	|-- DCDC_REG1
 regulator  [	]   rk8xx_buck	|	|-- DCDC_REG2
 regulator  [	]   rk8xx_buck	|	|-- DCDC_REG3
 regulator  [	]   rk8xx_buck	|	|-- DCDC_REG4
 regulator  [	]   rk8xx_ldo	|	|-- LDO_REG1
 regulator  [	]   rk8xx_ldo	|	|-- LDO_REG2
 regulator  [	]   rk8xx_ldo	|	|-- LDO_REG3
 regulator  [	]   rk8xx_ldo	|	|-- LDO_REG4
 regulator  [	]   rk8xx_ldo	|	|-- LDO_REG5
 regulator  [	]   rk8xx_ldo	|	|-- LDO_REG6
 regulator  [	]   rk8xx_ldo	|	|-- LDO_REG7
 regulator  [	]   rk8xx_ldo	|	|-- LDO_REG8
 regulator  [	]   rk8xx_swit	|	|-- SWITCH_REG1
 regulator  [ + ]   rk8xx_swit	|	`-- SWITCH_REG2
 i2c	    [ + ]   i2c_rockch	|-- i2c@ff660000
 i2c_eeprom [ + ]   i2c_eeprom	|   `-- m24c08@50
 pwm	    [	]   rk_pwm	|-- pwm@ff680000
 pwm	    [	]   rk_pwm	|-- pwm@ff680010
 syscon	    [ + ]   rk3288_sys	|-- power-management@ff730000
 syscon	    [	]   rk3288_sys	|-- syscon@ff740000
 clk	    [ + ]   rockchip_r	|-- clock-controller@ff760000
 sysreset   [	]   rockchip_s	|   `-- sysreset
 syscon	    [ + ]   rk3288_sys	|-- syscon@ff770000
 syscon	    [	]   rk3288_sys	|-- syscon@ffac0000
 pinctrl    [ + ]   rockchip_r	|-- pinctrl
 gpio	    [	]   gpio_rockc	|   |-- gpio0@ff750000
 gpio	    [	]   gpio_rockc	|   |-- gpio1@ff780000
 gpio	    [	]   gpio_rockc	|   |-- gpio2@ff790000
 gpio	    [	]   gpio_rockc	|   |-- gpio3@ff7a0000
 gpio	    [ + ]   gpio_rockc	|   |-- gpio4@ff7b0000
 gpio	    [	]   gpio_rockc	|   |-- gpio5@ff7c0000
 gpio	    [	]   gpio_rockc	|   |-- gpio6@ff7d0000
 gpio	    [ + ]   gpio_rockc	|   |-- gpio7@ff7e0000
 gpio	    [	]   gpio_rockc	|   |-- gpio8@ff7f0000
 pinconfig  [	]   pinconfig	|   |-- pcfg-pull-up
 pinconfig  [	]   pinconfig	|   |-- pcfg-pull-down
 pinconfig  [	]   pinconfig	|   |-- pcfg-pull-none
 pinconfig  [	]   pinconfig	|   |-- pcfg-pull-none-12ma
 pinconfig  [ + ]   pinconfig	|   |-- sleep
 pinconfig  [ + ]   pinconfig	|   |	|-- global-pwroff
 pinconfig  [	]   pinconfig	|   |	|-- ddrio-pwroff
 pinconfig  [	]   pinconfig	|   |	|-- ddr0-retention
 pinconfig  [	]   pinconfig	|   |	`-- ddr1-retention
 pinconfig  [ + ]   pinconfig	|   |-- i2c0
 pinconfig  [ + ]   pinconfig	|   |	`-- i2c0-xfer
 pinconfig  [	]   pinconfig	|   |-- i2c1
 pinconfig  [	]   pinconfig	|   |	`-- i2c1-xfer
 pinconfig  [ + ]   pinconfig	|   |-- i2c2
 pinconfig  [ + ]   pinconfig	|   |	`-- i2c2-xfer
 pinconfig  [	]   pinconfig	|   |-- i2c3
 pinconfig  [	]   pinconfig	|   |	`-- i2c3-xfer
 pinconfig  [	]   pinconfig	|   |-- i2c4
 pinconfig  [	]   pinconfig	|   |	`-- i2c4-xfer
 pinconfig  [	]   pinconfig	|   |-- i2c5
 pinconfig  [	]   pinconfig	|   |	`-- i2c5-xfer
 pinconfig  [	]   pinconfig	|   |-- i2s0
 pinconfig  [	]   pinconfig	|   |	`-- i2s0-bus
 pinconfig  [	]   pinconfig	|   |-- lcdc0
 pinconfig  [	]   pinconfig	|   |	`-- lcdc0-ctl
 pinconfig  [ + ]   pinconfig	|   |-- sdmmc
 pinconfig  [ + ]   pinconfig	|   |	|-- sdmmc-clk
 pinconfig  [ + ]   pinconfig	|   |	|-- sdmmc-cmd
 pinconfig  [ + ]   pinconfig	|   |	|-- sdmcc-cd
 pinconfig  [	]   pinconfig	|   |	|-- sdmmc-bus1
 pinconfig  [ + ]   pinconfig	|   |	|-- sdmmc-bus4
 pinconfig  [ + ]   pinconfig	|   |	`-- sdmmc-pwr
 pinconfig  [	]   pinconfig	|   |-- sdio0
 pinconfig  [	]   pinconfig	|   |	|-- sdio0-bus1
 pinconfig  [	]   pinconfig	|   |	|-- sdio0-bus4
 pinconfig  [	]   pinconfig	|   |	|-- sdio0-cmd
 pinconfig  [	]   pinconfig	|   |	|-- sdio0-clk
 pinconfig  [	]   pinconfig	|   |	|-- sdio0-cd
 pinconfig  [	]   pinconfig	|   |	|-- sdio0-wp
 pinconfig  [	]   pinconfig	|   |	|-- sdio0-pwr
 pinconfig  [	]   pinconfig	|   |	|-- sdio0-bkpwr
 pinconfig  [	]   pinconfig	|   |	`-- sdio0-int
 pinconfig  [	]   pinconfig	|   |-- sdio1
 pinconfig  [	]   pinconfig	|   |	|-- sdio1-bus1
 pinconfig  [	]   pinconfig	|   |	|-- sdio1-bus4
 pinconfig  [	]   pinconfig	|   |	|-- sdio1-cd
 pinconfig  [	]   pinconfig	|   |	|-- sdio1-wp
 pinconfig  [	]   pinconfig	|   |	|-- sdio1-bkpwr
 pinconfig  [	]   pinconfig	|   |	|-- sdio1-int
 pinconfig  [	]   pinconfig	|   |	|-- sdio1-cmd
 pinconfig  [	]   pinconfig	|   |	|-- sdio1-clk
 pinconfig  [	]   pinconfig	|   |	`-- sdio1-pwr
 pinconfig  [	]   pinconfig	|   |-- emmc
 pinconfig  [	]   pinconfig	|   |	|-- emmc-clk
 pinconfig  [	]   pinconfig	|   |	|-- emmc-cmd
 pinconfig  [	]   pinconfig	|   |	|-- emmc-pwr
 pinconfig  [	]   pinconfig	|   |	|-- emmc-bus1
 pinconfig  [	]   pinconfig	|   |	|-- emmc-bus4
 pinconfig  [	]   pinconfig	|   |	`-- emmc-bus8
 pinconfig  [	]   pinconfig	|   |-- spi0
 pinconfig  [	]   pinconfig	|   |	|-- spi0-clk
 pinconfig  [	]   pinconfig	|   |	|-- spi0-cs0
 pinconfig  [	]   pinconfig	|   |	|-- spi0-tx
 pinconfig  [	]   pinconfig	|   |	|-- spi0-rx
 pinconfig  [	]   pinconfig	|   |	`-- spi0-cs1
 pinconfig  [	]   pinconfig	|   |-- spi1
 pinconfig  [	]   pinconfig	|   |	|-- spi1-clk
 pinconfig  [	]   pinconfig	|   |	|-- spi1-cs0
 pinconfig  [	]   pinconfig	|   |	|-- spi1-rx
 pinconfig  [	]   pinconfig	|   |	`-- spi1-tx
 pinconfig  [	]   pinconfig	|   |-- spi2
 pinconfig  [	]   pinconfig	|   |	|-- spi2-cs1
 pinconfig  [	]   pinconfig	|   |	|-- spi2-clk
 pinconfig  [	]   pinconfig	|   |	|-- spi2-cs0
 pinconfig  [	]   pinconfig	|   |	|-- spi2-rx
 pinconfig  [	]   pinconfig	|   |	`-- spi2-tx
 pinconfig  [	]   pinconfig	|   |-- uart0
 pinconfig  [	]   pinconfig	|   |	|-- uart0-xfer
 pinconfig  [	]   pinconfig	|   |	|-- uart0-cts
 pinconfig  [	]   pinconfig	|   |	`-- uart0-rts
 pinconfig  [	]   pinconfig	|   |-- uart1
 pinconfig  [	]   pinconfig	|   |	|-- uart1-xfer
 pinconfig  [	]   pinconfig	|   |	|-- uart1-cts
 pinconfig  [	]   pinconfig	|   |	`-- uart1-rts
 pinconfig  [ + ]   pinconfig	|   |-- uart2
 pinconfig  [ + ]   pinconfig	|   |	`-- uart2-xfer
 pinconfig  [	]   pinconfig	|   |-- uart3
 pinconfig  [	]   pinconfig	|   |	|-- uart3-xfer
 pinconfig  [	]   pinconfig	|   |	|-- uart3-cts
 pinconfig  [	]   pinconfig	|   |	`-- uart3-rts
 pinconfig  [	]   pinconfig	|   |-- uart4
 pinconfig  [	]   pinconfig	|   |	|-- uart4-xfer
 pinconfig  [	]   pinconfig	|   |	|-- uart4-cts
 pinconfig  [	]   pinconfig	|   |	`-- uart4-rts
 pinconfig  [	]   pinconfig	|   |-- tsadc
 pinconfig  [	]   pinconfig	|   |	`-- otp-out
 pinconfig  [	]   pinconfig	|   |-- pwm0
 pinconfig  [	]   pinconfig	|   |	`-- pwm0-pin
 pinconfig  [	]   pinconfig	|   |-- pwm1
 pinconfig  [	]   pinconfig	|   |	`-- pwm1-pin
 pinconfig  [	]   pinconfig	|   |-- pwm2
 pinconfig  [	]   pinconfig	|   |	`-- pwm2-pin
 pinconfig  [	]   pinconfig	|   |-- pwm3
 pinconfig  [	]   pinconfig	|   |	`-- pwm3-pin
 pinconfig  [ + ]   pinconfig	|   |-- gmac
 pinconfig  [ + ]   pinconfig	|   |	|-- rgmii-pins
 pinconfig  [	]   pinconfig	|   |	`-- rmii-pins
 pinconfig  [	]   pinconfig	|   |-- spdif
 pinconfig  [	]   pinconfig	|   |	`-- spdif-tx
 pinconfig  [	]   pinconfig	|   |-- pcfg-pull-none-drv-8ma
 pinconfig  [	]   pinconfig	|   |-- pcfg-pull-up-drv-8ma
 pinconfig  [	]   pinconfig	|   |-- backlight
 pinconfig  [	]   pinconfig	|   |	`-- bl-en
 pinconfig  [	]   pinconfig	|   |-- buttons
 pinconfig  [	]   pinconfig	|   |	`-- pwrbtn
 pinconfig  [	]   pinconfig	|   |-- eth_phy
 pinconfig  [	]   pinconfig	|   |	`-- eth-phy-pwr
 pinconfig  [ + ]   pinconfig	|   |-- pmic
 pinconfig  [ + ]   pinconfig	|   |	`-- pmic-int
 pinconfig  [	]   pinconfig	|   `-- usb
 pinconfig  [	]   pinconfig	|	|-- host-vbus-drv
 pinconfig  [	]   pinconfig	|	`-- pwr-3g
 clk	    [	]   fixed_rate	|-- external-gmac-clock
 regulator  [	]   fixed regu	|-- vsys-regulator
 regulator  [ + ]   fixed regu	|-- sdmmc-regulator
 regulator  [	]   fixed regu	`-- usb-host-regulator
=>

@@ -73,7 +27,7 @@ Hit any key to stop autoboot:  0
  serial	    [ + ]   ns16550_se	|-- serial@ff690000
  serial	    [	]   ns16550_se	|-- serial@ff1b0000
  serial	    [	]   ns16550_se	|-- serial@ff1c0000
- eth	    [ + ]   gmac_rockc	|-- ethernet@ff290000
+ eth	    [	]   gmac_rockc	|-- ethernet@ff290000
  usb	    [	]   dwc2_usb	|-- usb@ff540000
  usb	    [	]   dwc2_usb	|-- usb@ff580000
  ram	    [	]   rockchip_r	|-- dmc@ff610000
@@ -87,12 +41,12 @@ Hit any key to stop autoboot:  0
  regulator  [	]   rk8xx_ldo	|	|-- LDO_REG2
  regulator  [	]   rk8xx_ldo	|	|-- LDO_REG3
  regulator  [	]   rk8xx_ldo	|	|-- LDO_REG4
- regulator  [	]   rk8xx_ldo	|	|-- LDO_REG5
+ regulator  [ + ]   rk8xx_ldo	|	|-- LDO_REG5
  regulator  [	]   rk8xx_ldo	|	|-- LDO_REG6
  regulator  [	]   rk8xx_ldo	|	|-- LDO_REG7
  regulator  [	]   rk8xx_ldo	|	|-- LDO_REG8
  regulator  [	]   rk8xx_swit	|	|-- SWITCH_REG1
- regulator  [ + ]   rk8xx_swit	|	`-- SWITCH_REG2
+ regulator  [	]   rk8xx_swit	|	`-- SWITCH_REG2
  i2c	    [ + ]   i2c_rockch	|-- i2c@ff660000
  i2c_eeprom [ + ]   i2c_eeprom	|   `-- m24c08@50
  pwm	    [	]   rk_pwm	|-- pwm@ff680000
@@ -235,7 +189,7 @@ Hit any key to stop autoboot:  0
  pinconfig  [	]   pinconfig	|   `-- usb
  pinconfig  [	]   pinconfig	|	|-- host-vbus-drv
  pinconfig  [	]   pinconfig	|	`-- pwr-3g
- clk	    [	]   fixed_rate	|-- external-gmac-clock
+ clk	    [ + ]   fixed_rate	|-- external-gmac-clock
  regulator  [	]   fixed regu	|-- vsys-regulator
  regulator  [ + ]   fixed regu	|-- sdmmc-regulator
  regulator  [	]   fixed regu	`-- usb-host-regulator
Patrice CHOTARD Feb. 16, 2018, 8:02 a.m. UTC | #5
Hi Jonathan

Have you tried to apply the fix available here ?

http://u-boot.10912.n7.nabble.com/PATCH-NET-designware-fix-clock-enable-td320043.html

Regards

Patrice


On 02/16/2018 08:17 AM, Jonathan Gray wrote:
> On Wed, Nov 29, 2017 at 09:06:11AM +0100, patrice.chotard@st.com wrote:

>> From: Patrice Chotard <patrice.chotard@st.com>

>>

>> This implementation manages several clocks, disable and

>> free all of them in case of error during probe and in remove

>> callback.

>>

>> Signed-off-by: Patrice Chotard <patrice.chotard@st.com>

>> ---

>>   drivers/net/designware.c | 43 +++++++++++++++++++++++++++++++++++++++++++

>>   drivers/net/designware.h |  4 ++++

>>   2 files changed, 47 insertions(+)

> 

> RK3288 Ethernet on the ASUS Tinker Board fails to probe with master

> (32fe36574ea5e6ea55313e16547b98a984af7767) but worked with 2018.01.

> 

> ba1f966725223c605ed504b09446c52a3f201c2b is the first bad commit

> commit ba1f966725223c605ed504b09446c52a3f201c2b

> Author: Patrice Chotard <patrice.chotard@st.com>

> Date:   Wed Nov 29 09:06:11 2017 +0100

> 

>      net: designware: add clock support

>      

>      This implementation manages several clocks, disable and

>      free all of them in case of error during probe and in remove

>      callback.

>      

>      Signed-off-by: Patrice Chotard <patrice.chotard@st.com>

>      Reviewed-by: Simon Glass <sjg@chromium.org>

>      Acked-by: Joe Hershberger <joe.hershberger@ni.com>

> 

> :040000 040000 6f1002af4c0f3ed7ab6f2418d4f2de00bbe454a7 e18d2a6c24cbfd055c89fa250946bf85199fff90 M      drivers

> 

> U-Boot 2018.03-rc2-00047-gc1531533c5 (Feb 16 2018 - 15:38:39 +1100)

> 

> Model: Tinker-RK3288

> DRAM:  2 GiB

> MMC:   dwmmc@ff0c0000: 1

> Loading Environment from MMC... *** Warning - bad CRC, using default environment

> 

> Failed (-5)

> In:    serial

> Out:   serial

> Err:   serial

> Model: Tinker-RK3288

> Net:   failed to enable clock 0

> No ethernet found.

> Hit any key to stop autoboot:  0

> => dm tree

>   Class	    Probed  Driver	Name

> ----------------------------------------

>   root	    [ + ]   root_drive	root_driver

>   clk	    [	]   fixed_rate	|-- oscillator

>   mmc	    [ + ]   rockchip_r	|-- dwmmc@ff0c0000

>   blk	    [ + ]   mmc_blk	|   `-- dwmmc@ff0c0000.blk

>   adc	    [ + ]   rockchip_s	|-- saradc@ff100000

>   i2c	    [	]   i2c_rockch	|-- i2c@ff170000

>   serial	    [	]   ns16550_se	|-- serial@ff180000

>   serial	    [	]   ns16550_se	|-- serial@ff190000

>   serial	    [ + ]   ns16550_se	|-- serial@ff690000

>   serial	    [	]   ns16550_se	|-- serial@ff1b0000

>   serial	    [	]   ns16550_se	|-- serial@ff1c0000

>   eth	    [	]   gmac_rockc	|-- ethernet@ff290000

>   usb	    [	]   dwc2_usb	|-- usb@ff540000

>   usb	    [	]   dwc2_usb	|-- usb@ff580000

>   ram	    [	]   rockchip_r	|-- dmc@ff610000

>   i2c	    [ + ]   i2c_rockch	|-- i2c@ff650000

>   pmic	    [ + ]   rk8xx pmic	|   `-- pmic@1b

>   regulator  [	]   rk8xx_buck	|	|-- DCDC_REG1

>   regulator  [	]   rk8xx_buck	|	|-- DCDC_REG2

>   regulator  [	]   rk8xx_buck	|	|-- DCDC_REG3

>   regulator  [	]   rk8xx_buck	|	|-- DCDC_REG4

>   regulator  [	]   rk8xx_ldo	|	|-- LDO_REG1

>   regulator  [	]   rk8xx_ldo	|	|-- LDO_REG2

>   regulator  [	]   rk8xx_ldo	|	|-- LDO_REG3

>   regulator  [	]   rk8xx_ldo	|	|-- LDO_REG4

>   regulator  [ + ]   rk8xx_ldo	|	|-- LDO_REG5

>   regulator  [	]   rk8xx_ldo	|	|-- LDO_REG6

>   regulator  [	]   rk8xx_ldo	|	|-- LDO_REG7

>   regulator  [	]   rk8xx_ldo	|	|-- LDO_REG8

>   regulator  [	]   rk8xx_swit	|	|-- SWITCH_REG1

>   regulator  [	]   rk8xx_swit	|	`-- SWITCH_REG2

>   i2c	    [ + ]   i2c_rockch	|-- i2c@ff660000

>   i2c_eeprom [ + ]   i2c_eeprom	|   `-- m24c08@50

>   pwm	    [	]   rk_pwm	|-- pwm@ff680000

>   pwm	    [	]   rk_pwm	|-- pwm@ff680010

>   syscon	    [ + ]   rk3288_sys	|-- power-management@ff730000

>   syscon	    [	]   rk3288_sys	|-- syscon@ff740000

>   clk	    [ + ]   rockchip_r	|-- clock-controller@ff760000

>   sysreset   [	]   rockchip_s	|   `-- sysreset

>   syscon	    [ + ]   rk3288_sys	|-- syscon@ff770000

>   syscon	    [	]   rk3288_sys	|-- syscon@ffac0000

>   pinctrl    [ + ]   rockchip_r	|-- pinctrl

>   gpio	    [	]   gpio_rockc	|   |-- gpio0@ff750000

>   gpio	    [	]   gpio_rockc	|   |-- gpio1@ff780000

>   gpio	    [	]   gpio_rockc	|   |-- gpio2@ff790000

>   gpio	    [	]   gpio_rockc	|   |-- gpio3@ff7a0000

>   gpio	    [ + ]   gpio_rockc	|   |-- gpio4@ff7b0000

>   gpio	    [	]   gpio_rockc	|   |-- gpio5@ff7c0000

>   gpio	    [	]   gpio_rockc	|   |-- gpio6@ff7d0000

>   gpio	    [ + ]   gpio_rockc	|   |-- gpio7@ff7e0000

>   gpio	    [	]   gpio_rockc	|   |-- gpio8@ff7f0000

>   pinconfig  [	]   pinconfig	|   |-- pcfg-pull-up

>   pinconfig  [	]   pinconfig	|   |-- pcfg-pull-down

>   pinconfig  [	]   pinconfig	|   |-- pcfg-pull-none

>   pinconfig  [	]   pinconfig	|   |-- pcfg-pull-none-12ma

>   pinconfig  [ + ]   pinconfig	|   |-- sleep

>   pinconfig  [ + ]   pinconfig	|   |	|-- global-pwroff

>   pinconfig  [	]   pinconfig	|   |	|-- ddrio-pwroff

>   pinconfig  [	]   pinconfig	|   |	|-- ddr0-retention

>   pinconfig  [	]   pinconfig	|   |	`-- ddr1-retention

>   pinconfig  [ + ]   pinconfig	|   |-- i2c0

>   pinconfig  [ + ]   pinconfig	|   |	`-- i2c0-xfer

>   pinconfig  [	]   pinconfig	|   |-- i2c1

>   pinconfig  [	]   pinconfig	|   |	`-- i2c1-xfer

>   pinconfig  [ + ]   pinconfig	|   |-- i2c2

>   pinconfig  [ + ]   pinconfig	|   |	`-- i2c2-xfer

>   pinconfig  [	]   pinconfig	|   |-- i2c3

>   pinconfig  [	]   pinconfig	|   |	`-- i2c3-xfer

>   pinconfig  [	]   pinconfig	|   |-- i2c4

>   pinconfig  [	]   pinconfig	|   |	`-- i2c4-xfer

>   pinconfig  [	]   pinconfig	|   |-- i2c5

>   pinconfig  [	]   pinconfig	|   |	`-- i2c5-xfer

>   pinconfig  [	]   pinconfig	|   |-- i2s0

>   pinconfig  [	]   pinconfig	|   |	`-- i2s0-bus

>   pinconfig  [	]   pinconfig	|   |-- lcdc0

>   pinconfig  [	]   pinconfig	|   |	`-- lcdc0-ctl

>   pinconfig  [ + ]   pinconfig	|   |-- sdmmc

>   pinconfig  [ + ]   pinconfig	|   |	|-- sdmmc-clk

>   pinconfig  [ + ]   pinconfig	|   |	|-- sdmmc-cmd

>   pinconfig  [ + ]   pinconfig	|   |	|-- sdmcc-cd

>   pinconfig  [	]   pinconfig	|   |	|-- sdmmc-bus1

>   pinconfig  [ + ]   pinconfig	|   |	|-- sdmmc-bus4

>   pinconfig  [ + ]   pinconfig	|   |	`-- sdmmc-pwr

>   pinconfig  [	]   pinconfig	|   |-- sdio0

>   pinconfig  [	]   pinconfig	|   |	|-- sdio0-bus1

>   pinconfig  [	]   pinconfig	|   |	|-- sdio0-bus4

>   pinconfig  [	]   pinconfig	|   |	|-- sdio0-cmd

>   pinconfig  [	]   pinconfig	|   |	|-- sdio0-clk

>   pinconfig  [	]   pinconfig	|   |	|-- sdio0-cd

>   pinconfig  [	]   pinconfig	|   |	|-- sdio0-wp

>   pinconfig  [	]   pinconfig	|   |	|-- sdio0-pwr

>   pinconfig  [	]   pinconfig	|   |	|-- sdio0-bkpwr

>   pinconfig  [	]   pinconfig	|   |	`-- sdio0-int

>   pinconfig  [	]   pinconfig	|   |-- sdio1

>   pinconfig  [	]   pinconfig	|   |	|-- sdio1-bus1

>   pinconfig  [	]   pinconfig	|   |	|-- sdio1-bus4

>   pinconfig  [	]   pinconfig	|   |	|-- sdio1-cd

>   pinconfig  [	]   pinconfig	|   |	|-- sdio1-wp

>   pinconfig  [	]   pinconfig	|   |	|-- sdio1-bkpwr

>   pinconfig  [	]   pinconfig	|   |	|-- sdio1-int

>   pinconfig  [	]   pinconfig	|   |	|-- sdio1-cmd

>   pinconfig  [	]   pinconfig	|   |	|-- sdio1-clk

>   pinconfig  [	]   pinconfig	|   |	`-- sdio1-pwr

>   pinconfig  [	]   pinconfig	|   |-- emmc

>   pinconfig  [	]   pinconfig	|   |	|-- emmc-clk

>   pinconfig  [	]   pinconfig	|   |	|-- emmc-cmd

>   pinconfig  [	]   pinconfig	|   |	|-- emmc-pwr

>   pinconfig  [	]   pinconfig	|   |	|-- emmc-bus1

>   pinconfig  [	]   pinconfig	|   |	|-- emmc-bus4

>   pinconfig  [	]   pinconfig	|   |	`-- emmc-bus8

>   pinconfig  [	]   pinconfig	|   |-- spi0

>   pinconfig  [	]   pinconfig	|   |	|-- spi0-clk

>   pinconfig  [	]   pinconfig	|   |	|-- spi0-cs0

>   pinconfig  [	]   pinconfig	|   |	|-- spi0-tx

>   pinconfig  [	]   pinconfig	|   |	|-- spi0-rx

>   pinconfig  [	]   pinconfig	|   |	`-- spi0-cs1

>   pinconfig  [	]   pinconfig	|   |-- spi1

>   pinconfig  [	]   pinconfig	|   |	|-- spi1-clk

>   pinconfig  [	]   pinconfig	|   |	|-- spi1-cs0

>   pinconfig  [	]   pinconfig	|   |	|-- spi1-rx

>   pinconfig  [	]   pinconfig	|   |	`-- spi1-tx

>   pinconfig  [	]   pinconfig	|   |-- spi2

>   pinconfig  [	]   pinconfig	|   |	|-- spi2-cs1

>   pinconfig  [	]   pinconfig	|   |	|-- spi2-clk

>   pinconfig  [	]   pinconfig	|   |	|-- spi2-cs0

>   pinconfig  [	]   pinconfig	|   |	|-- spi2-rx

>   pinconfig  [	]   pinconfig	|   |	`-- spi2-tx

>   pinconfig  [	]   pinconfig	|   |-- uart0

>   pinconfig  [	]   pinconfig	|   |	|-- uart0-xfer

>   pinconfig  [	]   pinconfig	|   |	|-- uart0-cts

>   pinconfig  [	]   pinconfig	|   |	`-- uart0-rts

>   pinconfig  [	]   pinconfig	|   |-- uart1

>   pinconfig  [	]   pinconfig	|   |	|-- uart1-xfer

>   pinconfig  [	]   pinconfig	|   |	|-- uart1-cts

>   pinconfig  [	]   pinconfig	|   |	`-- uart1-rts

>   pinconfig  [ + ]   pinconfig	|   |-- uart2

>   pinconfig  [ + ]   pinconfig	|   |	`-- uart2-xfer

>   pinconfig  [	]   pinconfig	|   |-- uart3

>   pinconfig  [	]   pinconfig	|   |	|-- uart3-xfer

>   pinconfig  [	]   pinconfig	|   |	|-- uart3-cts

>   pinconfig  [	]   pinconfig	|   |	`-- uart3-rts

>   pinconfig  [	]   pinconfig	|   |-- uart4

>   pinconfig  [	]   pinconfig	|   |	|-- uart4-xfer

>   pinconfig  [	]   pinconfig	|   |	|-- uart4-cts

>   pinconfig  [	]   pinconfig	|   |	`-- uart4-rts

>   pinconfig  [	]   pinconfig	|   |-- tsadc

>   pinconfig  [	]   pinconfig	|   |	`-- otp-out

>   pinconfig  [	]   pinconfig	|   |-- pwm0

>   pinconfig  [	]   pinconfig	|   |	`-- pwm0-pin

>   pinconfig  [	]   pinconfig	|   |-- pwm1

>   pinconfig  [	]   pinconfig	|   |	`-- pwm1-pin

>   pinconfig  [	]   pinconfig	|   |-- pwm2

>   pinconfig  [	]   pinconfig	|   |	`-- pwm2-pin

>   pinconfig  [	]   pinconfig	|   |-- pwm3

>   pinconfig  [	]   pinconfig	|   |	`-- pwm3-pin

>   pinconfig  [ + ]   pinconfig	|   |-- gmac

>   pinconfig  [ + ]   pinconfig	|   |	|-- rgmii-pins

>   pinconfig  [	]   pinconfig	|   |	`-- rmii-pins

>   pinconfig  [	]   pinconfig	|   |-- spdif

>   pinconfig  [	]   pinconfig	|   |	`-- spdif-tx

>   pinconfig  [	]   pinconfig	|   |-- pcfg-pull-none-drv-8ma

>   pinconfig  [	]   pinconfig	|   |-- pcfg-pull-up-drv-8ma

>   pinconfig  [	]   pinconfig	|   |-- backlight

>   pinconfig  [	]   pinconfig	|   |	`-- bl-en

>   pinconfig  [	]   pinconfig	|   |-- buttons

>   pinconfig  [	]   pinconfig	|   |	`-- pwrbtn

>   pinconfig  [	]   pinconfig	|   |-- eth_phy

>   pinconfig  [	]   pinconfig	|   |	`-- eth-phy-pwr

>   pinconfig  [ + ]   pinconfig	|   |-- pmic

>   pinconfig  [ + ]   pinconfig	|   |	`-- pmic-int

>   pinconfig  [	]   pinconfig	|   `-- usb

>   pinconfig  [	]   pinconfig	|	|-- host-vbus-drv

>   pinconfig  [	]   pinconfig	|	`-- pwr-3g

>   clk	    [ + ]   fixed_rate	|-- external-gmac-clock

>   regulator  [	]   fixed regu	|-- vsys-regulator

>   regulator  [ + ]   fixed regu	|-- sdmmc-regulator

>   regulator  [	]   fixed regu	`-- usb-host-regulator

> =>

> 

> U-Boot 2018.01 (Feb 06 2018 - 23:24:11 -0700)

> 

> Model: Tinker-RK3288

> DRAM:  2 GiB

> MMC:   dwmmc@ff0c0000: 1

> *** Warning - bad CRC, using default environment

> 

> In:    serial

> Out:   serial

> Err:   serial

> Model: Tinker-RK3288

> Net:   eth0: ethernet@ff290000

> Hit any key to stop autoboot:  0

> => dm tree

>   Class	    Probed  Driver	Name

> ----------------------------------------

>   root	    [ + ]   root_drive	root_driver

>   clk	    [	]   fixed_rate	|-- oscillator

>   mmc	    [ + ]   rockchip_r	|-- dwmmc@ff0c0000

>   blk	    [ + ]   mmc_blk	|   `-- dwmmc@ff0c0000.blk

>   adc	    [ + ]   rockchip_s	|-- saradc@ff100000

>   i2c	    [	]   i2c_rockch	|-- i2c@ff170000

>   serial	    [	]   ns16550_se	|-- serial@ff180000

>   serial	    [	]   ns16550_se	|-- serial@ff190000

>   serial	    [ + ]   ns16550_se	|-- serial@ff690000

>   serial	    [	]   ns16550_se	|-- serial@ff1b0000

>   serial	    [	]   ns16550_se	|-- serial@ff1c0000

>   eth	    [ + ]   gmac_rockc	|-- ethernet@ff290000

>   usb	    [	]   dwc2_usb	|-- usb@ff540000

>   usb	    [	]   dwc2_usb	|-- usb@ff580000

>   ram	    [	]   rockchip_r	|-- dmc@ff610000

>   i2c	    [ + ]   i2c_rockch	|-- i2c@ff650000

>   pmic	    [ + ]   rk8xx pmic	|   `-- pmic@1b

>   regulator  [	]   rk8xx_buck	|	|-- DCDC_REG1

>   regulator  [	]   rk8xx_buck	|	|-- DCDC_REG2

>   regulator  [	]   rk8xx_buck	|	|-- DCDC_REG3

>   regulator  [	]   rk8xx_buck	|	|-- DCDC_REG4

>   regulator  [	]   rk8xx_ldo	|	|-- LDO_REG1

>   regulator  [	]   rk8xx_ldo	|	|-- LDO_REG2

>   regulator  [	]   rk8xx_ldo	|	|-- LDO_REG3

>   regulator  [	]   rk8xx_ldo	|	|-- LDO_REG4

>   regulator  [	]   rk8xx_ldo	|	|-- LDO_REG5

>   regulator  [	]   rk8xx_ldo	|	|-- LDO_REG6

>   regulator  [	]   rk8xx_ldo	|	|-- LDO_REG7

>   regulator  [	]   rk8xx_ldo	|	|-- LDO_REG8

>   regulator  [	]   rk8xx_swit	|	|-- SWITCH_REG1

>   regulator  [ + ]   rk8xx_swit	|	`-- SWITCH_REG2

>   i2c	    [ + ]   i2c_rockch	|-- i2c@ff660000

>   i2c_eeprom [ + ]   i2c_eeprom	|   `-- m24c08@50

>   pwm	    [	]   rk_pwm	|-- pwm@ff680000

>   pwm	    [	]   rk_pwm	|-- pwm@ff680010

>   syscon	    [ + ]   rk3288_sys	|-- power-management@ff730000

>   syscon	    [	]   rk3288_sys	|-- syscon@ff740000

>   clk	    [ + ]   rockchip_r	|-- clock-controller@ff760000

>   sysreset   [	]   rockchip_s	|   `-- sysreset

>   syscon	    [ + ]   rk3288_sys	|-- syscon@ff770000

>   syscon	    [	]   rk3288_sys	|-- syscon@ffac0000

>   pinctrl    [ + ]   rockchip_r	|-- pinctrl

>   gpio	    [	]   gpio_rockc	|   |-- gpio0@ff750000

>   gpio	    [	]   gpio_rockc	|   |-- gpio1@ff780000

>   gpio	    [	]   gpio_rockc	|   |-- gpio2@ff790000

>   gpio	    [	]   gpio_rockc	|   |-- gpio3@ff7a0000

>   gpio	    [ + ]   gpio_rockc	|   |-- gpio4@ff7b0000

>   gpio	    [	]   gpio_rockc	|   |-- gpio5@ff7c0000

>   gpio	    [	]   gpio_rockc	|   |-- gpio6@ff7d0000

>   gpio	    [ + ]   gpio_rockc	|   |-- gpio7@ff7e0000

>   gpio	    [	]   gpio_rockc	|   |-- gpio8@ff7f0000

>   pinconfig  [	]   pinconfig	|   |-- pcfg-pull-up

>   pinconfig  [	]   pinconfig	|   |-- pcfg-pull-down

>   pinconfig  [	]   pinconfig	|   |-- pcfg-pull-none

>   pinconfig  [	]   pinconfig	|   |-- pcfg-pull-none-12ma

>   pinconfig  [ + ]   pinconfig	|   |-- sleep

>   pinconfig  [ + ]   pinconfig	|   |	|-- global-pwroff

>   pinconfig  [	]   pinconfig	|   |	|-- ddrio-pwroff

>   pinconfig  [	]   pinconfig	|   |	|-- ddr0-retention

>   pinconfig  [	]   pinconfig	|   |	`-- ddr1-retention

>   pinconfig  [ + ]   pinconfig	|   |-- i2c0

>   pinconfig  [ + ]   pinconfig	|   |	`-- i2c0-xfer

>   pinconfig  [	]   pinconfig	|   |-- i2c1

>   pinconfig  [	]   pinconfig	|   |	`-- i2c1-xfer

>   pinconfig  [ + ]   pinconfig	|   |-- i2c2

>   pinconfig  [ + ]   pinconfig	|   |	`-- i2c2-xfer

>   pinconfig  [	]   pinconfig	|   |-- i2c3

>   pinconfig  [	]   pinconfig	|   |	`-- i2c3-xfer

>   pinconfig  [	]   pinconfig	|   |-- i2c4

>   pinconfig  [	]   pinconfig	|   |	`-- i2c4-xfer

>   pinconfig  [	]   pinconfig	|   |-- i2c5

>   pinconfig  [	]   pinconfig	|   |	`-- i2c5-xfer

>   pinconfig  [	]   pinconfig	|   |-- i2s0

>   pinconfig  [	]   pinconfig	|   |	`-- i2s0-bus

>   pinconfig  [	]   pinconfig	|   |-- lcdc0

>   pinconfig  [	]   pinconfig	|   |	`-- lcdc0-ctl

>   pinconfig  [ + ]   pinconfig	|   |-- sdmmc

>   pinconfig  [ + ]   pinconfig	|   |	|-- sdmmc-clk

>   pinconfig  [ + ]   pinconfig	|   |	|-- sdmmc-cmd

>   pinconfig  [ + ]   pinconfig	|   |	|-- sdmcc-cd

>   pinconfig  [	]   pinconfig	|   |	|-- sdmmc-bus1

>   pinconfig  [ + ]   pinconfig	|   |	|-- sdmmc-bus4

>   pinconfig  [ + ]   pinconfig	|   |	`-- sdmmc-pwr

>   pinconfig  [	]   pinconfig	|   |-- sdio0

>   pinconfig  [	]   pinconfig	|   |	|-- sdio0-bus1

>   pinconfig  [	]   pinconfig	|   |	|-- sdio0-bus4

>   pinconfig  [	]   pinconfig	|   |	|-- sdio0-cmd

>   pinconfig  [	]   pinconfig	|   |	|-- sdio0-clk

>   pinconfig  [	]   pinconfig	|   |	|-- sdio0-cd

>   pinconfig  [	]   pinconfig	|   |	|-- sdio0-wp

>   pinconfig  [	]   pinconfig	|   |	|-- sdio0-pwr

>   pinconfig  [	]   pinconfig	|   |	|-- sdio0-bkpwr

>   pinconfig  [	]   pinconfig	|   |	`-- sdio0-int

>   pinconfig  [	]   pinconfig	|   |-- sdio1

>   pinconfig  [	]   pinconfig	|   |	|-- sdio1-bus1

>   pinconfig  [	]   pinconfig	|   |	|-- sdio1-bus4

>   pinconfig  [	]   pinconfig	|   |	|-- sdio1-cd

>   pinconfig  [	]   pinconfig	|   |	|-- sdio1-wp

>   pinconfig  [	]   pinconfig	|   |	|-- sdio1-bkpwr

>   pinconfig  [	]   pinconfig	|   |	|-- sdio1-int

>   pinconfig  [	]   pinconfig	|   |	|-- sdio1-cmd

>   pinconfig  [	]   pinconfig	|   |	|-- sdio1-clk

>   pinconfig  [	]   pinconfig	|   |	`-- sdio1-pwr

>   pinconfig  [	]   pinconfig	|   |-- emmc

>   pinconfig  [	]   pinconfig	|   |	|-- emmc-clk

>   pinconfig  [	]   pinconfig	|   |	|-- emmc-cmd

>   pinconfig  [	]   pinconfig	|   |	|-- emmc-pwr

>   pinconfig  [	]   pinconfig	|   |	|-- emmc-bus1

>   pinconfig  [	]   pinconfig	|   |	|-- emmc-bus4

>   pinconfig  [	]   pinconfig	|   |	`-- emmc-bus8

>   pinconfig  [	]   pinconfig	|   |-- spi0

>   pinconfig  [	]   pinconfig	|   |	|-- spi0-clk

>   pinconfig  [	]   pinconfig	|   |	|-- spi0-cs0

>   pinconfig  [	]   pinconfig	|   |	|-- spi0-tx

>   pinconfig  [	]   pinconfig	|   |	|-- spi0-rx

>   pinconfig  [	]   pinconfig	|   |	`-- spi0-cs1

>   pinconfig  [	]   pinconfig	|   |-- spi1

>   pinconfig  [	]   pinconfig	|   |	|-- spi1-clk

>   pinconfig  [	]   pinconfig	|   |	|-- spi1-cs0

>   pinconfig  [	]   pinconfig	|   |	|-- spi1-rx

>   pinconfig  [	]   pinconfig	|   |	`-- spi1-tx

>   pinconfig  [	]   pinconfig	|   |-- spi2

>   pinconfig  [	]   pinconfig	|   |	|-- spi2-cs1

>   pinconfig  [	]   pinconfig	|   |	|-- spi2-clk

>   pinconfig  [	]   pinconfig	|   |	|-- spi2-cs0

>   pinconfig  [	]   pinconfig	|   |	|-- spi2-rx

>   pinconfig  [	]   pinconfig	|   |	`-- spi2-tx

>   pinconfig  [	]   pinconfig	|   |-- uart0

>   pinconfig  [	]   pinconfig	|   |	|-- uart0-xfer

>   pinconfig  [	]   pinconfig	|   |	|-- uart0-cts

>   pinconfig  [	]   pinconfig	|   |	`-- uart0-rts

>   pinconfig  [	]   pinconfig	|   |-- uart1

>   pinconfig  [	]   pinconfig	|   |	|-- uart1-xfer

>   pinconfig  [	]   pinconfig	|   |	|-- uart1-cts

>   pinconfig  [	]   pinconfig	|   |	`-- uart1-rts

>   pinconfig  [ + ]   pinconfig	|   |-- uart2

>   pinconfig  [ + ]   pinconfig	|   |	`-- uart2-xfer

>   pinconfig  [	]   pinconfig	|   |-- uart3

>   pinconfig  [	]   pinconfig	|   |	|-- uart3-xfer

>   pinconfig  [	]   pinconfig	|   |	|-- uart3-cts

>   pinconfig  [	]   pinconfig	|   |	`-- uart3-rts

>   pinconfig  [	]   pinconfig	|   |-- uart4

>   pinconfig  [	]   pinconfig	|   |	|-- uart4-xfer

>   pinconfig  [	]   pinconfig	|   |	|-- uart4-cts

>   pinconfig  [	]   pinconfig	|   |	`-- uart4-rts

>   pinconfig  [	]   pinconfig	|   |-- tsadc

>   pinconfig  [	]   pinconfig	|   |	`-- otp-out

>   pinconfig  [	]   pinconfig	|   |-- pwm0

>   pinconfig  [	]   pinconfig	|   |	`-- pwm0-pin

>   pinconfig  [	]   pinconfig	|   |-- pwm1

>   pinconfig  [	]   pinconfig	|   |	`-- pwm1-pin

>   pinconfig  [	]   pinconfig	|   |-- pwm2

>   pinconfig  [	]   pinconfig	|   |	`-- pwm2-pin

>   pinconfig  [	]   pinconfig	|   |-- pwm3

>   pinconfig  [	]   pinconfig	|   |	`-- pwm3-pin

>   pinconfig  [ + ]   pinconfig	|   |-- gmac

>   pinconfig  [ + ]   pinconfig	|   |	|-- rgmii-pins

>   pinconfig  [	]   pinconfig	|   |	`-- rmii-pins

>   pinconfig  [	]   pinconfig	|   |-- spdif

>   pinconfig  [	]   pinconfig	|   |	`-- spdif-tx

>   pinconfig  [	]   pinconfig	|   |-- pcfg-pull-none-drv-8ma

>   pinconfig  [	]   pinconfig	|   |-- pcfg-pull-up-drv-8ma

>   pinconfig  [	]   pinconfig	|   |-- backlight

>   pinconfig  [	]   pinconfig	|   |	`-- bl-en

>   pinconfig  [	]   pinconfig	|   |-- buttons

>   pinconfig  [	]   pinconfig	|   |	`-- pwrbtn

>   pinconfig  [	]   pinconfig	|   |-- eth_phy

>   pinconfig  [	]   pinconfig	|   |	`-- eth-phy-pwr

>   pinconfig  [ + ]   pinconfig	|   |-- pmic

>   pinconfig  [ + ]   pinconfig	|   |	`-- pmic-int

>   pinconfig  [	]   pinconfig	|   `-- usb

>   pinconfig  [	]   pinconfig	|	|-- host-vbus-drv

>   pinconfig  [	]   pinconfig	|	`-- pwr-3g

>   clk	    [	]   fixed_rate	|-- external-gmac-clock

>   regulator  [	]   fixed regu	|-- vsys-regulator

>   regulator  [ + ]   fixed regu	|-- sdmmc-regulator

>   regulator  [	]   fixed regu	`-- usb-host-regulator

> =>

> 

> @@ -73,7 +27,7 @@ Hit any key to stop autoboot:  0

>    serial	    [ + ]   ns16550_se	|-- serial@ff690000

>    serial	    [	]   ns16550_se	|-- serial@ff1b0000

>    serial	    [	]   ns16550_se	|-- serial@ff1c0000

> - eth	    [ + ]   gmac_rockc	|-- ethernet@ff290000

> + eth	    [	]   gmac_rockc	|-- ethernet@ff290000

>    usb	    [	]   dwc2_usb	|-- usb@ff540000

>    usb	    [	]   dwc2_usb	|-- usb@ff580000

>    ram	    [	]   rockchip_r	|-- dmc@ff610000

> @@ -87,12 +41,12 @@ Hit any key to stop autoboot:  0

>    regulator  [	]   rk8xx_ldo	|	|-- LDO_REG2

>    regulator  [	]   rk8xx_ldo	|	|-- LDO_REG3

>    regulator  [	]   rk8xx_ldo	|	|-- LDO_REG4

> - regulator  [	]   rk8xx_ldo	|	|-- LDO_REG5

> + regulator  [ + ]   rk8xx_ldo	|	|-- LDO_REG5

>    regulator  [	]   rk8xx_ldo	|	|-- LDO_REG6

>    regulator  [	]   rk8xx_ldo	|	|-- LDO_REG7

>    regulator  [	]   rk8xx_ldo	|	|-- LDO_REG8

>    regulator  [	]   rk8xx_swit	|	|-- SWITCH_REG1

> - regulator  [ + ]   rk8xx_swit	|	`-- SWITCH_REG2

> + regulator  [	]   rk8xx_swit	|	`-- SWITCH_REG2

>    i2c	    [ + ]   i2c_rockch	|-- i2c@ff660000

>    i2c_eeprom [ + ]   i2c_eeprom	|   `-- m24c08@50

>    pwm	    [	]   rk_pwm	|-- pwm@ff680000

> @@ -235,7 +189,7 @@ Hit any key to stop autoboot:  0

>    pinconfig  [	]   pinconfig	|   `-- usb

>    pinconfig  [	]   pinconfig	|	|-- host-vbus-drv

>    pinconfig  [	]   pinconfig	|	`-- pwr-3g

> - clk	    [	]   fixed_rate	|-- external-gmac-clock

> + clk	    [ + ]   fixed_rate	|-- external-gmac-clock

>    regulator  [	]   fixed regu	|-- vsys-regulator

>    regulator  [ + ]   fixed regu	|-- sdmmc-regulator

>    regulator  [	]   fixed regu	`-- usb-host-regulator

>
Jonathan Gray Feb. 16, 2018, 9:05 a.m. UTC | #6
Thanks, that fixes it.  Hopefully it makes 2018.03.

On Fri, Feb 16, 2018 at 08:02:17AM +0000, Patrice CHOTARD wrote:
> Hi Jonathan
> 
> Have you tried to apply the fix available here ?
> 
> http://u-boot.10912.n7.nabble.com/PATCH-NET-designware-fix-clock-enable-td320043.html
> 
> Regards
> 
> Patrice
> 
> 
> On 02/16/2018 08:17 AM, Jonathan Gray wrote:
> > On Wed, Nov 29, 2017 at 09:06:11AM +0100, patrice.chotard@st.com wrote:
> >> From: Patrice Chotard <patrice.chotard@st.com>
> >>
> >> This implementation manages several clocks, disable and
> >> free all of them in case of error during probe and in remove
> >> callback.
> >>
> >> Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
> >> ---
> >>   drivers/net/designware.c | 43 +++++++++++++++++++++++++++++++++++++++++++
> >>   drivers/net/designware.h |  4 ++++
> >>   2 files changed, 47 insertions(+)
> > 
> > RK3288 Ethernet on the ASUS Tinker Board fails to probe with master
> > (32fe36574ea5e6ea55313e16547b98a984af7767) but worked with 2018.01.
> > 
> > ba1f966725223c605ed504b09446c52a3f201c2b is the first bad commit
> > commit ba1f966725223c605ed504b09446c52a3f201c2b
> > Author: Patrice Chotard <patrice.chotard@st.com>
> > Date:   Wed Nov 29 09:06:11 2017 +0100
> > 
> >      net: designware: add clock support
> >      
> >      This implementation manages several clocks, disable and
> >      free all of them in case of error during probe and in remove
> >      callback.
> >      
> >      Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
> >      Reviewed-by: Simon Glass <sjg@chromium.org>
> >      Acked-by: Joe Hershberger <joe.hershberger@ni.com>
> > 
> > :040000 040000 6f1002af4c0f3ed7ab6f2418d4f2de00bbe454a7 e18d2a6c24cbfd055c89fa250946bf85199fff90 M      drivers
> > 
> > U-Boot 2018.03-rc2-00047-gc1531533c5 (Feb 16 2018 - 15:38:39 +1100)
> > 
> > Model: Tinker-RK3288
> > DRAM:  2 GiB
> > MMC:   dwmmc@ff0c0000: 1
> > Loading Environment from MMC... *** Warning - bad CRC, using default environment
> > 
> > Failed (-5)
> > In:    serial
> > Out:   serial
> > Err:   serial
> > Model: Tinker-RK3288
> > Net:   failed to enable clock 0
> > No ethernet found.
> > Hit any key to stop autoboot:  0
> > => dm tree
> >   Class	    Probed  Driver	Name
> > ----------------------------------------
> >   root	    [ + ]   root_drive	root_driver
> >   clk	    [	]   fixed_rate	|-- oscillator
> >   mmc	    [ + ]   rockchip_r	|-- dwmmc@ff0c0000
> >   blk	    [ + ]   mmc_blk	|   `-- dwmmc@ff0c0000.blk
> >   adc	    [ + ]   rockchip_s	|-- saradc@ff100000
> >   i2c	    [	]   i2c_rockch	|-- i2c@ff170000
> >   serial	    [	]   ns16550_se	|-- serial@ff180000
> >   serial	    [	]   ns16550_se	|-- serial@ff190000
> >   serial	    [ + ]   ns16550_se	|-- serial@ff690000
> >   serial	    [	]   ns16550_se	|-- serial@ff1b0000
> >   serial	    [	]   ns16550_se	|-- serial@ff1c0000
> >   eth	    [	]   gmac_rockc	|-- ethernet@ff290000
> >   usb	    [	]   dwc2_usb	|-- usb@ff540000
> >   usb	    [	]   dwc2_usb	|-- usb@ff580000
> >   ram	    [	]   rockchip_r	|-- dmc@ff610000
> >   i2c	    [ + ]   i2c_rockch	|-- i2c@ff650000
> >   pmic	    [ + ]   rk8xx pmic	|   `-- pmic@1b
> >   regulator  [	]   rk8xx_buck	|	|-- DCDC_REG1
> >   regulator  [	]   rk8xx_buck	|	|-- DCDC_REG2
> >   regulator  [	]   rk8xx_buck	|	|-- DCDC_REG3
> >   regulator  [	]   rk8xx_buck	|	|-- DCDC_REG4
> >   regulator  [	]   rk8xx_ldo	|	|-- LDO_REG1
> >   regulator  [	]   rk8xx_ldo	|	|-- LDO_REG2
> >   regulator  [	]   rk8xx_ldo	|	|-- LDO_REG3
> >   regulator  [	]   rk8xx_ldo	|	|-- LDO_REG4
> >   regulator  [ + ]   rk8xx_ldo	|	|-- LDO_REG5
> >   regulator  [	]   rk8xx_ldo	|	|-- LDO_REG6
> >   regulator  [	]   rk8xx_ldo	|	|-- LDO_REG7
> >   regulator  [	]   rk8xx_ldo	|	|-- LDO_REG8
> >   regulator  [	]   rk8xx_swit	|	|-- SWITCH_REG1
> >   regulator  [	]   rk8xx_swit	|	`-- SWITCH_REG2
> >   i2c	    [ + ]   i2c_rockch	|-- i2c@ff660000
> >   i2c_eeprom [ + ]   i2c_eeprom	|   `-- m24c08@50
> >   pwm	    [	]   rk_pwm	|-- pwm@ff680000
> >   pwm	    [	]   rk_pwm	|-- pwm@ff680010
> >   syscon	    [ + ]   rk3288_sys	|-- power-management@ff730000
> >   syscon	    [	]   rk3288_sys	|-- syscon@ff740000
> >   clk	    [ + ]   rockchip_r	|-- clock-controller@ff760000
> >   sysreset   [	]   rockchip_s	|   `-- sysreset
> >   syscon	    [ + ]   rk3288_sys	|-- syscon@ff770000
> >   syscon	    [	]   rk3288_sys	|-- syscon@ffac0000
> >   pinctrl    [ + ]   rockchip_r	|-- pinctrl
> >   gpio	    [	]   gpio_rockc	|   |-- gpio0@ff750000
> >   gpio	    [	]   gpio_rockc	|   |-- gpio1@ff780000
> >   gpio	    [	]   gpio_rockc	|   |-- gpio2@ff790000
> >   gpio	    [	]   gpio_rockc	|   |-- gpio3@ff7a0000
> >   gpio	    [ + ]   gpio_rockc	|   |-- gpio4@ff7b0000
> >   gpio	    [	]   gpio_rockc	|   |-- gpio5@ff7c0000
> >   gpio	    [	]   gpio_rockc	|   |-- gpio6@ff7d0000
> >   gpio	    [ + ]   gpio_rockc	|   |-- gpio7@ff7e0000
> >   gpio	    [	]   gpio_rockc	|   |-- gpio8@ff7f0000
> >   pinconfig  [	]   pinconfig	|   |-- pcfg-pull-up
> >   pinconfig  [	]   pinconfig	|   |-- pcfg-pull-down
> >   pinconfig  [	]   pinconfig	|   |-- pcfg-pull-none
> >   pinconfig  [	]   pinconfig	|   |-- pcfg-pull-none-12ma
> >   pinconfig  [ + ]   pinconfig	|   |-- sleep
> >   pinconfig  [ + ]   pinconfig	|   |	|-- global-pwroff
> >   pinconfig  [	]   pinconfig	|   |	|-- ddrio-pwroff
> >   pinconfig  [	]   pinconfig	|   |	|-- ddr0-retention
> >   pinconfig  [	]   pinconfig	|   |	`-- ddr1-retention
> >   pinconfig  [ + ]   pinconfig	|   |-- i2c0
> >   pinconfig  [ + ]   pinconfig	|   |	`-- i2c0-xfer
> >   pinconfig  [	]   pinconfig	|   |-- i2c1
> >   pinconfig  [	]   pinconfig	|   |	`-- i2c1-xfer
> >   pinconfig  [ + ]   pinconfig	|   |-- i2c2
> >   pinconfig  [ + ]   pinconfig	|   |	`-- i2c2-xfer
> >   pinconfig  [	]   pinconfig	|   |-- i2c3
> >   pinconfig  [	]   pinconfig	|   |	`-- i2c3-xfer
> >   pinconfig  [	]   pinconfig	|   |-- i2c4
> >   pinconfig  [	]   pinconfig	|   |	`-- i2c4-xfer
> >   pinconfig  [	]   pinconfig	|   |-- i2c5
> >   pinconfig  [	]   pinconfig	|   |	`-- i2c5-xfer
> >   pinconfig  [	]   pinconfig	|   |-- i2s0
> >   pinconfig  [	]   pinconfig	|   |	`-- i2s0-bus
> >   pinconfig  [	]   pinconfig	|   |-- lcdc0
> >   pinconfig  [	]   pinconfig	|   |	`-- lcdc0-ctl
> >   pinconfig  [ + ]   pinconfig	|   |-- sdmmc
> >   pinconfig  [ + ]   pinconfig	|   |	|-- sdmmc-clk
> >   pinconfig  [ + ]   pinconfig	|   |	|-- sdmmc-cmd
> >   pinconfig  [ + ]   pinconfig	|   |	|-- sdmcc-cd
> >   pinconfig  [	]   pinconfig	|   |	|-- sdmmc-bus1
> >   pinconfig  [ + ]   pinconfig	|   |	|-- sdmmc-bus4
> >   pinconfig  [ + ]   pinconfig	|   |	`-- sdmmc-pwr
> >   pinconfig  [	]   pinconfig	|   |-- sdio0
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio0-bus1
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio0-bus4
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio0-cmd
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio0-clk
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio0-cd
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio0-wp
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio0-pwr
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio0-bkpwr
> >   pinconfig  [	]   pinconfig	|   |	`-- sdio0-int
> >   pinconfig  [	]   pinconfig	|   |-- sdio1
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio1-bus1
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio1-bus4
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio1-cd
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio1-wp
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio1-bkpwr
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio1-int
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio1-cmd
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio1-clk
> >   pinconfig  [	]   pinconfig	|   |	`-- sdio1-pwr
> >   pinconfig  [	]   pinconfig	|   |-- emmc
> >   pinconfig  [	]   pinconfig	|   |	|-- emmc-clk
> >   pinconfig  [	]   pinconfig	|   |	|-- emmc-cmd
> >   pinconfig  [	]   pinconfig	|   |	|-- emmc-pwr
> >   pinconfig  [	]   pinconfig	|   |	|-- emmc-bus1
> >   pinconfig  [	]   pinconfig	|   |	|-- emmc-bus4
> >   pinconfig  [	]   pinconfig	|   |	`-- emmc-bus8
> >   pinconfig  [	]   pinconfig	|   |-- spi0
> >   pinconfig  [	]   pinconfig	|   |	|-- spi0-clk
> >   pinconfig  [	]   pinconfig	|   |	|-- spi0-cs0
> >   pinconfig  [	]   pinconfig	|   |	|-- spi0-tx
> >   pinconfig  [	]   pinconfig	|   |	|-- spi0-rx
> >   pinconfig  [	]   pinconfig	|   |	`-- spi0-cs1
> >   pinconfig  [	]   pinconfig	|   |-- spi1
> >   pinconfig  [	]   pinconfig	|   |	|-- spi1-clk
> >   pinconfig  [	]   pinconfig	|   |	|-- spi1-cs0
> >   pinconfig  [	]   pinconfig	|   |	|-- spi1-rx
> >   pinconfig  [	]   pinconfig	|   |	`-- spi1-tx
> >   pinconfig  [	]   pinconfig	|   |-- spi2
> >   pinconfig  [	]   pinconfig	|   |	|-- spi2-cs1
> >   pinconfig  [	]   pinconfig	|   |	|-- spi2-clk
> >   pinconfig  [	]   pinconfig	|   |	|-- spi2-cs0
> >   pinconfig  [	]   pinconfig	|   |	|-- spi2-rx
> >   pinconfig  [	]   pinconfig	|   |	`-- spi2-tx
> >   pinconfig  [	]   pinconfig	|   |-- uart0
> >   pinconfig  [	]   pinconfig	|   |	|-- uart0-xfer
> >   pinconfig  [	]   pinconfig	|   |	|-- uart0-cts
> >   pinconfig  [	]   pinconfig	|   |	`-- uart0-rts
> >   pinconfig  [	]   pinconfig	|   |-- uart1
> >   pinconfig  [	]   pinconfig	|   |	|-- uart1-xfer
> >   pinconfig  [	]   pinconfig	|   |	|-- uart1-cts
> >   pinconfig  [	]   pinconfig	|   |	`-- uart1-rts
> >   pinconfig  [ + ]   pinconfig	|   |-- uart2
> >   pinconfig  [ + ]   pinconfig	|   |	`-- uart2-xfer
> >   pinconfig  [	]   pinconfig	|   |-- uart3
> >   pinconfig  [	]   pinconfig	|   |	|-- uart3-xfer
> >   pinconfig  [	]   pinconfig	|   |	|-- uart3-cts
> >   pinconfig  [	]   pinconfig	|   |	`-- uart3-rts
> >   pinconfig  [	]   pinconfig	|   |-- uart4
> >   pinconfig  [	]   pinconfig	|   |	|-- uart4-xfer
> >   pinconfig  [	]   pinconfig	|   |	|-- uart4-cts
> >   pinconfig  [	]   pinconfig	|   |	`-- uart4-rts
> >   pinconfig  [	]   pinconfig	|   |-- tsadc
> >   pinconfig  [	]   pinconfig	|   |	`-- otp-out
> >   pinconfig  [	]   pinconfig	|   |-- pwm0
> >   pinconfig  [	]   pinconfig	|   |	`-- pwm0-pin
> >   pinconfig  [	]   pinconfig	|   |-- pwm1
> >   pinconfig  [	]   pinconfig	|   |	`-- pwm1-pin
> >   pinconfig  [	]   pinconfig	|   |-- pwm2
> >   pinconfig  [	]   pinconfig	|   |	`-- pwm2-pin
> >   pinconfig  [	]   pinconfig	|   |-- pwm3
> >   pinconfig  [	]   pinconfig	|   |	`-- pwm3-pin
> >   pinconfig  [ + ]   pinconfig	|   |-- gmac
> >   pinconfig  [ + ]   pinconfig	|   |	|-- rgmii-pins
> >   pinconfig  [	]   pinconfig	|   |	`-- rmii-pins
> >   pinconfig  [	]   pinconfig	|   |-- spdif
> >   pinconfig  [	]   pinconfig	|   |	`-- spdif-tx
> >   pinconfig  [	]   pinconfig	|   |-- pcfg-pull-none-drv-8ma
> >   pinconfig  [	]   pinconfig	|   |-- pcfg-pull-up-drv-8ma
> >   pinconfig  [	]   pinconfig	|   |-- backlight
> >   pinconfig  [	]   pinconfig	|   |	`-- bl-en
> >   pinconfig  [	]   pinconfig	|   |-- buttons
> >   pinconfig  [	]   pinconfig	|   |	`-- pwrbtn
> >   pinconfig  [	]   pinconfig	|   |-- eth_phy
> >   pinconfig  [	]   pinconfig	|   |	`-- eth-phy-pwr
> >   pinconfig  [ + ]   pinconfig	|   |-- pmic
> >   pinconfig  [ + ]   pinconfig	|   |	`-- pmic-int
> >   pinconfig  [	]   pinconfig	|   `-- usb
> >   pinconfig  [	]   pinconfig	|	|-- host-vbus-drv
> >   pinconfig  [	]   pinconfig	|	`-- pwr-3g
> >   clk	    [ + ]   fixed_rate	|-- external-gmac-clock
> >   regulator  [	]   fixed regu	|-- vsys-regulator
> >   regulator  [ + ]   fixed regu	|-- sdmmc-regulator
> >   regulator  [	]   fixed regu	`-- usb-host-regulator
> > =>
> > 
> > U-Boot 2018.01 (Feb 06 2018 - 23:24:11 -0700)
> > 
> > Model: Tinker-RK3288
> > DRAM:  2 GiB
> > MMC:   dwmmc@ff0c0000: 1
> > *** Warning - bad CRC, using default environment
> > 
> > In:    serial
> > Out:   serial
> > Err:   serial
> > Model: Tinker-RK3288
> > Net:   eth0: ethernet@ff290000
> > Hit any key to stop autoboot:  0
> > => dm tree
> >   Class	    Probed  Driver	Name
> > ----------------------------------------
> >   root	    [ + ]   root_drive	root_driver
> >   clk	    [	]   fixed_rate	|-- oscillator
> >   mmc	    [ + ]   rockchip_r	|-- dwmmc@ff0c0000
> >   blk	    [ + ]   mmc_blk	|   `-- dwmmc@ff0c0000.blk
> >   adc	    [ + ]   rockchip_s	|-- saradc@ff100000
> >   i2c	    [	]   i2c_rockch	|-- i2c@ff170000
> >   serial	    [	]   ns16550_se	|-- serial@ff180000
> >   serial	    [	]   ns16550_se	|-- serial@ff190000
> >   serial	    [ + ]   ns16550_se	|-- serial@ff690000
> >   serial	    [	]   ns16550_se	|-- serial@ff1b0000
> >   serial	    [	]   ns16550_se	|-- serial@ff1c0000
> >   eth	    [ + ]   gmac_rockc	|-- ethernet@ff290000
> >   usb	    [	]   dwc2_usb	|-- usb@ff540000
> >   usb	    [	]   dwc2_usb	|-- usb@ff580000
> >   ram	    [	]   rockchip_r	|-- dmc@ff610000
> >   i2c	    [ + ]   i2c_rockch	|-- i2c@ff650000
> >   pmic	    [ + ]   rk8xx pmic	|   `-- pmic@1b
> >   regulator  [	]   rk8xx_buck	|	|-- DCDC_REG1
> >   regulator  [	]   rk8xx_buck	|	|-- DCDC_REG2
> >   regulator  [	]   rk8xx_buck	|	|-- DCDC_REG3
> >   regulator  [	]   rk8xx_buck	|	|-- DCDC_REG4
> >   regulator  [	]   rk8xx_ldo	|	|-- LDO_REG1
> >   regulator  [	]   rk8xx_ldo	|	|-- LDO_REG2
> >   regulator  [	]   rk8xx_ldo	|	|-- LDO_REG3
> >   regulator  [	]   rk8xx_ldo	|	|-- LDO_REG4
> >   regulator  [	]   rk8xx_ldo	|	|-- LDO_REG5
> >   regulator  [	]   rk8xx_ldo	|	|-- LDO_REG6
> >   regulator  [	]   rk8xx_ldo	|	|-- LDO_REG7
> >   regulator  [	]   rk8xx_ldo	|	|-- LDO_REG8
> >   regulator  [	]   rk8xx_swit	|	|-- SWITCH_REG1
> >   regulator  [ + ]   rk8xx_swit	|	`-- SWITCH_REG2
> >   i2c	    [ + ]   i2c_rockch	|-- i2c@ff660000
> >   i2c_eeprom [ + ]   i2c_eeprom	|   `-- m24c08@50
> >   pwm	    [	]   rk_pwm	|-- pwm@ff680000
> >   pwm	    [	]   rk_pwm	|-- pwm@ff680010
> >   syscon	    [ + ]   rk3288_sys	|-- power-management@ff730000
> >   syscon	    [	]   rk3288_sys	|-- syscon@ff740000
> >   clk	    [ + ]   rockchip_r	|-- clock-controller@ff760000
> >   sysreset   [	]   rockchip_s	|   `-- sysreset
> >   syscon	    [ + ]   rk3288_sys	|-- syscon@ff770000
> >   syscon	    [	]   rk3288_sys	|-- syscon@ffac0000
> >   pinctrl    [ + ]   rockchip_r	|-- pinctrl
> >   gpio	    [	]   gpio_rockc	|   |-- gpio0@ff750000
> >   gpio	    [	]   gpio_rockc	|   |-- gpio1@ff780000
> >   gpio	    [	]   gpio_rockc	|   |-- gpio2@ff790000
> >   gpio	    [	]   gpio_rockc	|   |-- gpio3@ff7a0000
> >   gpio	    [ + ]   gpio_rockc	|   |-- gpio4@ff7b0000
> >   gpio	    [	]   gpio_rockc	|   |-- gpio5@ff7c0000
> >   gpio	    [	]   gpio_rockc	|   |-- gpio6@ff7d0000
> >   gpio	    [ + ]   gpio_rockc	|   |-- gpio7@ff7e0000
> >   gpio	    [	]   gpio_rockc	|   |-- gpio8@ff7f0000
> >   pinconfig  [	]   pinconfig	|   |-- pcfg-pull-up
> >   pinconfig  [	]   pinconfig	|   |-- pcfg-pull-down
> >   pinconfig  [	]   pinconfig	|   |-- pcfg-pull-none
> >   pinconfig  [	]   pinconfig	|   |-- pcfg-pull-none-12ma
> >   pinconfig  [ + ]   pinconfig	|   |-- sleep
> >   pinconfig  [ + ]   pinconfig	|   |	|-- global-pwroff
> >   pinconfig  [	]   pinconfig	|   |	|-- ddrio-pwroff
> >   pinconfig  [	]   pinconfig	|   |	|-- ddr0-retention
> >   pinconfig  [	]   pinconfig	|   |	`-- ddr1-retention
> >   pinconfig  [ + ]   pinconfig	|   |-- i2c0
> >   pinconfig  [ + ]   pinconfig	|   |	`-- i2c0-xfer
> >   pinconfig  [	]   pinconfig	|   |-- i2c1
> >   pinconfig  [	]   pinconfig	|   |	`-- i2c1-xfer
> >   pinconfig  [ + ]   pinconfig	|   |-- i2c2
> >   pinconfig  [ + ]   pinconfig	|   |	`-- i2c2-xfer
> >   pinconfig  [	]   pinconfig	|   |-- i2c3
> >   pinconfig  [	]   pinconfig	|   |	`-- i2c3-xfer
> >   pinconfig  [	]   pinconfig	|   |-- i2c4
> >   pinconfig  [	]   pinconfig	|   |	`-- i2c4-xfer
> >   pinconfig  [	]   pinconfig	|   |-- i2c5
> >   pinconfig  [	]   pinconfig	|   |	`-- i2c5-xfer
> >   pinconfig  [	]   pinconfig	|   |-- i2s0
> >   pinconfig  [	]   pinconfig	|   |	`-- i2s0-bus
> >   pinconfig  [	]   pinconfig	|   |-- lcdc0
> >   pinconfig  [	]   pinconfig	|   |	`-- lcdc0-ctl
> >   pinconfig  [ + ]   pinconfig	|   |-- sdmmc
> >   pinconfig  [ + ]   pinconfig	|   |	|-- sdmmc-clk
> >   pinconfig  [ + ]   pinconfig	|   |	|-- sdmmc-cmd
> >   pinconfig  [ + ]   pinconfig	|   |	|-- sdmcc-cd
> >   pinconfig  [	]   pinconfig	|   |	|-- sdmmc-bus1
> >   pinconfig  [ + ]   pinconfig	|   |	|-- sdmmc-bus4
> >   pinconfig  [ + ]   pinconfig	|   |	`-- sdmmc-pwr
> >   pinconfig  [	]   pinconfig	|   |-- sdio0
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio0-bus1
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio0-bus4
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio0-cmd
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio0-clk
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio0-cd
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio0-wp
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio0-pwr
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio0-bkpwr
> >   pinconfig  [	]   pinconfig	|   |	`-- sdio0-int
> >   pinconfig  [	]   pinconfig	|   |-- sdio1
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio1-bus1
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio1-bus4
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio1-cd
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio1-wp
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio1-bkpwr
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio1-int
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio1-cmd
> >   pinconfig  [	]   pinconfig	|   |	|-- sdio1-clk
> >   pinconfig  [	]   pinconfig	|   |	`-- sdio1-pwr
> >   pinconfig  [	]   pinconfig	|   |-- emmc
> >   pinconfig  [	]   pinconfig	|   |	|-- emmc-clk
> >   pinconfig  [	]   pinconfig	|   |	|-- emmc-cmd
> >   pinconfig  [	]   pinconfig	|   |	|-- emmc-pwr
> >   pinconfig  [	]   pinconfig	|   |	|-- emmc-bus1
> >   pinconfig  [	]   pinconfig	|   |	|-- emmc-bus4
> >   pinconfig  [	]   pinconfig	|   |	`-- emmc-bus8
> >   pinconfig  [	]   pinconfig	|   |-- spi0
> >   pinconfig  [	]   pinconfig	|   |	|-- spi0-clk
> >   pinconfig  [	]   pinconfig	|   |	|-- spi0-cs0
> >   pinconfig  [	]   pinconfig	|   |	|-- spi0-tx
> >   pinconfig  [	]   pinconfig	|   |	|-- spi0-rx
> >   pinconfig  [	]   pinconfig	|   |	`-- spi0-cs1
> >   pinconfig  [	]   pinconfig	|   |-- spi1
> >   pinconfig  [	]   pinconfig	|   |	|-- spi1-clk
> >   pinconfig  [	]   pinconfig	|   |	|-- spi1-cs0
> >   pinconfig  [	]   pinconfig	|   |	|-- spi1-rx
> >   pinconfig  [	]   pinconfig	|   |	`-- spi1-tx
> >   pinconfig  [	]   pinconfig	|   |-- spi2
> >   pinconfig  [	]   pinconfig	|   |	|-- spi2-cs1
> >   pinconfig  [	]   pinconfig	|   |	|-- spi2-clk
> >   pinconfig  [	]   pinconfig	|   |	|-- spi2-cs0
> >   pinconfig  [	]   pinconfig	|   |	|-- spi2-rx
> >   pinconfig  [	]   pinconfig	|   |	`-- spi2-tx
> >   pinconfig  [	]   pinconfig	|   |-- uart0
> >   pinconfig  [	]   pinconfig	|   |	|-- uart0-xfer
> >   pinconfig  [	]   pinconfig	|   |	|-- uart0-cts
> >   pinconfig  [	]   pinconfig	|   |	`-- uart0-rts
> >   pinconfig  [	]   pinconfig	|   |-- uart1
> >   pinconfig  [	]   pinconfig	|   |	|-- uart1-xfer
> >   pinconfig  [	]   pinconfig	|   |	|-- uart1-cts
> >   pinconfig  [	]   pinconfig	|   |	`-- uart1-rts
> >   pinconfig  [ + ]   pinconfig	|   |-- uart2
> >   pinconfig  [ + ]   pinconfig	|   |	`-- uart2-xfer
> >   pinconfig  [	]   pinconfig	|   |-- uart3
> >   pinconfig  [	]   pinconfig	|   |	|-- uart3-xfer
> >   pinconfig  [	]   pinconfig	|   |	|-- uart3-cts
> >   pinconfig  [	]   pinconfig	|   |	`-- uart3-rts
> >   pinconfig  [	]   pinconfig	|   |-- uart4
> >   pinconfig  [	]   pinconfig	|   |	|-- uart4-xfer
> >   pinconfig  [	]   pinconfig	|   |	|-- uart4-cts
> >   pinconfig  [	]   pinconfig	|   |	`-- uart4-rts
> >   pinconfig  [	]   pinconfig	|   |-- tsadc
> >   pinconfig  [	]   pinconfig	|   |	`-- otp-out
> >   pinconfig  [	]   pinconfig	|   |-- pwm0
> >   pinconfig  [	]   pinconfig	|   |	`-- pwm0-pin
> >   pinconfig  [	]   pinconfig	|   |-- pwm1
> >   pinconfig  [	]   pinconfig	|   |	`-- pwm1-pin
> >   pinconfig  [	]   pinconfig	|   |-- pwm2
> >   pinconfig  [	]   pinconfig	|   |	`-- pwm2-pin
> >   pinconfig  [	]   pinconfig	|   |-- pwm3
> >   pinconfig  [	]   pinconfig	|   |	`-- pwm3-pin
> >   pinconfig  [ + ]   pinconfig	|   |-- gmac
> >   pinconfig  [ + ]   pinconfig	|   |	|-- rgmii-pins
> >   pinconfig  [	]   pinconfig	|   |	`-- rmii-pins
> >   pinconfig  [	]   pinconfig	|   |-- spdif
> >   pinconfig  [	]   pinconfig	|   |	`-- spdif-tx
> >   pinconfig  [	]   pinconfig	|   |-- pcfg-pull-none-drv-8ma
> >   pinconfig  [	]   pinconfig	|   |-- pcfg-pull-up-drv-8ma
> >   pinconfig  [	]   pinconfig	|   |-- backlight
> >   pinconfig  [	]   pinconfig	|   |	`-- bl-en
> >   pinconfig  [	]   pinconfig	|   |-- buttons
> >   pinconfig  [	]   pinconfig	|   |	`-- pwrbtn
> >   pinconfig  [	]   pinconfig	|   |-- eth_phy
> >   pinconfig  [	]   pinconfig	|   |	`-- eth-phy-pwr
> >   pinconfig  [ + ]   pinconfig	|   |-- pmic
> >   pinconfig  [ + ]   pinconfig	|   |	`-- pmic-int
> >   pinconfig  [	]   pinconfig	|   `-- usb
> >   pinconfig  [	]   pinconfig	|	|-- host-vbus-drv
> >   pinconfig  [	]   pinconfig	|	`-- pwr-3g
> >   clk	    [	]   fixed_rate	|-- external-gmac-clock
> >   regulator  [	]   fixed regu	|-- vsys-regulator
> >   regulator  [ + ]   fixed regu	|-- sdmmc-regulator
> >   regulator  [	]   fixed regu	`-- usb-host-regulator
> > =>
> > 
> > @@ -73,7 +27,7 @@ Hit any key to stop autoboot:  0
> >    serial	    [ + ]   ns16550_se	|-- serial@ff690000
> >    serial	    [	]   ns16550_se	|-- serial@ff1b0000
> >    serial	    [	]   ns16550_se	|-- serial@ff1c0000
> > - eth	    [ + ]   gmac_rockc	|-- ethernet@ff290000
> > + eth	    [	]   gmac_rockc	|-- ethernet@ff290000
> >    usb	    [	]   dwc2_usb	|-- usb@ff540000
> >    usb	    [	]   dwc2_usb	|-- usb@ff580000
> >    ram	    [	]   rockchip_r	|-- dmc@ff610000
> > @@ -87,12 +41,12 @@ Hit any key to stop autoboot:  0
> >    regulator  [	]   rk8xx_ldo	|	|-- LDO_REG2
> >    regulator  [	]   rk8xx_ldo	|	|-- LDO_REG3
> >    regulator  [	]   rk8xx_ldo	|	|-- LDO_REG4
> > - regulator  [	]   rk8xx_ldo	|	|-- LDO_REG5
> > + regulator  [ + ]   rk8xx_ldo	|	|-- LDO_REG5
> >    regulator  [	]   rk8xx_ldo	|	|-- LDO_REG6
> >    regulator  [	]   rk8xx_ldo	|	|-- LDO_REG7
> >    regulator  [	]   rk8xx_ldo	|	|-- LDO_REG8
> >    regulator  [	]   rk8xx_swit	|	|-- SWITCH_REG1
> > - regulator  [ + ]   rk8xx_swit	|	`-- SWITCH_REG2
> > + regulator  [	]   rk8xx_swit	|	`-- SWITCH_REG2
> >    i2c	    [ + ]   i2c_rockch	|-- i2c@ff660000
> >    i2c_eeprom [ + ]   i2c_eeprom	|   `-- m24c08@50
> >    pwm	    [	]   rk_pwm	|-- pwm@ff680000
> > @@ -235,7 +189,7 @@ Hit any key to stop autoboot:  0
> >    pinconfig  [	]   pinconfig	|   `-- usb
> >    pinconfig  [	]   pinconfig	|	|-- host-vbus-drv
> >    pinconfig  [	]   pinconfig	|	`-- pwr-3g
> > - clk	    [	]   fixed_rate	|-- external-gmac-clock
> > + clk	    [ + ]   fixed_rate	|-- external-gmac-clock
> >    regulator  [	]   fixed regu	|-- vsys-regulator
> >    regulator  [ + ]   fixed regu	|-- sdmmc-regulator
> >    regulator  [	]   fixed regu	`-- usb-host-regulator
> > 
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> https://lists.denx.de/listinfo/u-boot
diff mbox series

Patch

diff --git a/drivers/net/designware.c b/drivers/net/designware.c
index 036d231..9207324 100644
--- a/drivers/net/designware.c
+++ b/drivers/net/designware.c
@@ -10,6 +10,7 @@ 
  */
 
 #include <common.h>
+#include <clk.h>
 #include <dm.h>
 #include <errno.h>
 #include <miiphy.h>
@@ -661,6 +662,35 @@  int designware_eth_probe(struct udevice *dev)
 	u32 iobase = pdata->iobase;
 	ulong ioaddr;
 	int ret;
+#ifdef CONFIG_CLK
+	int i, err, clock_nb;
+
+	priv->clock_count = 0;
+	clock_nb = dev_count_phandle_with_args(dev, "clocks", "#clock-cells");
+	if (clock_nb > 0) {
+		priv->clocks = devm_kcalloc(dev, clock_nb, sizeof(struct clk),
+					    GFP_KERNEL);
+		if (!priv->clocks)
+			return -ENOMEM;
+
+		for (i = 0; i < clock_nb; i++) {
+			err = clk_get_by_index(dev, i, &priv->clocks[i]);
+			if (err < 0)
+				break;
+
+			err = clk_enable(&priv->clocks[i]);
+			if (err) {
+				pr_err("failed to enable clock %d\n", i);
+				clk_free(&priv->clocks[i]);
+				goto clk_err;
+			}
+			priv->clock_count++;
+		}
+	} else if (clock_nb != -ENOENT) {
+		pr_err("failed to get clock phandle(%d)\n", clock_nb);
+		return clock_nb;
+	}
+#endif
 
 #if defined(CONFIG_DM_REGULATOR)
 	struct udevice *phy_supply;
@@ -707,6 +737,15 @@  int designware_eth_probe(struct udevice *dev)
 	debug("%s, ret=%d\n", __func__, ret);
 
 	return ret;
+
+#ifdef CONFIG_CLK
+clk_err:
+	ret = clk_release_all(priv->clocks, priv->clock_count);
+	if (ret)
+		pr_err("failed to disable all clocks\n");
+
+	return err;
+#endif
 }
 
 static int designware_eth_remove(struct udevice *dev)
@@ -717,7 +756,11 @@  static int designware_eth_remove(struct udevice *dev)
 	mdio_unregister(priv->bus);
 	mdio_free(priv->bus);
 
+#ifdef CONFIG_CLK
+	return clk_release_all(priv->clocks, priv->clock_count);
+#else
 	return 0;
+#endif
 }
 
 const struct eth_ops designware_eth_ops = {
diff --git a/drivers/net/designware.h b/drivers/net/designware.h
index 7992d0e..252cd24 100644
--- a/drivers/net/designware.h
+++ b/drivers/net/designware.h
@@ -239,6 +239,10 @@  struct dw_eth_dev {
 #ifdef CONFIG_DM_GPIO
 	struct gpio_desc reset_gpio;
 #endif
+#ifdef CONFIG_CLK
+	struct clk *clocks;	/* clock list */
+	int clock_count;	/* number of clock in clock list */
+#endif
 
 	struct phy_device *phydev;
 	struct mii_dev *bus;