odroid: kconfig: add odroid_defconfig

This config is valid for two devices:
- Odroid X2,
- Odroid U3.

Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Cc: Minkyu Kang <mk7.kang@samsung.com>
Cc: Tom Rini <trini@ti.com>
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
This commit is contained in:
Przemyslaw Marczak 2014-09-01 13:50:53 +02:00 committed by Minkyu Kang
parent a47fa7906c
commit 73eca21128
6 changed files with 387 additions and 0 deletions

View File

@ -18,6 +18,9 @@ config TARGET_ORIGEN
config TARGET_TRATS2
bool "Exynos4412 Trat2 board"
config TARGET_ODROID
bool "Exynos4412 Odroid board"
config TARGET_ARNDALE
bool "Exynos5250 Arndale board"
@ -48,6 +51,7 @@ source "board/samsung/trats/Kconfig"
source "board/samsung/universal_c210/Kconfig"
source "board/samsung/origen/Kconfig"
source "board/samsung/trats2/Kconfig"
source "board/samsung/odroid/Kconfig"
source "board/samsung/arndale/Kconfig"
source "board/samsung/smdk5250/Kconfig"
source "board/samsung/smdk5420/Kconfig"

View File

@ -0,0 +1,15 @@
if TARGET_ODROID
config SYS_BOARD
string
default "odroid"
config SYS_VENDOR
string
default "samsung"
config SYS_CONFIG_NAME
string
default "odroid"
endif

View File

@ -0,0 +1,6 @@
ODROID BOARD
M: Przemyslaw Marczak <p.marczak@samsung.com>
S: Maintained
F: board/samsung/odroid/
F: include/configs/odroid.h
F: configs/odroid_defconfig

3
configs/odroid_defconfig Normal file
View File

@ -0,0 +1,3 @@
CONFIG_ARM=y
CONFIG_ARCH_EXYNOS=y
CONFIG_TARGET_ODROID=y

143
doc/README.odroid Normal file
View File

