On Sat, Oct 05, 2019 at 12:20:57PM -0400, k...@intricatesoftware.com wrote:
> Various rockchip u-boot 2019.10rc4 aarch64 improvements:
> * u-boot.itb is included in the all target for rockpro64 and
>   firefly-rk3399 so remove duplicate make for it.
> * Build rock64-rk3328, except exclude idbloader.img which is broken.
> * Install u-boot-spl-dtb.bin and mkimage for rock64, rockpro64 and
>   firefly-rk3399 so that idbloader.img can be created using rkbin TPL
>   layer.
> * Provide a script to make idbloader.img from rkbin's TPL layer.
> * For rockpro64 backport PCIe support from 5.3 dtb.
> * For rock64 backport most 4.20 dtb components and additional bug
>   fixes.
> 
> For rockpro64, I no longer need to have an updated dtb installed
> in the i partition for PCIe to work. Although I am using the
> rkbin TPL layer because the u-boot one doesn't recognize half
> of my memory (other versions of this board dont have this 
> problem).
> 
> For rock64 the dtb updates corrects the clock bindings so an
> updated dtb is not needed in the i partition as well. However,
> u-boot's TPL layer isn't working yet so the following steps
> are needed to create a usable idbloader.img on a uSD for
> install with miniroot66.fs:
> 
> /usr/local/libexec/u-boot/mkidbloader-rkbin rock64-rk3328
> dd if=miniroot66.fs of=/dev/<uSD> bs=1m
> dd if=idbloader.img of=/dev/<uSD> bs=512 seek=64 conv=sync
> dd if=/usr/local/share/u-boot/rock64-rk3328/u-boot.itb \
>    of=/dev/<uSD> bs=512 seek=16384 conv=sync
> 
> One of the downsides of installing mkimage is the removal of
> PKG_ARCH=*, but we get better support for both rock64 and
> rockpro64 for where rkbin is still needed. I'm not sure how
> well firefly works with the the u-boot TPL layer so it may
> benefit from the ability to build idbloader.img with the
> rkbin TPL layer as well.
> 
> Thoughts?

Dropping PKG_ARCH=* isn't something we should do in my opinion.  For
example arm package snapshots seem to be made every few months and with
U-Boot 2019.10 final planned for Monday US time there wouldn't be a
package available for arm in time for the final release build.

I think for now you should drop the rk3328/mkimage parts and keep the
rockpro64 dtb change.

