[U-Boot] [PATCH V3 09/12] board:origen: Enable device tree on Origen
Minkyu Kang
mk7.kang at samsung.com
Wed Feb 26 03:47:43 CET 2014
On 25/02/14 23:33, Piotr Wilczek wrote:
> This patch enables to run Origen board on device tree.
>
> Uart, DRAM and MMC init functions are removed as their
> generic replacements form the common board file are used.
>
> The config file is modified to contain only board specific options.
>
> Signed-off-by: Piotr Wilczek <p.wilczek at samsung.com>
> Signed-off-by: Kyungmin Park <kyungmin.park at samsung.com>
> Cc: Chander Kashyap <k.chander at samsung.com>
> Cc: Minkyu Kang <mk7.kang at samsung.com>
> ---
> Changes for v3:
> - dts file moved to arch/arm/dts
>
> Changes for v2:
> - no changes
>
> arch/arm/dts/Makefile | 2 +
> arch/arm/dts/exynos4210-origen.dts | 45 ++++++++++++++
> board/samsung/origen/origen.c | 112 +++--------------------------------
> include/configs/origen.h | 117 +++++++++++++------------------------
> 4 files changed, 96 insertions(+), 180 deletions(-)
> create mode 100644 arch/arm/dts/exynos4210-origen.dts
>
> diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
> index 2658911..7abca75 100644
> --- a/arch/arm/dts/Makefile
> +++ b/arch/arm/dts/Makefile
> @@ -1,3 +1,5 @@
> +dtb-$(CONFIG_EXYNOS4) += exynos4210-origen.dtb
> +
> dtb-$(CONFIG_EXYNOS5) += exynos5250-arndale.dtb \
> exynos5250-snow.dtb \
> exynos5250-smdk5250.dtb \
> diff --git a/arch/arm/dts/exynos4210-origen.dts b/arch/arm/dts/exynos4210-origen.dts
> new file mode 100644
> index 0000000..5c9d2ae
> --- /dev/null
> +++ b/arch/arm/dts/exynos4210-origen.dts
> @@ -0,0 +1,45 @@
> +/*
> + * Samsung's Exynos4210 based Origen board device tree source
> + *
> + * Copyright (c) 2014 Samsung Electronics Co., Ltd.
> + * http://www.samsung.com
> + *
> + * SPDX-License-Identifier: GPL-2.0+
> + */
> +
> +/dts-v1/;
> +/include/ "skeleton.dtsi"
> +/include/ "exynos4.dtsi"
> +
> +/ {
> + model = "Insignal Origen evaluation board based on Exynos4210";
> + compatible = "insignal,origen", "samsung,exynos4210";
> +
> + chosen {
> + bootargs ="";
> + };
> +
> + aliases {
> + serial0 = "/serial at 13800000";
> + console = "/serial at 13820000";
> + mmc2 = "sdhci at 12530000";
> + };
> +
> + sdhci at 12510000 {
> + status = "disabled";
> + };
> +
> + sdhci at 12520000 {
> + status = "disabled";
> + };
> +
> + sdhci at 12530000 {
> + samsung,bus-width = <4>;
> + samsung,timing = <1 2 3>;
> + cd-gpios = <&gpio 0x2008002 0>;
> + };
> +
> + sdhci at 12540000 {
> + status = "disabled";
> + };
> +};
> \ No newline at end of file
> diff --git a/board/samsung/origen/origen.c b/board/samsung/origen/origen.c
> index 15f77ca..d502f02 100644
> --- a/board/samsung/origen/origen.c
> +++ b/board/samsung/origen/origen.c
> @@ -11,129 +11,35 @@
> #include <asm/arch/mmc.h>
> #include <asm/arch/periph.h>
> #include <asm/arch/pinmux.h>
> +#include <usb.h>
>
> DECLARE_GLOBAL_DATA_PTR;
> -struct exynos4_gpio_part1 *gpio1;
> -struct exynos4_gpio_part2 *gpio2;
>
> -int board_init(void)
> +u32 get_board_rev(void)
> {
> - gpio1 = (struct exynos4_gpio_part1 *) EXYNOS4_GPIO_PART1_BASE;
> - gpio2 = (struct exynos4_gpio_part2 *) EXYNOS4_GPIO_PART2_BASE;
> -
> - gd->bd->bi_boot_params = (PHYS_SDRAM_1 + 0x100UL);
> return 0;
> }
>
> -static int board_uart_init(void)
> +int exynos_init(void)
> {
> - int err;
> -
> - err = exynos_pinmux_config(PERIPH_ID_UART0, PINMUX_FLAG_NONE);
> - if (err) {
> - debug("UART0 not configured\n");
> - return err;
> - }
> -
> - err = exynos_pinmux_config(PERIPH_ID_UART1, PINMUX_FLAG_NONE);
> - if (err) {
> - debug("UART1 not configured\n");
> - return err;
> - }
> -
> - err = exynos_pinmux_config(PERIPH_ID_UART2, PINMUX_FLAG_NONE);
> - if (err) {
> - debug("UART2 not configured\n");
> - return err;
> - }
> -
> - err = exynos_pinmux_config(PERIPH_ID_UART3, PINMUX_FLAG_NONE);
> - if (err) {
> - debug("UART3 not configured\n");
> - return err;
> - }
> -
> return 0;
> }
>
> -#ifdef CONFIG_BOARD_EARLY_INIT_F
> -int board_early_init_f(void)
> -{
> - int err;
> - err = board_uart_init();
> - if (err) {
> - debug("UART init failed\n");
> - return err;
> - }
> - return err;
> -}
> -#endif
> -
> -int dram_init(void)
> +int board_usb_init(int index, enum usb_init_type init)
> {
> - gd->ram_size = get_ram_size((long *)PHYS_SDRAM_1, PHYS_SDRAM_1_SIZE)
> - + get_ram_size((long *)PHYS_SDRAM_2, PHYS_SDRAM_2_SIZE)
> - + get_ram_size((long *)PHYS_SDRAM_3, PHYS_SDRAM_3_SIZE)
> - + get_ram_size((long *)PHYS_SDRAM_4, PHYS_SDRAM_4_SIZE);
> -
> return 0;
> }
>
> -void dram_init_banksize(void)
> -{
> - gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
> - gd->bd->bi_dram[0].size = get_ram_size((long *)PHYS_SDRAM_1, \
> - PHYS_SDRAM_1_SIZE);
> - gd->bd->bi_dram[1].start = PHYS_SDRAM_2;
> - gd->bd->bi_dram[1].size = get_ram_size((long *)PHYS_SDRAM_2, \
> - PHYS_SDRAM_2_SIZE);
> - gd->bd->bi_dram[2].start = PHYS_SDRAM_3;
> - gd->bd->bi_dram[2].size = get_ram_size((long *)PHYS_SDRAM_3, \
> - PHYS_SDRAM_3_SIZE);
> - gd->bd->bi_dram[3].start = PHYS_SDRAM_4;
> - gd->bd->bi_dram[3].size = get_ram_size((long *)PHYS_SDRAM_4, \
> - PHYS_SDRAM_4_SIZE);
> -}
> -
> -#ifdef CONFIG_DISPLAY_BOARDINFO
> -int checkboard(void)
> +#ifdef CONFIG_USB_CABLE_CHECK
> +int usb_cable_connected(void)
> {
> - printf("\nBoard: ORIGEN\n");
> return 0;
> }
> #endif
>
> -#ifdef CONFIG_GENERIC_MMC
> -int board_mmc_init(bd_t *bis)
> +#ifdef CONFIG_BOARD_EARLY_INIT_F
> +int exynos_early_init_f(void)
> {
> - int i, err;
> -
> - /*
> - * MMC2 SD card GPIO:
> - *
> - * GPK2[0] SD_2_CLK(2)
> - * GPK2[1] SD_2_CMD(2)
> - * GPK2[2] SD_2_CDn
> - * GPK2[3:6] SD_2_DATA[0:3](2)
> - */
> - for (i = 0; i < 7; i++) {
> - /* GPK2[0:6] special function 2 */
> - s5p_gpio_cfg_pin(&gpio2->k2, i, GPIO_FUNC(0x2));
> -
> - /* GPK2[0:6] drv 4x */
> - s5p_gpio_set_drv(&gpio2->k2, i, GPIO_DRV_4X);
> -
> - /* GPK2[0:1] pull disable */
> - if (i == 0 || i == 1) {
> - s5p_gpio_set_pull(&gpio2->k2, i, GPIO_PULL_NONE);
> - continue;
> - }
> -
> - /* GPK2[2:6] pull up */
> - s5p_gpio_set_pull(&gpio2->k2, i, GPIO_PULL_UP);
> - }
> -
> - err = s5p_mmc_init(2, 4);
> - return err;
> + return 0;
> }
> #endif
> diff --git a/include/configs/origen.h b/include/configs/origen.h
> index f46b833..2c973cb 100644
> --- a/include/configs/origen.h
> +++ b/include/configs/origen.h
> @@ -6,115 +6,79 @@
> * SPDX-License-Identifier: GPL-2.0+
> */
>
> -#ifndef __CONFIG_H
> -#define __CONFIG_H
> +#ifndef __CONFIG_ORIGEN_H
> +#define __CONFIG_ORIGEN_H
> +
> +#include <configs/exynos4-dt.h>
> +
> +#define CONFIG_SYS_PROMPT "ORIGEN # "
> +
> +#undef CONFIG_DEFAULT_DEVICE_TREE
> +#define CONFIG_DEFAULT_DEVICE_TREE exynos4210-origen
>
> /* High Level Configuration Options */
> -#define CONFIG_SAMSUNG 1 /* SAMSUNG core */
> -#define CONFIG_S5P 1 /* S5P Family */
> #define CONFIG_EXYNOS4210 1 /* which is a EXYNOS4210 SoC */
> #define CONFIG_ORIGEN 1 /* working with ORIGEN*/
>
> -#include <asm/arch/cpu.h> /* get chip and board defs */
> -
> -#define CONFIG_ARCH_CPU_INIT
> -#define CONFIG_DISPLAY_CPUINFO
> -#define CONFIG_DISPLAY_BOARDINFO
> -#define CONFIG_BOARD_EARLY_INIT_F
> -
> #define CONFIG_SYS_DCACHE_OFF 1
>
> +/* ORIGEN has 4 bank of DRAM */
> +#define CONFIG_NR_DRAM_BANKS 4
> #define CONFIG_SYS_SDRAM_BASE 0x40000000
> -#define CONFIG_SYS_TEXT_BASE 0x43E00000
> +#define PHYS_SDRAM_1 CONFIG_SYS_SDRAM_BASE
> +#define SDRAM_BANK_SIZE (256 << 20) /* 256 MB */
>
> -/* input clock of PLL: ORIGEN has 24MHz input clock */
> -#define CONFIG_SYS_CLK_FREQ 24000000
> +/* memtest works on */
> +#define CONFIG_SYS_MEMTEST_START CONFIG_SYS_SDRAM_BASE
> +#define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_SDRAM_BASE + 0x6000000)
> +#define CONFIG_SYS_LOAD_ADDR (CONFIG_SYS_SDRAM_BASE + 0x3E00000)
>
> -#define CONFIG_SETUP_MEMORY_TAGS
> -#define CONFIG_CMDLINE_TAG
> -#define CONFIG_INITRD_TAG
> -#define CONFIG_CMDLINE_EDITING
> +#define CONFIG_SYS_TEXT_BASE 0x43E00000
>
> #define CONFIG_MACH_TYPE MACH_TYPE_ORIGEN
>
> -/* Power Down Modes */
> -#define S5P_CHECK_SLEEP 0x00000BAD
> -#define S5P_CHECK_DIDLE 0xBAD00000
> -#define S5P_CHECK_LPA 0xABAD0000
> -
> /* Size of malloc() pool */
> -#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + (1 << 20))
> +#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + (80 * SZ_1M))
>
> /* select serial console configuration */
> -#define CONFIG_SERIAL2 1 /* use SERIAL 2 */
> +#define CONFIG_SERIAL2
> #define CONFIG_BAUDRATE 115200
> -#define EXYNOS4_DEFAULT_UART_OFFSET 0x020000
>
> -#define CONFIG_SKIP_LOWLEVEL_INIT
> +/* Console configuration */
> +#define CONFIG_SYS_CONSOLE_INFO_QUIET
> +#define CONFIG_SYS_CONSOLE_IS_IN_ENV
> +
> +#define CONFIG_BOOTARGS "Please use defined boot"
> +#define CONFIG_BOOTCOMMAND "run mmcboot"
> +#define CONFIG_DEFAULT_CONSOLE "console=ttySAC1,115200n8\0"
>
> -/* SD/MMC configuration */
> -#define CONFIG_GENERIC_MMC
> -#define CONFIG_MMC
> -#define CONFIG_SDHCI
> -#define CONFIG_S5P_SDHCI
> +#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_LOAD_ADDR \
> + - GENERATED_GBL_DATA_SIZE)
>
> -/* PWM */
> -#define CONFIG_PWM 1
> +#define CONFIG_SYS_MEM_TOP_HIDE (1 << 20) /* ram console */
>
> -/* allow to overwrite serial and ethaddr */
> -#define CONFIG_ENV_OVERWRITE
> +#define CONFIG_SYS_MONITOR_BASE 0x00000000
>
> -/* Command definition*/
> -#include <config_cmd_default.h>
> +/* Power Down Modes */
> +#define S5P_CHECK_SLEEP 0x00000BAD
> +#define S5P_CHECK_DIDLE 0xBAD00000
> +#define S5P_CHECK_LPA 0xABAD0000
>
> #undef CONFIG_CMD_PING
> #define CONFIG_CMD_ELF
> #define CONFIG_CMD_DHCP
> -#define CONFIG_CMD_MMC
> -#define CONFIG_CMD_FAT
> #undef CONFIG_CMD_NET
> #undef CONFIG_CMD_NFS
>
> -#define CONFIG_BOOTDELAY 3
> -#define CONFIG_ZERO_BOOTDELAY_CHECK
> /* MMC SPL */
> #define CONFIG_SPL
> #define COPY_BL2_FNPTR_ADDR 0x02020030
>
> #define CONFIG_SPL_TEXT_BASE 0x02021410
>
> +#undef CONFIG_BOOTCOMMAND
> #define CONFIG_BOOTCOMMAND "fatload mmc 0 40007000 uImage; bootm 40007000"
>
> -/* Miscellaneous configurable options */
> -#define CONFIG_SYS_LONGHELP /* undef to save memory */
> -#define CONFIG_SYS_HUSH_PARSER /* use "hush" command parser */
> -#define CONFIG_SYS_PROMPT "ORIGEN # "
> -#define CONFIG_SYS_CBSIZE 256 /* Console I/O Buffer Size*/
> -#define CONFIG_SYS_PBSIZE 384 /* Print Buffer Size */
> -#define CONFIG_SYS_MAXARGS 16 /* max number of command args */
> -#define CONFIG_DEFAULT_CONSOLE "console=ttySAC2,115200n8\0"
> -/* Boot Argument Buffer Size */
> -#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE
> -/* memtest works on */
> -#define CONFIG_SYS_MEMTEST_START CONFIG_SYS_SDRAM_BASE
> -#define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_SDRAM_BASE + 0x6000000)
> -#define CONFIG_SYS_LOAD_ADDR (CONFIG_SYS_SDRAM_BASE + 0x3E00000)
> -
> -/* ORIGEN has 4 bank of DRAM */
> -#define CONFIG_NR_DRAM_BANKS 4
> -#define SDRAM_BANK_SIZE (256UL << 20UL) /* 256 MB */
> -#define PHYS_SDRAM_1 CONFIG_SYS_SDRAM_BASE
> -#define PHYS_SDRAM_1_SIZE SDRAM_BANK_SIZE
> -#define PHYS_SDRAM_2 (CONFIG_SYS_SDRAM_BASE + SDRAM_BANK_SIZE)
> -#define PHYS_SDRAM_2_SIZE SDRAM_BANK_SIZE
> -#define PHYS_SDRAM_3 (CONFIG_SYS_SDRAM_BASE + (2 * SDRAM_BANK_SIZE))
> -#define PHYS_SDRAM_3_SIZE SDRAM_BANK_SIZE
> -#define PHYS_SDRAM_4 (CONFIG_SYS_SDRAM_BASE + (3 * SDRAM_BANK_SIZE))
> -#define PHYS_SDRAM_4_SIZE SDRAM_BANK_SIZE
> -
> -/* FLASH and environment organization */
> -#define CONFIG_SYS_NO_FLASH 1
> -#undef CONFIG_CMD_IMLS
> #define CONFIG_IDENT_STRING " for ORIGEN"
>
> #define CONFIG_CLK_1000_400_200
> @@ -122,17 +86,17 @@
> /* MIU (Memory Interleaving Unit) */
> #define CONFIG_MIU_2BIT_21_7_INTERLEAVED
>
> -#define CONFIG_ENV_IS_IN_MMC 1
> -#define CONFIG_SYS_MMC_ENV_DEV 0
> +#undef CONFIG_ENV_SIZE
Sorry, I didn't catch it at v2 patch.
It's better define each boards than undef.
> #define CONFIG_ENV_SIZE (16 << 10) /* 16 KB */
> #define RESERVE_BLOCK_SIZE (512)
> #define BL1_SIZE (16 << 10) /*16 K reserved for BL1*/
> +#undef CONFIG_ENV_OFFSET
ditto.
> #define CONFIG_ENV_OFFSET (RESERVE_BLOCK_SIZE + BL1_SIZE)
> -#define CONFIG_DOS_PARTITION 1
>
> #define CONFIG_SPL_LDSCRIPT "board/samsung/common/exynos-uboot-spl.lds"
> #define CONFIG_SPL_MAX_FOOTPRINT (14 * 1024)
>
> +#undef CONFIG_SYS_INIT_SP_ADDR
ditto.
> #define CONFIG_SYS_INIT_SP_ADDR 0x02040000
>
> /* U-boot copy size from boot Media to DRAM.*/
> @@ -140,7 +104,6 @@
> #define BL2_START_OFFSET ((CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE)/512)
> #define BL2_SIZE_BLOC_COUNT (COPY_BL2_SIZE/512)
>
> -/* Enable devicetree support */
> -#define CONFIG_OF_LIBFDT
> +#undef CONFIG_CMD_I2C
ditto.
Thanks,
Minkyu Kang.
More information about the U-Boot
mailing list