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

Dirk Meul dirk.meul at rwth-aachen.de
Mon Nov 12 18:24:17 UTC 2018


Hi Anand Moon,

with U-Boot 2018.11-rc3-00062-g26cc40d8c4 and booting Fedora 28 Server
I have no problems with a *warm boot* of my Odroid HC2. So I think this
is not a general problem.

My u-boot.bin was created using:
$ ARCH=arm CROSS_COMPILE=arm-linux-gnu- make odroid-xu3_defconfig
$ ARCH=arm CROSS_COMPILE=arm-linux-gnu- make -j $(nproc)
on Fedora 28 Workstation.

BR,
Dirk

Am Montag, den 12.11.2018, 13:06 +0530 schrieb Anand Moon:
> 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