[U-Boot] [PATCH 5/9] arm:exynos: add common board file for exynos 4

Piotr Wilczek p.wilczek at samsung.com
Fri Feb 7 09:40:22 CET 2014


Dear Minkyu Kang,

> -----Original Message-----
> From: Minkyu Kang [mailto:mk7.kang at samsung.com]
> Sent: Friday, February 07, 2014 8:53 AM
> To: Piotr Wilczek
> Cc: u-boot at 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 at samsung.com>
> > Signed-off-by: Kyungmin Park <kyungmin.park at 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 at 13800000 {
> > +		compatible = "samsung,exynos4210-uart";
> > +		reg = <0x13800000 0x3c>;
> > +		id = <0>;
> > +	};
> > +
> > +	serial at 13810000 {
> > +		compatible = "samsung,exynos4210-uart";
> > +		reg = <0x13810000 0x3c>;
> > +		id = <1>;
> > +	};
> > +
> > +	serial at 13820000 {
> > +		compatible = "samsung,exynos4210-uart";
> > +		reg = <0x13820000 0x3c>;
> > +		id = <2>;
> > +	};
> > +
> > +	serial at 13830000 {
> > +		compatible = "samsung,exynos4210-uart";
> > +		reg = <0x13830000 0x3c>;
> > +		id = <3>;
> > +	};
> > +
> > +	serial at 13840000 {
> > +		compatible = "samsung,exynos4210-uart";
> > +		reg = <0x13840000 0x3c>;
> > +		id = <4>;
> > +	};
> > +
> > +	i2c at 13860000 {
> > +		#address-cells = <1>;
> > +		#size-cells = <0>;
> > +		compatible = "samsung,s3c2440-i2c";
> > +		interrupts = <0 0 0>;
> > +	};
> > +
> > +	i2c at 13870000 {
> > +		#address-cells = <1>;
> > +		#size-cells = <0>;
> > +		compatible = "samsung,s3c2440-i2c";
> > +		interrupts = <1 1 0>;
> > +	};
> > +
> > +	i2c at 13880000 {
> > +		#address-cells = <1>;
> > +		#size-cells = <0>;
> > +		compatible = "samsung,s3c2440-i2c";
> > +		interrupts = <2 2 0>;
> > +	};
> > +
> > +	i2c at 13890000 {
> > +		#address-cells = <1>;
> > +		#size-cells = <0>;
> > +		compatible = "samsung,s3c2440-i2c";
> > +		interrupts = <3 3 0>;
> > +	};
> > +
> > +	i2c at 138a0000 {
> > +		#address-cells = <1>;
> > +		#size-cells = <0>;
> > +		compatible = "samsung,s3c2440-i2c";
> > +		interrupts = <4 4 0>;
> > +	};
> > +
> > +	i2c at 138b0000 {
> > +		#address-cells = <1>;
> > +		#size-cells = <0>;
> > +		compatible = "samsung,s3c2440-i2c";
> > +		interrupts = <5 5 0>;
> > +	};
> > +
> > +	i2c at 138c0000 {
> > +		#address-cells = <1>;
> > +		#size-cells = <0>;
> > +		compatible = "samsung,s3c2440-i2c";
> > +		interrupts = <6 6 0>;
> > +	};
> > +
> > +	i2c at 138d0000 {
> > +		#address-cells = <1>;
> > +		#size-cells = <0>;
> > +		compatible = "samsung,s3c2440-i2c";
> > +		interrupts = <7 7 0>;
> > +	};
> > +
> > +	sdhci at 12510000 {
> > +		#address-cells = <1>;
> > +		#size-cells = <0>;
> > +		compatible = "samsung,exynos-mmc";
> > +		reg = <0x12510000 0x1000>;
> > +		interrupts = <0 75 0>;
> > +	};
> > +
> > +	sdhci at 12520000 {
> > +		#address-cells = <1>;
> > +		#size-cells = <0>;
> > +		compatible = "samsung,exynos-mmc";
> > +		reg = <0x12520000 0x1000>;
> > +		interrupts = <0 76 0>;
> > +	};
> > +
> > +	sdhci at 12530000 {
> > +		#address-cells = <1>;
> > +		#size-cells = <0>;
> > +		compatible = "samsung,exynos-mmc";
> > +		reg = <0x12530000 0x1000>;
> > +		interrupts = <0 77 0>;
> > +	};
> > +
> > +	sdhci at 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 at 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





More information about the U-Boot mailing list