On 27/01/14 23:15, Piotr Wilczek wrote: > This patch adds common board file for Exynos 4 based boards. > > Signed-off-by: Piotr Wilczek <p.wilc...@samsung.com> > Signed-off-by: Kyungmin Park <kyungmin.p...@samsung.com> > --- > arch/arm/dts/exynos4.dtsi | 139 +++++++++++++++++++++++++++ > board/samsung/common/Makefile | 1 + > board/samsung/common/board_exynos4.c | 83 +++++++++++++++++ > include/configs/exynos4-dt.h | 170 > ++++++++++++++++++++++++++++++++++ > 4 files changed, 393 insertions(+) > create mode 100644 arch/arm/dts/exynos4.dtsi > create mode 100644 board/samsung/common/board_exynos4.c > create mode 100644 include/configs/exynos4-dt.h > > diff --git a/arch/arm/dts/exynos4.dtsi b/arch/arm/dts/exynos4.dtsi > new file mode 100644 > index 0000000..38a6919 > --- /dev/null > +++ b/arch/arm/dts/exynos4.dtsi > @@ -0,0 +1,139 @@ > +/* > + * Samsung's Exynos4 SoC common device tree source > + * > + * Copyright (c) 2014 Samsung Electronics Co., Ltd. > + * http://www.samsung.com > + * > + * SPDX-License-Identifier: GPL-2.0+ > + */ > + > +/include/ "skeleton.dtsi" > + > +/ { > + > + serial@13800000 { > + compatible = "samsung,exynos4210-uart"; > + reg = <0x13800000 0x3c>; > + id = <0>; > + }; > + > + serial@13810000 { > + compatible = "samsung,exynos4210-uart"; > + reg = <0x13810000 0x3c>; > + id = <1>; > + }; > + > + serial@13820000 { > + compatible = "samsung,exynos4210-uart"; > + reg = <0x13820000 0x3c>; > + id = <2>; > + }; > + > + serial@13830000 { > + compatible = "samsung,exynos4210-uart"; > + reg = <0x13830000 0x3c>; > + id = <3>; > + }; > + > + serial@13840000 { > + compatible = "samsung,exynos4210-uart"; > + reg = <0x13840000 0x3c>; > + id = <4>; > + }; > + > + i2c@13860000 { > + #address-cells = <1>; > + #size-cells = <0>; > + compatible = "samsung,s3c2440-i2c"; > + interrupts = <0 0 0>; > + }; > + > + i2c@13870000 { > + #address-cells = <1>; > + #size-cells = <0>; > + compatible = "samsung,s3c2440-i2c"; > + interrupts = <1 1 0>; > + }; > + > + i2c@13880000 { > + #address-cells = <1>; > + #size-cells = <0>; > + compatible = "samsung,s3c2440-i2c"; > + interrupts = <2 2 0>; > + }; > + > + i2c@13890000 { > + #address-cells = <1>; > + #size-cells = <0>; > + compatible = "samsung,s3c2440-i2c"; > + interrupts = <3 3 0>; > + }; > + > + i2c@138a0000 { > + #address-cells = <1>; > + #size-cells = <0>; > + compatible = "samsung,s3c2440-i2c"; > + interrupts = <4 4 0>; > + }; > + > + i2c@138b0000 { > + #address-cells = <1>; > + #size-cells = <0>; > + compatible = "samsung,s3c2440-i2c"; > + interrupts = <5 5 0>; > + }; > + > + i2c@138c0000 { > + #address-cells = <1>; > + #size-cells = <0>; > + compatible = "samsung,s3c2440-i2c"; > + interrupts = <6 6 0>; > + }; > + > + i2c@138d0000 { > + #address-cells = <1>; > + #size-cells = <0>; > + compatible = "samsung,s3c2440-i2c"; > + interrupts = <7 7 0>; > + }; > + > + sdhci@12510000 { > + #address-cells = <1>; > + #size-cells = <0>; > + compatible = "samsung,exynos-mmc"; > + reg = <0x12510000 0x1000>; > + interrupts = <0 75 0>; > + }; > + > + sdhci@12520000 { > + #address-cells = <1>; > + #size-cells = <0>; > + compatible = "samsung,exynos-mmc"; > + reg = <0x12520000 0x1000>; > + interrupts = <0 76 0>; > + }; > + > + sdhci@12530000 { > + #address-cells = <1>; > + #size-cells = <0>; > + compatible = "samsung,exynos-mmc"; > + reg = <0x12530000 0x1000>; > + interrupts = <0 77 0>; > + }; > + > + sdhci@12540000 { > + #address-cells = <1>; > + #size-cells = <0>; > + compatible = "samsung,exynos-mmc"; > + reg = <0x12540000 0x1000>; > + interrupts = <0 78 0>; > + }; > + > + gpio: gpio { > + gpio-controller; > + #gpio-cells = <2>; > + > + interrupt-controller; > + #interrupt-cells = <2>; > + }; > +}; > diff --git a/board/samsung/common/Makefile b/board/samsung/common/Makefile > index 7d2bb8c..25f1e40 100644 > --- a/board/samsung/common/Makefile > +++ b/board/samsung/common/Makefile > @@ -12,4 +12,5 @@ obj-$(CONFIG_MISC_COMMON) += misc.o > > ifndef CONFIG_SPL_BUILD > obj-$(CONFIG_BOARD_COMMON) += board.o > +obj-$(CONFIG_BOARD_COMMON_EXYNOS4) += board_exynos4.o > endif > diff --git a/board/samsung/common/board_exynos4.c > b/board/samsung/common/board_exynos4.c > new file mode 100644 > index 0000000..2d313e6 > --- /dev/null > +++ b/board/samsung/common/board_exynos4.c
I don't understand why need exynos4 common board file. There's already exist board.c that is common board file for samsung. > @@ -0,0 +1,83 @@ > +/* > + * (C) Copyright 2014 SAMSUNG Electronics > + * Piotr Wilczek <p.wilc...@samsung.com> > + * > + * SPDX-License-Identifier: GPL-2.0+ > + */ > + > +#include <common.h> > +#include <fdtdec.h> > +#include <asm/io.h> > +#include <asm/arch/board.h> > +#include <asm/arch/cpu.h> > +#include <asm/arch/gpio.h> > +#include <asm/arch/mmc.h> > +#include <asm/arch/pinmux.h> > +#include <asm/arch/power.h> > +#include <power/pmic.h> > + > +DECLARE_GLOBAL_DATA_PTR; > + > +int dram_init(void) > +{ > + int i; > + u32 addr; > + > + for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) { > + addr = CONFIG_SYS_SDRAM_BASE + (i * SDRAM_BANK_SIZE); > + gd->ram_size += get_ram_size((long *)addr, SDRAM_BANK_SIZE); > + } > + return 0; > +} > + > +void dram_init_banksize(void) > +{ > + int i; > + u32 addr, size; > + > + for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) { > + addr = CONFIG_SYS_SDRAM_BASE + (i * SDRAM_BANK_SIZE); > + size = get_ram_size((long *)addr, SDRAM_BANK_SIZE); > + > + gd->bd->bi_dram[i].start = addr; > + gd->bd->bi_dram[i].size = size; > + } > +} > + > +int board_init(void) > +{ > +#ifdef CONFIG_SYS_SPL_ARGS_ADDR > + gd->bd->bi_boot_params = CONFIG_SYS_SPL_ARGS_ADDR; > +#else > + gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100; > +#endif > + > + return exynos_init(); > +} > + > +#ifdef CONFIG_OF_CONTROL > +#ifdef CONFIG_GENERIC_MMC > +int board_mmc_init(bd_t *bis) > +{ > + int ret; > + > + /* mmc initializattion for available channels */ > + ret = exynos_mmc_init(gd->fdt_blob); > + if (ret) > + debug("mmc init failed\n"); > + > + return ret; > +} > +#endif > +#ifdef CONFIG_DISPLAY_BOARDINFO > +int checkboard(void) > +{ > + const char *board_name; > + > + board_name = fdt_getprop(gd->fdt_blob, 0, "model", NULL); > + printf("Board: %s\n", board_name ? board_name : "Unknown board"); > + > + return 0; > +} > +#endif > +#endif > diff --git a/include/configs/exynos4-dt.h b/include/configs/exynos4-dt.h > new file mode 100644 > index 0000000..aa941f3 > --- /dev/null > +++ b/include/configs/exynos4-dt.h > @@ -0,0 +1,170 @@ > +/* > + * Copyright (C) 2014 Samsung Electronics > + * > + * Configuration settings for the SAMSUNG EXYNOS5 board. > + * > + * SPDX-License-Identifier: GPL-2.0+ > + */ > + > +#ifndef __CONFIG_H > +#define __CONFIG_H > + > +/* High Level Configuration Options */ > +#define CONFIG_SAMSUNG /* in a SAMSUNG core */ > +#define CONFIG_S5P /* S5P Family */ > +#define CONFIG_EXYNOS4 /* which is in a Exynos5 Family > */ > +#define CONFIG_TIZEN /* TIZEN lib */ It's a board specific. > + > +#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_COMMON_EXYNOS4 > + > +/* Enable fdt support */ > +#define CONFIG_OF_CONTROL > +#define CONFIG_OF_EMBED > + > +#define CONFIG_SYS_CACHELINE_SIZE 32 > + > +/* input clock of PLL: EXYNOS4 boards have 24MHz input clock */ > +#define CONFIG_SYS_CLK_FREQ 24000000 > + > +#define CONFIG_SETUP_MEMORY_TAGS > +#define CONFIG_CMDLINE_TAG > +#define CONFIG_REVISION_TAG > +#define CONFIG_INITRD_TAG > +#define CONFIG_CMDLINE_EDITING > + > +#include <asm/sizes.h> > +/* Size of malloc() pool */ > +#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + (80 * SZ_1M)) > + > +/* select serial console configuration */ > +#define CONFIG_SERIAL2 ditto. I think you should re-arrange what is common feature (it means soc specific) and what is board specific. It looks confused to me. Please fix it. Thanks, Minkyu Kang. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot