[U-Boot] [PATCH v2] ARM: Samsung: Add Exynos5422-based Odroid HC2 support

Anand Moon linux.amoon at gmail.com
Mon Nov 12 07:36:44 UTC 2018


Hi Dirk Meul

On Tue, 23 Oct 2018 at 16:08, Dirk Meul <dirk.meul at rwth-aachen.de> wrote:
>
> From: Dirk Meul <dirk.meul at rwth-aachen.de>
> Date: Sun, 14 Oct 2018 17:14:17 +0200
>
> Odroid HC2 board is based on Odroid XU4 board, like the Odroid HC1.
>
> The linux kernel does not provide a hc2 DTB so the hc1 DTB is also used
> for the Odroid HC2.
>
> Resend because MUA changed whitespace.
>
> Signed-off-by: Dirk Meul <dirk.meul at rwth-aachen.de>
> Acked-by: Marek Szyprowski <m.szyprowski at samsung.com>
> Reviewed-by: Lukasz Majewski <lukma at denx.de>
> ---
>  board/samsung/common/exynos5-dt-types.c | 16 +++++++++++++---
>  board/samsung/common/exynos5-dt.c       |  4 ++--
>  configs/odroid-xu3_defconfig            |  2 +-
>  include/samsung/exynos5-dt-types.h      |  2 ++
>  4 files changed, 18 insertions(+), 6 deletions(-)
>
> diff --git a/board/samsung/common/exynos5-dt-types.c b/board/samsung/common/exynos5-dt-types.c
> index 4473968db6..7a86e91877 100644
> --- a/board/samsung/common/exynos5-dt-types.c
> +++ b/board/samsung/common/exynos5-dt-types.c
> @@ -24,14 +24,15 @@ static const struct udevice_id board_ids[] = {
>  };
>
>  /**
> - * Odroix XU3/XU4/HC1 board revisions (from HC1_MAIN_REV0.1_20170630.pdf):
> + * Odroix XU3/XU4/HC1/HC2 board revisions (from HC1+_HC2_MAIN_REV0.1_20171017.pdf):
>   * Rev   ADCmax  Board
>   * 0.1     0     XU3 0.1
>   * 0.2   372     XU3 0.2 | XU3L - no DISPLAYPORT (probe I2C0:0x40 / INA231)
>   * 0.3  1280     XU4 0.1
>   * 0.4   739     XU4 0.2
>   * 0.5  1016     XU4+Air0.1 (Passive cooling)
> - * 0.6  1308     XU4S 0.1 (HC1)
> + * 0.6  1309     XU4-HC1 0.1
> + * 0.7  1470     XU4-HC1+ 0.1 (HC2)
>   * Use +1% for ADC value tolerance in the array below, the code loops until
>   * the measured ADC value is lower than then ADCmax from the array.
>   */
> @@ -39,7 +40,8 @@ struct odroid_rev_info odroid_info[] = {
>         { EXYNOS5_BOARD_ODROID_XU3_REV01, 1, 10, "xu3" },
>         { EXYNOS5_BOARD_ODROID_XU3_REV02, 2, 375, "xu3" },
>         { EXYNOS5_BOARD_ODROID_XU4_REV01, 1, 1293, "xu4" },
> -       { EXYNOS5_BOARD_ODROID_HC1_REV01, 1, 1321, "hc1" },
> +       { EXYNOS5_BOARD_ODROID_HC1_REV01, 1, 1322, "hc1" },
> +       { EXYNOS5_BOARD_ODROID_HC2_REV01, 1, 1484, "hc1" },
>         { EXYNOS5_BOARD_ODROID_UNKNOWN, 0, 4095, "unknown" },
>  };
>
> @@ -144,6 +146,14 @@ bool board_is_odroidhc1(void)
>         return false;
>  }
>
> +bool board_is_odroidhc2(void)
> +{
> +       if (gd->board_type == EXYNOS5_BOARD_ODROID_HC2_REV01)
> +               return true;
> +
> +       return false;
> +}
> +
>  bool board_is_generic(void)
>  {
>         if (gd->board_type == EXYNOS5_BOARD_GENERIC)
> diff --git a/board/samsung/common/exynos5-dt.c b/board/samsung/common/exynos5-dt.c
> index 8c3a9ea564..c183965b92 100644
> --- a/board/samsung/common/exynos5-dt.c
> +++ b/board/samsung/common/exynos5-dt.c
> @@ -179,7 +179,7 @@ char *get_dfu_alt_system(char *interface, char *devstr)
>  {
>         char *info = "Not supported!";
>
> -       if (board_is_odroidxu4() || board_is_odroidhc1())
> +       if (board_is_odroidxu4() || board_is_odroidhc1() || board_is_odroidhc2())
>                 return info;
>
>         return env_get("dfu_alt_system");
> @@ -192,7 +192,7 @@ char *get_dfu_alt_boot(char *interface, char *devstr)
>         char *alt_boot;
>         int dev_num;
>
> -       if (board_is_odroidxu4() || board_is_odroidhc1())
> +       if (board_is_odroidxu4() || board_is_odroidhc1() || board_is_odroidhc2())
>                 return info;
>
>         dev_num = simple_strtoul(devstr, NULL, 10);
> diff --git a/configs/odroid-xu3_defconfig b/configs/odroid-xu3_defconfig
> index 258b9781cc..d5c7cc7129 100644
> --- a/configs/odroid-xu3_defconfig
> +++ b/configs/odroid-xu3_defconfig
> @@ -2,7 +2,7 @@ CONFIG_ARM=y
>  CONFIG_ARCH_EXYNOS=y
>  CONFIG_SYS_TEXT_BASE=0x43E00000
>  CONFIG_ARCH_EXYNOS5=y
> -CONFIG_IDENT_STRING=" for ODROID-XU3/XU4/HC1"
> +CONFIG_IDENT_STRING=" for ODROID-XU3/XU4/HC1/HC2"
>  CONFIG_DISTRO_DEFAULTS=y
>  CONFIG_NR_DRAM_BANKS=8
>  # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
> diff --git a/include/samsung/exynos5-dt-types.h b/include/samsung/exynos5-dt-types.h
> index 8e11af30d1..8fe08fe211 100644
> --- a/include/samsung/exynos5-dt-types.h
> +++ b/include/samsung/exynos5-dt-types.h
> @@ -9,6 +9,7 @@ enum {
>         EXYNOS5_BOARD_ODROID_XU3_REV02,
>         EXYNOS5_BOARD_ODROID_XU4_REV01,
>         EXYNOS5_BOARD_ODROID_HC1_REV01,
> +       EXYNOS5_BOARD_ODROID_HC2_REV01,
>         EXYNOS5_BOARD_ODROID_UNKNOWN,
>
>         EXYNOS5_BOARD_COUNT,
> @@ -25,5 +26,6 @@ bool board_is_generic(void);
>  bool board_is_odroidxu3(void);
>  bool board_is_odroidxu4(void);
>  bool board_is_odroidhc1(void);
> +bool board_is_odroidhc2(void);
>
>  #endif
> --

I think on reboot boot on Odroid HC1 and Odroid HC2 is broken.
I am testing on Arch Linux XU3/XU4 distro and it fails to boot after
*warm boot*.
I have tested this on Odroid HC1 and Odroid HC2 the result is the same.

Below is the debug logs.
-----------------------------------------------------------------------------------------------------
[  577.135979] usb 4-1: reset SuperSpeed Gen 1 USB device number 2
using xhci-hc
           d
[  577.312156] reboot: Restarting

U-Boot 2018.11-rc3-00062-g26cc40d8c4-dirty (Nov 12 2018 - 06:51:53
+0000) for ODROID-XU3/XU4/HC1/HC2

CPU:   Exynos5422 @ 800 MHz
Model: Odroid XU3 based on EXYNOS5422
Board: Odroid XU3 based on EXYNOS5422
DRAM:  2 GiB
MMC:   EXYNOS DWMMC: 0, EXYNOS DWMMC: 2
Loading Environment from MMC... Card did not respond to voltage select!
*** Warning - No block device, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   No ethernet found.
Hit any key to stop autoboot:  0
MMC Device 1 not found
no mmc device at slot 1
Card did not respond to voltage select!
switch to partitions #0, OK
mmc2 is current device
Scanning mmc 2:1...
Found U-Boot script /boot/boot.scr
2046 bytes read in 7 ms (285.2 KiB/s)
## Executing script at 50000000
6782384 bytes read in 504 ms (12.8 MiB/s)
** File not found /boot/dtbs/exynos5422-odroid.dtb **
SCRIPT FAILED: continuing...
starting USB...
USB0:   USB EHCI 1.00
USB1:   Register 2000140 NbrPorts 2
Starting the controller
USB XHCI 1.00
USB2:   Register 2000140 NbrPorts 2
Starting the controller
USB XHCI 1.00
scanning bus 0 for devices... 1 USB Device(s) found
scanning bus 1 for devices... cannot reset port 1!?
2 USB Device(s) found
scanning bus 2 for devices... 2 USB Device(s) found
       scanning usb for storage devices... 1 Storage Device(s) found
       scanning usb for ethernet devices... 1 Ethernet Device(s) found
Waiting for Ethernet connection... done.
BOOTP broadcast 1
BOOTP broadcast 2
DHCP client bound to address 10.0.0.154 (848 ms)
*** ERROR: `serverip' not set
Cannot autoload with TFTPGET
missing environment variable: pxeuuid
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/0A00009A
*** ERROR: `serverip' not set
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/0A00009
*** ERROR: `serverip' not set
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/0A0000
*** ERROR: `serverip' not set
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/0A000
*** ERROR: `serverip' not set
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/0A00
*** ERROR: `serverip' not set
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/0A0
*** ERROR: `serverip' not set
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/0A
*** ERROR: `serverip' not set
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/0
*** ERROR: `serverip' not set
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/default-arm-exynos
*** ERROR: `serverip' not set
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/default-arm
*** ERROR: `serverip' not set
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/default
*** ERROR: `serverip' not set
Config file not found
BOOTP broadcast 1
BOOTP broadcast 2
DHCP client bound to address 10.0.0.154 (567 ms)
*** ERROR: `serverip' not set
Cannot autoload with TFTPGET
BOOTP broadcast 1
DHCP client bound to address 10.0.0.154 (204 ms)
*** ERROR: `serverip' not set
Cannot autoload with TFTPGET
ODROID-XU3 #
----------------------------------------------------------------------------------------------------------------------------------------------
Only after disconnecting and reconnect the power cable it start to
boot again normally. ie cold boot.
----------------------------------------------------------------------------------------------------------------------------------------------
U-Boot 2018.11-rc3-00062-g26cc40d8c4-dirty (Nov 12 2018 - 06:51:53
+0000) for ODROID-XU3/XU4/HC1/HC2

CPU:   Exynos5422 @ 800 MHz
Model: Odroid XU3 based on EXYNOS5422
Board: Odroid XU3 based on EXYNOS5422
Type:  hc1
DRAM:  2 GiB
MMC:   EXYNOS DWMMC: 0, EXYNOS DWMMC: 2
Loading Environment from MMC... Card did not respond to voltage select!
*** Warning - No block device, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   No ethernet found.
Hit any key to stop autoboot:  0
MMC Device 1 not found
no mmc device at slot 1
Card did not respond to voltage select!
switch to partitions #0, OK
mmc2 is current device
Scanning mmc 2:1...
Found U-Boot script /boot/boot.scr
2046 bytes read in 6 ms (333 KiB/s)
## Executing script at 50000000
6782384 bytes read in 504 ms (12.8 MiB/s)
53878 bytes read in 16 ms (3.2 MiB/s)
5664652 bytes read in 420 ms (12.9 MiB/s)
Kernel image @ 0x42000000 [ 0x000000 - 0x677db0 ]
## Flattened Device Tree blob at 43000000
   Booting using the fdt blob at 0x43000000
   Loading Ramdisk to 4fa99000, end 4fffff8c ... OK
   Loading Device Tree to 4fa88000, end 4fa98275 ... OK

Is their any other thing I could try to get this thing working.

Best Regards
-Anand


More information about the U-Boot mailing list