> 
> PS: My examples include dd with bs=512 with seek's to avoid
> someone from setting a different bs to write faster; and
> conv=sync since this is needed on MacOS and FreeBSD to write
> the partial final blocks. Both of these things tripped me up
> the first time I initially tried to setup my uSD from my Mac.
> 
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/sysutils/u-boot/Makefile,v
> retrieving revision 1.59
> diff -u -p -u -r1.59 Makefile
> --- Makefile  28 Sep 2019 01:40:24 -0000      1.59
> +++ Makefile  5 Oct 2019 16:15:13 -0000
> @@ -7,6 +7,7 @@ FLAVOR?=      arm
>  
>  COMMENT=     U-Boot firmware
>  VERSION=     2019.10-rc4
> +REVISION=    0
>  DISTNAME=    u-boot-${VERSION}
>  PKGNAME=     u-boot-${FLAVOR}-${VERSION:S/-//}
>  FULLPKGNAME= ${PKGNAME}
> @@ -19,7 +20,6 @@ PERMIT_PACKAGE=     Yes
>  
>  MASTER_SITES=        https://ftp.denx.de/pub/u-boot/
>  EXTRACT_SUFX=        .tar.bz2
> -PKG_ARCH=    *
>  
>  BUILD_DEPENDS=       devel/bison \
>               devel/dtc \
> @@ -36,10 +36,12 @@ MAKE_ENV= KBUILD_VERBOSE=1 \
>               PYTHON="${MODPY_BIN}"
>  
>  .if "${FLAVOR}" == "aarch64"
> +WANTLIB+=    c
>  BUILD_DEPENDS+=      devel/arm-none-eabi/gcc-linaro,aarch64 \
>               devel/py-elftools \
>               sysutils/arm-trusted-firmware
>  MAKE_ENV+=   CROSS_COMPILE="aarch64-none-elf-"
> +RK3328_BL31= "${LOCALBASE}/share/arm-trusted-firmware/rk3328-bl31.elf"
>  RK3399_BL31= "${LOCALBASE}/share/arm-trusted-firmware/rk3399-bl31.elf"
>  SUNXI_BL31=  "${LOCALBASE}/share/arm-trusted-firmware/sun50i_a64-bl31.bin"
>  .elif "${FLAVOR}" == "arm"
> @@ -68,9 +70,14 @@ BOARDS=\
>       mvebu_espressobin-88f3720 \
>       mvebu_mcbin-88f8040 \
>       qemu_arm64 \
> +     rock64-rk3328 \
>       rockpro64-rk3399 \
>       rpi_3 \
>       rpi_4
> +MKIMAGE=\
> +     firefly-rk3399 \
> +     rock64-rk3328 \
> +     rockpro64-rk3399
>  .elif "${FLAVOR}" == "arm"
>  OMAP=\
>       omap4_panda \
> @@ -129,6 +136,7 @@ BOARDS=\
>       tinker-rk3288 \
>       turris_omnia \
>       vexpress_ca15_tc2
> +MKIMAGE=
>  .endif
>  
>  FILES=\
> @@ -143,6 +151,7 @@ FILES=\
>       u-boot-with-spl.bin \
>       u-boot.itb \
>       idbloader.img \
> +     spl/u-boot-spl-dtb.bin \
>       spl/sunxi-spl.bin \
>  
>  do-build:
> @@ -151,25 +160,34 @@ do-build:
>           mkdir -p build/${BOARD} && \
>           ${SETENV} ${MAKE_ENV} ${MAKE_PROGRAM} ${MAKE_FLAGS} \
>               O="build/${BOARD}" \
> -             -f ${MAKE_FILE} "${BOARD}"_defconfig && \
> +             -f ${MAKE_FILE} "${BOARD}"_defconfig
> +.if "${BOARD}" == "firefly-rk3399" || "${BOARD}" == "rockpro64-rk3399"
> +     cd ${WRKSRC} && \
> +         ${SETENV} ${MAKE_ENV} BL31=${RK3399_BL31} ${MAKE_PROGRAM} \
> +             ${MAKE_FLAGS} O="build/${BOARD}" \
> +             -f ${MAKE_FILE} ${ALL_TARGET}
> +.elif "${BOARD}" == "rock64-rk3328"
> +     cd ${WRKSRC} && \
> +         ${SETENV} ${MAKE_ENV} BL31=${RK3328_BL31} ${MAKE_PROGRAM} \
> +             ${MAKE_FLAGS} O="build/${BOARD}" \
> +             -f ${MAKE_FILE} ${ALL_TARGET}
> +     cd ${WRKSRC}/build/${BOARD} && \
> +         ${SETENV} ${MAKE_ENV} BL31=${RK3328_BL31} ${MAKE_PROGRAM} \
> +             ${MAKE_FLAGS} O="build/${BOARD}" \
> +             -f ${MAKE_FILE} u-boot.itb && \
> +         rm idbloader.img
> +.else
> +     cd ${WRKSRC} && \
>           ${SETENV} ${MAKE_ENV} ${MAKE_PROGRAM} ${MAKE_FLAGS} \
>               O="build/${BOARD}" \
>               -f ${MAKE_FILE} ${ALL_TARGET}
> +.endif
>  .if "${BOARD}" == "tinker-rk3288"
>       cd ${WRKSRC}/build/${BOARD} && \
>           tools/mkimage -n rk3288 -T rksd -d tpl/u-boot-tpl.bin \
>               idbloader.img && \
>           cat spl/u-boot-spl-dtb.bin >> idbloader.img
>  .endif
> -.if "${BOARD}" == "firefly-rk3399" || "${BOARD}" == "rockpro64-rk3399"
> -     cd ${WRKSRC}/build/${BOARD} && \
> -         ${SETENV} ${MAKE_ENV} BL31=${RK3399_BL31} ${MAKE_PROGRAM} \
> -             ${MAKE_FLAGS} O="build/${BOARD}" \
> -             -f ${MAKE_FILE} u-boot.itb && \
> -         tools/mkimage -n rk3399 -T rksd -d tpl/u-boot-tpl.bin \
> -             idbloader.img && \
> -         cat spl/u-boot-spl-dtb.bin >> idbloader.img
> -.endif
>  .endfor
>  .for BOARD in ${SUNXI64}
>       cd ${WRKSRC} && \
> @@ -194,5 +212,15 @@ do-install:
>       -cd ${WRKSRC}/build/${BOARD} && \
>           cp ${FILES} ${PREFIX}/share/u-boot/${BOARD}/
>  .endfor
> +.if "${MKIMAGE}" != ""
> +     ${INSTALL_DATA_DIR} ${PREFIX}/libexec/u-boot
> +     ${INSTALL_PROGRAM} ${FILESDIR}/mkidbloader-rkbin 
> ${PREFIX}/libexec/u-boot
> +.for BOARD in ${MKIMAGE}
> +     ${INSTALL_DATA_DIR} ${PREFIX}/libexec/u-boot/${BOARD}/
> +     -cd ${WRKSRC}/build/${BOARD}/tools && \
> +         ${INSTALL_PROGRAM} mkimage \
> +         ${PREFIX}/libexec/u-boot/${BOARD}/
> +.endfor
> +.endif
>  
>  .include <bsd.port.mk>
> Index: files/mkidbloader-rkbin
> ===================================================================
> RCS file: files/mkidbloader-rkbin
> diff -N files/mkidbloader-rkbin
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ files/mkidbloader-rkbin   5 Oct 2019 16:15:13 -0000
> @@ -0,0 +1,54 @@
> +#!/bin/sh -e
> +
> +usage_exit() {
> +  echo "Usage: mkidbloader-rkbin <board>"
> +  echo "  <board> can be one of the following:"
> +  echo "    rock64-rk3328"
> +  echo "    rockpro64-rk3399"
> +  echo "    firefly-rk3399"
> +  exit 1
> +}
> +
> +if [[ $# -ne 1 ]]; then
> +  echo "ERROR: missing board argument"
> +  usage_exit
> +fi
> +
> +BOARD=$1
> +case "$BOARD" in
> +  rock64-rk3328)
> +    SOC=rk3328
> +    RKBIN_TPL=rk3328_ddr_333MHz_v1.16.bin
> +    RKBIN_TPL_SHA256=mHGeBGzI8zyjHOk6Vp3D1O4WSY33b54fPRjC9NcXrHA=
> +    GITHUB_COMMIT=016471bcfb1a0b1e1269895cb7b6f534813edfdc
> +    ;;
> +  rockpro64-rk3399)
> +    SOC=rk3399
> +    RKBIN_TPL=rk3399_ddr_800MHz_v1.23.bin
> +    RKBIN_TPL_SHA256=eeufH1rAOUxkjQ321Ta+G+PKb+Le3zOr6INDzjnZHyE=
> +    GITHUB_COMMIT=016471bcfb1a0b1e1269895cb7b6f534813edfdc
> +    ;;
> +  firefly-rk3399)
> +    SOC=rk3399
> +    RKBIN_TPL=rk3399_ddr_666MHz_v1.23.bin
> +    RKBIN_TPL_SHA256=cNb8+lhNyTFTI+WXfs6isrb61u611VbrDHU/MHhBJqY=
> +    GITHUB_COMMIT=016471bcfb1a0b1e1269895cb7b6f534813edfdc
> +    ;;
> +  *)
> +    echo "ERROR: unrecognized board $1"
> +    usage_exit
> +    ;;
> +esac
> +
> +ftp 
> https://github.com/rockchip-linux/rkbin/raw/${GITHUB_COMMIT}/bin/rk33/${RKBIN_TPL}
> +if [ "`/bin/sha256 -qb ${RKBIN_TPL}`" != "${RKBIN_TPL_SHA256}" ]; then
> +  echo "ERROR: failed sha256 check on ${RKBIN_TPL}"
> +  exit 1;
> +fi
> +/usr/local/libexec/u-boot/${BOARD}/mkimage -n ${SOC} -T rksd -d ${RKBIN_TPL} 
> idbloader.img.tmp
> +cat /usr/local/share/u-boot/${BOARD}/u-boot-spl-dtb.bin >> idbloader.img.tmp
> +mv idbloader.img.tmp idbloader.img
> +
> +echo "idbloader.img created for ${BOARD}"
> +
> +exit 0
> Index: patches/patch-arch_arm_dts_rk3328-rock64_dts
> ===================================================================
> RCS file: patches/patch-arch_arm_dts_rk3328-rock64_dts
> diff -N patches/patch-arch_arm_dts_rk3328-rock64_dts
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-arch_arm_dts_rk3328-rock64_dts      5 Oct 2019 16:15:13 
> -0000
> @@ -0,0 +1,115 @@
> +$OpenBSD$
> +
> +Index: arch/arm/dts/rk3328-rock64.dts
> +--- arch/arm/dts/rk3328-rock64.dts.orig
> ++++ arch/arm/dts/rk3328-rock64.dts
> +@@ -11,7 +11,7 @@
> +     compatible = "pine64,rock64", "rockchip,rk3328";
> + 
> +     chosen {
> +-            stdout-path = "serial2:1500000n8";
> ++            stdout-path = "serial2:115200n8";
> +     };
> + 
> +     gmac_clkin: external-gmac-clock {
> +@@ -51,6 +51,23 @@
> +             regulator-min-microvolt = <5000000>;
> +             regulator-max-microvolt = <5000000>;
> +     };
> ++
> ++    sound {
> ++            compatible = "audio-graph-card";
> ++            label = "rockchip,rk3328";
> ++            dais = <&spdif_p0>;
> ++    };
> ++
> ++    spdif-dit {
> ++            compatible = "linux,spdif-dit";
> ++            #sound-dai-cells = <0>;
> ++
> ++            port {
> ++                    dit_p0_0: endpoint {
> ++                            remote-endpoint = <&spdif_p0_0>;
> ++                    };
> ++            };
> ++    };
> + };
> + 
> + &cpu0 {
> +@@ -98,6 +115,14 @@
> +     status = "okay";
> + };
> + 
> ++&hdmi {
> ++    status = "okay";
> ++};
> ++
> ++&hdmiphy {
> ++    status = "okay";
> ++};
> ++
> + &i2c1 {
> +     status = "okay";
> + 
> +@@ -245,6 +270,18 @@
> +     status = "okay";
> + };
> + 
> ++&spdif {
> ++    pinctrl-0 = <&spdifm0_tx>;
> ++    status = "okay";
> ++    #sound-dai-cells = <0>;
> ++
> ++    spdif_p0: port {
> ++            spdif_p0_0: endpoint {
> ++                    remote-endpoint = <&dit_p0_0>;
> ++            };
> ++    };
> ++};
> ++
> + &spi0 {
> +     status = "okay";
> + 
> +@@ -257,10 +294,28 @@
> +     };
> + };
> + 
> ++&tsadc {
> ++    rockchip,hw-tshut-mode = <0>;
> ++    rockchip,hw-tshut-polarity = <0>;
> ++    status = "okay";
> ++};
> ++
> + &uart2 {
> +     status = "okay";
> + };
> + 
> ++&u2phy {
> ++    status = "okay";
> ++
> ++    u2phy_host: host-port {
> ++            status = "okay";
> ++    };
> ++
> ++    u2phy_otg: otg-port {
> ++            status = "okay";
> ++    };
> ++};
> ++
> + &usb20_otg {
> +     dr_mode = "host";
> +     status = "okay";
> +@@ -271,5 +326,13 @@
> + };
> + 
> + &usb_host0_ohci {
> ++    status = "okay";
> ++};
> ++
> ++&vop {
> ++    status = "okay";
> ++};
> ++
> ++&vop_mmu {
> +     status = "okay";
> + };
> Index: patches/patch-arch_arm_dts_rk3328_dtsi
> ===================================================================
> RCS file: patches/patch-arch_arm_dts_rk3328_dtsi
> diff -N patches/patch-arch_arm_dts_rk3328_dtsi
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-arch_arm_dts_rk3328_dtsi    5 Oct 2019 16:15:13 -0000
> @@ -0,0 +1,2008 @@
> +$OpenBSD$
> +
> +Index: arch/arm/dts/rk3328.dtsi
> +--- arch/arm/dts/rk3328.dtsi.orig
> ++++ arch/arm/dts/rk3328.dtsi
> +@@ -1,6 +1,6 @@
> +-// SPDX-License-Identifier: GPL-2.0+
> ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> + /*
> +- * (C) Copyright 2016 Rockchip Electronics Co., Ltd
> ++ * Copyright (c) 2017 Fuzhou Rockchip Electronics Co., Ltd
> +  */
> + 
> + #include <dt-bindings/clock/rk3328-cru.h>
> +@@ -26,7 +26,7 @@
> +             i2c3 = &i2c3;
> +             mmc0 = &emmc;
> +             mmc1 = &sdmmc;
> +-            mmc2 = &sdmmc_ext;
> ++            mmc2 = &usb_host0_ehci;
> +     };
> + 
> +     cpus {
> +@@ -37,67 +37,101 @@
> +                     device_type = "cpu";
> +                     compatible = "arm,cortex-a53", "arm,armv8";
> +                     reg = <0x0 0x0>;
> ++                    clocks = <&cru ARMCLK>;
> +                     enable-method = "psci";
> +-//                  clocks = <&cru ARMCLK>;
> ++                    next-level-cache = <&l2>;
> +                     operating-points-v2 = <&cpu0_opp_table>;
> +             };
> ++
> +             cpu1: cpu@1 {
> +                     device_type = "cpu";
> +                     compatible = "arm,cortex-a53", "arm,armv8";
> +                     reg = <0x0 0x1>;
> ++                    clocks = <&cru ARMCLK>;
> +                     enable-method = "psci";
> ++                    next-level-cache = <&l2>;
> ++                    operating-points-v2 = <&cpu0_opp_table>;
> +             };
> ++
> +             cpu2: cpu@2 {
> +                     device_type = "cpu";
> +                     compatible = "arm,cortex-a53", "arm,armv8";
> +                     reg = <0x0 0x2>;
> ++                    clocks = <&cru ARMCLK>;
> +                     enable-method = "psci";
> ++                    next-level-cache = <&l2>;
> ++                    operating-points-v2 = <&cpu0_opp_table>;
> +             };
> ++
> +             cpu3: cpu@3 {
> +                     device_type = "cpu";
> +                     compatible = "arm,cortex-a53", "arm,armv8";
> +                     reg = <0x0 0x3>;
> ++                    clocks = <&cru ARMCLK>;
> +                     enable-method = "psci";
> ++                    next-level-cache = <&l2>;
> ++                    operating-points-v2 = <&cpu0_opp_table>;
> +             };
> ++
> ++            l2: l2-cache0 {
> ++                    compatible = "cache";
> ++            };
> +     };
> + 
> +     cpu0_opp_table: opp_table0 {
> +             compatible = "operating-points-v2";
> +             opp-shared;
> + 
> +-            opp@408000000 {
> ++            opp-408000000 {
> +                     opp-hz = /bits/ 64 <408000000>;
> +                     opp-microvolt = <950000>;
> +                     clock-latency-ns = <40000>;
> +                     opp-suspend;
> +             };
> +-            opp@600000000 {
> ++            opp-600000000 {
> +                     opp-hz = /bits/ 64 <600000000>;
> +                     opp-microvolt = <950000>;
> +                     clock-latency-ns = <40000>;
> +             };
> +-            opp@816000000 {
> ++            opp-816000000 {
> +                     opp-hz = /bits/ 64 <816000000>;
> +                     opp-microvolt = <1000000>;
> +                     clock-latency-ns = <40000>;
> +             };
> +-            opp@1008000000 {
> ++            opp-1008000000 {
> +                     opp-hz = /bits/ 64 <1008000000>;
> +                     opp-microvolt = <1100000>;
> +                     clock-latency-ns = <40000>;
> +             };
> +-            opp@1200000000 {
> ++            opp-1200000000 {
> +                     opp-hz = /bits/ 64 <1200000000>;
> +                     opp-microvolt = <1225000>;
> +                     clock-latency-ns = <40000>;
> +             };
> +-            opp@1296000000 {
> ++            opp-1296000000 {
> +                     opp-hz = /bits/ 64 <1296000000>;
> +                     opp-microvolt = <1300000>;
> +                     clock-latency-ns = <40000>;
> +             };
> +     };
> + 
> ++    amba {
> ++            compatible = "simple-bus";
> ++            #address-cells = <2>;
> ++            #size-cells = <2>;
> ++            ranges;
> ++
> ++            dmac: dmac@ff1f0000 {
> ++                    compatible = "arm,pl330", "arm,primecell";
> ++                    reg = <0x0 0xff1f0000 0x0 0x4000>;
> ++                    interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
> ++                                 <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
> ++                    clocks = <&cru ACLK_DMAC>;
> ++                    clock-names = "apb_pclk";
> ++                    #dma-cells = <1>;
> ++            };
> ++    };
> ++
> +     arm-pmu {
> +             compatible = "arm,cortex-a53-pmu";
> +             interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>,
> +@@ -107,8 +141,13 @@
> +             interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
> +     };
> + 
> ++    display_subsystem: display-subsystem {
> ++            compatible = "rockchip,display-subsystem";
> ++            ports = <&vop_out>;
> ++    };
> ++
> +     psci {
> +-            compatible = "arm,psci-1.0";
> ++            compatible = "arm,psci-1.0", "arm,psci-0.2";
> +             method = "smc";
> +     };
> + 
> +@@ -134,7 +173,6 @@
> +             clocks = <&cru SCLK_I2S0>, <&cru HCLK_I2S0_8CH>;
> +             clock-names = "i2s_clk", "i2s_hclk";
> +             dmas = <&dmac 11>, <&dmac 12>;
> +-            #dma-cells = <2>;
> +             dma-names = "tx", "rx";
> +             status = "disabled";
> +     };
> +@@ -146,7 +184,6 @@
> +             clocks = <&cru SCLK_I2S1>, <&cru HCLK_I2S1_8CH>;
> +             clock-names = "i2s_clk", "i2s_hclk";
> +             dmas = <&dmac 14>, <&dmac 15>;
> +-            #dma-cells = <2>;
> +             dma-names = "tx", "rx";
> +             status = "disabled";
> +     };
> +@@ -158,16 +195,7 @@
> +             clocks = <&cru SCLK_I2S2>, <&cru HCLK_I2S2_2CH>;
> +             clock-names = "i2s_clk", "i2s_hclk";
> +             dmas = <&dmac 0>, <&dmac 1>;
> +-            #dma-cells = <2>;
> +             dma-names = "tx", "rx";
> +-            pinctrl-names = "default", "sleep";
> +-            pinctrl-0 = <&i2s2m0_mclk
> +-                         &i2s2m0_sclk
> +-                         &i2s2m0_lrcktx
> +-                         &i2s2m0_lrckrx
> +-                         &i2s2m0_sdo
> +-                         &i2s2m0_sdi>;
> +-            pinctrl-1 = <&i2s2m0_sleep>;
> +             status = "disabled";
> +     };
> + 
> +@@ -178,21 +206,49 @@
> +             clocks = <&cru SCLK_SPDIF>, <&cru HCLK_SPDIF_8CH>;
> +             clock-names = "mclk", "hclk";
> +             dmas = <&dmac 10>;
> +-            #dma-cells = <1>;
> +             dma-names = "tx";
> +             pinctrl-names = "default";
> +             pinctrl-0 = <&spdifm2_tx>;
> +             status = "disabled";
> +     };
> + 
> ++    pdm: pdm@ff040000 {
> ++            compatible = "rockchip,pdm";
> ++            reg = <0x0 0xff040000 0x0 0x1000>;
> ++            clocks = <&cru SCLK_PDM>, <&cru HCLK_PDM>;
> ++            clock-names = "pdm_clk", "pdm_hclk";
> ++            dmas = <&dmac 16>;
> ++            dma-names = "rx";
> ++            pinctrl-names = "default", "sleep";
> ++            pinctrl-0 = <&pdmm0_clk
> ++                         &pdmm0_sdi0
> ++                         &pdmm0_sdi1
> ++                         &pdmm0_sdi2
> ++                         &pdmm0_sdi3>;
> ++            pinctrl-1 = <&pdmm0_clk_sleep
> ++                         &pdmm0_sdi0_sleep
> ++                         &pdmm0_sdi1_sleep
> ++                         &pdmm0_sdi2_sleep
> ++                         &pdmm0_sdi3_sleep>;
> ++            status = "disabled";
> ++    };
> ++
> +     grf: syscon@ff100000 {
> +             compatible = "rockchip,rk3328-grf", "syscon", "simple-mfd";
> +             reg = <0x0 0xff100000 0x0 0x1000>;
> ++            #address-cells = <1>;
> ++            #size-cells = <1>;
> + 
> +             io_domains: io-domains {
> +                     compatible = "rockchip,rk3328-io-voltage-domain";
> +                     status = "disabled";
> +             };
> ++
> ++            grf_gpio: grf-gpio {
> ++                    compatible = "rockchip,rk3328-grf-gpio";
> ++                    gpio-controller;
> ++                    #gpio-cells = <2>;
> ++            };
> +     };
> + 
> +     uart0: serial@ff110000 {
> +@@ -201,12 +257,12 @@
> +             interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
> +             clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;
> +             clock-names = "baudclk", "apb_pclk";
> +-            reg-shift = <2>;
> +-            reg-io-width = <4>;
> +             dmas = <&dmac 2>, <&dmac 3>;
> +-            #dma-cells = <2>;
> ++            dma-names = "tx", "rx";
> +             pinctrl-names = "default";
> +             pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>;
> ++            reg-io-width = <4>;
> ++            reg-shift = <2>;
> +             status = "disabled";
> +     };
> + 
> +@@ -215,13 +271,13 @@
> +             reg = <0x0 0xff120000 0x0 0x100>;
> +             interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
> +             clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
> +-            clock-names = "sclk_uart", "pclk_uart";
> +-            reg-shift = <2>;
> +-            reg-io-width = <4>;
> ++            clock-names = "baudclk", "apb_pclk";
> +             dmas = <&dmac 4>, <&dmac 5>;
> +-            #dma-cells = <2>;
> ++            dma-names = "tx", "rx";
> +             pinctrl-names = "default";
> +             pinctrl-0 = <&uart1_xfer &uart1_cts &uart1_rts>;
> ++            reg-io-width = <4>;
> ++            reg-shift = <2>;
> +             status = "disabled";
> +     };
> + 
> +@@ -231,22 +287,17 @@
> +             interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
> +             clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
> +             clock-names = "baudclk", "apb_pclk";
> +-            reg-shift = <2>;
> +-            reg-io-width = <4>;
> +             dmas = <&dmac 6>, <&dmac 7>;
> +-            #dma-cells = <2>;
> ++            dma-names = "tx", "rx";
> +             pinctrl-names = "default";
> +             pinctrl-0 = <&uart2m1_xfer>;
> ++            reg-io-width = <4>;
> ++            reg-shift = <2>;
> +             status = "disabled";
> +     };
> + 
> +-    pmu: power-management@ff140000 {
> +-            compatible = "rockchip,rk3328-pmu", "syscon", "simple-mfd";
> +-            reg = <0x0 0xff140000 0x0 0x1000>;
> +-    };
> +-
> +     i2c0: i2c@ff150000 {
> +-            compatible = "rockchip,rk3328-i2c";
> ++            compatible = "rockchip,rk3328-i2c", "rockchip,rk3399-i2c";
> +             reg = <0x0 0xff150000 0x0 0x1000>;
> +             interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
> +             #address-cells = <1>;
> +@@ -259,7 +310,7 @@
> +     };
> + 
> +     i2c1: i2c@ff160000 {
> +-            compatible = "rockchip,rk3328-i2c";
> ++            compatible = "rockchip,rk3328-i2c", "rockchip,rk3399-i2c";
> +             reg = <0x0 0xff160000 0x0 0x1000>;
> +             interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
> +             #address-cells = <1>;
> +@@ -272,7 +323,7 @@
> +     };
> + 
> +     i2c2: i2c@ff170000 {
> +-            compatible = "rockchip,rk3328-i2c";
> ++            compatible = "rockchip,rk3328-i2c", "rockchip,rk3399-i2c";
> +             reg = <0x0 0xff170000 0x0 0x1000>;
> +             interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
> +             #address-cells = <1>;
> +@@ -285,7 +336,7 @@
> +     };
> + 
> +     i2c3: i2c@ff180000 {
> +-            compatible = "rockchip,rk3328-i2c";
> ++            compatible = "rockchip,rk3328-i2c", "rockchip,rk3399-i2c";
> +             reg = <0x0 0xff180000 0x0 0x1000>;
> +             interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
> +             #address-cells = <1>;
> +@@ -306,7 +357,6 @@
> +             clocks = <&cru SCLK_SPI>, <&cru PCLK_SPI>;
> +             clock-names = "spiclk", "apb_pclk";
> +             dmas = <&dmac 8>, <&dmac 9>;
> +-            #dma-cells = <2>;
> +             dma-names = "tx", "rx";
> +             pinctrl-names = "default";
> +             pinctrl-0 = <&spi0m2_clk &spi0m2_tx &spi0m2_rx &spi0m2_cs0>;
> +@@ -317,28 +367,100 @@
> +             compatible = "snps,dw-wdt";
> +             reg = <0x0 0xff1a0000 0x0 0x100>;
> +             interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
> ++    };
> ++
> ++    pwm0: pwm@ff1b0000 {
> ++            compatible = "rockchip,rk3328-pwm";
> ++            reg = <0x0 0xff1b0000 0x0 0x10>;
> ++            clocks = <&cru SCLK_PWM>, <&cru PCLK_PWM>;
> ++            clock-names = "pwm", "pclk";
> ++            pinctrl-names = "default";
> ++            pinctrl-0 = <&pwm0_pin>;
> ++            #pwm-cells = <3>;
> +             status = "disabled";
> +     };
> + 
> +-    amba {
> +-            compatible = "simple-bus";
> +-            #address-cells = <2>;
> +-            #size-cells = <2>;
> +-            ranges;
> ++    pwm1: pwm@ff1b0010 {
> ++            compatible = "rockchip,rk3328-pwm";
> ++            reg = <0x0 0xff1b0010 0x0 0x10>;
> ++            clocks = <&cru SCLK_PWM>, <&cru PCLK_PWM>;
> ++            clock-names = "pwm", "pclk";
> ++            pinctrl-names = "default";
> ++            pinctrl-0 = <&pwm1_pin>;
> ++            #pwm-cells = <3>;
> ++            status = "disabled";
> ++    };
> + 
> +-            dmac: dmac@ff1f0000 {
> +-                    compatible = "arm,pl330", "arm,primecell";
> +-                    reg = <0x0 0xff1f0000 0x0 0x4000>;
> +-                    interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
> +-                                 <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
> +-                    clocks = <&cru ACLK_DMAC>;
> +-                    clock-names = "apb_pclk";
> +-                    #dma-cells = <1>;
> ++    pwm2: pwm@ff1b0020 {
> ++            compatible = "rockchip,rk3328-pwm";
> ++            reg = <0x0 0xff1b0020 0x0 0x10>;
> ++            clocks = <&cru SCLK_PWM>, <&cru PCLK_PWM>;
> ++            clock-names = "pwm", "pclk";
> ++            pinctrl-names = "default";
> ++            pinctrl-0 = <&pwm2_pin>;
> ++            #pwm-cells = <3>;
> ++            status = "disabled";
> ++    };
> ++
> ++    pwm3: pwm@ff1b0030 {
> ++            compatible = "rockchip,rk3328-pwm";
> ++            reg = <0x0 0xff1b0030 0x0 0x10>;
> ++            interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
> ++            clocks = <&cru SCLK_PWM>, <&cru PCLK_PWM>;
> ++            clock-names = "pwm", "pclk";
> ++            pinctrl-names = "default";
> ++            pinctrl-0 = <&pwmir_pin>;
> ++            #pwm-cells = <3>;
> ++            status = "disabled";
> ++    };
> ++
> ++    tsadc: tsadc@ff250000 {
> ++            compatible = "rockchip,rk3328-tsadc";
> ++            reg = <0x0 0xff250000 0x0 0x100>;
> ++            interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
> ++            assigned-clocks = <&cru SCLK_TSADC>;
> ++            assigned-clock-rates = <50000>;
> ++            clocks = <&cru SCLK_TSADC>, <&cru PCLK_TSADC>;
> ++            clock-names = "tsadc", "apb_pclk";
> ++            pinctrl-names = "init", "default", "sleep";
> ++            pinctrl-0 = <&otp_gpio>;
> ++            pinctrl-1 = <&otp_out>;
> ++            pinctrl-2 = <&otp_gpio>;
> ++            resets = <&cru SRST_TSADC>;
> ++            reset-names = "tsadc-apb";
> ++            rockchip,grf = <&grf>;
> ++            rockchip,hw-tshut-temp = <100000>;
> ++            #thermal-sensor-cells = <1>;
> ++            status = "disabled";
> ++    };
> ++
> ++    efuse: efuse@ff260000 {
> ++            compatible = "rockchip,rk3328-efuse";
> ++            reg = <0x0 0xff260000 0x0 0x50>;
> ++            #address-cells = <1>;
> ++            #size-cells = <1>;
> ++            clocks = <&cru SCLK_EFUSE>;
> ++            clock-names = "pclk_efuse";
> ++            rockchip,efuse-size = <0x20>;
> ++
> ++            /* Data cells */
> ++            efuse_id: id@7 {
> ++                    reg = <0x07 0x10>;
> +             };
> ++            cpu_leakage: cpu-leakage@17 {
> ++                    reg = <0x17 0x1>;
> ++            };
> ++            logic_leakage: logic-leakage@19 {
> ++                    reg = <0x19 0x1>;
> ++            };
> ++            efuse_cpu_version: cpu-version@1a {
> ++                    reg = <0x1a 0x1>;
> ++                    bits = <3 3>;
> ++            };
> +     };
> + 
> +-    saradc: saradc@ff280000 {
> +-            compatible = "rockchip,rk3328-saradc", "rockchip,saradc";
> ++    saradc: adc@ff280000 {
> ++            compatible = "rockchip,rk3328-saradc", "rockchip,rk3399-saradc";
> +             reg = <0x0 0xff280000 0x0 0x100>;
> +             interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
> +             #io-channel-cells = <1>;
> +@@ -349,6 +471,145 @@
> +             status = "disabled";
> +     };
> + 
> ++    gpu: gpu@ff300000 {
> ++            compatible = "rockchip,rk3328-mali", "arm,mali-450";
> ++            reg = <0x0 0xff300000 0x0 0x40000>;
> ++            interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>,
> ++                         <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>,
> ++                         <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>,
> ++                         <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>,
> ++                         <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>,
> ++                         <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>,
> ++                         <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
> ++            interrupt-names = "gp",
> ++                              "gpmmu",
> ++                              "pp",
> ++                              "pp0",
> ++                              "ppmmu0",
> ++                              "pp1",
> ++                              "ppmmu1";
> ++            clocks = <&cru ACLK_GPU>, <&cru ACLK_GPU>;
> ++            clock-names = "bus", "core";
> ++            resets = <&cru SRST_GPU_A>;
> ++    };
> ++
> ++    h265e_mmu: iommu@ff330200 {
> ++            compatible = "rockchip,iommu";
> ++            reg = <0x0 0xff330200 0 0x100>;
> ++            interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
> ++            interrupt-names = "h265e_mmu";
> ++            clocks = <&cru ACLK_H265>, <&cru PCLK_H265>;
> ++            clock-names = "aclk", "iface";
> ++            #iommu-cells = <0>;
> ++            status = "disabled";
> ++    };
> ++
> ++    vepu_mmu: iommu@ff340800 {
> ++            compatible = "rockchip,iommu";
> ++            reg = <0x0 0xff340800 0x0 0x40>;
> ++            interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
> ++            interrupt-names = "vepu_mmu";
> ++            clocks = <&cru ACLK_VPU>, <&cru HCLK_VPU>;
> ++            clock-names = "aclk", "iface";
> ++            #iommu-cells = <0>;
> ++            status = "disabled";
> ++    };
> ++
> ++    vpu_mmu: iommu@ff350800 {
> ++            compatible = "rockchip,iommu";
> ++            reg = <0x0 0xff350800 0x0 0x40>;
> ++            interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
> ++            interrupt-names = "vpu_mmu";
> ++            clocks = <&cru ACLK_VPU>, <&cru HCLK_VPU>;
> ++            clock-names = "aclk", "iface";
> ++            #iommu-cells = <0>;
> ++            status = "disabled";
> ++    };
> ++
> ++    rkvdec_mmu: iommu@ff360480 {
> ++            compatible = "rockchip,iommu";
> ++            reg = <0x0 0xff360480 0x0 0x40>, <0x0 0xff3604c0 0x0 0x40>;
> ++            interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
> ++            interrupt-names = "rkvdec_mmu";
> ++            clocks = <&cru ACLK_RKVDEC>, <&cru HCLK_RKVDEC>;
> ++            clock-names = "aclk", "iface";
> ++            #iommu-cells = <0>;
> ++            status = "disabled";
> ++    };
> ++
> ++    vop: vop@ff370000 {
> ++            compatible = "rockchip,rk3328-vop";
> ++            reg = <0x0 0xff370000 0x0 0x3efc>;
> ++            interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
> ++            clocks = <&cru ACLK_VOP>, <&cru DCLK_LCDC>, <&cru HCLK_VOP>;
> ++            clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
> ++            resets = <&cru SRST_VOP_A>, <&cru SRST_VOP_H>, <&cru 
> SRST_VOP_D>;
> ++            reset-names = "axi", "ahb", "dclk";
> ++            iommus = <&vop_mmu>;
> ++            status = "disabled";
> ++
> ++            vop_out: port {
> ++                    #address-cells = <1>;
> ++                    #size-cells = <0>;
> ++
> ++                    vop_out_hdmi: endpoint@0 {
> ++                            reg = <0>;
> ++                            remote-endpoint = <&hdmi_in_vop>;
> ++                    };
> ++            };
> ++    };
> ++
> ++    vop_mmu: iommu@ff373f00 {
> ++            compatible = "rockchip,iommu";
> ++            reg = <0x0 0xff373f00 0x0 0x100>;
> ++            interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
> ++            interrupt-names = "vop_mmu";
> ++            clocks = <&cru ACLK_VOP>, <&cru HCLK_VOP>;
> ++            clock-names = "aclk", "iface";
> ++            #iommu-cells = <0>;
> ++            status = "disabled";
> ++    };
> ++
> ++    hdmi: hdmi@ff3c0000 {
> ++            compatible = "rockchip,rk3328-dw-hdmi";
> ++            reg = <0x0 0xff3c0000 0x0 0x20000>;
> ++            reg-io-width = <4>;
> ++            interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>,
> ++                         <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
> ++            clocks = <&cru PCLK_HDMI>,
> ++                     <&cru SCLK_HDMI_SFC>;
> ++            clock-names = "iahb",
> ++                          "isfr";
> ++            phys = <&hdmiphy>;
> ++            phy-names = "hdmi";
> ++            pinctrl-names = "default";
> ++            pinctrl-0 = <&hdmi_cec &hdmii2c_xfer &hdmi_hpd>;
> ++            rockchip,grf = <&grf>;
> ++            status = "disabled";
> ++
> ++            ports {
> ++                    hdmi_in: port {
> ++                            hdmi_in_vop: endpoint {
> ++                                    remote-endpoint = <&vop_out_hdmi>;
> ++                            };
> ++                    };
> ++            };
> ++    };
> ++
> ++    hdmiphy: phy@ff430000 {
> ++            compatible = "rockchip,rk3328-hdmi-phy";
> ++            reg = <0x0 0xff430000 0x0 0x10000>;
> ++            interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
> ++            clocks = <&cru PCLK_HDMIPHY>, <&xin24m>, <&cru DCLK_HDMIPHY>;
> ++            clock-names = "sysclk", "refoclk", "refpclk";
> ++            clock-output-names = "hdmi_phy";
> ++            #clock-cells = <0>;
> ++            nvmem-cells = <&efuse_cpu_version>;
> ++            nvmem-cell-names = "cpu-version";
> ++            #phy-cells = <0>;
> ++            status = "disabled";
> ++    };
> ++
> +     cru: clock-controller@ff440000 {
> +             compatible = "rockchip,rk3328-cru", "rockchip,cru", "syscon";
> +             reg = <0x0 0xff440000 0x0 0x1000>;
> +@@ -356,6 +617,12 @@
> +             #clock-cells = <1>;
> +             #reset-cells = <1>;
> +             assigned-clocks =
> ++                    /*
> ++                     * CPLL should run at 1200, but that is to high for
> ++                     * the initial dividers of most of its children.
> ++                     * We need set cpll child clk div first,
> ++                     * and then set the cpll frequency.
> ++                     */
> +                     <&cru DCLK_LCDC>, <&cru SCLK_PDM>,
> +                     <&cru SCLK_RTC32K>, <&cru SCLK_UART0>,
> +                     <&cru SCLK_UART1>, <&cru SCLK_UART2>,
> +@@ -371,15 +638,7 @@
> +                     <&cru ACLK_BUS_PRE>, <&cru HCLK_BUS_PRE>,
> +                     <&cru PCLK_BUS_PRE>, <&cru ACLK_PERI_PRE>,
> +                     <&cru HCLK_PERI>, <&cru PCLK_PERI>,
> +-                    <&cru ACLK_VIO_PRE>, <&cru HCLK_VIO_PRE>,
> +-                    <&cru ACLK_RGA_PRE>, <&cru SCLK_RGA>,
> +-                    <&cru ACLK_VOP_PRE>, <&cru ACLK_RKVDEC_PRE>,
> +-                    <&cru ACLK_RKVENC>, <&cru ACLK_VPU_PRE>,
> +-                    <&cru SCLK_VDEC_CABAC>, <&cru SCLK_VDEC_CORE>,
> +-                    <&cru SCLK_VENC_CORE>, <&cru SCLK_VENC_DSP>,
> +-                    <&cru SCLK_EFUSE>, <&cru PCLK_DDR>,
> +-                    <&cru ACLK_GMAC>, <&cru PCLK_GMAC>,
> +-                    <&cru SCLK_RTC32K>, <&cru SCLK_USB3OTG_SUSPEND>;
> ++                    <&cru SCLK_RTC32K>;
> +             assigned-clock-parents =
> +                     <&cru HDMIPHY>, <&cru PLL_APLL>,
> +                     <&cru PLL_GPLL>, <&xin24m>,
> +@@ -400,55 +659,82 @@
> +                     <150000000>, <75000000>,
> +                     <75000000>, <150000000>,
> +                     <75000000>, <75000000>,
> +-                    <300000000>, <100000000>,
> +-                    <300000000>, <200000000>,
> +-                    <400000000>, <500000000>,
> +-                    <200000000>, <300000000>,
> +-                    <300000000>, <250000000>,
> +-                    <200000000>, <100000000>,
> +-                    <24000000>, <100000000>,
> +-                    <150000000>, <50000000>,
> +-                    <32768>, <32768>;
> ++                    <32768>;
> +     };
> + 
> +-    sdmmc: rksdmmc@ff500000 {
> ++    usb2phy_grf: syscon@ff450000 {
> ++            compatible = "rockchip,rk3328-usb2phy-grf", "syscon",
> ++                         "simple-mfd";
> ++            reg = <0x0 0xff450000 0x0 0x10000>;
> ++            #address-cells = <1>;
> ++            #size-cells = <1>;
> ++
> ++            u2phy: usb2-phy@100 {
> ++                    compatible = "rockchip,rk3328-usb2phy";
> ++                    reg = <0x100 0x10>;
> ++                    clocks = <&xin24m>;
> ++                    clock-names = "phyclk";
> ++                    clock-output-names = "usb480m_phy";
> ++                    #clock-cells = <0>;
> ++                    assigned-clocks = <&cru USB480M>;
> ++                    assigned-clock-parents = <&u2phy>;
> ++                    status = "disabled";
> ++
> ++                    u2phy_otg: otg-port {
> ++                            #phy-cells = <0>;
> ++                            interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>,
> ++                                         <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>,
> ++                                         <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
> ++                            interrupt-names = "otg-bvalid", "otg-id",
> ++                                              "linestate";
> ++                            status = "disabled";
> ++                    };
> ++
> ++                    u2phy_host: host-port {
> ++                            #phy-cells = <0>;
> ++                            interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
> ++                            interrupt-names = "linestate";
> ++                            status = "disabled";
> ++                    };
> ++            };
> ++    };
> ++
> ++    sdmmc: dwmmc@ff500000 {
> +             compatible = "rockchip,rk3328-dw-mshc", 
> "rockchip,rk3288-dw-mshc";
> +             reg = <0x0 0xff500000 0x0 0x4000>;
> +-            max-frequency = <150000000>;
> +-            clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>;
> +-            clock-names = "biu", "ciu";
> +-            fifo-depth = <0x100>;
> +             interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
> ++            clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>,
> ++                     <&cru SCLK_SDMMC_DRV>, <&cru SCLK_SDMMC_SAMPLE>;
> ++            clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
> ++            fifo-depth = <0x100>;
> +             status = "disabled";
> +     };
> + 
> +     sdio: dwmmc@ff510000 {
> +             compatible = "rockchip,rk3328-dw-mshc", 
> "rockchip,rk3288-dw-mshc";
> +             reg = <0x0 0xff510000 0x0 0x4000>;
> +-            max-frequency = <150000000>;
> ++            interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
> +             clocks = <&cru HCLK_SDIO>, <&cru SCLK_SDIO>,
> +                      <&cru SCLK_SDIO_DRV>, <&cru SCLK_SDIO_SAMPLE>;
> +-            clock-names = "biu", "ciu", "ciu_drv", "ciu_sample";
> ++            clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
> +             fifo-depth = <0x100>;
> +-            interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
> +             status = "disabled";
> +     };
> + 
> +-    emmc: rksdmmc@ff520000 {
> ++    emmc: dwmmc@ff520000 {
> +             compatible = "rockchip,rk3328-dw-mshc", 
> "rockchip,rk3288-dw-mshc";
> +             reg = <0x0 0xff520000 0x0 0x4000>;
> +-            max-frequency = <150000000>;
> +-            clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>;
> +-            clock-names = "biu", "ciu";
> +-            fifo-depth = <0x100>;
> +             interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
> ++            clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>,
> ++                     <&cru SCLK_EMMC_DRV>, <&cru SCLK_EMMC_SAMPLE>;
> ++            clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
> ++            fifo-depth = <0x100>;
> +             status = "disabled";
> +     };
> + 
> +     gmac2io: ethernet@ff540000 {
> +             compatible = "rockchip,rk3328-gmac";
> +             reg = <0x0 0xff540000 0x0 0x10000>;
> +-            rockchip,grf = <&grf>;
> +             interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
> +             interrupt-names = "macirq";
> +             clocks = <&cru SCLK_MAC2IO>, <&cru SCLK_MAC2IO_RX>,
> +@@ -461,21 +747,45 @@
> +                           "pclk_mac";
> +             resets = <&cru SRST_GMAC2IO_A>;
> +             reset-names = "stmmaceth";
> ++            rockchip,grf = <&grf>;
> +             status = "disabled";
> +     };
> + 
> +-    usb_host0_ehci: usb@ff5c0000 {
> +-            compatible = "generic-ehci";
> +-            reg = <0x0 0xff5c0000 0x0 0x10000>;
> +-            interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
> ++    gmac2phy: ethernet@ff550000 {
> ++            compatible = "rockchip,rk3328-gmac";
> ++            reg = <0x0 0xff550000 0x0 0x10000>;
> ++            rockchip,grf = <&grf>;
> ++            interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
> ++            interrupt-names = "macirq";
> ++            clocks = <&cru SCLK_MAC2PHY_SRC>, <&cru SCLK_MAC2PHY_RXTX>,
> ++                     <&cru SCLK_MAC2PHY_RXTX>, <&cru SCLK_MAC2PHY_REF>,
> ++                     <&cru ACLK_MAC2PHY>, <&cru PCLK_MAC2PHY>,
> ++                     <&cru SCLK_MAC2PHY_OUT>;
> ++            clock-names = "stmmaceth", "mac_clk_rx",
> ++                          "mac_clk_tx", "clk_mac_ref",
> ++                          "aclk_mac", "pclk_mac",
> ++                          "clk_macphy";
> ++            resets = <&cru SRST_GMAC2PHY_A>, <&cru SRST_MACPHY>;
> ++            reset-names = "stmmaceth", "mac-phy";
> ++            phy-mode = "rmii";
> ++            phy-handle = <&phy>;
> +             status = "disabled";
> +-    };
> + 
> +-    usb_host0_ohci: usb@ff5d0000 {
> +-            compatible = "generic-ohci";
> +-            reg = <0x0 0xff5d0000 0x0 0x10000>;
> +-            interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
> +-            status = "disabled";
> ++            mdio {
> ++                    compatible = "snps,dwmac-mdio";
> ++                    #address-cells = <1>;
> ++                    #size-cells = <0>;
> ++
> ++                    phy: phy@0 {
> ++                            compatible = "ethernet-phy-id1234.d400", 
> "ethernet-phy-ieee802.3-c22";
> ++                            reg = <0>;
> ++                            clocks = <&cru SCLK_MAC2PHY_OUT>;
> ++                            resets = <&cru SRST_MACPHY>;
> ++                            pinctrl-names = "default";
> ++                            pinctrl-0 = <&fephyled_rxm1 &fephyled_linkm1>;
> ++                            phy-is-integrated;
> ++                    };
> ++            };
> +     };
> + 
> +     usb20_otg: usb@ff580000 {
> +@@ -483,23 +793,41 @@
> +                          "snps,dwc2";
> +             reg = <0x0 0xff580000 0x0 0x40000>;
> +             interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
> +-            hnp-srp-disable;
> ++            clocks = <&cru HCLK_OTG>;
> ++            clock-names = "otg";
> +             dr_mode = "otg";
> ++            g-np-tx-fifo-size = <16>;
> ++            g-rx-fifo-size = <280>;
> ++            g-tx-fifo-size = <256 128 128 64 32 16>;
> ++            g-use-dma;
> ++            phys = <&u2phy_otg>;
> ++            phy-names = "usb2-phy";
> +             status = "disabled";
> +     };
> + 
> +-    sdmmc_ext: rksdmmc@ff5f0000 {
> +-            compatible = "rockchip,rk3328-dw-mshc", 
> "rockchip,rk3288-dw-mshc";
> +-            reg = <0x0 0xff5f0000 0x0 0x4000>;
> +-            max-frequency = <150000000>;
> +-            clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>;
> +-            clock-names = "biu", "ciu";
> +-            fifo-depth = <0x100>;
> +-            interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
> ++    usb_host0_ehci: usb@ff5c0000 {
> ++            compatible = "generic-ehci";
> ++            reg = <0x0 0xff5c0000 0x0 0x10000>;
> ++            interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
> ++            clocks = <&cru HCLK_HOST0>, <&u2phy>;
> ++            clock-names = "usbhost", "utmi";
> ++            phys = <&u2phy_host>;
> ++            phy-names = "usb";
> +             status = "disabled";
> +     };
> + 
> +-    gic: interrupt-controller@ffb70000 {
> ++    usb_host0_ohci: usb@ff5d0000 {
> ++            compatible = "generic-ohci";
> ++            reg = <0x0 0xff5d0000 0x0 0x10000>;
> ++            interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
> ++            clocks = <&cru HCLK_HOST0>, <&u2phy>;
> ++            clock-names = "usbhost", "utmi";
> ++            phys = <&u2phy_host>;
> ++            phy-names = "usb";
> ++            status = "disabled";
> ++    };
> ++
> ++    gic: interrupt-controller@ff811000 {
> +             compatible = "arm,gic-400";
> +             #interrupt-cells = <3>;
> +             #address-cells = <0>;
> +@@ -647,812 +975,721 @@
> + 
> +             i2c0 {
> +                     i2c0_xfer: i2c0-xfer {
> +-                            rockchip,pins =
> +-                                    <2 24 RK_FUNC_1 &pcfg_pull_none>,
> +-                                    <2 25 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <2 RK_PD0 1 &pcfg_pull_none>,
> ++                                            <2 RK_PD1 1 &pcfg_pull_none>;
> +                     };
> +             };
> + 
> +             i2c1 {
> +                     i2c1_xfer: i2c1-xfer {
> +-                            rockchip,pins =
> +-                                    <2 4 RK_FUNC_2 &pcfg_pull_none>,
> +-                                    <2 5 RK_FUNC_2 &pcfg_pull_none>;
> ++                            rockchip,pins = <2 RK_PA4 2 &pcfg_pull_none>,
> ++                                            <2 RK_PA5 2 &pcfg_pull_none>;
> +                     };
> +             };
> + 
> +             i2c2 {
> +                     i2c2_xfer: i2c2-xfer {
> +-                            rockchip,pins =
> +-                                    <2 13 RK_FUNC_1 &pcfg_pull_none>,
> +-                                    <2 14 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <2 RK_PB5 1 &pcfg_pull_none>,
> ++                                            <2 RK_PB6 1 &pcfg_pull_none>;
> +                     };
> +             };
> + 
> +             i2c3 {
> +                     i2c3_xfer: i2c3-xfer {
> +-                            rockchip,pins =
> +-                                    <0 5 RK_FUNC_2 &pcfg_pull_none>,
> +-                                    <0 6 RK_FUNC_2 &pcfg_pull_none>;
> ++                            rockchip,pins = <0 RK_PA5 2 &pcfg_pull_none>,
> ++                                            <0 RK_PA6 2 &pcfg_pull_none>;
> +                     };
> +                     i2c3_gpio: i2c3-gpio {
> +                             rockchip,pins =
> +-                                    <0 5 RK_FUNC_GPIO &pcfg_pull_none>,
> +-                                    <0 6 RK_FUNC_GPIO &pcfg_pull_none>;
> ++                                    <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>,
> ++                                    <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
> +                     };
> +             };
> + 
> +             hdmi_i2c {
> +                     hdmii2c_xfer: hdmii2c-xfer {
> ++                            rockchip,pins = <0 RK_PA5 1 &pcfg_pull_none>,
> ++                                            <0 RK_PA6 1 &pcfg_pull_none>;
> ++                    };
> ++            };
> ++
> ++            pdm-0 {
> ++                    pdmm0_clk: pdmm0-clk {
> ++                            rockchip,pins = <2 RK_PC2 2 &pcfg_pull_none>;
> ++                    };
> ++
> ++                    pdmm0_fsync: pdmm0-fsync {
> ++                            rockchip,pins = <2 RK_PC7 2 &pcfg_pull_none>;
> ++                    };
> ++
> ++                    pdmm0_sdi0: pdmm0-sdi0 {
> ++                            rockchip,pins = <2 RK_PC3 2 &pcfg_pull_none>;
> ++                    };
> ++
> ++                    pdmm0_sdi1: pdmm0-sdi1 {
> ++                            rockchip,pins = <2 RK_PC4 2 &pcfg_pull_none>;
> ++                    };
> ++
> ++                    pdmm0_sdi2: pdmm0-sdi2 {
> ++                            rockchip,pins = <2 RK_PC5 2 &pcfg_pull_none>;
> ++                    };
> ++
> ++                    pdmm0_sdi3: pdmm0-sdi3 {
> ++                            rockchip,pins = <2 RK_PC6 2 &pcfg_pull_none>;
> ++                    };
> ++
> ++                    pdmm0_clk_sleep: pdmm0-clk-sleep {
> +                             rockchip,pins =
> +-                                    <0 5 RK_FUNC_1 &pcfg_pull_none>,
> +-                                    <0 6 RK_FUNC_1 &pcfg_pull_none>;
> ++                                    <2 RK_PC2 RK_FUNC_GPIO 
> &pcfg_input_high>;
> +                     };
> ++
> ++                    pdmm0_sdi0_sleep: pdmm0-sdi0-sleep {
> ++                            rockchip,pins =
> ++                                    <2 RK_PC3 RK_FUNC_GPIO 
> &pcfg_input_high>;
> ++                    };
> ++
> ++                    pdmm0_sdi1_sleep: pdmm0-sdi1-sleep {
> ++                            rockchip,pins =
> ++                                    <2 RK_PC4 RK_FUNC_GPIO 
> &pcfg_input_high>;
> ++                    };
> ++
> ++                    pdmm0_sdi2_sleep: pdmm0-sdi2-sleep {
> ++                            rockchip,pins =
> ++                                    <2 RK_PC5 RK_FUNC_GPIO 
> &pcfg_input_high>;
> ++                    };
> ++
> ++                    pdmm0_sdi3_sleep: pdmm0-sdi3-sleep {
> ++                            rockchip,pins =
> ++                                    <2 RK_PC6 RK_FUNC_GPIO 
> &pcfg_input_high>;
> ++                    };
> ++
> ++                    pdmm0_fsync_sleep: pdmm0-fsync-sleep {
> ++                            rockchip,pins =
> ++                                    <2 RK_PC7 RK_FUNC_GPIO 
> &pcfg_input_high>;
> ++                    };
> +             };
> + 
> ++            tsadc {
> ++                    otp_gpio: otp-gpio {
> ++                            rockchip,pins = <2 RK_PB5 RK_FUNC_GPIO 
> &pcfg_pull_none>;
> ++                    };
> ++
> ++                    otp_out: otp-out {
> ++                            rockchip,pins = <2 RK_PB5 1 &pcfg_pull_none>;
> ++                    };
> ++            };
> ++
> +             uart0 {
> +                     uart0_xfer: uart0-xfer {
> +-                            rockchip,pins =
> +-                                    <1 9 RK_FUNC_1 &pcfg_pull_up>,
> +-                                    <1 8 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <1 RK_PB1 1 &pcfg_pull_up>,
> ++                                            <1 RK_PB0 1 &pcfg_pull_none>;
> +                     };
> + 
> +                     uart0_cts: uart0-cts {
> +-                            rockchip,pins =
> +-                                    <1 11 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <1 RK_PB3 1 &pcfg_pull_none>;
> +                     };
> + 
> +                     uart0_rts: uart0-rts {
> +-                            rockchip,pins =
> +-                                    <1 10 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <1 RK_PB2 1 &pcfg_pull_none>;
> +                     };
> + 
> +                     uart0_rts_gpio: uart0-rts-gpio {
> +-                            rockchip,pins =
> +-                                    <1 10 RK_FUNC_GPIO &pcfg_pull_none>;
> ++                            rockchip,pins = <1 RK_PB2 RK_FUNC_GPIO 
> &pcfg_pull_none>;
> +                     };
> +             };
> + 
> +             uart1 {
> +                     uart1_xfer: uart1-xfer {
> +-                            rockchip,pins =
> +-                                    <3 4 RK_FUNC_4 &pcfg_pull_up>,
> +-                                    <3 6 RK_FUNC_4 &pcfg_pull_none>;
> ++                            rockchip,pins = <3 RK_PA4 4 &pcfg_pull_up>,
> ++                                            <3 RK_PA6 4 &pcfg_pull_none>;
> +                     };
> + 
> +                     uart1_cts: uart1-cts {
> +-                            rockchip,pins =
> +-                                    <3 7 RK_FUNC_4 &pcfg_pull_none>;
> ++                            rockchip,pins = <3 RK_PA7 4 &pcfg_pull_none>;
> +                     };
> + 
> +                     uart1_rts: uart1-rts {
> +-                            rockchip,pins =
> +-                                    <3 5 RK_FUNC_4 &pcfg_pull_none>;
> ++                            rockchip,pins = <3 RK_PA5 4 &pcfg_pull_none>;
> +                     };
> + 
> +                     uart1_rts_gpio: uart1-rts-gpio {
> +-                            rockchip,pins =
> +-                                    <3 5 RK_FUNC_GPIO &pcfg_pull_none>;
> ++                            rockchip,pins = <3 RK_PA5 RK_FUNC_GPIO 
> &pcfg_pull_none>;
> +                     };
> +             };
> + 
> +             uart2-0 {
> +                     uart2m0_xfer: uart2m0-xfer {
> +-                            rockchip,pins =
> +-                                    <1 0 RK_FUNC_2 &pcfg_pull_up>,
> +-                                    <1 1 RK_FUNC_2 &pcfg_pull_none>;
> ++                            rockchip,pins = <1 RK_PA0 2 &pcfg_pull_up>,
> ++                                            <1 RK_PA1 2 &pcfg_pull_none>;
> +                     };
> +             };
> + 
> +             uart2-1 {
> +                     uart2m1_xfer: uart2m1-xfer {
> +-                            rockchip,pins =
> +-                                    <2 0 RK_FUNC_1 &pcfg_pull_up>,
> +-                                    <2 1 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <2 RK_PA0 1 &pcfg_pull_up>,
> ++                                            <2 RK_PA1 1 &pcfg_pull_none>;
> +                     };
> +             };
> + 
> +             spi0-0 {
> +                     spi0m0_clk: spi0m0-clk {
> +-                            rockchip,pins =
> +-                                    <2 8 RK_FUNC_1 &pcfg_pull_up>;
> ++                            rockchip,pins = <2 RK_PB0 1 &pcfg_pull_up>;
> +                     };
> + 
> +                     spi0m0_cs0: spi0m0-cs0 {
> +-                            rockchip,pins =
> +-                                    <2 11 RK_FUNC_1 &pcfg_pull_up>;
> ++                            rockchip,pins = <2 RK_PB3 1 &pcfg_pull_up>;
> +                     };
> + 
> +                     spi0m0_tx: spi0m0-tx {
> +-                            rockchip,pins =
> +-                                    <2 9 RK_FUNC_1 &pcfg_pull_up>;
> ++                            rockchip,pins = <2 RK_PB1 1 &pcfg_pull_up>;
> +                     };
> + 
> +                     spi0m0_rx: spi0m0-rx {
> +-                            rockchip,pins =
> +-                                    <2 10 RK_FUNC_1 &pcfg_pull_up>;
> ++                            rockchip,pins = <2 RK_PB2 1 &pcfg_pull_up>;
> +                     };
> + 
> +                     spi0m0_cs1: spi0m0-cs1 {
> +-                            rockchip,pins =
> +-                                    <2 12 RK_FUNC_1 &pcfg_pull_up>;
> ++                            rockchip,pins = <2 RK_PB4 1 &pcfg_pull_up>;
> +                     };
> +             };
> + 
> +             spi0-1 {
> +                     spi0m1_clk: spi0m1-clk {
> +-                            rockchip,pins =
> +-                                    <3 23 RK_FUNC_2 &pcfg_pull_up>;
> ++                            rockchip,pins = <3 RK_PC7 2 &pcfg_pull_up>;
> +                     };
> + 
> +                     spi0m1_cs0: spi0m1-cs0 {
> +-                            rockchip,pins =
> +-                                    <3 26 RK_FUNC_2 &pcfg_pull_up>;
> ++                            rockchip,pins = <3 RK_PD2 2 &pcfg_pull_up>;
> +                     };
> + 
> +                     spi0m1_tx: spi0m1-tx {
> +-                            rockchip,pins =
> +-                                    <3 25 RK_FUNC_2 &pcfg_pull_up>;
> ++                            rockchip,pins = <3 RK_PD1 2 &pcfg_pull_up>;
> +                     };
> + 
> +                     spi0m1_rx: spi0m1-rx {
> +-                            rockchip,pins =
> +-                                    <3 24 RK_FUNC_2 &pcfg_pull_up>;
> ++                            rockchip,pins = <3 RK_PD0 2 &pcfg_pull_up>;
> +                     };
> + 
> +                     spi0m1_cs1: spi0m1-cs1 {
> +-                            rockchip,pins =
> +-                                    <3 27 RK_FUNC_2 &pcfg_pull_up>;
> ++                            rockchip,pins = <3 RK_PD3 2 &pcfg_pull_up>;
> +                     };
> +             };
> + 
> +             spi0-2 {
> +                     spi0m2_clk: spi0m2-clk {
> +-                            rockchip,pins =
> +-                                    <3 0 RK_FUNC_4 &pcfg_pull_up>;
> ++                            rockchip,pins = <3 RK_PA0 4 &pcfg_pull_up>;
> +                     };
> + 
> +                     spi0m2_cs0: spi0m2-cs0 {
> +-                            rockchip,pins =
> +-                                    <3 8 RK_FUNC_3 &pcfg_pull_up>;
> ++                            rockchip,pins = <3 RK_PB0 3 &pcfg_pull_up>;
> +                     };
> + 
> +                     spi0m2_tx: spi0m2-tx {
> +-                            rockchip,pins =
> +-                                    <3 1 RK_FUNC_4 &pcfg_pull_up>;
> ++                            rockchip,pins = <3 RK_PA1 4 &pcfg_pull_up>;
> +                     };
> + 
> +                     spi0m2_rx: spi0m2-rx {
> +-                            rockchip,pins =
> +-                                    <3 2 RK_FUNC_4 &pcfg_pull_up>;
> ++                            rockchip,pins = <3 RK_PA2 4 &pcfg_pull_up>;
> +                     };
> +             };
> + 
> +             i2s1 {
> +                     i2s1_mclk: i2s1-mclk {
> +-                            rockchip,pins =
> +-                                    <2 15 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <2 RK_PB7 1 &pcfg_pull_none>;
> +                     };
> + 
> +                     i2s1_sclk: i2s1-sclk {
> +-                            rockchip,pins =
> +-                                    <2 18 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <2 RK_PC2 1 &pcfg_pull_none>;
> +                     };
> + 
> +                     i2s1_lrckrx: i2s1-lrckrx {
> +-                            rockchip,pins =
> +-                                    <2 16 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <2 RK_PC0 1 &pcfg_pull_none>;
> +                     };
> + 
> +                     i2s1_lrcktx: i2s1-lrcktx {
> +-                            rockchip,pins =
> +-                                    <2 17 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <2 RK_PC1 1 &pcfg_pull_none>;
> +                     };
> + 
> +                     i2s1_sdi: i2s1-sdi {
> +-                            rockchip,pins =
> +-                                    <2 19 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <2 RK_PC3 1 &pcfg_pull_none>;
> +                     };
> + 
> +                     i2s1_sdo: i2s1-sdo {
> +-                            rockchip,pins =
> +-                                    <2 23 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <2 RK_PC7 1 &pcfg_pull_none>;
> +                     };
> + 
> +                     i2s1_sdio1: i2s1-sdio1 {
> +-                            rockchip,pins =
> +-                                    <2 20 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <2 RK_PC4 1 &pcfg_pull_none>;
> +                     };
> + 
> +                     i2s1_sdio2: i2s1-sdio2 {
> +-                            rockchip,pins =
> +-                                    <2 21 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <2 RK_PC5 1 &pcfg_pull_none>;
> +                     };
> + 
> +                     i2s1_sdio3: i2s1-sdio3 {
> +-                            rockchip,pins =
> +-                                    <2 22 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <2 RK_PC6 1 &pcfg_pull_none>;
> +                     };
> + 
> +                     i2s1_sleep: i2s1-sleep {
> +                             rockchip,pins =
> +-                                    <2 15 RK_FUNC_GPIO &pcfg_input_high>,
> +-                                    <2 16 RK_FUNC_GPIO &pcfg_input_high>,
> +-                                    <2 17 RK_FUNC_GPIO &pcfg_input_high>,
> +-                                    <2 18 RK_FUNC_GPIO &pcfg_input_high>,
> +-                                    <2 19 RK_FUNC_GPIO &pcfg_input_high>,
> +-                                    <2 20 RK_FUNC_GPIO &pcfg_input_high>,
> +-                                    <2 21 RK_FUNC_GPIO &pcfg_input_high>,
> +-                                    <2 22 RK_FUNC_GPIO &pcfg_input_high>,
> +-                                    <2 23 RK_FUNC_GPIO &pcfg_input_high>;
> ++                                    <2 RK_PB7 RK_FUNC_GPIO 
> &pcfg_input_high>,
> ++                                    <2 RK_PC0 RK_FUNC_GPIO 
> &pcfg_input_high>,
> ++                                    <2 RK_PC1 RK_FUNC_GPIO 
> &pcfg_input_high>,
> ++                                    <2 RK_PC2 RK_FUNC_GPIO 
> &pcfg_input_high>,
> ++                                    <2 RK_PC3 RK_FUNC_GPIO 
> &pcfg_input_high>,
> ++                                    <2 RK_PC4 RK_FUNC_GPIO 
> &pcfg_input_high>,
> ++                                    <2 RK_PC5 RK_FUNC_GPIO 
> &pcfg_input_high>,
> ++                                    <2 RK_PC6 RK_FUNC_GPIO 
> &pcfg_input_high>,
> ++                                    <2 RK_PC7 RK_FUNC_GPIO 
> &pcfg_input_high>;
> +                     };
> +             };
> + 
> +             i2s2-0 {
> +                     i2s2m0_mclk: i2s2m0-mclk {
> +-                            rockchip,pins =
> +-                                    <1 21 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <1 RK_PC5 1 &pcfg_pull_none>;
> +                     };
> + 
> +                     i2s2m0_sclk: i2s2m0-sclk {
> +-                            rockchip,pins =
> +-                                    <1 22 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <1 RK_PC6 1 &pcfg_pull_none>;
> +                     };
> + 
> +                     i2s2m0_lrckrx: i2s2m0-lrckrx {
> +-                            rockchip,pins =
> +-                                    <1 26 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <1 RK_PD2 1 &pcfg_pull_none>;
> +                     };
> + 
> +                     i2s2m0_lrcktx: i2s2m0-lrcktx {
> +-                            rockchip,pins =
> +-                                    <1 23 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <1 RK_PC7 1 &pcfg_pull_none>;
> +                     };
> + 
> +                     i2s2m0_sdi: i2s2m0-sdi {
> +-                            rockchip,pins =
> +-                                    <1 24 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <1 RK_PD0 1 &pcfg_pull_none>;
> +                     };
> + 
> +                     i2s2m0_sdo: i2s2m0-sdo {
> +-                            rockchip,pins =
> +-                                    <1 25 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <1 RK_PD1 1 &pcfg_pull_none>;
> +                     };
> + 
> +                     i2s2m0_sleep: i2s2m0-sleep {
> +                             rockchip,pins =
> +-                                    <1 21 RK_FUNC_GPIO &pcfg_input_high>,
> +-                                    <1 22 RK_FUNC_GPIO &pcfg_input_high>,
> +-                                    <1 26 RK_FUNC_GPIO &pcfg_input_high>,
> +-                                    <1 23 RK_FUNC_GPIO &pcfg_input_high>,
> +-                                    <1 24 RK_FUNC_GPIO &pcfg_input_high>,
> +-                                    <1 25 RK_FUNC_GPIO &pcfg_input_high>;
> ++                                    <1 RK_PC5 RK_FUNC_GPIO 
> &pcfg_input_high>,
> ++                                    <1 RK_PC6 RK_FUNC_GPIO 
> &pcfg_input_high>,
> ++                                    <1 RK_PD2 RK_FUNC_GPIO 
> &pcfg_input_high>,
> ++                                    <1 RK_PC7 RK_FUNC_GPIO 
> &pcfg_input_high>,
> ++                                    <1 RK_PD0 RK_FUNC_GPIO 
> &pcfg_input_high>,
> ++                                    <1 RK_PD1 RK_FUNC_GPIO 
> &pcfg_input_high>;
> +                     };
> +             };
> + 
> +             i2s2-1 {
> +                     i2s2m1_mclk: i2s2m1-mclk {
> +-                            rockchip,pins =
> +-                                    <1 21 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <1 RK_PC5 1 &pcfg_pull_none>;
> +                     };
> + 
> +                     i2s2m1_sclk: i2s2m1-sclk {
> +-                            rockchip,pins =
> +-                                    <3 0 RK_FUNC_6 &pcfg_pull_none>;
> ++                            rockchip,pins = <3 RK_PA0 6 &pcfg_pull_none>;
> +                     };
> + 
> +                     i2s2m1_lrckrx: i2sm1-lrckrx {
> +-                            rockchip,pins =
> +-                                    <3 8 RK_FUNC_6 &pcfg_pull_none>;
> ++                            rockchip,pins = <3 RK_PB0 6 &pcfg_pull_none>;
> +                     };
> + 
> +                     i2s2m1_lrcktx: i2s2m1-lrcktx {
> +-                            rockchip,pins =
> +-                                    <3 8 RK_FUNC_4 &pcfg_pull_none>;
> ++                            rockchip,pins = <3 RK_PB0 4 &pcfg_pull_none>;
> +                     };
> + 
> +                     i2s2m1_sdi: i2s2m1-sdi {
> +-                            rockchip,pins =
> +-                                    <3 2 RK_FUNC_6 &pcfg_pull_none>;
> ++                            rockchip,pins = <3 RK_PA2 6 &pcfg_pull_none>;
> +                     };
> + 
> +                     i2s2m1_sdo: i2s2m1-sdo {
> +-                            rockchip,pins =
> +-                                    <3 1 RK_FUNC_6 &pcfg_pull_none>;
> ++                            rockchip,pins = <3 RK_PA1 6 &pcfg_pull_none>;
> +                     };
> + 
> +                     i2s2m1_sleep: i2s2m1-sleep {
> +                             rockchip,pins =
> +-                                    <1 21 RK_FUNC_GPIO &pcfg_input_high>,
> +-                                    <3 0 RK_FUNC_GPIO &pcfg_input_high>,
> +-                                    <3 8 RK_FUNC_GPIO &pcfg_input_high>,
> +-                                    <3 2 RK_FUNC_GPIO &pcfg_input_high>,
> +-                                    <3 1 RK_FUNC_GPIO &pcfg_input_high>;
> ++                                    <1 RK_PC5 RK_FUNC_GPIO 
> &pcfg_input_high>,
> ++                                    <3 RK_PA0 RK_FUNC_GPIO 
> &pcfg_input_high>,
> ++                                    <3 RK_PB0 RK_FUNC_GPIO 
> &pcfg_input_high>,
> ++                                    <3 RK_PA2 RK_FUNC_GPIO 
> &pcfg_input_high>,
> ++                                    <3 RK_PA1 RK_FUNC_GPIO 
> &pcfg_input_high>;
> +                     };
> +             };
> + 
> +             spdif-0 {
> +                     spdifm0_tx: spdifm0-tx {
> +-                            rockchip,pins =
> +-                                    <0 27 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <0 RK_PD3 1 &pcfg_pull_none>;
> +                     };
> +             };
> + 
> +             spdif-1 {
> +                     spdifm1_tx: spdifm1-tx {
> +-                            rockchip,pins =
> +-                                    <2 17 RK_FUNC_2 &pcfg_pull_none>;
> ++                            rockchip,pins = <2 RK_PC1 2 &pcfg_pull_none>;
> +                     };
> +             };
> + 
> +             spdif-2 {
> +                     spdifm2_tx: spdifm2-tx {
> +-                            rockchip,pins =
> +-                                    <0 2 RK_FUNC_2 &pcfg_pull_none>;
> ++                            rockchip,pins = <0 RK_PA2 2 &pcfg_pull_none>;
> +                     };
> +             };
> + 
> +             sdmmc0-0 {
> +                     sdmmc0m0_pwren: sdmmc0m0-pwren {
> +-                            rockchip,pins =
> +-                                    <2 7 RK_FUNC_1 &pcfg_pull_up_4ma>;
> ++                            rockchip,pins = <2 RK_PA7 1 &pcfg_pull_up_4ma>;
> +                     };
> + 
> +                     sdmmc0m0_gpio: sdmmc0m0-gpio {
> +-                            rockchip,pins =
> +-                                    <2 7 RK_FUNC_GPIO &pcfg_pull_up_4ma>;
> ++                            rockchip,pins = <2 RK_PA7 RK_FUNC_GPIO 
> &pcfg_pull_up_4ma>;
> +                     };
> +             };
> + 
> +             sdmmc0-1 {
> +                     sdmmc0m1_pwren: sdmmc0m1-pwren {
> +-                            rockchip,pins =
> +-                                    <0 30 RK_FUNC_3 &pcfg_pull_up_4ma>;
> ++                            rockchip,pins = <0 RK_PD6 3 &pcfg_pull_up_4ma>;
> +                     };
> + 
> +                     sdmmc0m1_gpio: sdmmc0m1-gpio {
> +-                            rockchip,pins =
> +-                                    <0 30 RK_FUNC_GPIO &pcfg_pull_up_4ma>;
> ++                            rockchip,pins = <0 RK_PD6 RK_FUNC_GPIO 
> &pcfg_pull_up_4ma>;
> +                     };
> +             };
> + 
> +             sdmmc0 {
> +                     sdmmc0_clk: sdmmc0-clk {
> +-                            rockchip,pins =
> +-                                    <1 6 RK_FUNC_1 &pcfg_pull_none_4ma>;
> ++                            rockchip,pins = <1 RK_PA6 1 
> &pcfg_pull_none_4ma>;
> +                     };
> + 
> +                     sdmmc0_cmd: sdmmc0-cmd {
> +-                            rockchip,pins =
> +-                                    <1 4 RK_FUNC_1 &pcfg_pull_up_4ma>;
> ++                            rockchip,pins = <1 RK_PA4 1 &pcfg_pull_up_4ma>;
> +                     };
> + 
> +                     sdmmc0_dectn: sdmmc0-dectn {
> +-                            rockchip,pins =
> +-                                    <1 5 RK_FUNC_1 &pcfg_pull_up_4ma>;
> ++                            rockchip,pins = <1 RK_PA5 1 &pcfg_pull_up_4ma>;
> +                     };
> + 
> +                     sdmmc0_wrprt: sdmmc0-wrprt {
> +-                            rockchip,pins =
> +-                                    <1 7 RK_FUNC_1 &pcfg_pull_up_4ma>;
> ++                            rockchip,pins = <1 RK_PA7 1 &pcfg_pull_up_4ma>;
> +                     };
> + 
> +                     sdmmc0_bus1: sdmmc0-bus1 {
> +-                            rockchip,pins =
> +-                                    <1 0 RK_FUNC_1 &pcfg_pull_up_4ma>;
> ++                            rockchip,pins = <1 RK_PA0 1 &pcfg_pull_up_4ma>;
> +                     };
> + 
> +                     sdmmc0_bus4: sdmmc0-bus4 {
> +-                            rockchip,pins =
> +-                                    <1 0 RK_FUNC_1 &pcfg_pull_up_4ma>,
> +-                                    <1 1 RK_FUNC_1 &pcfg_pull_up_4ma>,
> +-                                    <1 2 RK_FUNC_1 &pcfg_pull_up_4ma>,
> +-                                    <1 3 RK_FUNC_1 &pcfg_pull_up_4ma>;
> ++                            rockchip,pins = <1 RK_PA0 1 &pcfg_pull_up_4ma>,
> ++                                            <1 RK_PA1 1 &pcfg_pull_up_4ma>,
> ++                                            <1 RK_PA2 1 &pcfg_pull_up_4ma>,
> ++                                            <1 RK_PA3 1 &pcfg_pull_up_4ma>;
> +                     };
> + 
> +                     sdmmc0_gpio: sdmmc0-gpio {
> +                             rockchip,pins =
> +-                                    <1 6 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
> +-                                    <1 4 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
> +-                                    <1 5 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
> +-                                    <1 7 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
> +-                                    <1 3 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
> +-                                    <1 2 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
> +-                                    <1 1 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
> +-                                    <1 0 RK_FUNC_GPIO &pcfg_pull_up_4ma>;
> ++                                    <1 RK_PA6 RK_FUNC_GPIO 
> &pcfg_pull_up_4ma>,
> ++                                    <1 RK_PA4 RK_FUNC_GPIO 
> &pcfg_pull_up_4ma>,
> ++                                    <1 RK_PA5 RK_FUNC_GPIO 
> &pcfg_pull_up_4ma>,
> ++                                    <1 RK_PA7 RK_FUNC_GPIO 
> &pcfg_pull_up_4ma>,
> ++                                    <1 RK_PA3 RK_FUNC_GPIO 
> &pcfg_pull_up_4ma>,
> ++                                    <1 RK_PA2 RK_FUNC_GPIO 
> &pcfg_pull_up_4ma>,
> ++                                    <1 RK_PA1 RK_FUNC_GPIO 
> &pcfg_pull_up_4ma>,
> ++                                    <1 RK_PA0 RK_FUNC_GPIO 
> &pcfg_pull_up_4ma>;
> +                     };
> +             };
> + 
> +             sdmmc0ext {
> +                     sdmmc0ext_clk: sdmmc0ext-clk {
> +-                            rockchip,pins =
> +-                                    <3 2 RK_FUNC_3 &pcfg_pull_none_4ma>;
> ++                            rockchip,pins = <3 RK_PA2 3 
> &pcfg_pull_none_4ma>;
> +                     };
> + 
> +                     sdmmc0ext_cmd: sdmmc0ext-cmd {
> +-                            rockchip,pins =
> +-                                    <3 0 RK_FUNC_3 &pcfg_pull_up_4ma>;
> ++                            rockchip,pins = <3 RK_PA0 3 &pcfg_pull_up_4ma>;
> +                     };
> + 
> +                     sdmmc0ext_wrprt: sdmmc0ext-wrprt {
> +-                            rockchip,pins =
> +-                                    <3 3 RK_FUNC_3 &pcfg_pull_up_4ma>;
> ++                            rockchip,pins = <3 RK_PA3 3 &pcfg_pull_up_4ma>;
> +                     };
> + 
> +                     sdmmc0ext_dectn: sdmmc0ext-dectn {
> +-                            rockchip,pins =
> +-                                    <3 1 RK_FUNC_3 &pcfg_pull_up_4ma>;
> ++                            rockchip,pins = <3 RK_PA1 3 &pcfg_pull_up_4ma>;
> +                     };
> + 
> +                     sdmmc0ext_bus1: sdmmc0ext-bus1 {
> +-                            rockchip,pins =
> +-                                    <3 4 RK_FUNC_3 &pcfg_pull_up_4ma>;
> ++                            rockchip,pins = <3 RK_PA4 3 &pcfg_pull_up_4ma>;
> +                     };
> + 
> +                     sdmmc0ext_bus4: sdmmc0ext-bus4 {
> +                             rockchip,pins =
> +-                                    <3 4 RK_FUNC_3 &pcfg_pull_up_4ma>,
> +-                                    <3 5 RK_FUNC_3 &pcfg_pull_up_4ma>,
> +-                                    <3 6 RK_FUNC_3 &pcfg_pull_up_4ma>,
> +-                                    <3 7 RK_FUNC_3 &pcfg_pull_up_4ma>;
> ++                                    <3 RK_PA4 3 &pcfg_pull_up_4ma>,
> ++                                    <3 RK_PA5 3 &pcfg_pull_up_4ma>,
> ++                                    <3 RK_PA6 3 &pcfg_pull_up_4ma>,
> ++                                    <3 RK_PA7 3 &pcfg_pull_up_4ma>;
> +                     };
> + 
> +                     sdmmc0ext_gpio: sdmmc0ext-gpio {
> +                             rockchip,pins =
> +-                                    <3 0 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
> +-                                    <3 1 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
> +-                                    <3 2 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
> +-                                    <3 3 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
> +-                                    <3 4 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
> +-                                    <3 5 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
> +-                                    <3 6 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
> +-                                    <3 7 RK_FUNC_GPIO &pcfg_pull_up_4ma>;
> ++                                    <3 RK_PA0 RK_FUNC_GPIO 
> &pcfg_pull_up_4ma>,
> ++                                    <3 RK_PA1 RK_FUNC_GPIO 
> &pcfg_pull_up_4ma>,
> ++                                    <3 RK_PA2 RK_FUNC_GPIO 
> &pcfg_pull_up_4ma>,
> ++                                    <3 RK_PA3 RK_FUNC_GPIO 
> &pcfg_pull_up_4ma>,
> ++                                    <3 RK_PA4 RK_FUNC_GPIO 
> &pcfg_pull_up_4ma>,
> ++                                    <3 RK_PA5 RK_FUNC_GPIO 
> &pcfg_pull_up_4ma>,
> ++                                    <3 RK_PA6 RK_FUNC_GPIO 
> &pcfg_pull_up_4ma>,
> ++                                    <3 RK_PA7 RK_FUNC_GPIO 
> &pcfg_pull_up_4ma>;
> +                     };
> +             };
> + 
> +             sdmmc1 {
> +                     sdmmc1_clk: sdmmc1-clk {
> +-                            rockchip,pins =
> +-                                    <1 12 RK_FUNC_1 &pcfg_pull_none_8ma>;
> ++                            rockchip,pins = <1 RK_PB4 1 
> &pcfg_pull_none_8ma>;
> +                     };
> + 
> +                     sdmmc1_cmd: sdmmc1-cmd {
> +-                            rockchip,pins =
> +-                                    <1 13 RK_FUNC_1 &pcfg_pull_up_8ma>;
> ++                            rockchip,pins = <1 RK_PB5 1 &pcfg_pull_up_8ma>;
> +                     };
> + 
> +                     sdmmc1_pwren: sdmmc1-pwren {
> +-                            rockchip,pins =
> +-                                    <1 18 RK_FUNC_1 &pcfg_pull_up_8ma>;
> ++                            rockchip,pins = <1 RK_PC2 1 &pcfg_pull_up_8ma>;
> +                     };
> + 
> +                     sdmmc1_wrprt: sdmmc1-wrprt {
> +-                            rockchip,pins =
> +-                                    <1 20 RK_FUNC_1 &pcfg_pull_up_8ma>;
> ++                            rockchip,pins = <1 RK_PC4 1 &pcfg_pull_up_8ma>;
> +                     };
> + 
> +                     sdmmc1_dectn: sdmmc1-dectn {
> +-                            rockchip,pins =
> +-                                    <1 19 RK_FUNC_1 &pcfg_pull_up_8ma>;
> ++                            rockchip,pins = <1 RK_PC3 1 &pcfg_pull_up_8ma>;
> +                     };
> + 
> +                     sdmmc1_bus1: sdmmc1-bus1 {
> +-                            rockchip,pins =
> +-                                    <1 14 RK_FUNC_1 &pcfg_pull_up_8ma>;
> ++                            rockchip,pins = <1 RK_PB6 1 &pcfg_pull_up_8ma>;
> +                     };
> + 
> +                     sdmmc1_bus4: sdmmc1-bus4 {
> +-                            rockchip,pins =
> +-                                    <1 12 RK_FUNC_1 &pcfg_pull_up_8ma>,
> +-                                    <1 13 RK_FUNC_1 &pcfg_pull_up_8ma>,
> +-                                    <1 16 RK_FUNC_1 &pcfg_pull_up_8ma>,
> +-                                    <1 17 RK_FUNC_1 &pcfg_pull_up_8ma>;
> ++                            rockchip,pins = <1 RK_PB6 1 &pcfg_pull_up_8ma>,
> ++                                            <1 RK_PB7 1 &pcfg_pull_up_8ma>,
> ++                                            <1 RK_PC0 1 &pcfg_pull_up_8ma>,
> ++                                            <1 RK_PC1 1 &pcfg_pull_up_8ma>;
> +                     };
> + 
> +                     sdmmc1_gpio: sdmmc1-gpio {
> +                             rockchip,pins =
> +-                                    <1 12 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
> +-                                    <1 13 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
> +-                                    <1 14 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
> +-                                    <1 15 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
> +-                                    <1 16 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
> +-                                    <1 17 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
> +-                                    <1 18 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
> +-                                    <1 19 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
> +-                                    <1 20 RK_FUNC_GPIO &pcfg_pull_up_4ma>;
> ++                                    <1 RK_PB4 RK_FUNC_GPIO 
> &pcfg_pull_up_4ma>,
> ++                                    <1 RK_PB5 RK_FUNC_GPIO 
> &pcfg_pull_up_4ma>,
> ++                                    <1 RK_PB6 RK_FUNC_GPIO 
> &pcfg_pull_up_4ma>,
> ++                                    <1 RK_PB7 RK_FUNC_GPIO 
> &pcfg_pull_up_4ma>,
> ++                                    <1 RK_PC0 RK_FUNC_GPIO 
> &pcfg_pull_up_4ma>,
> ++                                    <1 RK_PC1 RK_FUNC_GPIO 
> &pcfg_pull_up_4ma>,
> ++                                    <1 RK_PC2 RK_FUNC_GPIO 
> &pcfg_pull_up_4ma>,
> ++                                    <1 RK_PC3 RK_FUNC_GPIO 
> &pcfg_pull_up_4ma>,
> ++                                    <1 RK_PC4 RK_FUNC_GPIO 
> &pcfg_pull_up_4ma>;
> +                     };
> +             };
> + 
> +             emmc {
> +                     emmc_clk: emmc-clk {
> +-                            rockchip,pins =
> +-                                    <3 21 RK_FUNC_2 &pcfg_pull_none_12ma>;
> ++                            rockchip,pins = <3 RK_PC5 2 
> &pcfg_pull_none_12ma>;
> +                     };
> + 
> +                     emmc_cmd: emmc-cmd {
> +-                            rockchip,pins =
> +-                                    <3 19 RK_FUNC_2 &pcfg_pull_up_12ma>;
> ++                            rockchip,pins = <3 RK_PC3 2 &pcfg_pull_up_12ma>;
> +                     };
> + 
> +                     emmc_pwren: emmc-pwren {
> +-                            rockchip,pins =
> +-                                    <3 22 RK_FUNC_2 &pcfg_pull_none>;
> ++                            rockchip,pins = <3 RK_PC6 2 &pcfg_pull_none>;
> +                     };
> + 
> +                     emmc_rstnout: emmc-rstnout {
> +-                            rockchip,pins =
> +-                                    <3 20 RK_FUNC_2 &pcfg_pull_none>;
> ++                            rockchip,pins = <3 RK_PC4 2 &pcfg_pull_none>;
> +                     };
> + 
> +                     emmc_bus1: emmc-bus1 {
> +-                            rockchip,pins =
> +-                                    <0 7 RK_FUNC_2 &pcfg_pull_up_12ma>;
> ++                            rockchip,pins = <0 RK_PA7 2 &pcfg_pull_up_12ma>;
> +                     };
> + 
> +                     emmc_bus4: emmc-bus4 {
> +                             rockchip,pins =
> +-                                    <0 7 RK_FUNC_2 &pcfg_pull_up_12ma>,
> +-                                    <2 28 RK_FUNC_2 &pcfg_pull_up_12ma>,
> +-                                    <2 29 RK_FUNC_2 &pcfg_pull_up_12ma>,
> +-                                    <2 30 RK_FUNC_2 &pcfg_pull_up_12ma>;
> ++                                    <0 RK_PA7 2 &pcfg_pull_up_12ma>,
> ++                                    <2 RK_PD4 2 &pcfg_pull_up_12ma>,
> ++                                    <2 RK_PD5 2 &pcfg_pull_up_12ma>,
> ++                                    <2 RK_PD6 2 &pcfg_pull_up_12ma>;
> +                     };
> + 
> +                     emmc_bus8: emmc-bus8 {
> +                             rockchip,pins =
> +-                                    <0 7 RK_FUNC_2 &pcfg_pull_up_12ma>,
> +-                                    <2 28 RK_FUNC_2 &pcfg_pull_up_12ma>,
> +-                                    <2 29 RK_FUNC_2 &pcfg_pull_up_12ma>,
> +-                                    <2 30 RK_FUNC_2 &pcfg_pull_up_12ma>,
> +-                                    <2 31 RK_FUNC_2 &pcfg_pull_up_12ma>,
> +-                                    <3 16 RK_FUNC_2 &pcfg_pull_up_12ma>,
> +-                                    <3 17 RK_FUNC_2 &pcfg_pull_up_12ma>,
> +-                                    <3 18 RK_FUNC_2 &pcfg_pull_up_12ma>;
> ++                                    <0 RK_PA7 2 &pcfg_pull_up_12ma>,
> ++                                    <2 RK_PD4 2 &pcfg_pull_up_12ma>,
> ++                                    <2 RK_PD5 2 &pcfg_pull_up_12ma>,
> ++                                    <2 RK_PD6 2 &pcfg_pull_up_12ma>,
> ++                                    <2 RK_PD7 2 &pcfg_pull_up_12ma>,
> ++                                    <3 RK_PC0 2 &pcfg_pull_up_12ma>,
> ++                                    <3 RK_PC1 2 &pcfg_pull_up_12ma>,
> ++                                    <3 RK_PC2 2 &pcfg_pull_up_12ma>;
> +                     };
> +             };
> + 
> +             pwm0 {
> +                     pwm0_pin: pwm0-pin {
> +-                            rockchip,pins =
> +-                                    <2 4 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <2 RK_PA4 1 &pcfg_pull_none>;
> +                     };
> +             };
> + 
> +             pwm1 {
> +                     pwm1_pin: pwm1-pin {
> +-                            rockchip,pins =
> +-                                    <2 5 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <2 RK_PA5 1 &pcfg_pull_none>;
> +                     };
> +             };
> + 
> +             pwm2 {
> +                     pwm2_pin: pwm2-pin {
> +-                            rockchip,pins =
> +-                                    <2 6 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <2 RK_PA6 1 &pcfg_pull_none>;
> +                     };
> +             };
> + 
> +             pwmir {
> +                     pwmir_pin: pwmir-pin {
> +-                            rockchip,pins =
> +-                                    <2 2 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <2 RK_PA2 1 &pcfg_pull_none>;
> +                     };
> +             };
> + 
> +-            gmac-0 {
> +-                    rgmiim0_pins: rgmiim0-pins {
> +-                            rockchip,pins =
> +-                                    /* mac_txclk */
> +-                                    <0 8 RK_FUNC_1 &pcfg_pull_none_12ma>,
> +-                                    /* mac_rxclk */
> +-                                    <0 10 RK_FUNC_1 &pcfg_pull_none>,
> +-                                    /* mac_mdio */
> +-                                    <0 11 RK_FUNC_1 &pcfg_pull_none>,
> +-                                    /* mac_txen */
> +-                                    <0 12 RK_FUNC_1 &pcfg_pull_none_12ma>,
> +-                                    /* mac_clk */
> +-                                    <0 24 RK_FUNC_1 &pcfg_pull_none>,
> +-                                    /* mac_rxdv */
> +-                                    <0 25 RK_FUNC_1 &pcfg_pull_none>,
> +-                                    /* mac_mdc */
> +-                                    <0 19 RK_FUNC_1 &pcfg_pull_none>,
> +-                                    /* mac_rxd1 */
> +-                                    <0 14 RK_FUNC_1 &pcfg_pull_none>,
> +-                                    /* mac_rxd0 */
> +-                                    <0 15 RK_FUNC_1 &pcfg_pull_none>,
> +-                                    /* mac_txd1 */
> +-                                    <0 16 RK_FUNC_1 &pcfg_pull_none_12ma>,
> +-                                    /* mac_txd0 */
> +-                                    <0 17 RK_FUNC_1 &pcfg_pull_none_12ma>,
> +-                                    /* mac_rxd3 */
> +-                                    <0 20 RK_FUNC_1 &pcfg_pull_none>,
> +-                                    /* mac_rxd2 */
> +-                                    <0 21 RK_FUNC_1 &pcfg_pull_none>,
> +-                                    /* mac_txd3 */
> +-                                    <0 23 RK_FUNC_1 &pcfg_pull_none_12ma>,
> +-                                    /* mac_txd2 */
> +-                                    <0 22 RK_FUNC_1 &pcfg_pull_none_12ma>;
> +-                    };
> +-
> +-                    rmiim0_pins: rmiim0-pins {
> +-                            rockchip,pins =
> +-                                    /* mac_mdio */
> +-                                    <0 11 RK_FUNC_1 &pcfg_pull_none>,
> +-                                    /* mac_txen */
> +-                                    <0 12 RK_FUNC_1 &pcfg_pull_none_12ma>,
> +-                                    /* mac_clk */
> +-                                    <0 24 RK_FUNC_1 &pcfg_pull_none>,
> +-                                    /* mac_rxer */
> +-                                    <0 13 RK_FUNC_1 &pcfg_pull_none>,
> +-                                    /* mac_rxdv */
> +-                                    <0 25 RK_FUNC_1 &pcfg_pull_none>,
> +-                                    /* mac_mdc */
> +-                                    <0 19 RK_FUNC_1 &pcfg_pull_none>,
> +-                                    /* mac_rxd1 */
> +-                                    <0 14 RK_FUNC_1 &pcfg_pull_none>,
> +-                                    /* mac_rxd0 */
> +-                                    <0 15 RK_FUNC_1 &pcfg_pull_none>,
> +-                                    /* mac_txd1 */
> +-                                    <0 16 RK_FUNC_1 &pcfg_pull_none_12ma>,
> +-                                    /* mac_txd0 */
> +-                                    <0 17 RK_FUNC_1 &pcfg_pull_none_12ma>;
> +-                    };
> +-            };
> +-
> +             gmac-1 {
> +                     rgmiim1_pins: rgmiim1-pins {
> +                             rockchip,pins =
> +                                     /* mac_txclk */
> +-                                    <1 12 RK_FUNC_2 &pcfg_pull_none_12ma>,
> ++                                    <1 RK_PB4 2 &pcfg_pull_none_12ma>,
> +                                     /* mac_rxclk */
> +-                                    <1 13 RK_FUNC_2 &pcfg_pull_none_2ma>,
> ++                                    <1 RK_PB5 2 &pcfg_pull_none_2ma>,
> +                                     /* mac_mdio */
> +-                                    <1 19 RK_FUNC_2 &pcfg_pull_none_2ma>,
> ++                                    <1 RK_PC3 2 &pcfg_pull_none_2ma>,
> +                                     /* mac_txen */
> +-                                    <1 25 RK_FUNC_2 &pcfg_pull_none_12ma>,
> ++                                    <1 RK_PD1 2 &pcfg_pull_none_12ma>,
> +                                     /* mac_clk */
> +-                                    <1 21 RK_FUNC_2 &pcfg_pull_none_2ma>,
> ++                                    <1 RK_PC5 2 &pcfg_pull_none_2ma>,
> +                                     /* mac_rxdv */
> +-                                    <1 22 RK_FUNC_2 &pcfg_pull_none_2ma>,
> ++                                    <1 RK_PC6 2 &pcfg_pull_none_2ma>,
> +                                     /* mac_mdc */
> +-                                    <1 23 RK_FUNC_2 &pcfg_pull_none_2ma>,
> ++                                    <1 RK_PC7 2 &pcfg_pull_none_2ma>,
> +                                     /* mac_rxd1 */
> +-                                    <1 10 RK_FUNC_2 &pcfg_pull_none_2ma>,
> ++                                    <1 RK_PB2 2 &pcfg_pull_none_2ma>,
> +                                     /* mac_rxd0 */
> +-                                    <1 11 RK_FUNC_2 &pcfg_pull_none_2ma>,
> ++                                    <1 RK_PB3 2 &pcfg_pull_none_2ma>,
> +                                     /* mac_txd1 */
> +-                                    <1 8 RK_FUNC_2 &pcfg_pull_none_12ma>,
> ++                                    <1 RK_PB0 2 &pcfg_pull_none_12ma>,
> +                                     /* mac_txd0 */
> +-                                    <1 9 RK_FUNC_2 &pcfg_pull_none_12ma>,
> ++                                    <1 RK_PB1 2 &pcfg_pull_none_12ma>,
> +                                     /* mac_rxd3 */
> +-                                    <1 14 RK_FUNC_2 &pcfg_pull_none_2ma>,
> ++                                    <1 RK_PB6 2 &pcfg_pull_none_2ma>,
> +                                     /* mac_rxd2 */
> +-                                    <1 15 RK_FUNC_2 &pcfg_pull_none_2ma>,
> ++                                    <1 RK_PB7 2 &pcfg_pull_none_2ma>,
> +                                     /* mac_txd3 */
> +-                                    <1 16 RK_FUNC_2 &pcfg_pull_none_12ma>,
> ++                                    <1 RK_PC0 2 &pcfg_pull_none_12ma>,
> +                                     /* mac_txd2 */
> +-                                    <1 17 RK_FUNC_2 &pcfg_pull_none_12ma>,
> ++                                    <1 RK_PC1 2 &pcfg_pull_none_12ma>,
> + 
> +                                     /* mac_txclk */
> +-                                    <0 8 RK_FUNC_1 &pcfg_pull_none>,
> ++                                    <0 RK_PB0 1 &pcfg_pull_none>,
> +                                     /* mac_txen */
> +-                                    <0 12 RK_FUNC_1 &pcfg_pull_none>,
> ++                                    <0 RK_PB4 1 &pcfg_pull_none>,
> +                                     /* mac_clk */
> +-                                    <0 24 RK_FUNC_1 &pcfg_pull_none>,
> ++                                    <0 RK_PD0 1 &pcfg_pull_none>,
> +                                     /* mac_txd1 */
> +-                                    <0 16 RK_FUNC_1 &pcfg_pull_none>,
> ++                                    <0 RK_PC0 1 &pcfg_pull_none>,
> +                                     /* mac_txd0 */
> +-                                    <0 17 RK_FUNC_1 &pcfg_pull_none>,
> ++                                    <0 RK_PC1 1 &pcfg_pull_none>,
> +                                     /* mac_txd3 */
> +-                                    <0 23 RK_FUNC_1 &pcfg_pull_none>,
> ++                                    <0 RK_PC7 1 &pcfg_pull_none>,
> +                                     /* mac_txd2 */
> +-                                    <0 22 RK_FUNC_1 &pcfg_pull_none>;
> ++                                    <0 RK_PC6 1 &pcfg_pull_none>;
> +                     };
> + 
> +                     rmiim1_pins: rmiim1-pins {
> +                             rockchip,pins =
> +                                     /* mac_mdio */
> +-                                    <1 19 RK_FUNC_2 &pcfg_pull_none_2ma>,
> ++                                    <1 RK_PC3 2 &pcfg_pull_none_2ma>,
> +                                     /* mac_txen */
> +-                                    <1 25 RK_FUNC_2 &pcfg_pull_none_12ma>,
> ++                                    <1 RK_PD1 2 &pcfg_pull_none_12ma>,
> +                                     /* mac_clk */
> +-                                    <1 21 RK_FUNC_2 &pcfg_pull_none_2ma>,
> ++                                    <1 RK_PC5 2 &pcfg_pull_none_2ma>,
> +                                     /* mac_rxer */
> +-                                    <1 24 RK_FUNC_2 &pcfg_pull_none_2ma>,
> ++                                    <1 RK_PD0 2 &pcfg_pull_none_2ma>,
> +                                     /* mac_rxdv */
> +-                                    <1 22 RK_FUNC_2 &pcfg_pull_none_2ma>,
> ++                                    <1 RK_PC6 2 &pcfg_pull_none_2ma>,
> +                                     /* mac_mdc */
> +-                                    <1 23 RK_FUNC_2 &pcfg_pull_none_2ma>,
> ++                                    <1 RK_PC7 2 &pcfg_pull_none_2ma>,
> +                                     /* mac_rxd1 */
> +-                                    <1 10 RK_FUNC_2 &pcfg_pull_none_2ma>,
> ++                                    <1 RK_PB2 2 &pcfg_pull_none_2ma>,
> +                                     /* mac_rxd0 */
> +-                                    <1 11 RK_FUNC_2 &pcfg_pull_none_2ma>,
> ++                                    <1 RK_PB3 2 &pcfg_pull_none_2ma>,
> +                                     /* mac_txd1 */
> +-                                    <1 8 RK_FUNC_2 &pcfg_pull_none_12ma>,
> ++                                    <1 RK_PB0 2 &pcfg_pull_none_12ma>,
> +                                     /* mac_txd0 */
> +-                                    <1 9 RK_FUNC_2 &pcfg_pull_none_12ma>,
> ++                                    <1 RK_PB1 2 &pcfg_pull_none_12ma>,
> + 
> +                                     /* mac_mdio */
> +-                                    <0 11 RK_FUNC_1 &pcfg_pull_none>,
> ++                                    <0 RK_PB3 1 &pcfg_pull_none>,
> +                                     /* mac_txen */
> +-                                    <0 12 RK_FUNC_1 &pcfg_pull_none>,
> ++                                    <0 RK_PB4 1 &pcfg_pull_none>,
> +                                     /* mac_clk */
> +-                                    <0 24 RK_FUNC_1 &pcfg_pull_none>,
> ++                                    <0 RK_PD0 1 &pcfg_pull_none>,
> +                                     /* mac_mdc */
> +-                                    <0 19 RK_FUNC_1 &pcfg_pull_none>,
> ++                                    <0 RK_PC3 1 &pcfg_pull_none>,
> +                                     /* mac_txd1 */
> +-                                    <0 16 RK_FUNC_1 &pcfg_pull_none>,
> ++                                    <0 RK_PC0 1 &pcfg_pull_none>,
> +                                     /* mac_txd0 */
> +-                                    <0 17 RK_FUNC_1 &pcfg_pull_none>;
> ++                                    <0 RK_PC1 1 &pcfg_pull_none>;
> +                     };
> +             };
> + 
> +             gmac2phy {
> +                     fephyled_speed100: fephyled-speed100 {
> +-                            rockchip,pins =
> +-                                    <0 31 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <0 RK_PD7 1 &pcfg_pull_none>;
> +                     };
> + 
> +                     fephyled_speed10: fephyled-speed10 {
> +-                            rockchip,pins =
> +-                                    <0 30 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <0 RK_PD6 1 &pcfg_pull_none>;
> +                     };
> + 
> +                     fephyled_duplex: fephyled-duplex {
> +-                            rockchip,pins =
> +-                                    <0 30 RK_FUNC_2 &pcfg_pull_none>;
> ++                            rockchip,pins = <0 RK_PD6 2 &pcfg_pull_none>;
> +                     };
> + 
> +                     fephyled_rxm0: fephyled-rxm0 {
> +-                            rockchip,pins =
> +-                                    <0 29 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <0 RK_PD5 1 &pcfg_pull_none>;
> +                     };
> + 
> +                     fephyled_txm0: fephyled-txm0 {
> +-                            rockchip,pins =
> +-                                    <0 29 RK_FUNC_2 &pcfg_pull_none>;
> ++                            rockchip,pins = <0 RK_PD5 2 &pcfg_pull_none>;
> +                     };
> + 
> +                     fephyled_linkm0: fephyled-linkm0 {
> +-                            rockchip,pins =
> +-                                    <0 28 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <0 RK_PD4 1 &pcfg_pull_none>;
> +                     };
> + 
> +                     fephyled_rxm1: fephyled-rxm1 {
> +-                            rockchip,pins =
> +-                                    <2 25 RK_FUNC_2 &pcfg_pull_none>;
> ++                            rockchip,pins = <2 RK_PD1 2 &pcfg_pull_none>;
> +                     };
> + 
> +                     fephyled_txm1: fephyled-txm1 {
> +-                            rockchip,pins =
> +-                                    <2 25 RK_FUNC_3 &pcfg_pull_none>;
> ++                            rockchip,pins = <2 RK_PD1 3 &pcfg_pull_none>;
> +                     };
> + 
> +                     fephyled_linkm1: fephyled-linkm1 {
> +-                            rockchip,pins =
> +-                                    <2 24 RK_FUNC_2 &pcfg_pull_none>;
> ++                            rockchip,pins = <2 RK_PD0 2 &pcfg_pull_none>;
> +                     };
> +             };
> + 
> +             tsadc_pin {
> +                     tsadc_int: tsadc-int {
> +-                            rockchip,pins =
> +-                                    <2 13 RK_FUNC_2 &pcfg_pull_none>;
> ++                            rockchip,pins = <2 RK_PB5 2 &pcfg_pull_none>;
> +                     };
> +                     tsadc_gpio: tsadc-gpio {
> +-                            rockchip,pins =
> +-                                    <2 13 RK_FUNC_GPIO &pcfg_pull_none>;
> ++                            rockchip,pins = <2 RK_PB5 RK_FUNC_GPIO 
> &pcfg_pull_none>;
> +                     };
> +             };
> + 
> +             hdmi_pin {
> +                     hdmi_cec: hdmi-cec {
> +-                            rockchip,pins =
> +-                                    <0 3 RK_FUNC_1 &pcfg_pull_none>;
> ++                            rockchip,pins = <0 RK_PA3 1 &pcfg_pull_none>;
> +                     };
> + 
> +                     hdmi_hpd: hdmi-hpd {
> +-                            rockchip,pins =
> +-                                    <0 4 RK_FUNC_1 &pcfg_pull_down>;
> ++                            rockchip,pins = <0 RK_PA4 1 &pcfg_pull_down>;
> +                     };
> +             };
> + 
> +@@ -1460,29 +1697,29 @@
> +                     dvp_d2d9_m0:dvp-d2d9-m0 {
> +                             rockchip,pins =
> +                                     /* cif_d0 */
> +-                                    <3 4 RK_FUNC_2 &pcfg_pull_none>,
> ++                                    <3 RK_PA4 2 &pcfg_pull_none>,
> +                                     /* cif_d1 */
> +-                                    <3 5 RK_FUNC_2 &pcfg_pull_none>,
> ++                                    <3 RK_PA5 2 &pcfg_pull_none>,
> +                                     /* cif_d2 */
> +-                                    <3 6 RK_FUNC_2 &pcfg_pull_none>,
> ++                                    <3 RK_PA6 2 &pcfg_pull_none>,
> +                                     /* cif_d3 */
> +-                                    <3 7 RK_FUNC_2 &pcfg_pull_none>,
> ++                                    <3 RK_PA7 2 &pcfg_pull_none>,
> +                                     /* cif_d4 */
> +-                                    <3 8 RK_FUNC_2 &pcfg_pull_none>,
> ++                                    <3 RK_PB0 2 &pcfg_pull_none>,
> +                                     /* cif_d5m0 */
> +-                                    <3 9 RK_FUNC_2 &pcfg_pull_none>,
> ++                                    <3 RK_PB1 2 &pcfg_pull_none>,
> +                                     /* cif_d6m0 */
> +-                                    <3 10 RK_FUNC_2 &pcfg_pull_none>,
> ++                                    <3 RK_PB2 2 &pcfg_pull_none>,
> +                                     /* cif_d7m0 */
> +-                                    <3 11 RK_FUNC_2 &pcfg_pull_none>,
> ++                                    <3 RK_PB3 2 &pcfg_pull_none>,
> +                                     /* cif_href */
> +-                                    <3 1 RK_FUNC_2 &pcfg_pull_none>,
> ++                                    <3 RK_PA1 2 &pcfg_pull_none>,
> +                                     /* cif_vsync */
> +-                                    <3 0 RK_FUNC_2 &pcfg_pull_none>,
> ++                                    <3 RK_PA0 2 &pcfg_pull_none>,
> +                                     /* cif_clkoutm0 */
> +-                                    <3 3 RK_FUNC_2 &pcfg_pull_none>,
> ++                                    <3 RK_PA3 2 &pcfg_pull_none>,
> +                                     /* cif_clkin */
> +-                                    <3 2 RK_FUNC_2 &pcfg_pull_none>;
> ++                                    <3 RK_PA2 2 &pcfg_pull_none>;
> +                     };
> +             };
> + 
> +@@ -1490,29 +1727,29 @@
> +                     dvp_d2d9_m1:dvp-d2d9-m1 {
> +                             rockchip,pins =
> +                                     /* cif_d0 */
> +-                                    <3 4 RK_FUNC_2 &pcfg_pull_none>,
> ++                                    <3 RK_PA4 2 &pcfg_pull_none>,
> +                                     /* cif_d1 */
> +-                                    <3 5 RK_FUNC_2 &pcfg_pull_none>,
> ++                                    <3 RK_PA5 2 &pcfg_pull_none>,
> +                                     /* cif_d2 */
> +-                                    <3 6 RK_FUNC_2 &pcfg_pull_none>,
> ++                                    <3 RK_PA6 2 &pcfg_pull_none>,
> +                                     /* cif_d3 */
> +-                                    <3 7 RK_FUNC_2 &pcfg_pull_none>,
> ++                                    <3 RK_PA7 2 &pcfg_pull_none>,
> +                                     /* cif_d4 */
> +-                                    <3 8 RK_FUNC_2 &pcfg_pull_none>,
> ++                                    <3 RK_PB0 2 &pcfg_pull_none>,
> +                                     /* cif_d5m1 */
> +-                                    <2 16 RK_FUNC_4 &pcfg_pull_none>,
> ++                                    <2 RK_PC0 4 &pcfg_pull_none>,
> +                                     /* cif_d6m1 */
> +-                                    <2 17 RK_FUNC_4 &pcfg_pull_none>,
> ++                                    <2 RK_PC1 4 &pcfg_pull_none>,
> +                                     /* cif_d7m1 */
> +-                                    <2 18 RK_FUNC_4 &pcfg_pull_none>,
> ++                                    <2 RK_PC2 4 &pcfg_pull_none>,
> +                                     /* cif_href */
> +-                                    <3 1 RK_FUNC_2 &pcfg_pull_none>,
> ++                                    <3 RK_PA1 2 &pcfg_pull_none>,
> +                                     /* cif_vsync */
> +-                                    <3 0 RK_FUNC_2 &pcfg_pull_none>,
> ++                                    <3 RK_PA0 2 &pcfg_pull_none>,
> +                                     /* cif_clkoutm1 */
> +-                                    <2 15 RK_FUNC_4 &pcfg_pull_none>,
> ++                                    <2 RK_PB7 4 &pcfg_pull_none>,
> +                                     /* cif_clkin */
> +-                                    <3 2 RK_FUNC_2 &pcfg_pull_none>;
> ++                                    <3 RK_PA2 2 &pcfg_pull_none>;
> +                     };
> +             };
> +     };
> Index: patches/patch-arch_arm_dts_rk3399-rockpro64_dts
> ===================================================================
> RCS file: 
> /cvs/ports/sysutils/u-boot/patches/patch-arch_arm_dts_rk3399-rockpro64_dts,v
> retrieving revision 1.1
> diff -u -p -u -r1.1 patch-arch_arm_dts_rk3399-rockpro64_dts
> --- patches/patch-arch_arm_dts_rk3399-rockpro64_dts   28 Sep 2019 01:40:24 
> -0000      1.1
> +++ patches/patch-arch_arm_dts_rk3399-rockpro64_dts   5 Oct 2019 16:15:13 
> -0000
> @@ -12,3 +12,52 @@ Index: arch/arm/dts/rk3399-rockpro64.dts
>       };
>   
>       clkin_gmac: external-gmac-clock {
> +@@ -222,6 +222,10 @@
> +     status = "okay";
> + };
> + 
> ++&hdmi_sound {
> ++    status = "okay";
> ++};
> ++
> + &gpu {
> +     mali-supply = <&vdd_gpu>;
> +     status = "okay";
> +@@ -504,11 +508,25 @@
> +     status = "okay";
> + 
> +     bt656-supply = <&vcc1v8_dvp>;
> +-    audio-supply = <&vcca1v8_codec>;
> ++    audio-supply = <&vcc_3v0>;
> +     sdmmc-supply = <&vcc_sdio>;
> +     gpio1830-supply = <&vcc_3v0>;
> + };
> + 
> ++&pcie0 {
> ++    ep-gpios = <&gpio2 RK_PD4 GPIO_ACTIVE_HIGH>;
> ++    num-lanes = <4>;
> ++    pinctrl-names = "default";
> ++    pinctrl-0 = <&pcie_perst>;
> ++    vpcie12v-supply = <&vcc12v_dcin>;
> ++    vpcie3v3-supply = <&vcc3v3_pcie>;
> ++    status = "okay";
> ++};
> ++
> ++&pcie_phy {
> ++    status = "okay";
> ++};
> ++
> + &pmu_io_domains {
> +     pmu1830-supply = <&vcc_3v0>;
> +     status = "okay";
> +@@ -538,6 +556,10 @@
> +     };
> + 
> +     pcie {
> ++            pcie_perst: pcie-perst {
> ++                    rockchip,pins = <2 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
> ++            };
> ++
> +             pcie_pwr_en: pcie-pwr-en {
> +                     rockchip,pins = <1 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>;
> +             };
> Index: patches/patch-configs_rock64-rk3328_defconfig
> ===================================================================
> RCS file: patches/patch-configs_rock64-rk3328_defconfig
> diff -N patches/patch-configs_rock64-rk3328_defconfig
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-configs_rock64-rk3328_defconfig     5 Oct 2019 16:15:13 
> -0000
> @@ -0,0 +1,14 @@
> +$OpenBSD$
> +
> +Index: configs/rock64-rk3328_defconfig
> +--- configs/rock64-rk3328_defconfig.orig
> ++++ configs/rock64-rk3328_defconfig
> +@@ -76,7 +76,7 @@ CONFIG_RAM=y
> + CONFIG_SPL_RAM=y
> + CONFIG_TPL_RAM=y
> + CONFIG_DM_RESET=y
> +-CONFIG_BAUDRATE=1500000
> ++CONFIG_BAUDRATE=115200
> + CONFIG_DEBUG_UART_SHIFT=2
> + CONFIG_SYSRESET=y
> + CONFIG_USB=y
> Index: patches/patch-include_dt-bindings_clock_rk3328-cru_h
> ===================================================================
> RCS file: patches/patch-include_dt-bindings_clock_rk3328-cru_h
> diff -N patches/patch-include_dt-bindings_clock_rk3328-cru_h
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-include_dt-bindings_clock_rk3328-cru_h      5 Oct 2019 
> 16:15:13 -0000
> @@ -0,0 +1,237 @@
> +$OpenBSD$
> +
> +Index: include/dt-bindings/clock/rk3328-cru.h
> +--- include/dt-bindings/clock/rk3328-cru.h.orig
> ++++ include/dt-bindings/clock/rk3328-cru.h
> +@@ -1,6 +1,7 @@
> +-/* SPDX-License-Identifier: GPL-2.0+ */
> ++/* SPDX-License-Identifier: GPL-2.0-or-later */
> + /*
> +- * (C) Copyright 2016 Rockchip Electronics Co., Ltd
> ++ * Copyright (c) 2016 Rockchip Electronics Co. Ltd.
> ++ * Author: Elaine <zhangq...@rock-chips.com>
> +  */
> + 
> + #ifndef _DT_BINDINGS_CLK_ROCKCHIP_RK3328_H
> +@@ -90,118 +91,117 @@
> + #define SCLK_MAC2IO_EXT             102
> + 
> + /* dclk gates */
> +-#define DCLK_LCDC           180
> +-#define DCLK_HDMIPHY                181
> +-#define HDMIPHY                     182
> +-#define USB480M                     183
> +-#define DCLK_LCDC_SRC               184
> ++#define DCLK_LCDC           120
> ++#define DCLK_HDMIPHY                121
> ++#define HDMIPHY                     122
> ++#define USB480M                     123
> ++#define DCLK_LCDC_SRC               124
> + 
> + /* aclk gates */
> +-#define ACLK_AXISRAM                190
> +-#define ACLK_VOP_PRE                191
> +-#define ACLK_USB3OTG                192
> +-#define ACLK_RGA_PRE                193
> +-#define ACLK_DMAC           194
> +-#define ACLK_GPU            195
> +-#define ACLK_BUS_PRE                196
> +-#define ACLK_PERI_PRE               197
> +-#define ACLK_RKVDEC_PRE             198
> +-#define ACLK_RKVDEC         199
> +-#define ACLK_RKVENC         200
> +-#define ACLK_VPU_PRE                201
> +-#define ACLK_VIO_PRE                202
> +-#define ACLK_VPU            203
> +-#define ACLK_VIO            204
> +-#define ACLK_VOP            205
> +-#define ACLK_GMAC           206
> +-#define ACLK_H265           207
> +-#define ACLK_H264           208
> +-#define ACLK_MAC2PHY                209
> +-#define ACLK_MAC2IO         210
> +-#define ACLK_DCF            211
> +-#define ACLK_TSP            212
> +-#define ACLK_PERI           213
> +-#define ACLK_RGA            214
> +-#define ACLK_IEP            215
> +-#define ACLK_CIF            216
> +-#define ACLK_HDCP           217
> ++#define ACLK_AXISRAM                130
> ++#define ACLK_VOP_PRE                131
> ++#define ACLK_USB3OTG                132
> ++#define ACLK_RGA_PRE                133
> ++#define ACLK_DMAC           134
> ++#define ACLK_GPU            135
> ++#define ACLK_BUS_PRE                136
> ++#define ACLK_PERI_PRE               137
> ++#define ACLK_RKVDEC_PRE             138
> ++#define ACLK_RKVDEC         139
> ++#define ACLK_RKVENC         140
> ++#define ACLK_VPU_PRE                141
> ++#define ACLK_VIO_PRE                142
> ++#define ACLK_VPU            143
> ++#define ACLK_VIO            144
> ++#define ACLK_VOP            145
> ++#define ACLK_GMAC           146
> ++#define ACLK_H265           147
> ++#define ACLK_H264           148
> ++#define ACLK_MAC2PHY                149
> ++#define ACLK_MAC2IO         150
> ++#define ACLK_DCF            151
> ++#define ACLK_TSP            152
> ++#define ACLK_PERI           153
> ++#define ACLK_RGA            154
> ++#define ACLK_IEP            155
> ++#define ACLK_CIF            156
> ++#define ACLK_HDCP           157
> + 
> + /* pclk gates */
> +-#define PCLK_GPIO0          300
> +-#define PCLK_GPIO1          301
> +-#define PCLK_GPIO2          302
> +-#define PCLK_GPIO3          303
> +-#define PCLK_GRF            304
> +-#define PCLK_I2C0           305
> +-#define PCLK_I2C1           306
> +-#define PCLK_I2C2           307
> +-#define PCLK_I2C3           308
> +-#define PCLK_SPI            309
> +-#define PCLK_UART0          310
> +-#define PCLK_UART1          311
> +-#define PCLK_UART2          312
> +-#define PCLK_TSADC          313
> +-#define PCLK_PWM            314
> +-#define PCLK_TIMER          315
> +-#define PCLK_BUS_PRE                316
> +-#define PCLK_PERI_PRE               317
> +-#define PCLK_HDMI_CTRL              318
> +-#define PCLK_HDMI_PHY               319
> +-#define PCLK_GMAC           320
> +-#define PCLK_H265           321
> +-#define PCLK_MAC2PHY                322
> +-#define PCLK_MAC2IO         323
> +-#define PCLK_USB3PHY_OTG    324
> +-#define PCLK_USB3PHY_PIPE   325
> +-#define PCLK_USB3_GRF               326
> +-#define PCLK_USB2_GRF               327
> +-#define PCLK_HDMIPHY                328
> +-#define PCLK_DDR            329
> +-#define PCLK_PERI           330
> +-#define PCLK_HDMI           331
> +-#define PCLK_HDCP           332
> +-#define PCLK_DCF            333
> +-#define PCLK_SARADC         334
> ++#define PCLK_GPIO0          200
> ++#define PCLK_GPIO1          201
> ++#define PCLK_GPIO2          202
> ++#define PCLK_GPIO3          203
> ++#define PCLK_GRF            204
> ++#define PCLK_I2C0           205
> ++#define PCLK_I2C1           206
> ++#define PCLK_I2C2           207
> ++#define PCLK_I2C3           208
> ++#define PCLK_SPI            209
> ++#define PCLK_UART0          210
> ++#define PCLK_UART1          211
> ++#define PCLK_UART2          212
> ++#define PCLK_TSADC          213
> ++#define PCLK_PWM            214
> ++#define PCLK_TIMER          215
> ++#define PCLK_BUS_PRE                216
> ++#define PCLK_PERI_PRE               217
> ++#define PCLK_HDMI_CTRL              218
> ++#define PCLK_HDMI_PHY               219
> ++#define PCLK_GMAC           220
> ++#define PCLK_H265           221
> ++#define PCLK_MAC2PHY                222
> ++#define PCLK_MAC2IO         223
> ++#define PCLK_USB3PHY_OTG    224
> ++#define PCLK_USB3PHY_PIPE   225
> ++#define PCLK_USB3_GRF               226
> ++#define PCLK_USB2_GRF               227
> ++#define PCLK_HDMIPHY                228
> ++#define PCLK_DDR            229
> ++#define PCLK_PERI           230
> ++#define PCLK_HDMI           231
> ++#define PCLK_HDCP           232
> ++#define PCLK_DCF            233
> ++#define PCLK_SARADC         234
> ++#define PCLK_ACODECPHY              235
> ++#define PCLK_WDT            236
> + 
> + /* hclk gates */
> +-#define HCLK_PERI           408
> +-#define HCLK_TSP            409
> +-#define HCLK_GMAC           410
> +-#define HCLK_I2S0_8CH               411
> +-#define HCLK_I2S1_8CH               413
> +-#define HCLK_I2S2_2CH               413
> +-#define HCLK_SPDIF_8CH              414
> +-#define HCLK_VOP            415
> +-#define HCLK_NANDC          416
> +-#define HCLK_SDMMC          417
> +-#define HCLK_SDIO           418
> +-#define HCLK_EMMC           419
> +-#define HCLK_SDMMC_EXT              420
> +-#define HCLK_RKVDEC_PRE             421
> +-#define HCLK_RKVDEC         422
> +-#define HCLK_RKVENC         423
> +-#define HCLK_VPU_PRE                424
> +-#define HCLK_VIO_PRE                425
> +-#define HCLK_VPU            426
> +-#define HCLK_VIO            427
> +-#define HCLK_BUS_PRE                428
> +-#define HCLK_PERI_PRE               429
> +-#define HCLK_H264           430
> +-#define HCLK_CIF            431
> +-#define HCLK_OTG_PMU                432
> +-#define HCLK_OTG            433
> +-#define HCLK_HOST0          434
> +-#define HCLK_HOST0_ARB              435
> +-#define HCLK_CRYPTO_MST             436
> +-#define HCLK_CRYPTO_SLV             437
> +-#define HCLK_PDM            438
> +-#define HCLK_IEP            439
> +-#define HCLK_RGA            440
> +-#define HCLK_HDCP           441
> ++#define HCLK_PERI           308
> ++#define HCLK_TSP            309
> ++#define HCLK_GMAC           310
> ++#define HCLK_I2S0_8CH               311
> ++#define HCLK_I2S1_8CH               312
> ++#define HCLK_I2S2_2CH               313
> ++#define HCLK_SPDIF_8CH              314
> ++#define HCLK_VOP            315
> ++#define HCLK_NANDC          316
> ++#define HCLK_SDMMC          317
> ++#define HCLK_SDIO           318
> ++#define HCLK_EMMC           319
> ++#define HCLK_SDMMC_EXT              320
> ++#define HCLK_RKVDEC_PRE             321
> ++#define HCLK_RKVDEC         322
> ++#define HCLK_RKVENC         323
> ++#define HCLK_VPU_PRE                324
> ++#define HCLK_VIO_PRE                325
> ++#define HCLK_VPU            326
> ++#define HCLK_BUS_PRE                328
> ++#define HCLK_PERI_PRE               329
> ++#define HCLK_H264           330
> ++#define HCLK_CIF            331
> ++#define HCLK_OTG_PMU                332
> ++#define HCLK_OTG            333
> ++#define HCLK_HOST0          334
> ++#define HCLK_HOST0_ARB              335
> ++#define HCLK_CRYPTO_MST             336
> ++#define HCLK_CRYPTO_SLV             337
> ++#define HCLK_PDM            338
> ++#define HCLK_IEP            339
> ++#define HCLK_RGA            340
> ++#define HCLK_HDCP           341
> + 
> + #define CLK_NR_CLKS         (HCLK_HDCP + 1)
> +-
> +-#define CLKGRF_NR_CLKS              (SCLK_MAC2PHY + 1)
> + 
> + /* soft-reset indices */
> + #define SRST_CORE0_PO               0
> Index: pkg/PFRAG.aarch64
> ===================================================================
> RCS file: /cvs/ports/sysutils/u-boot/pkg/PFRAG.aarch64,v
> retrieving revision 1.13
> diff -u -p -u -r1.13 PFRAG.aarch64
> --- pkg/PFRAG.aarch64 28 Sep 2019 01:40:25 -0000      1.13
> +++ pkg/PFRAG.aarch64 5 Oct 2019 16:15:13 -0000
> @@ -1,5 +1,13 @@
>  @comment $OpenBSD: PFRAG.aarch64,v 1.13 2019/09/28 01:40:25 jsg Exp $
>  @pkgpath sysutils/u-boot-pinebook
> +libexec/u-boot/
> +libexec/u-boot/firefly-rk3399/
> +@bin libexec/u-boot/firefly-rk3399/mkimage
> +libexec/u-boot/mkidbloader-rkbin
> +libexec/u-boot/rock64-rk3328/
> +@bin libexec/u-boot/rock64-rk3328/mkimage
> +libexec/u-boot/rockpro64-rk3399/
> +@bin libexec/u-boot/rockpro64-rk3399/mkimage
>  share/u-boot/
>  share/u-boot/a64-olinuxino/
>  share/u-boot/a64-olinuxino/sunxi-spl.bin
> @@ -18,6 +26,7 @@ share/u-boot/bananapi_m64/u-boot.itb
>  share/u-boot/firefly-rk3399/
>  share/u-boot/firefly-rk3399/idbloader.img
>  share/u-boot/firefly-rk3399/u-boot
> +share/u-boot/firefly-rk3399/u-boot-spl-dtb.bin
>  share/u-boot/firefly-rk3399/u-boot.bin
>  share/u-boot/firefly-rk3399/u-boot.img
>  share/u-boot/firefly-rk3399/u-boot.itb
> @@ -86,9 +95,16 @@ share/u-boot/pinebook/u-boot.itb
>  share/u-boot/qemu_arm64/
>  share/u-boot/qemu_arm64/u-boot
>  share/u-boot/qemu_arm64/u-boot.bin
> +share/u-boot/rock64-rk3328/
> +share/u-boot/rock64-rk3328/u-boot
> +share/u-boot/rock64-rk3328/u-boot-spl-dtb.bin
> +share/u-boot/rock64-rk3328/u-boot.bin
> +share/u-boot/rock64-rk3328/u-boot.img
> +share/u-boot/rock64-rk3328/u-boot.itb
>  share/u-boot/rockpro64-rk3399/
>  share/u-boot/rockpro64-rk3399/idbloader.img
>  share/u-boot/rockpro64-rk3399/u-boot
> +share/u-boot/rockpro64-rk3399/u-boot-spl-dtb.bin
>  share/u-boot/rockpro64-rk3399/u-boot.bin
>  share/u-boot/rockpro64-rk3399/u-boot.img
>  share/u-boot/rockpro64-rk3399/u-boot.itb
> Index: pkg/PFRAG.arm
> ===================================================================
> RCS file: /cvs/ports/sysutils/u-boot/pkg/PFRAG.arm,v
> retrieving revision 1.20
> diff -u -p -u -r1.20 PFRAG.arm
> --- pkg/PFRAG.arm     28 Sep 2019 01:40:25 -0000      1.20
> +++ pkg/PFRAG.arm     5 Oct 2019 16:15:13 -0000
> @@ -146,6 +146,7 @@ share/u-boot/bananapi_m2_zero/u-boot.bin
>  share/u-boot/bananapi_m2_zero/u-boot.img
>  share/u-boot/clearfog/
>  share/u-boot/clearfog/u-boot
> +share/u-boot/clearfog/u-boot-spl-dtb.bin
>  share/u-boot/clearfog/u-boot-spl.kwb
>  share/u-boot/clearfog/u-boot.bin
>  share/u-boot/clearfog/u-boot.img
> @@ -243,10 +244,12 @@ share/u-boot/rpi_3_32b/u-boot.bin
>  share/u-boot/tinker-rk3288/
>  share/u-boot/tinker-rk3288/idbloader.img
>  share/u-boot/tinker-rk3288/u-boot
> +share/u-boot/tinker-rk3288/u-boot-spl-dtb.bin
>  share/u-boot/tinker-rk3288/u-boot.bin
>  share/u-boot/tinker-rk3288/u-boot.img
>  share/u-boot/turris_omnia/
>  share/u-boot/turris_omnia/u-boot
> +share/u-boot/turris_omnia/u-boot-spl-dtb.bin
>  share/u-boot/turris_omnia/u-boot-spl.kwb
>  share/u-boot/turris_omnia/u-boot.bin
>  share/u-boot/turris_omnia/u-boot.img
> 

Reply via email to