
Dear Minkyu Kang,
-----Original Message----- From: Minkyu Kang [mailto:mk7.kang@samsung.com] Sent: Friday, February 07, 2014 8:53 AM To: Piotr Wilczek Cc: u-boot@lists.denx.de; Kyungmin Park; Lukasz Majewski; Jaehoon Chung; Inha Song; Chanho Park Subject: Re: [PATCH 5/9] arm:exynos: add common board file for exynos 4
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.
Because in the board.c file, both common and board specific functions are added. Max 77686, eth, power, board late initialization functions are board specific. If they are removed, I will be able to use the board.c file.
@@ -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.
Ok.
+#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.
Ok.
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.
Best regards, Piotr Wilczek