Upstream u-boot for ODROID-XU4.

We are working on the new u-boot porting for XU4 boards.

Here is the source code of the new u-boot.

What we can do with the new u-boot !
1. Enabling the HYP mode for the KVM virtualization with Kernel 4.9 LTS.
2. Enabling the Ethernet device to support the TFTP/PXE remote booting.
3. Booting from various new eMMC chipsets.
4. fatload / ext4load commands are available natively.
5. And many other new features.

We will release a update package in next week for Linux/Ubuntu users.
We are implementing a few more functions(for example, the fastboot protocol) for Android 4.4 and Android 7.1 now.

u-boot booting log from the serial console output.

U-Boot 2017.05-12186-gf98cc91-dirty (Aug 08 2017 – 12:16:58 +0900) for ODROID XU4CPU:   Exynos5422 @ 800 MHz
Model: Odroid XU4 based on EXYNOS5422
Board: Odroid XU4 based on EXYNOS5422
Type:  xu4
DRAM:  2 GiB
MMC Device 0 (eMMC): 14.7 GiB
Info eMMC rst_n_func status = enabled
Card did not respond to voltage select!
mmc_init: -95, time 11
*** Warning – bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   No ethernet found.
Press quickly ‘Enter’ twice to stop autoboot:  0
reading boot.ini
9088 bytes read in 4 ms (2.2 MiB/s)
cfgload: applying boot.ini…
cfgload: setenv initrd_high “0xffffffff”
cfgload: setenv fdt_high “0xffffffff”
cfgload: setenv macaddr “00:1e:06:61:7a:39”
cfgload: setenv vout “hdmi”
cfgload: setenv cecenable “false” # false or true
cfgload: setenv disable_vu7 “false” # false
cfgload: setenv governor “performance”
cfgload: setenv ddr_freq 825
cfgload: setenv external_watchdog “false”
cfgload: setenv external_watchdog_debounce “3”
cfgload: setenv HPD “true”
cfgload: setenv bootrootfs “console=tty1 console=ttySAC2,115200n8 root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait ro net.ifnames=0”
cfgload: fatload mmc 0:1 0x40008000 zImage
reading zImage
4793144 bytes read in 135 ms (33.9 MiB/s)
cfgload: fatload mmc 0:1 0x42000000 uInitrd
reading uInitrd
5327028 bytes read in 143 ms (35.5 MiB/s)
cfgload: if test “${board_name}” = “xu4”; then fatload mmc 0:1 0x44000000 exynos5422-odroidxu4.dtb; setenv fdtloaded “true”; fi
reading exynos5422-odroidxu4.dtb
61570 bytes read in 9 ms (6.5 MiB/s)
cfgload: if test “${board_name}” = “xu3”; then fatload mmc 0:1 0x44000000 exynos5422-odroidxu3.dtb; setenv fdtloaded “true”; fi
cfgload: if test “${board_name}” = “xu3l”; then fatload mmc 0:1 0x44000000 exynos5422-odroidxu3-lite.dtb; setenv fdtloaded “true”; fi
cfgload: if test “${fdtloaded}” != “true”; then fatload mmc 0:1 0x44000000 exynos5422-odroidxu4.dtb; fi
cfgload: fdt addr 0x44000000
cfgload: setenv hdmi_phy_control “HPD=${HPD} vout=${vout}”
cfgload: if test “${cecenable}” = “false”; then fdt rm /cec@101B0000; fi
cfgload: if test “${disable_vu7}” = “false”; then setenv hid_quirks “usbhid.quirks=0x0eef:0x0005:0x0004”; fi
cfgload: if test “${external_watchdog}” = “true”; then setenv external_watchdog
“external_watchdog=${external_watchdog} external_watchdog_debounce=${external_watchdog_debounce}”; fi
cfgload: setenv bootargs “${bootrootfs} ${videoconfig} ${hdmi_phy_control} ${hid_quirks} smsc95xx.macaddr=${macaddr} ${external_watchdog} governor=${governor}”
cfgload: bootz 0x40008000 0x42000000 0x44000000
Kernel image @ 0x40008000 [ 0x000000 – 0x492338 ] ## Loading init Ramdisk from Legacy Image at 42000000 …
Image Name:   uInitrd
Image Type:   ARM Linux RAMDisk Image (uncompressed)
Data Size:    5326964 Bytes = 5.1 MiB
Load Address: 00000000
Entry Point:  00000000
Verifying Checksum … OK
## Flattened Device Tree blob at 44000000
Booting using the fdt blob at 0x44000000
Using Device Tree in place at 44000000, end 44012081

Starting kernel …