On 21:42 Wed 06 Aug , Guennadi Liakhovetski wrote: > SMDK6400 can only boot U-Boot from NAND-flash. This patch adds a nand_spl > driver for it too. The board can also boot from the NOR flash, but due to > hardware limitations it can only address 64KiB on it, which is not enough > for U-Boot. Based on the original sources by Samsung for U-Boot 1.1.6. > > Signed-off-by: Guennadi Liakhovetski <[EMAIL PROTECTED]> > --- > > Changes since v5: adjust the configuration to more precisely desribe NAND > ECC layout. > > MAKEALL | 1 + > Makefile | 17 ++ please add your entry in MAINTAINERS > board/samsung/smdk6400/Makefile | 54 +++++ > board/samsung/smdk6400/config.mk | 30 +++ > board/samsung/smdk6400/lowlevel_init.S | 316 > ++++++++++++++++++++++++++++ > board/samsung/smdk6400/smdk6400.c | 130 ++++++++++++ > board/samsung/smdk6400/u-boot-nand.lds | 62 ++++++ > include/configs/smdk6400.h | 306 +++++++++++++++++++++++++++ > nand_spl/board/samsung/smdk6400/Makefile | 106 ++++++++++ > nand_spl/board/samsung/smdk6400/config.mk | 40 ++++ > nand_spl/board/samsung/smdk6400/u-boot.lds | 61 ++++++ > 11 files changed, 1123 insertions(+), 0 deletions(-) > create mode 100644 board/samsung/smdk6400/Makefile > create mode 100644 board/samsung/smdk6400/config.mk > create mode 100644 board/samsung/smdk6400/lowlevel_init.S > create mode 100644 board/samsung/smdk6400/smdk6400.c > create mode 100644 board/samsung/smdk6400/u-boot-nand.lds > create mode 100644 include/configs/smdk6400.h > create mode 100644 nand_spl/board/samsung/smdk6400/Makefile > create mode 100644 nand_spl/board/samsung/smdk6400/config.mk > create mode 100644 nand_spl/board/samsung/smdk6400/u-boot.lds
> +# 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).a > + > +COBJS := smdk6400.o > +SOBJS := lowlevel_init.o > +OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS)) > + > +$(LIB): $(obj).depend $(OBJS) > + $(AR) crv $@ $(OBJS) > + please keep this Makefile as other new style ex from atmel board include $(TOPDIR)/config.mk LIB = $(obj)lib$(BOARD).a COBJS-y += at91cap9adk.o COBJS-y += led.o COBJS-y += partition.o COBJS-$(CONFIG_CMD_NAND) += nand.o SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c) OBJS := $(addprefix $(obj),$(COBJS-y)) SOBJS := $(addprefix $(obj),$(SOBJS)) $(LIB): $(obj).depend $(OBJS) $(SOBJS) $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS) clean: rm -f $(SOBJS) $(OBJS) distclean: clean rm -f $(LIB) core *.bak $(obj).depend ######################################################################### # defines $(obj).depend target include $(SRCTREE)/rules.mk sinclude $(obj).depend ######################################################################### > diff --git a/board/samsung/smdk6400/config.mk > b/board/samsung/smdk6400/config.mk > new file mode 100644 > index 0000000..298d387 > --- /dev/null > +++ b/board/samsung/smdk6400/config.mk > @@ -0,0 +1,30 @@ > +# > +# (C) Copyright 2002 > +# Gary Jennejohn, DENX Software Engineering, <[EMAIL PROTECTED]> > +# David Mueller, ELSOFT AG, <[EMAIL PROTECTED]> > +# > +# (C) Copyright 2008 > +# Guennadi Liakhovetki, DENX Software Engineering, <[EMAIL PROTECTED]> > +# > +# SAMSUNG SMDK6400 board with mDirac3 (ARM1176) cpu > +# > +# see http://www.samsung.com/ for more information on SAMSUNG > + > +# On SMDK6400 we use the 64 MB SDRAM bank at > +# > +# 0x50000000 to 0x58000000 > +# > +# Linux-Kernel is expected to be at 0x50008000, entry 0x50008000 > +# > +# we load ourselves to 0x57e00000 without MMU > +# with MMU, load address is changed to 0xc7e00000 > +# > +# download area is 0x5000c000 > + > +sinclude $(OBJTREE)/board/$(BOARDDIR)/config.tmp > + > +ifndef CONFIG_NAND_SPL > +TEXT_BASE = $(RAM_TEXT) > +else > +TEXT_BASE = 0 > +endif > +check_syncack: > + ldr r1, [r0, #OTHERS_OFFSET] > + ldr r2, =0xf00 > + and r1, r1, r2 > + cmp r1, #0xf00 > + bne check_syncack > +#else /* ASYNC Mode */ please use .rept > + nop > + nop > + nop > + nop > + nop > + and please be carefull with whitespaces > index 0000000..77fd2c8 > --- /dev/null > +++ b/board/samsung/smdk6400/smdk6400.c > @@ -0,0 +1,130 @@ > +/* > +static inline void delay(unsigned long loops) > +{ > + __asm__ volatile ("1:\n" "subs %0, %1, #1\n" > + "bne 1b" > + : "=r" (loops) : "0" (loops)); > +} > + > +/* > + * Miscellaneous platform dependent initialisations > + */ > + > +{ > + nand_probe(CFG_NAND_BASE); > + if (nand_dev_desc[0].ChipID != NAND_ChipID_UNKNOWN) > + print_size(nand_dev_desc[0].totlen, "\n"); > +} > +#endif > + > +ulong board_flash_get_legacy (ulong base, int banknum, flash_info_t *info) > +{ > + if (banknum == 0) { /* non-CFI boot flash */ > + info->portwidth = FLASH_CFI_16BIT; > + info->chipwidth = FLASH_CFI_BY16; > + info->interface = FLASH_CFI_X16; > + return 1; > + } else > + return 0; please replace with } else { return 0; } or } return 0; > +} > diff --git a/include/configs/smdk6400.h b/include/configs/smdk6400.h > new file mode 100644 > index 0000000..1bc8996 > --- /dev/null > +++ b/include/configs/smdk6400.h > @@ -0,0 +1,306 @@ > +/* > +#define CONFIG_SMDK6400 1 /* on a SAMSUNG SMDK6400 Board > */ > + > +#define CFG_SDRAM_BASE 0x50000000 > + > +/* input clock of PLL: SMDK6400 has 12MHz input clock */ > +#define CONFIG_SYS_CLK_FREQ 12000000 > + > +#if !defined(CONFIG_NAND_SPL) && (TEXT_BASE >= 0xc0000000) > +#define CONFIG_ENABLE_MMU > +#endif > + > +#define CONFIG_MEMORY_UPPER_CODE > + > +#define CONFIG_SETUP_MEMORY_TAGS > +#define CONFIG_CMDLINE_TAG > +#define CONFIG_INITRD_TAG > + > +/* > + * Architecture magic and machine type > + */ > +#define MACH_TYPE 1270 please use mach type from the hearder > + > +#define CONFIG_DISPLAY_CPUINFO > +#define CONFIG_DISPLAY_BOARDINFO > + > +#undef CONFIG_SKIP_RELOCATE_UBOOT > + > +/* > + * Size of malloc() pool > + */ > +#define CFG_MALLOC_LEN (CFG_ENV_SIZE + 1024 * 1024) > +#define CFG_GBL_DATA_SIZE 128 /* size in bytes for initial data */ > + > +/* > + * Hardware drivers > + */ > +#define CONFIG_DRIVER_CS8900 1 /* we have a CS8900 on-board */ > +#define CS8900_BASE 0x18800300 please remove the whitespace > +#define CS8900_BUS16 1 /* follow the Linux driver */ please remove the whitespace > + > +/* > + * select serial console configuration > + */ > +#define CONFIG_SERIAL1 1 /* we use SERIAL 1 on SMDK6400 */ > + > +#define CFG_HUSH_PARSER /* use "hush" command parser > */ > +#ifdef CFG_HUSH_PARSER do you really want the idef? > +#define CFG_PROMPT_HUSH_PS2 "> " > +#endif > + > +#define CONFIG_CMDLINE_EDITING > + > +/* allow to overwrite serial and ethaddr */ > +#define CONFIG_ENV_OVERWRITE > + > +#define CONFIG_BAUDRATE 115200 > + > +/*********************************************************** > + * Command definition > + ***********************************************************/ > +#include <config_cmd_default.h> > + > +#define CONFIG_CMD_CACHE > +#define CONFIG_CMD_REGINFO > +#define CONFIG_CMD_LOADS > +#define CONFIG_CMD_LOADB > +#define CONFIG_CMD_ENV > +#define CONFIG_CMD_NAND > +#if defined(CONFIG_BOOT_ONENAND) > +#define CONFIG_CMD_ONENAND > +#endif > +#define CONFIG_CMD_PING > +#define CONFIG_CMD_ELF > + > +#define CONFIG_BOOTDELAY 3 > + > +#define CONFIG_ZERO_BOOTDELAY_CHECK > + > +#if (CONFIG_COMMANDS & CONFIG_CMD_KGDB) replace with #ifdef CONFIG_CMD_KGDB > +#define CONFIG_KGDB_BAUDRATE 115200 /* speed to run kgdb serial port */ > +#define CONFIG_KGDB_SER_INDEX 1 /* which serial port to use > */ > +#endif > + > +/* > + * Miscellaneous configurable options > + */ > +#define CFG_LONGHELP /* undef to save memory */ > +#define CFG_PROMPT "SMDK6400 # " /* Monitor Command Prompt */ > +#define CFG_CBSIZE 256 /* Console I/O Buffer Size */ > +#define CFG_PBSIZE 384 /* Print Buffer Size */ > +#define CFG_MAXARGS 16 /* max number of command args */ > +#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */ > + > +#define CFG_MEMTEST_START CFG_SDRAM_BASE /* memtest works on */ > +#define CFG_MEMTEST_END (CFG_SDRAM_BASE + 0x7e00000) /* 126MB > in DRAM */ > + > +#define CFG_LOAD_ADDR CFG_SDRAM_BASE /* default load address > */ > + > +#define CFG_HZ 1000 > + > +/* valid baudrates */ > +#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 } > + > +/*----------------------------------------------------------------------- > + * Stack sizes > + * > + * The stack sizes are set up in start.S using the settings below > + */ > +#define CONFIG_STACKSIZE 0x40000 /* regular stack 256KB */ > + > +/********************************** > + Support Clock Settings > + ********************************** > + Setting SYNC ASYNC > + ---------------------------------- > + 667_133_66 X O > + 533_133_66 O O > + 400_133_66 X O > + 400_100_50 O O > + **********************************/ > + > +/*#define CONFIG_CLK_667_133_66*/ please remove if not need or use idef > +#define CONFIG_CLK_533_133_66 > +/* > +#define CONFIG_CLK_400_100_50 > +#define CONFIG_CLK_400_133_66 > +#define CONFIG_SYNC_MODE > +*/ Ditto > + > +/* SMDK6400 has 2 banks of DRAM, but we use only one in U-Boot */ > +#define CONFIG_NR_DRAM_BANKS 1 > +#define PHYS_SDRAM_1 CFG_SDRAM_BASE /* SDRAM Bank #1 */ > +#define CONFIG_BOOT_MOVINAND > +#define CONFIG_BOOT_ONENAND > +*/ > + > diff --git a/nand_spl/board/samsung/smdk6400/Makefile > b/nand_spl/board/samsung/smdk6400/Makefile > new file mode 100644 > index 0000000..ae9eb2a > --- /dev/null > +++ b/nand_spl/board/samsung/smdk6400/Makefile > @@ -0,0 +1,106 @@ > +# > +# (C) Copyright 2006-2007 > +# Stefan Roese, DENX Software Engineering, [EMAIL PROTECTED] > +# > +# (C) Copyright 2008 > +# Guennadi Liakhovetki, DENX Software Engineering, <[EMAIL PROTECTED]> > +# > +# 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 > +# > + > +CONFIG_NAND_SPL = y > + > +include $(TOPDIR)/config.mk > +include $(TOPDIR)/nand_spl/board/$(BOARDDIR)/config.mk > + > +LDSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lds > +LDFLAGS = -Bstatic -T $(LDSCRIPT) -Ttext $(TEXT_BASE) > $(PLATFORM_LDFLAGS) > +AFLAGS += -DCONFIG_NAND_SPL > +CFLAGS += -DCONFIG_NAND_SPL > + > +SOBJS = start.o cpu_init.o lowlevel_init.o > +COBJS = nand_boot.o nand_ecc.o s3c64xx.o > + > +SRCS := $(addprefix $(obj),$(SOBJS:.o=.S) $(COBJS:.o=.c)) > +OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS)) > +__OBJS := $(SOBJS) $(COBJS) > +LNDIR := $(OBJTREE)/nand_spl/board/$(BOARDDIR) > + > +nandobj := $(OBJTREE)/nand_spl/ > + > +ALL = $(nandobj)u-boot-spl $(nandobj)u-boot-spl.bin > $(nandobj)u-boot-spl-16k.bin > + > +all: $(obj).depend $(ALL) > + > +$(nandobj)u-boot-spl-16k.bin: $(nandobj)u-boot-spl > + $(OBJCOPY) ${OBJCFLAGS} --pad-to=$(PAD_TO) -O binary $< $@ > + > +$(nandobj)u-boot-spl.bin: $(nandobj)u-boot-spl > + $(OBJCOPY) ${OBJCFLAGS} -O binary $< $@ > + > +$(nandobj)u-boot-spl: $(OBJS) > + cd $(LNDIR) && $(LD) $(LDFLAGS) $(__OBJS) \ > + -Map $(nandobj)u-boot-spl.map \ > + -o $(nandobj)u-boot-spl please replace with $(nandobj)u-boot-spl: $(OBJS) cd $(LNDIR) && $(LD) $(LDFLAGS) $(__OBJS) \ -Map [EMAIL PROTECTED] -o $@ Best Regards, J. ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ U-Boot-Users mailing list U-Boot-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/u-boot-users