Message ID | 1374756419-7071-2-git-send-email-chander.kashyap@linaro.org |
---|---|
State | Changes Requested |
Delegated to: | Minkyu Kang |
Headers | show |
On 25/07/13 21:46, Chander Kashyap wrote: > Arndale board is based on samsung's exynos5250 soc. > > Signed-off-by: Inderpal Singh <inderpal.singh@linaro.org> > Signed-off-by: Chander Kashyap <chander.kashyap@linaro.org> > --- > MAINTAINERS | 4 + > board/samsung/arndale/Makefile | 50 ++++++ > board/samsung/arndale/arndale.c | 102 +++++++++++ > board/samsung/arndale/arndale_spl.c | 66 ++++++++ > board/samsung/dts/exynos5250-arndale.dts | 23 +++ > boards.cfg | 1 + > include/configs/arndale.h | 271 ++++++++++++++++++++++++++++++ > 7 files changed, 517 insertions(+) > create mode 100644 board/samsung/arndale/Makefile > create mode 100644 board/samsung/arndale/arndale.c > create mode 100644 board/samsung/arndale/arndale_spl.c > create mode 100644 board/samsung/dts/exynos5250-arndale.dts > create mode 100644 include/configs/arndale.h > > diff --git a/MAINTAINERS b/MAINTAINERS > index 081cf96..bf489d4 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -747,6 +747,10 @@ Chander Kashyap <k.chander@samsung.com> > SMDKV310 ARM ARMV7 (EXYNOS4210 SoC) > SMDK5250 ARM ARMV7 (EXYNOS5250 SoC) > > +Inderpal Singh <inderpal.singh@linaro.org> please sort the list by last name. > + > + Arndale ARM ARMV7 (EXYNOS5250 SoC) > + > Lukasz Majewski <l.majewski@samsung.com> > > trats ARM ARMV7 (EXYNOS4210 SoC) > diff --git a/board/samsung/arndale/Makefile b/board/samsung/arndale/Makefile > new file mode 100644 > index 0000000..5786774 > --- /dev/null > +++ b/board/samsung/arndale/Makefile > @@ -0,0 +1,50 @@ > +# > +# Copyright (C) 2013 Samsung Electronics > +# > +# See file CREDITS for list of people who contributed to this > +# project. > +# > +# This program is free software; you can redistribute it and/or > +# modify it under the terms of the GNU General Public License as > +# published by the Free Software Foundation; either version 2 of > +# the License, or (at your option) any later version. > +# > +# This program is distributed in the hope that it will be useful, > +# but WITHOUT ANY WARRANTY; without even the implied warranty of > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > +# GNU General Public License for more details. > +# > +# You should have received a copy of the GNU General Public License > +# along with this program; if not, write to the Free Software > +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, > +# MA 02111-1307 USA Please use for new files SPDX-License-Identifier. please check it globally. > +# > + > +include $(TOPDIR)/config.mk > + > +LIB = $(obj)lib$(BOARD).o > + > +COBJS += arndale_spl.o > + > +ifndef CONFIG_SPL_BUILD > +COBJS += arndale.o > +endif > + > +SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) > +OBJS := $(addprefix $(obj),$(COBJS) $(SOBJS)) > + > +ALL := $(obj).depend $(LIB) > + > +all: $(ALL) > + > +$(LIB): $(OBJS) > + $(call cmd_link_o_target, $(OBJS)) > + > +######################################################################### > + > +# defines $(obj).depend target > +include $(SRCTREE)/rules.mk > + > +sinclude $(obj).depend > + > +######################################################################### > diff --git a/board/samsung/arndale/arndale.c b/board/samsung/arndale/arndale.c > new file mode 100644 > index 0000000..47cbac8 > --- /dev/null > +++ b/board/samsung/arndale/arndale.c > @@ -0,0 +1,102 @@ > +/* > + * Copyright (C) 2013 Samsung Electronics > + * > + * See file CREDITS for list of people who contributed to this > + * project. > + * > + * This program is free software; you can redistribute it and/or > + * modify it under the terms of the GNU General Public License as > + * published by the Free Software Foundation; either version 2 of > + * the License, or (at your option) any later version. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + * > + * You should have received a copy of the GNU General Public License > + * along with this program; if not, write to the Free Software > + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, > + * MA 02111-1307 USA > + */ > + > +#include <common.h> > +#include <asm/arch/pinmux.h> > +#include <asm/arch/power.h> > + > +DECLARE_GLOBAL_DATA_PTR; > + > +int board_init(void) > +{ > + gd->bd->bi_boot_params = (PHYS_SDRAM_1 + 0x100UL); > + return 0; > +} > + > +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; > +} > + > +int power_init_board(void) > +{ > + set_ps_hold_ctrl(); > + 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; > + } > +} > + > +static int board_uart_init(void) > +{ > + int err, uart_id, ret = 0; > + > + for (uart_id = PERIPH_ID_UART0; uart_id <= PERIPH_ID_UART3; uart_id++) { > + err = exynos_pinmux_config(uart_id, PINMUX_FLAG_NONE); > + if (err) { > + debug("UART%d not configured\n", > + (uart_id - PERIPH_ID_UART0)); > + ret |= err; why don't you return error here? > + } > + } > + return ret; > +} > + > +#ifdef CONFIG_BOARD_EARLY_INIT_F > +int board_early_init_f(void) > +{ > + int err; please add a blank line. > + err = board_uart_init(); > + if (err) { > + debug("UART init failed\n"); > + return err; > + } > + return err; > +} > +#endif > + > +#ifdef CONFIG_DISPLAY_BOARDINFO > +int checkboard(void) > +{ > + printf("\nBoard: Arndale\n"); > + > + return 0; > +} > +#endif > diff --git a/board/samsung/arndale/arndale_spl.c b/board/samsung/arndale/arndale_spl.c > new file mode 100644 > index 0000000..8135708 > --- /dev/null > +++ b/board/samsung/arndale/arndale_spl.c > @@ -0,0 +1,66 @@ > +/* > + * Copyright (c) 2012 The Chromium OS Authors. > + * > + * See file CREDITS for list of people who contributed to this > + * project. > + * > + * This program is free software; you can redistribute it and/or > + * modify it under the terms of the GNU General Public License as > + * published by the Free Software Foundation; either version 2 of > + * the License, or (at your option) any later version. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + * > + * You should have received a copy of the GNU General Public License > + * along with this program; if not, write to the Free Software > + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, > + * MA 02111-1307 USA > + */ > + > +#include <common.h> > +#include <asm/arch/spl.h> > + > +#define SIGNATURE 0xdeadbeef > + > +/* Parameters of early board initialization in SPL */ > +static struct spl_machine_param machine_param > + __attribute__((section(".machine_param"))) = { > + .signature = SIGNATURE, > + .version = 1, > + .params = "vmubfasirM", > + .size = sizeof(machine_param), > + > + .mem_iv_size = 0x1f, > + .mem_type = DDR_MODE_DDR3, > + > + /* > + * Set uboot_size to 0x100000 bytes. > + * > + * This is an overly conservative value chosen to accommodate all > + * possible U-Boot image. You are advised to set this value to a > + * smaller realistic size via scripts that modifies the .machine_param > + * section of output U-Boot image. > + */ > + .uboot_size = 0x100000, > + > + .boot_source = BOOT_MODE_OM, > + .frequency_mhz = 800, > + .arm_freq_mhz = 1000, > + .serial_base = 0x12c30000, > + .i2c_base = 0x12c60000, > + .mem_manuf = MEM_MANUF_SAMSUNG, > +}; > + > +struct spl_machine_param *spl_get_machine_params(void) > +{ > + if (machine_param.signature != SIGNATURE) { > + /* Will hang if SIGNATURE dont match */ > + while (1) > + ; > + } > + > + return &machine_param; > +} > diff --git a/board/samsung/dts/exynos5250-arndale.dts b/board/samsung/dts/exynos5250-arndale.dts > new file mode 100644 > index 0000000..3081ab4 > --- /dev/null > +++ b/board/samsung/dts/exynos5250-arndale.dts > @@ -0,0 +1,23 @@ > +/* > + * SAMSUNG Arndale board device tree source > + * > + * Copyright (c) 2013 Samsung Electronics Co., Ltd. > + * http://www.samsung.com > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License version 2 as > + * published by the Free Software Foundation. > +*/ > + > +/dts-v1/; > +/include/ ARCH_CPU_DTS > + > +/ { > + model = "SAMSUNG Arndale board based on EXYNOS5250"; > + compatible = "samsung,arndale", "samsung,exynos5250"; > + > + aliases { > + serial0 = "/serial@12C20000"; > + console = "/serial@12C20000"; > + }; > +}; > diff --git a/boards.cfg b/boards.cfg > index 6a368de..e44d8d4 100644 > --- a/boards.cfg > +++ b/boards.cfg > @@ -321,6 +321,7 @@ origen arm armv7 origen samsung exynos > s5pc210_universal arm armv7 universal_c210 samsung exynos > snow arm armv7 smdk5250 samsung exynos > smdk5250 arm armv7 smdk5250 samsung exynos > +arndale arm armv7 arndale samsung exynos please sort this list by board name in exnynos. > smdkv310 arm armv7 smdkv310 samsung exynos > trats arm armv7 trats samsung exynos > harmony arm armv7:arm720t harmony nvidia tegra20 > diff --git a/include/configs/arndale.h b/include/configs/arndale.h > new file mode 100644 > index 0000000..3b41862 > --- /dev/null > +++ b/include/configs/arndale.h > @@ -0,0 +1,271 @@ > +/* > + * Copyright (C) 2013 Samsung Electronics > + * > + * Configuration settings for the SAMSUNG Arndale board. > + * > + * See file CREDITS for list of people who contributed to this > + * project. > + * > + * This program is free software; you can redistribute it and/or > + * modify it under the terms of the GNU General Public License as > + * published by the Free Software Foundation; either version 2 of > + * the License, or (at your option) any later version. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + * > + * You should have received a copy of the GNU General Public License > + * along with this program; if not, write to the Free Software > + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, > + * MA 02111-1307 USA > + */ > + > +#ifndef __CONFIG_ARNDALE_H > +#define __CONFIG_ARNDALE_H > + > +/* High Level Configuration Options */ > +#define CONFIG_SAMSUNG /* in a SAMSUNG core */ > +#define CONFIG_S5P /* S5P Family */ > +#define CONFIG_EXYNOS5 /* which is in a Exynos5 Family */ > +#define CONFIG_EXYNOS5250 > + > +#include <asm/arch/cpu.h> /* get chip and board defs */ > + > +#define CONFIG_SYS_GENERIC_BOARD > +#define CONFIG_ARCH_CPU_INIT > +#define CONFIG_DISPLAY_CPUINFO > +#define CONFIG_DISPLAY_BOARDINFO > + > +/* Enable fdt support for Exynos5250 */ > +#define CONFIG_ARCH_DEVICE_TREE exynos5250 > +#define CONFIG_OF_CONTROL > +#define CONFIG_OF_SEPARATE > + > +/* Allow tracing to be enabled */ > +#define CONFIG_TRACE > +#define CONFIG_CMD_TRACE > +#define CONFIG_TRACE_BUFFER_SIZE (16 << 20) > +#define CONFIG_TRACE_EARLY_SIZE (8 << 20) > +#define CONFIG_TRACE_EARLY > +#define CONFIG_TRACE_EARLY_ADDR 0x50000000 > + > +/* Keep L2 Cache Disabled */ > +#define CONFIG_SYS_DCACHE_OFF > + > +#define CONFIG_SYS_SDRAM_BASE 0x40000000 > +#define CONFIG_SYS_TEXT_BASE 0x43E00000 > + > +/* input clock of PLL: SMDK5250 has 24MHz input clock */ > +#define CONFIG_SYS_CLK_FREQ 24000000 > + > +#define CONFIG_SETUP_MEMORY_TAGS > +#define CONFIG_CMDLINE_TAG > +#define CONFIG_INITRD_TAG > +#define CONFIG_CMDLINE_EDITING > + > +/* Power Down Modes */ > +#define S5P_CHECK_SLEEP 0x00000BAD > +#define S5P_CHECK_DIDLE 0xBAD00000 > +#define S5P_CHECK_LPA 0xABAD0000 > + > +/* Offset for inform registers */ > +#define INFORM0_OFFSET 0x800 > +#define INFORM1_OFFSET 0x804 > + > +/* Size of malloc() pool */ > +#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + (4 << 20)) > + > +/* select serial console configuration */ > +#define CONFIG_BAUDRATE 115200 > +#define EXYNOS5_DEFAULT_UART_OFFSET 0x010000 > +#define CONFIG_SILENT_CONSOLE > + > +/* Console configuration */ > +#define CONFIG_CONSOLE_MUX > +#define CONFIG_SYS_CONSOLE_IS_IN_ENV > +#define EXYNOS_DEVICE_SETTINGS \ > + "stdin=serial\0" \ > + "stdout=serial\0" \ > + "stderr=serial\0" > + > +#define CONFIG_EXTRA_ENV_SETTINGS \ > + EXYNOS_DEVICE_SETTINGS > + > +/* SD/MMC configuration */ > +#define CONFIG_GENERIC_MMC > +#define CONFIG_MMC > +#define CONFIG_SDHCI > +#define CONFIG_S5P_SDHCI > +#define CONFIG_DWMMC > +#define CONFIG_EXYNOS_DWMMC > +#define CONFIG_SUPPORT_EMMC_BOOT > + > + > +#define CONFIG_BOARD_EARLY_INIT_F > +#define CONFIG_SKIP_LOWLEVEL_INIT > + > +/* PWM */ > +#define CONFIG_PWM > + > +/* allow to overwrite serial and ethaddr */ > +#define CONFIG_ENV_OVERWRITE > + > +/* Command definition*/ > +#include <config_cmd_default.h> > + > +#define CONFIG_CMD_PING > +#define CONFIG_CMD_ELF > +#define CONFIG_CMD_MMC > +#define CONFIG_CMD_EXT2 > +#define CONFIG_CMD_FAT > +#define CONFIG_CMD_NET > +#define CONFIG_CMD_HASH > + > +#define CONFIG_BOOTDELAY 3 > +#define CONFIG_ZERO_BOOTDELAY_CHECK > + > +/* USB */ > +#define CONFIG_CMD_USB > +#define CONFIG_USB_EHCI > +#define CONFIG_USB_EHCI_EXYNOS > +#define CONFIG_USB_STORAGE > + > +/* MMC SPL */ > +#define CONFIG_SPL > +#define COPY_BL2_FNPTR_ADDR 0x02020030 > + > +#define CONFIG_SPL_LIBCOMMON_SUPPORT > + > +/* specific .lds file */ > +#define CONFIG_SPL_LDSCRIPT "board/samsung/common/exynos-uboot-spl.lds" > +#define CONFIG_SPL_TEXT_BASE 0x02023400 > +#define CONFIG_SPL_MAX_FOOTPRINT (14 * 1024) > + > +#define CONFIG_BOOTCOMMAND "mmc read 40007000 451 2000; 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 "ARNDALE # " > +#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 + 0x5E00000) > +#define CONFIG_SYS_LOAD_ADDR (CONFIG_SYS_SDRAM_BASE + 0x3E00000) > + > +#define CONFIG_SYS_HZ 1000 > + > +#define CONFIG_RD_LVL > + > +#define CONFIG_NR_DRAM_BANKS 8 > +#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 > +#define PHYS_SDRAM_5 (CONFIG_SYS_SDRAM_BASE + (4 * SDRAM_BANK_SIZE)) > +#define PHYS_SDRAM_5_SIZE SDRAM_BANK_SIZE > +#define PHYS_SDRAM_6 (CONFIG_SYS_SDRAM_BASE + (5 * SDRAM_BANK_SIZE)) > +#define PHYS_SDRAM_6_SIZE SDRAM_BANK_SIZE > +#define PHYS_SDRAM_7 (CONFIG_SYS_SDRAM_BASE + (6 * SDRAM_BANK_SIZE)) > +#define PHYS_SDRAM_7_SIZE SDRAM_BANK_SIZE > +#define PHYS_SDRAM_8 (CONFIG_SYS_SDRAM_BASE + (7 * SDRAM_BANK_SIZE)) > +#define PHYS_SDRAM_8_SIZE SDRAM_BANK_SIZE > + > +#define CONFIG_SYS_MONITOR_BASE 0x00000000 > + > +/* FLASH and environment organization */ > +#define CONFIG_SYS_NO_FLASH > +#undef CONFIG_CMD_IMLS > +#define CONFIG_IDENT_STRING " for ARNDALE" > + > +#define CONFIG_SYS_MMC_ENV_DEV 0 > + > +#define CONFIG_ENV_IS_IN_MMC > +#define CONFIG_SECURE_BL1_ONLY > + > +/* Secure FW size configuration */ > +#ifdef CONFIG_SECURE_BL1_ONLY > +#define CONFIG_SEC_FW_SIZE (8 << 10) /* 8KB */ > +#else > +#define CONFIG_SEC_FW_SIZE 0 > +#endif > + > +/* Configuration of BL1, BL2, ENV Blocks on mmc */ > +#define CONFIG_RES_BLOCK_SIZE (512) > +#define CONFIG_BL1_SIZE (16 << 10) /*16 K reserved for BL1*/ > +#define CONFIG_BL2_SIZE (512UL << 10UL) /* 512 KB */ > +#define CONFIG_ENV_SIZE (16 << 10) /* 16 KB */ > + > +#define CONFIG_BL1_OFFSET (CONFIG_RES_BLOCK_SIZE + CONFIG_SEC_FW_SIZE) > +#define CONFIG_BL2_OFFSET (CONFIG_BL1_OFFSET + CONFIG_BL1_SIZE) > +#define CONFIG_ENV_OFFSET (CONFIG_BL2_OFFSET + CONFIG_BL2_SIZE) > + > +/* U-boot copy size from boot Media to DRAM.*/ > +#define BL2_START_OFFSET (CONFIG_BL2_OFFSET/512) > +#define BL2_SIZE_BLOC_COUNT (CONFIG_BL2_SIZE/512) > + > +#define CONFIG_SPI_BOOTING > +#define EXYNOS_COPY_SPI_FNPTR_ADDR 0x02020058 > +#define SPI_FLASH_UBOOT_POS (CONFIG_SEC_FW_SIZE + CONFIG_BL1_SIZE) > + > +#define CONFIG_DOS_PARTITION > +#define CONFIG_EFI_PARTITION > +#define CONFIG_CMD_PART > +#define CONFIG_PARTITION_UUIDS > + > + > +#define CONFIG_IRAM_STACK 0x02050000 > + > +#define CONFIG_SYS_INIT_SP_ADDR CONFIG_IRAM_STACK > + > +/* I2C */ > +#define CONFIG_SYS_I2C_INIT_BOARD > +#define CONFIG_HARD_I2C > +#define CONFIG_CMD_I2C > +#define CONFIG_SYS_I2C_SPEED 100000 /* 100 Kbps */ > +#define CONFIG_DRIVER_S3C24X0_I2C > +#define CONFIG_I2C_MULTI_BUS > +#define CONFIG_MAX_I2C_NUM 8 > +#define CONFIG_SYS_I2C_SLAVE 0x0 > +#define CONFIG_I2C_EDID > + > +/* PMIC */ > +#define CONFIG_PMIC > +#define CONFIG_PMIC_I2C > +#define CONFIG_PMIC_MAX77686 > + > +#define CONFIG_DEFAULT_DEVICE_TREE exynos5250-arndale > + > +/* Ethernet Controllor Driver */ > +#ifdef CONFIG_CMD_NET > +#define CONFIG_SMC911X > +#define CONFIG_SMC911X_BASE 0x5000000 > +#define CONFIG_SMC911X_16_BIT > +#define CONFIG_ENV_SROM_BANK 1 > +#endif /*CONFIG_CMD_NET*/ > + > +/* Enable PXE Support */ > +#ifdef CONFIG_CMD_NET > +#define CONFIG_CMD_PXE > +#define CONFIG_MENU > +#endif > + > +/* Enable devicetree support */ > +#define CONFIG_OF_LIBFDT > + > +/* Enable Time Command */ > +#define CONFIG_CMD_TIME > + > +#endif /* __CONFIG_H */ > Thanks, Minkyu Kang.
On 6 August 2013 17:16, Minkyu Kang <mk7.kang@samsung.com> wrote: > On 25/07/13 21:46, Chander Kashyap wrote: >> Arndale board is based on samsung's exynos5250 soc. >> >> Signed-off-by: Inderpal Singh <inderpal.singh@linaro.org> >> Signed-off-by: Chander Kashyap <chander.kashyap@linaro.org> >> --- >> MAINTAINERS | 4 + >> board/samsung/arndale/Makefile | 50 ++++++ >> board/samsung/arndale/arndale.c | 102 +++++++++++ >> board/samsung/arndale/arndale_spl.c | 66 ++++++++ >> board/samsung/dts/exynos5250-arndale.dts | 23 +++ >> boards.cfg | 1 + >> include/configs/arndale.h | 271 ++++++++++++++++++++++++++++++ >> 7 files changed, 517 insertions(+) >> create mode 100644 board/samsung/arndale/Makefile >> create mode 100644 board/samsung/arndale/arndale.c >> create mode 100644 board/samsung/arndale/arndale_spl.c >> create mode 100644 board/samsung/dts/exynos5250-arndale.dts >> create mode 100644 include/configs/arndale.h >> >> diff --git a/MAINTAINERS b/MAINTAINERS >> index 081cf96..bf489d4 100644 >> --- a/MAINTAINERS >> +++ b/MAINTAINERS >> @@ -747,6 +747,10 @@ Chander Kashyap <k.chander@samsung.com> >> SMDKV310 ARM ARMV7 (EXYNOS4210 SoC) >> SMDK5250 ARM ARMV7 (EXYNOS5250 SoC) >> >> +Inderpal Singh <inderpal.singh@linaro.org> > > please sort the list by last name. Sure i will. > >> + >> + Arndale ARM ARMV7 (EXYNOS5250 SoC) >> + >> Lukasz Majewski <l.majewski@samsung.com> >> >> trats ARM ARMV7 (EXYNOS4210 SoC) >> diff --git a/board/samsung/arndale/Makefile b/board/samsung/arndale/Makefile >> new file mode 100644 >> index 0000000..5786774 >> --- /dev/null >> +++ b/board/samsung/arndale/Makefile >> @@ -0,0 +1,50 @@ >> +# >> +# Copyright (C) 2013 Samsung Electronics >> +# >> +# See file CREDITS for list of people who contributed to this >> +# project. >> +# >> +# This program is free software; you can redistribute it and/or >> +# modify it under the terms of the GNU General Public License as >> +# published by the Free Software Foundation; either version 2 of >> +# the License, or (at your option) any later version. >> +# >> +# This program is distributed in the hope that it will be useful, >> +# but WITHOUT ANY WARRANTY; without even the implied warranty of >> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> +# GNU General Public License for more details. >> +# >> +# You should have received a copy of the GNU General Public License >> +# along with this program; if not, write to the Free Software >> +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, >> +# MA 02111-1307 USA > > Please use for new files SPDX-License-Identifier. > please check it globally. Thanks for pointing out. I will add. > >> +# >> + >> +include $(TOPDIR)/config.mk >> + >> +LIB = $(obj)lib$(BOARD).o >> + >> +COBJS += arndale_spl.o >> + >> +ifndef CONFIG_SPL_BUILD >> +COBJS += arndale.o >> +endif >> + >> +SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) >> +OBJS := $(addprefix $(obj),$(COBJS) $(SOBJS)) >> + >> +ALL := $(obj).depend $(LIB) >> + >> +all: $(ALL) >> + >> +$(LIB): $(OBJS) >> + $(call cmd_link_o_target, $(OBJS)) >> + >> +######################################################################### >> + >> +# defines $(obj).depend target >> +include $(SRCTREE)/rules.mk >> + >> +sinclude $(obj).depend >> + >> +######################################################################### >> diff --git a/board/samsung/arndale/arndale.c b/board/samsung/arndale/arndale.c >> new file mode 100644 >> index 0000000..47cbac8 >> --- /dev/null >> +++ b/board/samsung/arndale/arndale.c >> @@ -0,0 +1,102 @@ >> +/* >> + * Copyright (C) 2013 Samsung Electronics >> + * >> + * See file CREDITS for list of people who contributed to this >> + * project. >> + * >> + * This program is free software; you can redistribute it and/or >> + * modify it under the terms of the GNU General Public License as >> + * published by the Free Software Foundation; either version 2 of >> + * the License, or (at your option) any later version. >> + * >> + * This program is distributed in the hope that it will be useful, >> + * but WITHOUT ANY WARRANTY; without even the implied warranty of >> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> + * GNU General Public License for more details. >> + * >> + * You should have received a copy of the GNU General Public License >> + * along with this program; if not, write to the Free Software >> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, >> + * MA 02111-1307 USA >> + */ >> + >> +#include <common.h> >> +#include <asm/arch/pinmux.h> >> +#include <asm/arch/power.h> >> + >> +DECLARE_GLOBAL_DATA_PTR; >> + >> +int board_init(void) >> +{ >> + gd->bd->bi_boot_params = (PHYS_SDRAM_1 + 0x100UL); >> + return 0; >> +} >> + >> +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; >> +} >> + >> +int power_init_board(void) >> +{ >> + set_ps_hold_ctrl(); >> + 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; >> + } >> +} >> + >> +static int board_uart_init(void) >> +{ >> + int err, uart_id, ret = 0; >> + >> + for (uart_id = PERIPH_ID_UART0; uart_id <= PERIPH_ID_UART3; uart_id++) { >> + err = exynos_pinmux_config(uart_id, PINMUX_FLAG_NONE); >> + if (err) { >> + debug("UART%d not configured\n", >> + (uart_id - PERIPH_ID_UART0)); >> + ret |= err; > > why don't you return error here? Yes returning err makes sense. I will fix it. > >> + } >> + } >> + return ret; >> +} >> + >> +#ifdef CONFIG_BOARD_EARLY_INIT_F >> +int board_early_init_f(void) >> +{ >> + int err; > > please add a blank line. Sure > >> + err = board_uart_init(); >> + if (err) { >> + debug("UART init failed\n"); >> + return err; >> + } >> + return err; >> +} >> +#endif >> + >> +#ifdef CONFIG_DISPLAY_BOARDINFO >> +int checkboard(void) >> +{ >> + printf("\nBoard: Arndale\n"); >> + >> + return 0; >> +} >> +#endif >> diff --git a/board/samsung/arndale/arndale_spl.c b/board/samsung/arndale/arndale_spl.c >> new file mode 100644 >> index 0000000..8135708 >> --- /dev/null >> +++ b/board/samsung/arndale/arndale_spl.c >> @@ -0,0 +1,66 @@ >> +/* >> + * Copyright (c) 2012 The Chromium OS Authors. >> + * >> + * See file CREDITS for list of people who contributed to this >> + * project. >> + * >> + * This program is free software; you can redistribute it and/or >> + * modify it under the terms of the GNU General Public License as >> + * published by the Free Software Foundation; either version 2 of >> + * the License, or (at your option) any later version. >> + * >> + * This program is distributed in the hope that it will be useful, >> + * but WITHOUT ANY WARRANTY; without even the implied warranty of >> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> + * GNU General Public License for more details. >> + * >> + * You should have received a copy of the GNU General Public License >> + * along with this program; if not, write to the Free Software >> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, >> + * MA 02111-1307 USA >> + */ >> + >> +#include <common.h> >> +#include <asm/arch/spl.h> >> + >> +#define SIGNATURE 0xdeadbeef >> + >> +/* Parameters of early board initialization in SPL */ >> +static struct spl_machine_param machine_param >> + __attribute__((section(".machine_param"))) = { >> + .signature = SIGNATURE, >> + .version = 1, >> + .params = "vmubfasirM", >> + .size = sizeof(machine_param), >> + >> + .mem_iv_size = 0x1f, >> + .mem_type = DDR_MODE_DDR3, >> + >> + /* >> + * Set uboot_size to 0x100000 bytes. >> + * >> + * This is an overly conservative value chosen to accommodate all >> + * possible U-Boot image. You are advised to set this value to a >> + * smaller realistic size via scripts that modifies the .machine_param >> + * section of output U-Boot image. >> + */ >> + .uboot_size = 0x100000, >> + >> + .boot_source = BOOT_MODE_OM, >> + .frequency_mhz = 800, >> + .arm_freq_mhz = 1000, >> + .serial_base = 0x12c30000, >> + .i2c_base = 0x12c60000, >> + .mem_manuf = MEM_MANUF_SAMSUNG, >> +}; >> + >> +struct spl_machine_param *spl_get_machine_params(void) >> +{ >> + if (machine_param.signature != SIGNATURE) { >> + /* Will hang if SIGNATURE dont match */ >> + while (1) >> + ; >> + } >> + >> + return &machine_param; >> +} >> diff --git a/board/samsung/dts/exynos5250-arndale.dts b/board/samsung/dts/exynos5250-arndale.dts >> new file mode 100644 >> index 0000000..3081ab4 >> --- /dev/null >> +++ b/board/samsung/dts/exynos5250-arndale.dts >> @@ -0,0 +1,23 @@ >> +/* >> + * SAMSUNG Arndale board device tree source >> + * >> + * Copyright (c) 2013 Samsung Electronics Co., Ltd. >> + * http://www.samsung.com >> + * >> + * This program is free software; you can redistribute it and/or modify >> + * it under the terms of the GNU General Public License version 2 as >> + * published by the Free Software Foundation. >> +*/ >> + >> +/dts-v1/; >> +/include/ ARCH_CPU_DTS >> + >> +/ { >> + model = "SAMSUNG Arndale board based on EXYNOS5250"; >> + compatible = "samsung,arndale", "samsung,exynos5250"; >> + >> + aliases { >> + serial0 = "/serial@12C20000"; >> + console = "/serial@12C20000"; >> + }; >> +}; >> diff --git a/boards.cfg b/boards.cfg >> index 6a368de..e44d8d4 100644 >> --- a/boards.cfg >> +++ b/boards.cfg >> @@ -321,6 +321,7 @@ origen arm armv7 origen samsung exynos >> s5pc210_universal arm armv7 universal_c210 samsung exynos >> snow arm armv7 smdk5250 samsung exynos >> smdk5250 arm armv7 smdk5250 samsung exynos >> +arndale arm armv7 arndale samsung exynos > > please sort this list by board name in exnynos. > >> smdkv310 arm armv7 smdkv310 samsung exynos >> trats arm armv7 trats samsung exynos >> harmony arm armv7:arm720t harmony nvidia tegra20 >> diff --git a/include/configs/arndale.h b/include/configs/arndale.h >> new file mode 100644 >> index 0000000..3b41862 >> --- /dev/null >> +++ b/include/configs/arndale.h >> @@ -0,0 +1,271 @@ >> +/* >> + * Copyright (C) 2013 Samsung Electronics >> + * >> + * Configuration settings for the SAMSUNG Arndale board. >> + * >> + * See file CREDITS for list of people who contributed to this >> + * project. >> + * >> + * This program is free software; you can redistribute it and/or >> + * modify it under the terms of the GNU General Public License as >> + * published by the Free Software Foundation; either version 2 of >> + * the License, or (at your option) any later version. >> + * >> + * This program is distributed in the hope that it will be useful, >> + * but WITHOUT ANY WARRANTY; without even the implied warranty of >> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> + * GNU General Public License for more details. >> + * >> + * You should have received a copy of the GNU General Public License >> + * along with this program; if not, write to the Free Software >> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, >> + * MA 02111-1307 USA >> + */ >> + >> +#ifndef __CONFIG_ARNDALE_H >> +#define __CONFIG_ARNDALE_H >> + >> +/* High Level Configuration Options */ >> +#define CONFIG_SAMSUNG /* in a SAMSUNG core */ >> +#define CONFIG_S5P /* S5P Family */ >> +#define CONFIG_EXYNOS5 /* which is in a Exynos5 Family */ >> +#define CONFIG_EXYNOS5250 >> + >> +#include <asm/arch/cpu.h> /* get chip and board defs */ >> + >> +#define CONFIG_SYS_GENERIC_BOARD >> +#define CONFIG_ARCH_CPU_INIT >> +#define CONFIG_DISPLAY_CPUINFO >> +#define CONFIG_DISPLAY_BOARDINFO >> + >> +/* Enable fdt support for Exynos5250 */ >> +#define CONFIG_ARCH_DEVICE_TREE exynos5250 >> +#define CONFIG_OF_CONTROL >> +#define CONFIG_OF_SEPARATE >> + >> +/* Allow tracing to be enabled */ >> +#define CONFIG_TRACE >> +#define CONFIG_CMD_TRACE >> +#define CONFIG_TRACE_BUFFER_SIZE (16 << 20) >> +#define CONFIG_TRACE_EARLY_SIZE (8 << 20) >> +#define CONFIG_TRACE_EARLY >> +#define CONFIG_TRACE_EARLY_ADDR 0x50000000 >> + >> +/* Keep L2 Cache Disabled */ >> +#define CONFIG_SYS_DCACHE_OFF >> + >> +#define CONFIG_SYS_SDRAM_BASE 0x40000000 >> +#define CONFIG_SYS_TEXT_BASE 0x43E00000 >> + >> +/* input clock of PLL: SMDK5250 has 24MHz input clock */ >> +#define CONFIG_SYS_CLK_FREQ 24000000 >> + >> +#define CONFIG_SETUP_MEMORY_TAGS >> +#define CONFIG_CMDLINE_TAG >> +#define CONFIG_INITRD_TAG >> +#define CONFIG_CMDLINE_EDITING >> + >> +/* Power Down Modes */ >> +#define S5P_CHECK_SLEEP 0x00000BAD >> +#define S5P_CHECK_DIDLE 0xBAD00000 >> +#define S5P_CHECK_LPA 0xABAD0000 >> + >> +/* Offset for inform registers */ >> +#define INFORM0_OFFSET 0x800 >> +#define INFORM1_OFFSET 0x804 >> + >> +/* Size of malloc() pool */ >> +#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + (4 << 20)) >> + >> +/* select serial console configuration */ >> +#define CONFIG_BAUDRATE 115200 >> +#define EXYNOS5_DEFAULT_UART_OFFSET 0x010000 >> +#define CONFIG_SILENT_CONSOLE >> + >> +/* Console configuration */ >> +#define CONFIG_CONSOLE_MUX >> +#define CONFIG_SYS_CONSOLE_IS_IN_ENV >> +#define EXYNOS_DEVICE_SETTINGS \ >> + "stdin=serial\0" \ >> + "stdout=serial\0" \ >> + "stderr=serial\0" >> + >> +#define CONFIG_EXTRA_ENV_SETTINGS \ >> + EXYNOS_DEVICE_SETTINGS >> + >> +/* SD/MMC configuration */ >> +#define CONFIG_GENERIC_MMC >> +#define CONFIG_MMC >> +#define CONFIG_SDHCI >> +#define CONFIG_S5P_SDHCI >> +#define CONFIG_DWMMC >> +#define CONFIG_EXYNOS_DWMMC >> +#define CONFIG_SUPPORT_EMMC_BOOT >> + >> + >> +#define CONFIG_BOARD_EARLY_INIT_F >> +#define CONFIG_SKIP_LOWLEVEL_INIT >> + >> +/* PWM */ >> +#define CONFIG_PWM >> + >> +/* allow to overwrite serial and ethaddr */ >> +#define CONFIG_ENV_OVERWRITE >> + >> +/* Command definition*/ >> +#include <config_cmd_default.h> >> + >> +#define CONFIG_CMD_PING >> +#define CONFIG_CMD_ELF >> +#define CONFIG_CMD_MMC >> +#define CONFIG_CMD_EXT2 >> +#define CONFIG_CMD_FAT >> +#define CONFIG_CMD_NET >> +#define CONFIG_CMD_HASH >> + >> +#define CONFIG_BOOTDELAY 3 >> +#define CONFIG_ZERO_BOOTDELAY_CHECK >> + >> +/* USB */ >> +#define CONFIG_CMD_USB >> +#define CONFIG_USB_EHCI >> +#define CONFIG_USB_EHCI_EXYNOS >> +#define CONFIG_USB_STORAGE >> + >> +/* MMC SPL */ >> +#define CONFIG_SPL >> +#define COPY_BL2_FNPTR_ADDR 0x02020030 >> + >> +#define CONFIG_SPL_LIBCOMMON_SUPPORT >> + >> +/* specific .lds file */ >> +#define CONFIG_SPL_LDSCRIPT "board/samsung/common/exynos-uboot-spl.lds" >> +#define CONFIG_SPL_TEXT_BASE 0x02023400 >> +#define CONFIG_SPL_MAX_FOOTPRINT (14 * 1024) >> + >> +#define CONFIG_BOOTCOMMAND "mmc read 40007000 451 2000; 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 "ARNDALE # " >> +#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 + 0x5E00000) >> +#define CONFIG_SYS_LOAD_ADDR (CONFIG_SYS_SDRAM_BASE + 0x3E00000) >> + >> +#define CONFIG_SYS_HZ 1000 >> + >> +#define CONFIG_RD_LVL >> + >> +#define CONFIG_NR_DRAM_BANKS 8 >> +#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 >> +#define PHYS_SDRAM_5 (CONFIG_SYS_SDRAM_BASE + (4 * SDRAM_BANK_SIZE)) >> +#define PHYS_SDRAM_5_SIZE SDRAM_BANK_SIZE >> +#define PHYS_SDRAM_6 (CONFIG_SYS_SDRAM_BASE + (5 * SDRAM_BANK_SIZE)) >> +#define PHYS_SDRAM_6_SIZE SDRAM_BANK_SIZE >> +#define PHYS_SDRAM_7 (CONFIG_SYS_SDRAM_BASE + (6 * SDRAM_BANK_SIZE)) >> +#define PHYS_SDRAM_7_SIZE SDRAM_BANK_SIZE >> +#define PHYS_SDRAM_8 (CONFIG_SYS_SDRAM_BASE + (7 * SDRAM_BANK_SIZE)) >> +#define PHYS_SDRAM_8_SIZE SDRAM_BANK_SIZE >> + >> +#define CONFIG_SYS_MONITOR_BASE 0x00000000 >> + >> +/* FLASH and environment organization */ >> +#define CONFIG_SYS_NO_FLASH >> +#undef CONFIG_CMD_IMLS >> +#define CONFIG_IDENT_STRING " for ARNDALE" >> + >> +#define CONFIG_SYS_MMC_ENV_DEV 0 >> + >> +#define CONFIG_ENV_IS_IN_MMC >> +#define CONFIG_SECURE_BL1_ONLY >> + >> +/* Secure FW size configuration */ >> +#ifdef CONFIG_SECURE_BL1_ONLY >> +#define CONFIG_SEC_FW_SIZE (8 << 10) /* 8KB */ >> +#else >> +#define CONFIG_SEC_FW_SIZE 0 >> +#endif >> + >> +/* Configuration of BL1, BL2, ENV Blocks on mmc */ >> +#define CONFIG_RES_BLOCK_SIZE (512) >> +#define CONFIG_BL1_SIZE (16 << 10) /*16 K reserved for BL1*/ >> +#define CONFIG_BL2_SIZE (512UL << 10UL) /* 512 KB */ >> +#define CONFIG_ENV_SIZE (16 << 10) /* 16 KB */ >> + >> +#define CONFIG_BL1_OFFSET (CONFIG_RES_BLOCK_SIZE + CONFIG_SEC_FW_SIZE) >> +#define CONFIG_BL2_OFFSET (CONFIG_BL1_OFFSET + CONFIG_BL1_SIZE) >> +#define CONFIG_ENV_OFFSET (CONFIG_BL2_OFFSET + CONFIG_BL2_SIZE) >> + >> +/* U-boot copy size from boot Media to DRAM.*/ >> +#define BL2_START_OFFSET (CONFIG_BL2_OFFSET/512) >> +#define BL2_SIZE_BLOC_COUNT (CONFIG_BL2_SIZE/512) >> + >> +#define CONFIG_SPI_BOOTING >> +#define EXYNOS_COPY_SPI_FNPTR_ADDR 0x02020058 >> +#define SPI_FLASH_UBOOT_POS (CONFIG_SEC_FW_SIZE + CONFIG_BL1_SIZE) >> + >> +#define CONFIG_DOS_PARTITION >> +#define CONFIG_EFI_PARTITION >> +#define CONFIG_CMD_PART >> +#define CONFIG_PARTITION_UUIDS >> + >> + >> +#define CONFIG_IRAM_STACK 0x02050000 >> + >> +#define CONFIG_SYS_INIT_SP_ADDR CONFIG_IRAM_STACK >> + >> +/* I2C */ >> +#define CONFIG_SYS_I2C_INIT_BOARD >> +#define CONFIG_HARD_I2C >> +#define CONFIG_CMD_I2C >> +#define CONFIG_SYS_I2C_SPEED 100000 /* 100 Kbps */ >> +#define CONFIG_DRIVER_S3C24X0_I2C >> +#define CONFIG_I2C_MULTI_BUS >> +#define CONFIG_MAX_I2C_NUM 8 >> +#define CONFIG_SYS_I2C_SLAVE 0x0 >> +#define CONFIG_I2C_EDID >> + >> +/* PMIC */ >> +#define CONFIG_PMIC >> +#define CONFIG_PMIC_I2C >> +#define CONFIG_PMIC_MAX77686 >> + >> +#define CONFIG_DEFAULT_DEVICE_TREE exynos5250-arndale >> + >> +/* Ethernet Controllor Driver */ >> +#ifdef CONFIG_CMD_NET >> +#define CONFIG_SMC911X >> +#define CONFIG_SMC911X_BASE 0x5000000 >> +#define CONFIG_SMC911X_16_BIT >> +#define CONFIG_ENV_SROM_BANK 1 >> +#endif /*CONFIG_CMD_NET*/ >> + >> +/* Enable PXE Support */ >> +#ifdef CONFIG_CMD_NET >> +#define CONFIG_CMD_PXE >> +#define CONFIG_MENU >> +#endif >> + >> +/* Enable devicetree support */ >> +#define CONFIG_OF_LIBFDT >> + >> +/* Enable Time Command */ >> +#define CONFIG_CMD_TIME >> + >> +#endif /* __CONFIG_H */ >> > > Thanks, > Minkyu Kang. thanks for the review.
diff --git a/MAINTAINERS b/MAINTAINERS index 081cf96..bf489d4 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -747,6 +747,10 @@ Chander Kashyap <k.chander@samsung.com> SMDKV310 ARM ARMV7 (EXYNOS4210 SoC) SMDK5250 ARM ARMV7 (EXYNOS5250 SoC) +Inderpal Singh <inderpal.singh@linaro.org> + + Arndale ARM ARMV7 (EXYNOS5250 SoC) + Lukasz Majewski <l.majewski@samsung.com> trats ARM ARMV7 (EXYNOS4210 SoC) diff --git a/board/samsung/arndale/Makefile b/board/samsung/arndale/Makefile new file mode 100644 index 0000000..5786774 --- /dev/null +++ b/board/samsung/arndale/Makefile @@ -0,0 +1,50 @@ +# +# Copyright (C) 2013 Samsung Electronics +# +# See file CREDITS for list of people who contributed to this +# project. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, +# MA 02111-1307 USA +# + +include $(TOPDIR)/config.mk + +LIB = $(obj)lib$(BOARD).o + +COBJS += arndale_spl.o + +ifndef CONFIG_SPL_BUILD +COBJS += arndale.o +endif + +SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS) $(SOBJS)) + +ALL := $(obj).depend $(LIB) + +all: $(ALL) + +$(LIB): $(OBJS) + $(call cmd_link_o_target, $(OBJS)) + +######################################################################### + +# defines $(obj).depend target +include $(SRCTREE)/rules.mk + +sinclude $(obj).depend + +######################################################################### diff --git a/board/samsung/arndale/arndale.c b/board/samsung/arndale/arndale.c new file mode 100644 index 0000000..47cbac8 --- /dev/null +++ b/board/samsung/arndale/arndale.c @@ -0,0 +1,102 @@ +/* + * Copyright (C) 2013 Samsung Electronics + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include <common.h> +#include <asm/arch/pinmux.h> +#include <asm/arch/power.h> + +DECLARE_GLOBAL_DATA_PTR; + +int board_init(void) +{ + gd->bd->bi_boot_params = (PHYS_SDRAM_1 + 0x100UL); + return 0; +} + +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; +} + +int power_init_board(void) +{ + set_ps_hold_ctrl(); + 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; + } +} + +static int board_uart_init(void) +{ + int err, uart_id, ret = 0; + + for (uart_id = PERIPH_ID_UART0; uart_id <= PERIPH_ID_UART3; uart_id++) { + err = exynos_pinmux_config(uart_id, PINMUX_FLAG_NONE); + if (err) { + debug("UART%d not configured\n", + (uart_id - PERIPH_ID_UART0)); + ret |= err; + } + } + return ret; +} + +#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 + +#ifdef CONFIG_DISPLAY_BOARDINFO +int checkboard(void) +{ + printf("\nBoard: Arndale\n"); + + return 0; +} +#endif diff --git a/board/samsung/arndale/arndale_spl.c b/board/samsung/arndale/arndale_spl.c new file mode 100644 index 0000000..8135708 --- /dev/null +++ b/board/samsung/arndale/arndale_spl.c @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2012 The Chromium OS Authors. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include <common.h> +#include <asm/arch/spl.h> + +#define SIGNATURE 0xdeadbeef + +/* Parameters of early board initialization in SPL */ +static struct spl_machine_param machine_param + __attribute__((section(".machine_param"))) = { + .signature = SIGNATURE, + .version = 1, + .params = "vmubfasirM", + .size = sizeof(machine_param), + + .mem_iv_size = 0x1f, + .mem_type = DDR_MODE_DDR3, + + /* + * Set uboot_size to 0x100000 bytes. + * + * This is an overly conservative value chosen to accommodate all + * possible U-Boot image. You are advised to set this value to a + * smaller realistic size via scripts that modifies the .machine_param + * section of output U-Boot image. + */ + .uboot_size = 0x100000, + + .boot_source = BOOT_MODE_OM, + .frequency_mhz = 800, + .arm_freq_mhz = 1000, + .serial_base = 0x12c30000, + .i2c_base = 0x12c60000, + .mem_manuf = MEM_MANUF_SAMSUNG, +}; + +struct spl_machine_param *spl_get_machine_params(void) +{ + if (machine_param.signature != SIGNATURE) { + /* Will hang if SIGNATURE dont match */ + while (1) + ; + } + + return &machine_param; +} diff --git a/board/samsung/dts/exynos5250-arndale.dts b/board/samsung/dts/exynos5250-arndale.dts new file mode 100644 index 0000000..3081ab4 --- /dev/null +++ b/board/samsung/dts/exynos5250-arndale.dts @@ -0,0 +1,23 @@ +/* + * SAMSUNG Arndale board device tree source + * + * Copyright (c) 2013 Samsung Electronics Co., Ltd. + * http://www.samsung.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +/dts-v1/; +/include/ ARCH_CPU_DTS + +/ { + model = "SAMSUNG Arndale board based on EXYNOS5250"; + compatible = "samsung,arndale", "samsung,exynos5250"; + + aliases { + serial0 = "/serial@12C20000"; + console = "/serial@12C20000"; + }; +}; diff --git a/boards.cfg b/boards.cfg index 6a368de..e44d8d4 100644 --- a/boards.cfg +++ b/boards.cfg @@ -321,6 +321,7 @@ origen arm armv7 origen samsung exynos s5pc210_universal arm armv7 universal_c210 samsung exynos snow arm armv7 smdk5250 samsung exynos smdk5250 arm armv7 smdk5250 samsung exynos +arndale arm armv7 arndale samsung exynos smdkv310 arm armv7 smdkv310 samsung exynos trats arm armv7 trats samsung exynos harmony arm armv7:arm720t harmony nvidia tegra20 diff --git a/include/configs/arndale.h b/include/configs/arndale.h new file mode 100644 index 0000000..3b41862 --- /dev/null +++ b/include/configs/arndale.h @@ -0,0 +1,271 @@ +/* + * Copyright (C) 2013 Samsung Electronics + * + * Configuration settings for the SAMSUNG Arndale board. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#ifndef __CONFIG_ARNDALE_H +#define __CONFIG_ARNDALE_H + +/* High Level Configuration Options */ +#define CONFIG_SAMSUNG /* in a SAMSUNG core */ +#define CONFIG_S5P /* S5P Family */ +#define CONFIG_EXYNOS5 /* which is in a Exynos5 Family */ +#define CONFIG_EXYNOS5250 + +#include <asm/arch/cpu.h> /* get chip and board defs */ + +#define CONFIG_SYS_GENERIC_BOARD +#define CONFIG_ARCH_CPU_INIT +#define CONFIG_DISPLAY_CPUINFO +#define CONFIG_DISPLAY_BOARDINFO + +/* Enable fdt support for Exynos5250 */ +#define CONFIG_ARCH_DEVICE_TREE exynos5250 +#define CONFIG_OF_CONTROL +#define CONFIG_OF_SEPARATE + +/* Allow tracing to be enabled */ +#define CONFIG_TRACE +#define CONFIG_CMD_TRACE +#define CONFIG_TRACE_BUFFER_SIZE (16 << 20) +#define CONFIG_TRACE_EARLY_SIZE (8 << 20) +#define CONFIG_TRACE_EARLY +#define CONFIG_TRACE_EARLY_ADDR 0x50000000 + +/* Keep L2 Cache Disabled */ +#define CONFIG_SYS_DCACHE_OFF + +#define CONFIG_SYS_SDRAM_BASE 0x40000000 +#define CONFIG_SYS_TEXT_BASE 0x43E00000 + +/* input clock of PLL: SMDK5250 has 24MHz input clock */ +#define CONFIG_SYS_CLK_FREQ 24000000 + +#define CONFIG_SETUP_MEMORY_TAGS +#define CONFIG_CMDLINE_TAG +#define CONFIG_INITRD_TAG +#define CONFIG_CMDLINE_EDITING + +/* Power Down Modes */ +#define S5P_CHECK_SLEEP 0x00000BAD +#define S5P_CHECK_DIDLE 0xBAD00000 +#define S5P_CHECK_LPA 0xABAD0000 + +/* Offset for inform registers */ +#define INFORM0_OFFSET 0x800 +#define INFORM1_OFFSET 0x804 + +/* Size of malloc() pool */ +#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + (4 << 20)) + +/* select serial console configuration */ +#define CONFIG_BAUDRATE 115200 +#define EXYNOS5_DEFAULT_UART_OFFSET 0x010000 +#define CONFIG_SILENT_CONSOLE + +/* Console configuration */ +#define CONFIG_CONSOLE_MUX +#define CONFIG_SYS_CONSOLE_IS_IN_ENV +#define EXYNOS_DEVICE_SETTINGS \ + "stdin=serial\0" \ + "stdout=serial\0" \ + "stderr=serial\0" + +#define CONFIG_EXTRA_ENV_SETTINGS \ + EXYNOS_DEVICE_SETTINGS + +/* SD/MMC configuration */ +#define CONFIG_GENERIC_MMC +#define CONFIG_MMC +#define CONFIG_SDHCI +#define CONFIG_S5P_SDHCI +#define CONFIG_DWMMC +#define CONFIG_EXYNOS_DWMMC +#define CONFIG_SUPPORT_EMMC_BOOT + + +#define CONFIG_BOARD_EARLY_INIT_F +#define CONFIG_SKIP_LOWLEVEL_INIT + +/* PWM */ +#define CONFIG_PWM + +/* allow to overwrite serial and ethaddr */ +#define CONFIG_ENV_OVERWRITE + +/* Command definition*/ +#include <config_cmd_default.h> + +#define CONFIG_CMD_PING +#define CONFIG_CMD_ELF +#define CONFIG_CMD_MMC +#define CONFIG_CMD_EXT2 +#define CONFIG_CMD_FAT +#define CONFIG_CMD_NET +#define CONFIG_CMD_HASH + +#define CONFIG_BOOTDELAY 3 +#define CONFIG_ZERO_BOOTDELAY_CHECK + +/* USB */ +#define CONFIG_CMD_USB +#define CONFIG_USB_EHCI +#define CONFIG_USB_EHCI_EXYNOS +#define CONFIG_USB_STORAGE + +/* MMC SPL */ +#define CONFIG_SPL +#define COPY_BL2_FNPTR_ADDR 0x02020030 + +#define CONFIG_SPL_LIBCOMMON_SUPPORT + +/* specific .lds file */ +#define CONFIG_SPL_LDSCRIPT "board/samsung/common/exynos-uboot-spl.lds" +#define CONFIG_SPL_TEXT_BASE 0x02023400 +#define CONFIG_SPL_MAX_FOOTPRINT (14 * 1024) + +#define CONFIG_BOOTCOMMAND "mmc read 40007000 451 2000; 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 "ARNDALE # " +#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 + 0x5E00000) +#define CONFIG_SYS_LOAD_ADDR (CONFIG_SYS_SDRAM_BASE + 0x3E00000) + +#define CONFIG_SYS_HZ 1000 + +#define CONFIG_RD_LVL + +#define CONFIG_NR_DRAM_BANKS 8 +#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 +#define PHYS_SDRAM_5 (CONFIG_SYS_SDRAM_BASE + (4 * SDRAM_BANK_SIZE)) +#define PHYS_SDRAM_5_SIZE SDRAM_BANK_SIZE +#define PHYS_SDRAM_6 (CONFIG_SYS_SDRAM_BASE + (5 * SDRAM_BANK_SIZE)) +#define PHYS_SDRAM_6_SIZE SDRAM_BANK_SIZE +#define PHYS_SDRAM_7 (CONFIG_SYS_SDRAM_BASE + (6 * SDRAM_BANK_SIZE)) +#define PHYS_SDRAM_7_SIZE SDRAM_BANK_SIZE +#define PHYS_SDRAM_8 (CONFIG_SYS_SDRAM_BASE + (7 * SDRAM_BANK_SIZE)) +#define PHYS_SDRAM_8_SIZE SDRAM_BANK_SIZE + +#define CONFIG_SYS_MONITOR_BASE 0x00000000 + +/* FLASH and environment organization */ +#define CONFIG_SYS_NO_FLASH +#undef CONFIG_CMD_IMLS +#define CONFIG_IDENT_STRING " for ARNDALE" + +#define CONFIG_SYS_MMC_ENV_DEV 0 + +#define CONFIG_ENV_IS_IN_MMC +#define CONFIG_SECURE_BL1_ONLY + +/* Secure FW size configuration */ +#ifdef CONFIG_SECURE_BL1_ONLY +#define CONFIG_SEC_FW_SIZE (8 << 10) /* 8KB */ +#else +#define CONFIG_SEC_FW_SIZE 0 +#endif + +/* Configuration of BL1, BL2, ENV Blocks on mmc */ +#define CONFIG_RES_BLOCK_SIZE (512) +#define CONFIG_BL1_SIZE (16 << 10) /*16 K reserved for BL1*/ +#define CONFIG_BL2_SIZE (512UL << 10UL) /* 512 KB */ +#define CONFIG_ENV_SIZE (16 << 10) /* 16 KB */ + +#define CONFIG_BL1_OFFSET (CONFIG_RES_BLOCK_SIZE + CONFIG_SEC_FW_SIZE) +#define CONFIG_BL2_OFFSET (CONFIG_BL1_OFFSET + CONFIG_BL1_SIZE) +#define CONFIG_ENV_OFFSET (CONFIG_BL2_OFFSET + CONFIG_BL2_SIZE) + +/* U-boot copy size from boot Media to DRAM.*/ +#define BL2_START_OFFSET (CONFIG_BL2_OFFSET/512) +#define BL2_SIZE_BLOC_COUNT (CONFIG_BL2_SIZE/512) + +#define CONFIG_SPI_BOOTING +#define EXYNOS_COPY_SPI_FNPTR_ADDR 0x02020058 +#define SPI_FLASH_UBOOT_POS (CONFIG_SEC_FW_SIZE + CONFIG_BL1_SIZE) + +#define CONFIG_DOS_PARTITION +#define CONFIG_EFI_PARTITION +#define CONFIG_CMD_PART +#define CONFIG_PARTITION_UUIDS + + +#define CONFIG_IRAM_STACK 0x02050000 + +#define CONFIG_SYS_INIT_SP_ADDR CONFIG_IRAM_STACK + +/* I2C */ +#define CONFIG_SYS_I2C_INIT_BOARD +#define CONFIG_HARD_I2C +#define CONFIG_CMD_I2C +#define CONFIG_SYS_I2C_SPEED 100000 /* 100 Kbps */ +#define CONFIG_DRIVER_S3C24X0_I2C +#define CONFIG_I2C_MULTI_BUS +#define CONFIG_MAX_I2C_NUM 8 +#define CONFIG_SYS_I2C_SLAVE 0x0 +#define CONFIG_I2C_EDID + +/* PMIC */ +#define CONFIG_PMIC +#define CONFIG_PMIC_I2C +#define CONFIG_PMIC_MAX77686 + +#define CONFIG_DEFAULT_DEVICE_TREE exynos5250-arndale + +/* Ethernet Controllor Driver */ +#ifdef CONFIG_CMD_NET +#define CONFIG_SMC911X +#define CONFIG_SMC911X_BASE 0x5000000 +#define CONFIG_SMC911X_16_BIT +#define CONFIG_ENV_SROM_BANK 1 +#endif /*CONFIG_CMD_NET*/ + +/* Enable PXE Support */ +#ifdef CONFIG_CMD_NET +#define CONFIG_CMD_PXE +#define CONFIG_MENU +#endif + +/* Enable devicetree support */ +#define CONFIG_OF_LIBFDT + +/* Enable Time Command */ +#define CONFIG_CMD_TIME + +#endif /* __CONFIG_H */