@ -0,0 +1,143 @@
U-boot for Odroid X2/U3
========================
1. Summary
==========
This is a quick instruction for setup Odroid boards based on Exynos4412.
Board config: odroid_config
2. Supported devices
====================
This U-BOOT config can be used on two boards:
- Odroid U3
- Odroid X2
with CPU Exynos 4412 rev 2.0 and 2GB of RAM
3. Boot sequence
================
iROM->BL1->(BL2 + TrustZone)->U-BOOT
This version of U-BOOT doesn't implement SPL but it is required(BL2)
and can be found in "boot.tar.gz" from here:
http://dev.odroid.com/projects/4412boot/wiki/FrontPage?action=download&value=boot.tar.gz
or here:
http://odroid.in/guides/ubuntu-lfs/boot.tar.gz
4. Boot media layout
====================
The table below shows SD/eMMC cards layout for U-boot.
The block offset is starting from 0 and the block size is 512B.
-------------------------------------
| Binary | Block offset| part type |
| name | SD | eMMC |(eMMC only)|
-------------------------------------
| Bl1 | 1 | 0 | 1 (boot) |
| Bl2 | 31 | 30 | 1 (boot) |
| U-boot | 63 | 62 | 1 (boot) |
| Tzsw | 2111 | 2110 | 1 (boot) |
| Uboot Env | 2500 | 2500 | 0 (user) |
-------------------------------------
5. Prepare the SD boot card - with SD card reader
=================================================
To prepare bootable media you need boot binaries provided by hardkernel.
File "boot.tar.gz" (link in point 3.) contains:
- E4412_S.bl1.HardKernel.bin
- E4412_S.tzsw.signed.bin
- bl2.signed.bin
- sd_fusing.sh
- u-boot.bin
This is all you need to boot this board. But if you want to use your custom
u-boot then you need to change u-boot.bin with your own u-boot binary*
and run the script "sd_fusing.sh" - this script is valid only for SD card.
*note:
The proper binary file of current U-boot is u-boot-dtb.bin.
quick steps for Linux:
- extract boot.tar.gz
- put any SD card into the SD reader
- check the device with "dmesg"
- run ./sd_fusing.sh /dev/sdX - where X is SD card device (but not a partition)
Check if Hardkernel U-boot is booting, and next do the same with your U-boot.
6. Prepare the eMMC boot card
with a eMMC card reader (boot from eMMC card slot)
=====================================================
To boot the device from the eMMC slot you should use a special card reader
which supports eMMC partiion switch. All of the boot binaries are stored
on the eMMC boot partition which is normally hidden.
The "sd_fusing.sh" script can be used after updating offsets of binaries
according to the table from point 4. Be sure that you are working on the right
eMMC partition - its size is usually very small, about 1-4 MiB.
7. Prepare the eMMC boot card
with a SD card reader (boot from SD card slot)
=================================================
If you have an eMMC->microSD adapter you can prepare the card as in point 5.
But then the device can boot only from the SD card slot.
8. Prepare the boot media using Hardkernel U-boot
=================================================
You can update the U-boot to the custom one if you have an working bootloader
delivered with the board on a eMMC/SD card. Then follow the steps:
- install the android fastboot tool
- connect a micro usb cable to the board
- on the U-boot prompt, run command: fastboot (as a root)
- on the host, run command: "fastboot flash bootloader u-boot-dtb.bin"
- the custom U-boot should start after the board resets.
9. Partition layout
====================
Default U-boot environment is setup for fixed partiion layout.
Partition table: MSDOS. Disk layout and files as listed in the table below.
----- ------ ------ ------ -------- ---------------------------------
| Num | Name | FS | Size | Offset | Reguired files |
| | | Type | MiB | MiB | |
----- ------ ------ ------ -------- ---------------------------------
| 1 | BOOT | fat | 100 | 2 | kernel, fdt** |
| 2 | ROOT | ext4 | - | | any Linux system |
----- ------ ------ ------ -------- ---------------------------------
**note:
Supported fdt files are:
- exynos4412-odroidx2.dtb
- exynos4412-odroidu3.dtb
Supported kernel files are:
- Image.itb
- zImage
- uImage
The default environmental variable "dfu_alt_info" is set* for above layout.
Each partition size is just an example, dfu_alt_info tries init two partitions.
The size of each is not important.
*note:
$dfu_alt_info is set on a boot time and it is concatenated using two variables:
- $dfu_alt_boot(set dynamically)
- $dfu_alt_system(from current env).
To add any changes to dfu_alt_info - please modify $dfu_alt_system only.
Changes are visible after board reset.
10. The environment and booting the kernel
==========================================
There are three macros defined in config for various boot options:
Two for both, kernel with device tree support and also without it:
- boot_uimg - load uImage
- boot_zimg - load zImage
If proper fdt file exists then it will be automatically loaded,
so for old kernel types, please remove fdt file from boot partition.
The third boot option for multi image support (more info: doc/uImage.FIT/)
- boot_fit - for binary file: "Image.itb"
Default boot command: "autoboot"
And the boot sequence is:
- boot_fit - if "Image.itb" exists
- boot_zimg - if "zImage" exists
- boot_uimg - if "uImage" exists

216
include/configs/odroid.h Normal file
View File

