
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.wilczek@samsung.com Signed-off-by: Kyungmin Park kyungmin.park@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.wilczek@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.