@ -0,0 +1,216 @@
/*
* Copyright (C) 2014 Samsung Electronics
* Sanghee Kim <sh0130.kim@samsung.com>
* Piotr Wilczek <p.wilczek@samsung.com>
* Przemyslaw Marczak <p.marczak@samsung.com>
*
* Configuation settings for the Odroid-U3 (EXYNOS4412) board.
*
* SPDX-License-Identifier: GPL-2.0+
*/
#ifndef __CONFIG_ODROID_U3_H
#define __CONFIG_ODROID_U3_H
#include <configs/exynos4-dt.h>
#define CONFIG_SYS_PROMPT "Odroid # " /* Monitor Command Prompt */
#undef CONFIG_DEFAULT_DEVICE_TREE
#define CONFIG_DEFAULT_DEVICE_TREE exynos4412-odroid
#define CONFIG_SYS_L2CACHE_OFF
#ifndef CONFIG_SYS_L2CACHE_OFF
#define CONFIG_SYS_L2_PL310
#define CONFIG_SYS_PL310_BASE 0x10502000
#endif
#define CONFIG_MACH_TYPE 4289
#define CONFIG_NR_DRAM_BANKS 8
#define CONFIG_SYS_SDRAM_BASE 0x40000000
#define SDRAM_BANK_SIZE (256 << 20) /* 256 MB */
#define PHYS_SDRAM_1 CONFIG_SYS_SDRAM_BASE
/* memtest works on */
#define CONFIG_SYS_MEMTEST_START CONFIG_SYS_SDRAM_BASE
#define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_SDRAM_BASE + 0x5E00000)
#define CONFIG_SYS_LOAD_ADDR (CONFIG_SYS_SDRAM_BASE + 0x3E00000)
#define CONFIG_SYS_TEXT_BASE 0x43e00000
#include <linux/sizes.h>
/* Size of malloc() pool */
#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + (80 * SZ_1M))
/* select serial console configuration */
#define CONFIG_SERIAL1
#define CONFIG_BAUDRATE 115200
/* Console configuration */
#define CONFIG_SYS_CONSOLE_INFO_QUIET
#define CONFIG_SYS_CONSOLE_IS_IN_ENV
#define CONFIG_CMD_BOOTZ
#define CONFIG_FIT
#define CONFIG_FIT_VERBOSE
#define CONFIG_BOOTARGS "Please use defined boot"
#define CONFIG_BOOTCOMMAND "run autoboot"
#define CONFIG_DEFAULT_CONSOLE "console=ttySAC1,115200n8\0"
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_LOAD_ADDR \
- GENERATED_GBL_DATA_SIZE)
#define CONFIG_SYS_MEM_TOP_HIDE (SZ_1M) /* ram console */
#define CONFIG_SYS_MONITOR_BASE 0x00000000
#define CONFIG_ENV_IS_IN_MMC
#define CONFIG_SYS_MMC_ENV_DEV CONFIG_MMC_DEFAULT_DEV
#define CONFIG_ENV_SIZE 4096
#define CONFIG_ENV_OFFSET (SZ_1K * 1280) /* 1.25 MiB offset */
#define CONFIG_ENV_OVERWRITE
/* Partitions name */
#define PARTS_BOOT "boot"
#define PARTS_ROOT "platform"
#define CONFIG_DFU_ALT \
"uImage fat 0 1;" \
"zImage fat 0 1;" \
"Image.itb fat 0 1;" \
"uInitrd fat 0 1;" \
"exynos4412-odroidu3.dtb fat 0 1;" \
"exynos4412-odroidx2.dtb fat 0 1;" \
""PARTS_BOOT" part 0 1;" \
""PARTS_ROOT" part 0 2\0" \
#define CONFIG_SET_DFU_ALT_INFO
#define CONFIG_SET_DFU_ALT_BUF_LEN (SZ_1K)
#define CONFIG_DFU_ALT_BOOT_EMMC \
"u-boot raw 0x3e 0x800 mmcpart 1;" \
"bl1 raw 0x0 0x1e mmcpart 1;" \
"bl2 raw 0x1e 0x1d mmcpart 1;" \
"tzsw raw 0x83e 0x138 mmcpart 1\0"
#define CONFIG_DFU_ALT_BOOT_SD \
"u-boot raw 0x3f 0x800;" \
"bl1 raw 0x1 0x1e;" \
"bl2 raw 0x1f 0x1d;" \
"tzsw raw 0x83f 0x138\0"
/*
* Bootable media layout:
* dev: SD eMMC(part boot)
* BL1 1 0
* BL2 31 30
* UBOOT 63 62
* TZSW 2111 2110
* ENV 2560 2560(part user)
*
* MBR Primary partiions:
* Num Name Size Offset
* 1. BOOT: 100MiB 2MiB
* 2. ROOT: -
*/
#define CONFIG_EXTRA_ENV_SETTINGS \
"loadkernel=fatload mmc ${mmcbootdev}:${mmcbootpart} ${kerneladdr} " \
"${kernelname}\0" \
"loadinitrd=fatload mmc ${mmcbootdev}:${mmcbootpart} ${initrdaddr} " \
"${initrdname}\0" \
"loaddtb=fatload mmc ${mmcbootdev}:${mmcbootpart} ${fdtaddr} " \
"${fdtfile}\0" \
"check_ramdisk=" \
"if run loadinitrd; then " \
"setenv initrd_addr ${initrdaddr};" \
"else " \
"setenv initrd_addr -;" \
"fi;\0" \
"check_dtb=" \
"if run loaddtb; then " \
"setenv fdt_addr ${fdtaddr};" \
"else " \
"setenv fdt_addr;" \
"fi;\0" \
"kernel_args=" \
"setenv bootargs root=/dev/mmcblk${mmcrootdev}p${mmcrootpart}" \
" rootwait ${console} ${opts}\0" \
"boot_fit=" \
"setenv kerneladdr 0x42000000;" \
"setenv kernelname Image.itb;" \
"run loadkernel;" \
"run kernel_args;" \
"bootm ${kerneladdr}#${boardname}\0" \
"boot_uimg=" \
"setenv kerneladdr 0x40007FC0;" \
"setenv kernelname uImage;" \
"run check_dtb;" \
"run check_ramdisk;" \
"run loadkernel;" \
"run kernel_args;" \
"bootm ${kerneladdr} ${initrd_addr} ${fdt_addr};\0" \
"boot_zimg=" \
"setenv kerneladdr 0x40007FC0;" \
"setenv kernelname zImage;" \
"run check_dtb;" \
"run check_ramdisk;" \
"run loadkernel;" \
"run kernel_args;" \
"bootz ${kerneladdr} ${initrd_addr} ${fdt_addr};\0" \
"autoboot=" \
"if test -e mmc 0 Image.itb; then; " \
"run boot_fit;" \
"elif test -e mmc 0 zImage; then; " \
"run boot_zimg;" \
"elif test -e mmc 0 uImage; then; " \
"run boot_uimg;" \
"fi;\0" \
"console=" CONFIG_DEFAULT_CONSOLE \
"mmcbootdev=0\0" \
"mmcbootpart=1\0" \
"mmcrootdev=0\0" \
"mmcrootpart=2\0" \
"bootdelay=0\0" \
"dfu_alt_system="CONFIG_DFU_ALT \
"dfu_alt_info=Please reset the board\0" \
"consoleon=set console console=ttySAC1,115200n8; save; reset\0" \
"consoleoff=set console console=ram; save; reset\0" \
"initrdname=uInitrd\0" \
"initrdaddr=42000000\0" \
"fdtaddr=40800000\0"
/* I2C */
#define CONFIG_CMD_I2C
#define CONFIG_SYS_I2C
#define CONFIG_SYS_I2C_S3C24X0
#define CONFIG_SYS_I2C_S3C24X0_SPEED 100000
#define CONFIG_SYS_I2C_S3C24X0_SLAVE 0
#define CONFIG_MAX_I2C_NUM 8
#define CONFIG_SYS_I2C_INIT_BOARD
/* POWER */
#define CONFIG_POWER
#define CONFIG_POWER_I2C
#define CONFIG_POWER_MAX77686
/* GPT */
#define CONFIG_RANDOM_UUID
/* Security subsystem - enable hw_rand() */
#define CONFIG_EXYNOS_ACE_SHA
#define CONFIG_LIB_HW_RAND
#define CONFIG_CMD_GPIO
/*
* Supported Odroid boards: X3, U3
* TODO: Add Odroid X support
*/
#define CONFIG_MISC_COMMON
#define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
#define CONFIG_BOARD_TYPES
#define CONFIG_MISC_INIT_R
#undef CONFIG_REVISION_TAG
#endif /* __CONFIG_H */