diff options
| -rw-r--r-- | MAINTAINERS | 5 | ||||
| -rw-r--r-- | Makefile | 17 | ||||
| -rw-r--r-- | arch/avr32/lib/board.c | 1 | ||||
| -rw-r--r-- | arch/m68k/lib/board.c | 1 | ||||
| -rw-r--r-- | arch/mips/lib/board.c | 1 | ||||
| -rw-r--r-- | board/a4m072/config.mk | 39 | ||||
| -rw-r--r-- | board/eNET/u-boot.lds | 8 | ||||
| -rw-r--r-- | board/jornada/Makefile (renamed from board/nc650/Makefile) | 18 | ||||
| -rw-r--r-- | board/jornada/jornada.c | 60 | ||||
| -rw-r--r-- | board/jornada/setup.S | 210 | ||||
| -rw-r--r-- | board/jornada/u-boot.lds | 58 | ||||
| -rw-r--r-- | board/nc650/flash.c | 542 | ||||
| -rw-r--r-- | board/nc650/nand.c | 110 | ||||
| -rw-r--r-- | board/nc650/nc650.c | 309 | ||||
| -rw-r--r-- | board/nc650/u-boot.lds | 126 | ||||
| -rw-r--r-- | board/nc650/u-boot.lds.debug | 125 | ||||
| -rw-r--r-- | boards.cfg | 18 | ||||
| -rw-r--r-- | common/cmd_fpga.c | 50 | ||||
| -rw-r--r-- | doc/README.arm-relocation | 10 | ||||
| -rw-r--r-- | doc/README.scrapyard | 29 | ||||
| -rw-r--r-- | doc/README.ubi | 144 | ||||
| -rw-r--r-- | drivers/net/fec_mxc.c | 3 | ||||
| -rw-r--r-- | include/configs/NC650.h | 451 | ||||
| -rw-r--r-- | include/configs/a4m072.h | 6 | ||||
| -rw-r--r-- | include/configs/jornada.h | 155 | ||||
| -rwxr-xr-x | include/lattice.h | 1 | ||||
| -rw-r--r-- | nand_spl/nand_boot.c | 3 | ||||
| -rw-r--r-- | nand_spl/nand_boot_fsl_nfc.c | 3 | ||||
| -rw-r--r-- | post/drivers/memory.c | 68 | 
29 files changed, 814 insertions, 1757 deletions
| diff --git a/MAINTAINERS b/MAINTAINERS index 4d281f397..2f61776e9 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -102,7 +102,6 @@ Wolfgang Denk <wd@denx.de>  	IVMS8_256	MPC860  	LANTEC		MPC850  	LWMON		MPC823 -	NC650		MPC852  	R360MPI		MPC823  	RMU		MPC850  	RRvision	MPC823 @@ -602,6 +601,10 @@ Thomas Elste <info@elste.org>  	modnet50	ARM720T (NET+50) +Kristoffer Ericson <kristoffer.ericson@gmail.com> + +	jornada	SA1110 +  Fabio Estevam <Fabio.Estevam@freescale.com>  	mx31pdk		i.MX31 @@ -304,6 +304,21 @@ __LIBS := $(subst $(obj),,$(LIBS)) $(subst $(obj),,$(LIBBOARD))  #########################################################################  ######################################################################### +ifneq ($(CONFIG_BOARD_SIZE_LIMIT),) +BOARD_SIZE_CHECK = \ +	@actual=`wc -c $@ | awk '{print $$1}'`; \ +	limit=$(CONFIG_BOARD_SIZE_LIMIT); \ +	if test $$actual -gt $$limit; then \ +		echo "$@ exceeds file size limit:"; \ +		echo "  limit:  $$limit bytes"; \ +		echo "  actual: $$actual bytes"; \ +		echo "  excess: $$((actual - limit)) bytes"; \ +		exit 1; \ +	fi +else +BOARD_SIZE_CHECK = +endif +  # Always append ALL so that arch config.mk's can add custom ones  ALL += $(obj)u-boot.srec $(obj)u-boot.bin $(obj)System.map $(U_BOOT_NAND) $(U_BOOT_ONENAND) @@ -317,10 +332,12 @@ $(obj)u-boot.srec:	$(obj)u-boot  $(obj)u-boot.bin:	$(obj)u-boot  		$(OBJCOPY) ${OBJCFLAGS} -O binary $< $@ +		$(BOARD_SIZE_CHECK)  $(obj)u-boot.ldr:	$(obj)u-boot  		$(CREATE_LDR_ENV)  		$(LDR) -T $(CONFIG_BFIN_CPU) -c $@ $< $(LDR_FLAGS) +		$(BOARD_SIZE_CHECK)  $(obj)u-boot.ldr.hex:	$(obj)u-boot.ldr  		$(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@ -I binary diff --git a/arch/avr32/lib/board.c b/arch/avr32/lib/board.c index e6b81cca7..96ccc7fa7 100644 --- a/arch/avr32/lib/board.c +++ b/arch/avr32/lib/board.c @@ -257,7 +257,6 @@ void board_init_r(gd_t *new_gd, ulong dest_addr)  	extern char * env_name_spec;  #endif  	char *s; -	cmd_tbl_t *cmdtp;  	bd_t *bd;  	gd = new_gd; diff --git a/arch/m68k/lib/board.c b/arch/m68k/lib/board.c index eba2435a5..4541e244e 100644 --- a/arch/m68k/lib/board.c +++ b/arch/m68k/lib/board.c @@ -393,7 +393,6 @@ board_init_f (ulong bootflag)   */  void board_init_r (gd_t *id, ulong dest_addr)  { -	cmd_tbl_t *cmdtp;  	char *s;  	bd_t *bd;  	extern void malloc_bin_reloc (void); diff --git a/arch/mips/lib/board.c b/arch/mips/lib/board.c index 0044b1945..4a22f7b41 100644 --- a/arch/mips/lib/board.c +++ b/arch/mips/lib/board.c @@ -276,7 +276,6 @@ void board_init_f(ulong bootflag)  void board_init_r (gd_t *id, ulong dest_addr)  { -	cmd_tbl_t *cmdtp;  #ifndef CONFIG_SYS_NO_FLASH  	ulong size;  #endif diff --git a/board/a4m072/config.mk b/board/a4m072/config.mk deleted file mode 100644 index c6ba51d96..000000000 --- a/board/a4m072/config.mk +++ /dev/null @@ -1,39 +0,0 @@ -# -# (C) Copyright 2003 -# Wolfgang Denk, DENX Software Engineering, wd@denx.de. -# -# 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 -# - -# -# a4m072 board: -# -#	Valid values for TEXT_BASE is: -# -#	0xFE000000   boot low -# - -sinclude $(OBJTREE)/board/$(BOARDDIR)/config.tmp - -ifndef TEXT_BASE -## Standard: boot low -TEXT_BASE = 0xFE000000 -endif - -PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)/board diff --git a/board/eNET/u-boot.lds b/board/eNET/u-boot.lds index b414079bc..3eeb2a201 100644 --- a/board/eNET/u-boot.lds +++ b/board/eNET/u-boot.lds @@ -27,7 +27,7 @@ ENTRY(_start)  SECTIONS  { -	. = TEXT_BASE;		/* Location of bootcode in flash */ +	. = CONFIG_SYS_TEXT_BASE;	/* Location of bootcode in flash */  	__text_start = .;  	.text  : { *(.text*); } @@ -94,11 +94,11 @@ SECTIONS  	 * The fff0 offset of resetvec is important, however.  	 */  	. = 0xfffffe00; -	.start32 : AT (TEXT_BASE + 0x3fe00) { KEEP(*(.start32)); } +	.start32 : AT (CONFIG_SYS_TEXT_BASE + 0x3fe00) { KEEP(*(.start32)); }  	. = 0xf800; -	.start16 : AT (TEXT_BASE + 0x3f800) { KEEP(*(.start16)); } +	.start16 : AT (CONFIG_SYS_TEXT_BASE + 0x3f800) { KEEP(*(.start16)); }  	. = 0xfff0; -	.resetvec : AT (TEXT_BASE + 0x3fff0) { KEEP(*(.resetvec)); } +	.resetvec : AT (CONFIG_SYS_TEXT_BASE + 0x3fff0) { KEEP(*(.resetvec)); }  } diff --git a/board/nc650/Makefile b/board/jornada/Makefile index e4006e7bd..1b4e192b2 100644 --- a/board/nc650/Makefile +++ b/board/jornada/Makefile @@ -1,8 +1,9 @@  # -# (C) Copyright 2006 Detlev Zundel, dzu@denx.de -# (C) Copyright 2004-2006 +# (C) Copyright 2000-2006  # Wolfgang Denk, DENX Software Engineering, wd@denx.de.  # +# 2004 (c) MontaVista Software, Inc. +#  # See file CREDITS for list of people who contributed to this  # project.  # @@ -26,14 +27,21 @@ include $(TOPDIR)/config.mk  LIB	= $(obj)lib$(BOARD).a -COBJS	= $(BOARD).o nand.o flash.o +COBJS	:= jornada.o +SOBJS	:= setup.o  SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)  OBJS	:= $(addprefix $(obj),$(COBJS))  SOBJS	:= $(addprefix $(obj),$(SOBJS)) -$(LIB):	$(obj).depend $(OBJS) -	$(AR) $(ARFLAGS) $@ $(OBJS) +$(LIB):	$(obj).depend $(OBJS) $(SOBJS) +	$(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS) + +clean: +	rm -f $(SOBJS) $(OBJS) + +distclean:	clean +	rm -f $(LIB) core *.bak $(obj).depend  ######################################################################### diff --git a/board/jornada/jornada.c b/board/jornada/jornada.c new file mode 100644 index 000000000..fab1068ad --- /dev/null +++ b/board/jornada/jornada.c @@ -0,0 +1,60 @@ +/* + * (C) Copyright 2002 + * Sysgo Real-Time Solutions, GmbH <www.elinos.com> + * Marius Groeger <mgroeger@sysgo.de> + * + * 2004 (c) MontaVista Software, Inc. + * + * 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 <SA-1100.h> + +DECLARE_GLOBAL_DATA_PTR; + +/* ------------------------------------------------------------------------- */ + +int board_init(void) +{ +	gd->bd->bi_arch_number = MACH_TYPE_JORNADA720; +	gd->bd->bi_boot_params = 0xc0000100; + + +	/* +	 * Turn on flashing. +	 * Would be nice to have some protection but +	 * that would have to be implemented in the +	 * flash init function, which isnt possible yet. +	 */ +	PPSR |= (1 << 7); +	PPDR |= (1 << 7); + +	return 0; +} + +int dram_init(void) +{ +	gd->bd->bi_dram[0].start = PHYS_SDRAM_1; +	gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE; +	gd->bd->bi_dram[1].start = PHYS_SDRAM_2; +	gd->bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE; + +	return (0); +} diff --git a/board/jornada/setup.S b/board/jornada/setup.S new file mode 100644 index 000000000..885e02f7d --- /dev/null +++ b/board/jornada/setup.S @@ -0,0 +1,210 @@ +/* + * Memory Setup stuff - taken from blob memsetup.S + * + * Copyright (C) 1999 2000 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl) and + *		       Jan-Derk Bakker (J.D.Bakker@its.tudelft.nl) + * 2004 (c) MontaVista Software, Inc. + * + * 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 "config.h" +#include "version.h" + + +/*----------------------------------------------------------------------- + * Board defines: + */ + +#define MDCNFG		0x00 +#define MDCAS00		0x04 +#define MDCAS01		0x08 +#define MDCAS02		0x0C +#define MSC0		0x10 +#define MSC1		0x14 +#define MECR		0x18 +#define MDREFR		0x1C +#define MDCAS20		0x20 +#define MDCAS21		0x24 +#define MDCAS22		0x28 +#define MSC2		0x2C +#define SMCNFG		0x30 + +#define GPDR	0x04 +#define GPSR	0x08 +#define GPCR	0x0C +#define GAFR	0x1C + +#define PPDR	0x00 +#define PPSR	0x04 +#define PPAR	0x08 + +#define MDREFR_TRASR(n_) (n_ & (0x0000000f)) +#define MDREFR_DRI(n_)   ((n_ & (0x00000fff)) << 4) +#define MDREFR_K0DB2 (1 << 18) +#define MDREFR_K1DB2 (1 << 22) +#define MDREFR_K2DB2 (1 << 26) + +#define MDREFR_K0RUN (1 << 17) +#define MDREFR_K1RUN (1 << 21) +#define MDREFR_K2RUN (1 << 25) + +#define MDREFR_SLFRSH (1 << 31) +#define MDREFR_E1PIN  (1 << 20) + +#define PSSR    0x04 +#define PSSR_DH 0x00000008 +#define POSR    0x08 +#define RCSR    0x04 + +/*----------------------------------------------------------------------- + * Setup parameters for the board: + */ +MEM_BASE:	.long	0xa0000000 +MEM_START:	.long	0xc0000000 +PWR_BASE:	.word	0x90020000 +RST_BASE:	.long	0x90030000 +PPC_BASE:	.long	0x90060000 +GPIO_BASE:	.long	0x90040000 +IC_BASE:	.word	0x90050000 + +cpuspeed:	.word	0xa0 +/* calculated from old blob bootloader */ +mdcnfg:	.long	0x00037267	/* mdcnfg  0x00037267 */ +mdcas00:	.long	0x5555557f	/* mdcas00 0x5555557f */ +mdcas01:	.long	0x55555555	/* mdcas01 0x55555555 */ +mdcas02:	.long	0x55555555	/* mdcas02 0x55555555 */ +msc0:	.long	0xfff04f78		/* msc0    0xfff04f78 */ +msc1:	.long	0xfff8fff0		/* msc1    0xfff8fff0 */ +mecr:	.long	0x98c698c6	/* mecr    0x98c698c6 */ +mdrefr:	.long	0x067600c7	/* mdrefr  0x04340327 */ +mdcas20:	.long	0xd1284142	/* mdcas20 0xd1284142 */ +mdcas21:	.long	0x72249529	/* mdcas21 0x72249529 */ +mdcas22:	.long	0x78414351	/* mdcas22 0x78414351 */ +msc2:	.long	0x201d2959		/* msc2    0x201d2959 */ +smcnfg:	.long	0x00000000	/* smcnfg  0x00000000 */ + +pin_set_out:	.long	0x37ff70 +pin_set_dir:	.long	0x11480 + +gpdr_set:	.long	0x0B3A0900 +gpsr_set:	.long	0x02100800 +gpcr_set:	.long	0x092A0100 +gafr_set:	.long	0x08600000 + +.globl lowlevel_init +lowlevel_init: + +	/* set output and direction of pins */ +	ldr r0, PPC_BASE +	ldr r1, pin_set_out +	str r1, [r0, #PPSR] +	ldr r1, pin_set_dir +	str r1, [r0, #PPDR] + +	/* Setting up the memory and stuff */ +	/***********************************/ + +	ldr	r0, MEM_BASE + +	ldr	r1, mdcnfg +	str	r1, [r0, #MDCNFG] +	ldr	r1, mdcas00 +	str	r1, [r0, #MDCAS00] +	ldr	r1, mdcas01 +	str	r1, [r0, #MDCAS01] +	ldr	r1, mdcas02 +	str	r1, [r0, #MDCAS02] +	ldr	r1, mdcas20 +	str	r1, [r0, #MDCAS20] +	ldr	r1, mdcas21 +	str	r1, [r0, #MDCAS21] +	ldr	r1, mdcas22 +	str	r1, [r0, #MDCAS22] + +	/* clear kxDB2 */ +	ldr	r2, [r0, #MDREFR] +	bic	r2, r2, #MDREFR_K0DB2 +	bic	r2, r2, #MDREFR_K1DB2 +	bic	r2, r2, #MDREFR_K2DB2 +	str	r2, [r0, #MDREFR] + +	ldr	r2, [r0, #MDREFR] +	orr r2, r2, #MDREFR_TRASR(7) + +	mov r4, #0x2000 +	spin:	subs	r4, r4, #1 +	bne	spin + +	ldr	r1, PWR_BASE +	mov	r2, #PSSR_DH +	str	r2, [r1, #PSSR] + +	ldr	r2, [r0, #MDREFR] +	bic	r2, r2, #MDREFR_K0DB2 +	bic	r2, r2, #MDREFR_K1DB2 +	bic	r2, r2, #MDREFR_K2DB2 +	str	r2, [r0, #MDREFR] + +	ldr	r2, [r0, #MDREFR] +	orr	r2, r2, #MDREFR_TRASR(7) +	orr	r2, r2, #MDREFR_DRI(12) +	orr	r2, r2, #MDREFR_K0DB2 +	orr	r2, r2, #MDREFR_K1DB2 +	orr	r2, r2, #MDREFR_K2DB2 +	str	r2, [r0, #MDREFR] + +	ldr	r2, [r0, #MDREFR] +	orr	r2, r2, #MDREFR_K0RUN +	orr	r2, r2, #MDREFR_K1RUN +	orr	r2, r2, #MDREFR_K2RUN +	str	r2, [r0, #MDREFR] + +	ldr	r2, [r0, #MDREFR] +	bic	r2, r2, #MDREFR_SLFRSH +	str	r2, [r0, #MDREFR] + +	ldr	r2, [r0, #MDREFR] +	orr	r2, r2, #MDREFR_E1PIN +	str	r2, [r0, #MDREFR] + +	ldr	r2, MEM_START +.rept	8 +	ldr	r3, [r2] +.endr + +	ldr	r1, msc0 +	str	r1, [r0, #MSC0] +	ldr	r1, msc1 +	str	r1, [r0, #MSC1] +	ldr	r1, msc2 +	str	r1, [r0, #MSC2] +	ldr	r1, smcnfg +	str	r1, [r0, #SMCNFG] +	ldr	r1, mdcnfg +	str	r1, [r0, #MDCNFG] +	ldr	r1, mecr +	str	r1, [r0, #MECR] + +	/* enable SDRAM */ +	orr	r1, r1, #0x00000001 +	str	r1, [r0, #MDCNFG] + +	mov	pc, lr diff --git a/board/jornada/u-boot.lds b/board/jornada/u-boot.lds new file mode 100644 index 000000000..de6101e43 --- /dev/null +++ b/board/jornada/u-boot.lds @@ -0,0 +1,58 @@ +/* + * (C) Copyright 2000-2004 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * 2004 (c) MontaVista Software, Inc. + * + * 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 + */ + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +ENTRY(_start) +SECTIONS +{ +	. = 0x00000000; + +	. = ALIGN(4); +	.text : +	{ +		cpu/sa1100/start.o	(.text) +		*(.text) +	} + +	. = ALIGN(4); +	.rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } + +	. = ALIGN(4); +	.data : { *(.data) } + +	. = ALIGN(4); +	.got : { *(.got) } + + +	. = .; +	__u_boot_cmd_start = .; +	.u_boot_cmd : { *(.u_boot_cmd) } +	__u_boot_cmd_end = .; + +	. = ALIGN(4); +	__bss_start = .; +	.bss (NOLOAD) : { *(.bss) . = ALIGN(4); } +	_end = .; +} diff --git a/board/nc650/flash.c b/board/nc650/flash.c deleted file mode 100644 index 8a0eab55f..000000000 --- a/board/nc650/flash.c +++ /dev/null @@ -1,542 +0,0 @@ -/* - * (C) Copyright 2004 - * Wolfgang Denk, DENX Software Engineering, wd@denx.de. - * - * (C) Copyright 2001 - * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net - * - * (C) Copyright 2001 - * Wolfgang Denk, DENX Software Engineering, wd@denx.de. - * - * 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 - */ - -#undef DEBUG - -#include <common.h> -#include <mpc8xx.h> - -DECLARE_GLOBAL_DATA_PTR; - -#ifndef CONFIG_SYS_OR_TIMING_FLASH_AT_50MHZ -#define CONFIG_SYS_OR_TIMING_FLASH_AT_50MHZ (OR_ACS_DIV1  | OR_TRLX | OR_CSNT_SAM | \ -				      OR_SCY_2_CLK | OR_EHTR | OR_BI) -#endif - -flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS];	/* info for FLASH chips    */ - -#if defined(CONFIG_ENV_IS_IN_FLASH) -# ifndef  CONFIG_ENV_ADDR -#  define CONFIG_ENV_ADDR	(CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET) -# endif -# ifndef  CONFIG_ENV_SIZE -#  define CONFIG_ENV_SIZE	CONFIG_ENV_SECT_SIZE -# endif -# ifndef  CONFIG_ENV_SECT_SIZE -#  define CONFIG_ENV_SECT_SIZE  CONFIG_ENV_SIZE -# endif -#endif - -/*----------------------------------------------------------------------- - * Protection Flags: - */ -#define FLAG_PROTECT_SET	0x01 -#define FLAG_PROTECT_CLEAR	0x02 - -/* Board support for 1 or 2 flash devices */ -#undef FLASH_PORT_WIDTH32 -#undef FLASH_PORT_WIDTH16 -#define FLASH_PORT_WIDTH8 - -#ifdef FLASH_PORT_WIDTH16 -#define FLASH_PORT_WIDTH	ushort -#define FLASH_PORT_WIDTHV	vu_short -#elif FLASH_PORT_WIDTH32 -#define FLASH_PORT_WIDTH	ulong -#define FLASH_PORT_WIDTHV	vu_long -#else /* FLASH_PORT_WIDTH8 */ -#define FLASH_PORT_WIDTH	uchar -#define FLASH_PORT_WIDTHV	vu_char -#endif - -#define FPW			FLASH_PORT_WIDTH -#define FPWV			FLASH_PORT_WIDTHV - -/*----------------------------------------------------------------------- - * Functions - */ -static ulong flash_get_size (FPWV * addr, flash_info_t * info); -static int write_data (flash_info_t * info, ulong dest, FPW data); -static void flash_get_offsets (ulong base, flash_info_t * info); - -/*----------------------------------------------------------------------- - */ - -unsigned long flash_init (void) -{ -	volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR; -	volatile memctl8xx_t *memctl = &immap->im_memctl; -	unsigned long size_b0; -	int i; -#ifdef CONFIG_SYS_OR_TIMING_FLASH_AT_50MHZ -	int scy, trlx, flash_or_timing, clk_diff; - -	scy = (CONFIG_SYS_OR_TIMING_FLASH_AT_50MHZ & OR_SCY_MSK) >> 4; -	if (CONFIG_SYS_OR_TIMING_FLASH_AT_50MHZ & OR_TRLX) { -		trlx = OR_TRLX; -		scy *= 2; -	} else -		trlx = 0; - -		/* We assume that each 10MHz of bus clock require 1-clk SCY -		 * adjustment. -		 */ -	clk_diff = (gd->bus_clk / 1000000) - 50; - -		/* We need proper rounding here. This is what the "+5" and "-5" -		 * are here for. -		 */ -	if (clk_diff >= 0) -		scy += (clk_diff + 5) / 10; -	else -		scy += (clk_diff - 5) / 10; - -		/* For bus frequencies above 50MHz, we want to use relaxed -		 * timing (OR_TRLX). -		 */ -	if (gd->bus_clk >= 50000000) -		trlx = OR_TRLX; -	else -		trlx = 0; - -	if (trlx) -		scy /= 2; - -	if (scy > 0xf) -		scy = 0xf; -	if (scy < 1) -		scy = 1; - -	flash_or_timing = (scy << 4) | trlx | -			  (CONFIG_SYS_OR_TIMING_FLASH_AT_50MHZ & ~(OR_TRLX | OR_SCY_MSK)); -#endif - -	/* Init: no FLASHes known */ -	for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; ++i) { -		flash_info[i].flash_id = FLASH_UNKNOWN; -	} - -	/* Static FLASH Bank configuration here - FIXME XXX */ -	size_b0 = flash_get_size ((FPW *) FLASH_BASE0_PRELIM, &flash_info[0]); - -	if (flash_info[0].flash_id == FLASH_UNKNOWN) { -		printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n", -			size_b0, size_b0 << 20); -	} - -	/* Remap FLASH according to real size */ -#ifndef CONFIG_SYS_OR_TIMING_FLASH_AT_50MHZ -	memctl->memc_or0 = CONFIG_SYS_OR_TIMING_FLASH | (-size_b0 & OR_AM_MSK); -#else -	memctl->memc_or0 = flash_or_timing | (-size_b0 & OR_AM_MSK); -#endif -	memctl->memc_br0 = (CONFIG_SYS_FLASH_BASE & BR_BA_MSK) | BR_PS_8 | BR_MS_GPCM | BR_V; - -	/* Re-do sizing to get full correct info */ -	size_b0 = flash_get_size ((FPW *) CONFIG_SYS_FLASH_BASE, &flash_info[0]); - -	flash_get_offsets (CONFIG_SYS_FLASH_BASE, &flash_info[0]); - -#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE -	/* monitor protection ON by default */ -	(void) flash_protect (FLAG_PROTECT_SET, -				CONFIG_SYS_MONITOR_BASE, -				CONFIG_SYS_MONITOR_BASE + monitor_flash_len - 1, -				&flash_info[0]); -#endif - -#ifdef	CONFIG_ENV_IS_IN_FLASH -	/* ENV protection ON by default */ -	flash_protect (FLAG_PROTECT_SET, -			CONFIG_ENV_ADDR, -			CONFIG_ENV_ADDR + CONFIG_ENV_SIZE - 1, -			&flash_info[0]); -#endif - -	flash_info[0].size = size_b0; - -	return (size_b0); -} - -/*----------------------------------------------------------------------- - */ -static void flash_get_offsets (ulong base, flash_info_t * info) -{ -	int i; - -	if (info->flash_id == FLASH_UNKNOWN) { -		return; -	} - -	if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) { -		for (i = 0; i < info->sector_count; i++) { -			info->start[i] = base + (i * 0x00020000); -		} -	} -} - -/*----------------------------------------------------------------------- - */ -void flash_print_info (flash_info_t * info) -{ -	int i; - -	if (info->flash_id == FLASH_UNKNOWN) { -		printf ("missing or unknown FLASH type\n"); -		return; -	} - -	switch (info->flash_id & FLASH_VENDMASK) { -	case FLASH_MAN_INTEL: -		printf ("INTEL "); -		break; -	default: -		printf ("Unknown Vendor "); -		break; -	} - -	switch (info->flash_id & FLASH_TYPEMASK) { -	case FLASH_28F320J3A: -		printf ("28F320J3A\n"); -		break; -	case FLASH_28F640J3A: -		printf ("28F640J3A\n"); -		break; -	case FLASH_28F128J3A: -		printf ("28F128J3A\n"); -		break; -	default: -		printf ("Unknown Chip Type\n"); -		break; -	} - -	printf ("  Size: %ld MB in %d Sectors\n", -			info->size >> 20, info->sector_count); - -	printf ("  Sector Start Addresses:"); -	for (i = 0; i < info->sector_count; ++i) { -		if ((i % 5) == 0) -			printf ("\n   "); -		printf (" %08lX%s", -			info->start[i], -			info->protect[i] ? " (RO)" : "     "); -	} -	printf ("\n"); -	return; -} - -/*----------------------------------------------------------------------- - */ - - -/*----------------------------------------------------------------------- - */ - -/* - * The following code cannot be run from FLASH! - */ - -static ulong flash_get_size (FPWV * addr, flash_info_t * info) -{ -	FPW value; - -	addr[0] = (FPW) 0x00900090; - -	value = addr[0]; - -	debug ("Manuf. ID @ 0x%08lx: 0x%08lx\n", (ulong)addr, value); - -	switch (value) { -	case (FPW) INTEL_MANUFACT: -		info->flash_id = FLASH_MAN_INTEL; -		break; -	default: -		info->flash_id = FLASH_UNKNOWN; -		info->sector_count = 0; -		info->size = 0; -		addr[0] = (FPW) 0x00FF00FF;	/* restore read mode */ -		return (0);			/* no or unknown flash  */ -	} - -#ifdef FLASH_PORT_WIDTH8 -	value = addr[2];			/* device ID        */ -#else -	value = addr[1];			/* device ID        */ -#endif - -	debug ("Device ID @ 0x%08lx: 0x%08lx\n", (ulong)(&addr[1]), value); - -	switch (value) { -	case (FPW) INTEL_ID_28F320J3A: -		info->flash_id += FLASH_28F320J3A; -		info->sector_count = 32; -		info->size = 0x00400000; -		break;				/* => 4 MB     */ - -	case (FPW) INTEL_ID_28F640J3A: -		info->flash_id += FLASH_28F640J3A; -		info->sector_count = 64; -		info->size = 0x00800000; -		break;				/* => 8 MB     */ - -	case (FPW) INTEL_ID_28F128J3A: -		info->flash_id += FLASH_28F128J3A; -		info->sector_count = 128; -		info->size = 0x01000000; -		break;				/* => 16 MB     */ - -	default: -		info->flash_id = FLASH_UNKNOWN; -		break; -	} - -	if (info->sector_count > CONFIG_SYS_MAX_FLASH_SECT) { -		printf ("** ERROR: sector count %d > max (%d) **\n", -				info->sector_count, CONFIG_SYS_MAX_FLASH_SECT); -		info->sector_count = CONFIG_SYS_MAX_FLASH_SECT; -	} - -	addr[0] = (FPW) 0x00FF00FF;	/* restore read mode */ - -	return (info->size); -} - - -/*----------------------------------------------------------------------- - */ - -int flash_erase (flash_info_t * info, int s_first, int s_last) -{ -	int flag, prot, sect; -	ulong type, start, now, last; -	int rcode = 0; - -	if ((s_first < 0) || (s_first > s_last)) { -		if (info->flash_id == FLASH_UNKNOWN) { -			printf ("- missing\n"); -		} else { -			printf ("- no sectors to erase\n"); -		} -		return 1; -	} - -	type = (info->flash_id & FLASH_VENDMASK); -	if ((type != FLASH_MAN_INTEL)) { -		printf ("Can't erase unknown flash type %08lx - aborted\n", -			info->flash_id); -		return 1; -	} - -	prot = 0; -	for (sect = s_first; sect <= s_last; ++sect) { -		if (info->protect[sect]) { -			prot++; -		} -	} - -	if (prot) { -		printf ("- Warning: %d protected sectors will not be erased!\n", -			prot); -	} else { -		printf ("\n"); -	} - -	start = get_timer (0); -	last = start; -	/* Start erase on unprotected sectors */ -	for (sect = s_first; sect <= s_last; sect++) { -		if (info->protect[sect] == 0) {	/* not protected */ -			FPWV *addr = (FPWV *) (info->start[sect]); -			FPW status; - -			/* Disable interrupts which might cause a timeout here */ -			flag = disable_interrupts (); - -			*addr = (FPW) 0x00500050;	/* clear status register */ -			*addr = (FPW) 0x00200020;	/* erase setup */ -			*addr = (FPW) 0x00D000D0;	/* erase confirm */ - -			/* re-enable interrupts if necessary */ -			if (flag) -				enable_interrupts (); - -			/* wait at least 80us - let's wait 1 ms */ -			udelay (1000); - -			while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) { -			    if ((now = get_timer (start)) > CONFIG_SYS_FLASH_ERASE_TOUT) { -				printf ("Timeout\n"); -				*addr = (FPW) 0x00B000B0;	/* suspend erase     */ -				*addr = (FPW) 0x00FF00FF;	/* reset to read mode */ -				rcode = 1; -				break; -			    } - -			    /* show that we're waiting */ -			    if ((now - last) > 1000) {	/* every second */ -				putc ('.'); -				last = now; -			    } -			} - -			*addr = (FPW) 0x00FF00FF;	/* reset to read mode */ -		} -	} -	printf (" done\n"); -	return rcode; -} - -/*----------------------------------------------------------------------- - * Copy memory to flash, returns: - * 0 - OK - * 1 - write timeout - * 2 - Flash not erased - * 4 - Flash not identified - */ - -int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt) -{ -	ulong cp, wp; -	FPW data; - -	int i, l, rc, port_width; - -	if (info->flash_id == FLASH_UNKNOWN) { -		return 4; -	} -/* get lower word aligned address */ -#ifdef FLASH_PORT_WIDTH16 -	wp = (addr & ~1); -	port_width = 2; -#elif defined(FLASH_PORT_WIDTH32) -	wp = (addr & ~3); -	port_width = 4; -#else -	wp = addr; -	port_width = 1; -#endif - -	/* -	 * handle unaligned start bytes -	 */ -	if ((l = addr - wp) != 0) { -		data = 0; -		for (i = 0, cp = wp; i < l; ++i, ++cp) { -			data = (data << 8) | (*(uchar *) cp); -		} -		for (; i < port_width && cnt > 0; ++i) { -			data = (data << 8) | *src++; -			--cnt; -			++cp; -		} -		for (; cnt == 0 && i < port_width; ++i, ++cp) { -			data = (data << 8) | (*(uchar *) cp); -		} - -		if ((rc = write_data (info, wp, data)) != 0) { -			return (rc); -		} -		wp += port_width; -	} - -	/* -	 * handle word aligned part -	 */ -	while (cnt >= port_width) { -		data = 0; -		for (i = 0; i < port_width; ++i) { -			data = (data << 8) | *src++; -		} -		if ((rc = write_data (info, wp, data)) != 0) { -			return (rc); -		} -		wp += port_width; -		cnt -= port_width; -	} - -	if (cnt == 0) { -		return (0); -	} - -	/* -	 * handle unaligned tail bytes -	 */ -	data = 0; -	for (i = 0, cp = wp; i < port_width && cnt > 0; ++i, ++cp) { -		data = (data << 8) | *src++; -		--cnt; -	} -	for (; i < port_width; ++i, ++cp) { -		data = (data << 8) | (*(uchar *) cp); -	} - -	return (write_data (info, wp, data)); -} - -/*----------------------------------------------------------------------- - * Write a word or halfword to Flash, returns: - * 0 - OK - * 1 - write timeout - * 2 - Flash not erased - */ -static int write_data (flash_info_t * info, ulong dest, FPW data) -{ -	FPWV *addr = (FPWV *) dest; -	ulong status; -	ulong start; -	int flag; - -	/* Check if Flash is (sufficiently) erased */ -	if ((*addr & data) != data) { -		printf ("not erased at %08lx (%x)\n", (ulong) addr, *addr); -		return (2); -	} -	/* Disable interrupts which might cause a timeout here */ -	flag = disable_interrupts (); - -	*addr = (FPW) 0x00400040;	/* write setup */ -	*addr = data; - -	/* re-enable interrupts if necessary */ -	if (flag) -		enable_interrupts (); - -	start = get_timer (0); - -	while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) { -		if (get_timer (start) > CONFIG_SYS_FLASH_WRITE_TOUT) { -			*addr = (FPW) 0x00FF00FF;	/* restore read mode */ -			return (1); -		} -	} - -	*addr = (FPW) 0x00FF00FF;	/* restore read mode */ - -	return (0); -} diff --git a/board/nc650/nand.c b/board/nc650/nand.c deleted file mode 100644 index 7dca97fdf..000000000 --- a/board/nc650/nand.c +++ /dev/null @@ -1,110 +0,0 @@ -/* - * (C) Copyright 2006 Detlev Zundel, dzu@denx.de - * (C) Copyright 2006 DENX Software Engineering - * - * 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/io.h> - -#if defined(CONFIG_CMD_NAND) - -#include <nand.h> - -#if defined(CONFIG_IDS852_REV1) -/* - *	hardware specific access to control-lines - */ -static void nc650_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl) -{ -	struct nand_chip *this = mtd->priv; - -	if (ctrl & NAND_CTRL_CHANGE) { -		if ( ctrl & NAND_CLE ) -			this->IO_ADDR_W += 2; -		else -			this->IO_ADDR_W -= 2; -		if ( ctrl & NAND_ALE ) -			this->IO_ADDR_W += 1; -		else -			this->IO_ADDR_W -= 1; -	} - -	if (cmd != NAND_CMD_NONE) -		writeb(cmd, this->IO_ADDR_W); -} -#elif defined(CONFIG_IDS852_REV2) -/* - *	hardware specific access to control-lines - */ -static void nc650_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl) -{ -	struct nand_chip *this = mtd->priv; - -	if (ctrl & NAND_CTRL_CHANGE) { -		if ( ctrl & NAND_CLE ) -			writeb(0, (volatile __u8 *) this->IO_ADDR_W + 0xa); -		else -			writeb(0, (volatile __u8 *) this->IO_ADDR_W) + 0x8); -		if ( ctrl & NAND_ALE ) -			writeb(0, (volatile __u8 *) this->IO_ADDR_W) + 0x9); -		else -			writeb(0, (volatile __u8 *) this->IO_ADDR_W) + 0x8); -		if ( ctrl & NAND_NCE ) -			writeb(0, (volatile __u8 *) this->IO_ADDR_W) + 0x8); -		else -			writeb(0, (volatile __u8 *) this->IO_ADDR_W) + 0xc); -	} - -	if (cmd != NAND_CMD_NONE) -		writeb(cmd, this->IO_ADDR_W); -} -#else -#error Unknown IDS852 module revision -#endif - -/* - * Board-specific NAND initialization. The following members of the - * argument are board-specific (per include/linux/mtd/nand.h): - * - IO_ADDR_R?: address to read the 8 I/O lines of the flash device - * - IO_ADDR_W?: address to write the 8 I/O lines of the flash device - * - cmd_ctrl: hardwarespecific function for accesing control-lines - * - dev_ready: hardwarespecific function for  accesing device ready/busy line - * - enable_hwecc?: function to enable (reset)  hardware ecc generator. Must - *   only be provided if a hardware ECC is available - * - eccm.ode: mode of ecc, see defines - * - chip_delay: chip dependent delay for transfering data from array to - *   read regs (tR) - * - options: various chip options. They can partly be set to inform - *   nand_scan about special functionality. See the defines for further - *   explanation - * Members with a "?" were not set in the merged testing-NAND branch, - * so they are not set here either. - */ -int board_nand_init(struct nand_chip *nand) -{ - -	nand->cmd_ctrl = nc650_hwcontrol; -	nand->ecc.mode = NAND_ECC_SOFT; -	nand->chip_delay = 12; -/*	nand->options = NAND_SAMSUNG_LP_OPTIONS;*/ -	return 0; -} -#endif diff --git a/board/nc650/nc650.c b/board/nc650/nc650.c deleted file mode 100644 index 056230da6..000000000 --- a/board/nc650/nc650.c +++ /dev/null @@ -1,309 +0,0 @@ -/* - * (C) Copyright 2006 Detlev Zundel, dzu@denx.de - * (C) Copyright 2001 - * Wolfgang Denk, DENX Software Engineering, wd@denx.de. - * - * 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 <config.h> -#include <mpc8xx.h> - -/* - *  Memory Controller Using - * - *  CS0 - Flash memory            (0x40000000) - *  CS3 - SDRAM                   (0x00000000} - */ - -/* ------------------------------------------------------------------------- */ - -#define _not_used_	0xffffffff - -const uint sdram_table[] = { -	/* single read. (offset 0 in upm RAM) */ -	0x1f07fc04, 0xeeaefc04, 0x11adfc04, 0xefbbbc00, -	0x1ff77c47, - -	/* MRS initialization (offset 5) */ - -	0x1ff77c34, 0xefeabc34, 0x1fb57c35, - -	/* burst read. (offset 8 in upm RAM) */ -	0x1f07fc04, 0xeeaefc04, 0x10adfc04, 0xf0affc00, -	0xf0affc00, 0xf1affc00, 0xefbbbc00, 0x1ff77c47, -	_not_used_, _not_used_, _not_used_, _not_used_, -	_not_used_, _not_used_, _not_used_, _not_used_, - -	/* single write. (offset 18 in upm RAM) */ -	0x1f27fc04, 0xeeaebc00, 0x01b93c04, 0x1ff77c47, -	_not_used_, _not_used_, _not_used_, _not_used_, - -	/* burst write. (offset 20 in upm RAM) */ -	0x1f07fc04, 0xeeaebc00, 0x10ad7c00, 0xf0affc00, -	0xf0affc00, 0xe1bbbc04, 0x1ff77c47, _not_used_, -	_not_used_, _not_used_, _not_used_, _not_used_, -	_not_used_, _not_used_, _not_used_, _not_used_, - -	/* refresh. (offset 30 in upm RAM) */ -	0x1ff5fc84, 0xfffffc04, 0xfffffc04, 0xfffffc04, -	0xfffffc84, 0xfffffc07, _not_used_, _not_used_, -	_not_used_, _not_used_, _not_used_, _not_used_, - -	/* exception. (offset 3c in upm RAM) */ -	0x7ffffc07, _not_used_, _not_used_, _not_used_ -}; - -const uint nand_flash_table[] = { -	/* single read. (offset 0 in upm RAM) */ -	0x0ff3fc04, 0x0ff3fc04, 0x0ff3fc04, 0x0ffffc04, -	0xfffffc00, 0xfffffc05, 0xfffffc05, 0xfffffc05, - -	/* burst read. (offset 8 in upm RAM) */ -	0xffffcc05, 0xffffcc05, 0xffffcc05, 0xffffcc05, -	0xffffcc05, 0xffffcc05, 0xffffcc05, 0xffffcc05, -	0xffffcc05, 0xffffcc05, 0xffffcc05, 0xffffcc05, -	0xffffcc05, 0xffffcc05, 0xffffcc05, 0xffffcc05, - -	/* single write. (offset 18 in upm RAM) */ -	0x00fffc04, 0x00fffc04, 0x00fffc04, 0x0ffffc04, -	0x0ffffc84, 0x0ffffc84, 0xfffffc00, 0xfffffc05, - -	/* burst write. (offset 20 in upm RAM) */ -	0xffffcc05, 0xffffcc05, 0xffffcc05, 0xffffcc05, -	0xffffcc05, 0xffffcc05, 0xffffcc05, 0xffffcc05, -	0xffffcc05, 0xffffcc05, 0xffffcc05, 0xffffcc05, -	0xffffcc05, 0xffffcc05, 0xffffcc05, 0xffffcc05, - -	/* refresh. (offset 30 in upm RAM) */ -	0xffffcc05, 0xffffcc05, 0xffffcc05, 0xffffcc05, -	0xffffcc05, 0xffffcc05, 0xffffcc05, 0xffffcc05, -	0xffffcc05, 0xffffcc05, 0xffffcc05, 0xffffcc05, - -	/* exception. (offset 3c in upm RAM) */ -	0xffffcc05, 0xffffcc05, 0xffffcc05, 0xffffcc05 -}; - -/* ------------------------------------------------------------------------- */ - -/* - * Check Board Identity: - */ - -int checkboard (void) -{ -#if !defined(CONFIG_CP850) -	puts ("Board: NC650"); -#else -	puts ("Board: CP850"); -#endif -#if defined(CONFIG_IDS852_REV1) -	puts (" with IDS852 rev 1 module\n"); -#elif defined(CONFIG_IDS852_REV2) -	puts (" with IDS852 rev 2 module\n"); -#endif -	return 0; -} - -/* ------------------------------------------------------------------------- */ - -static long int dram_size (long int, long int *, long int); - -/* ------------------------------------------------------------------------- */ - -phys_size_t initdram (int board_type) -{ -	volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR; -	volatile memctl8xx_t *memctl = &immap->im_memctl; -	long int size8, size9; -	long int size_b0 = 0; -	unsigned long reg; - -	upmconfig (UPMA, (uint *) sdram_table, -			   sizeof (sdram_table) / sizeof (uint)); - -	/* -	 * Preliminary prescaler for refresh (depends on number of -	 * banks): This value is selected for four cycles every 62.4 us -	 * with two SDRAM banks or four cycles every 31.2 us with one -	 * bank. It will be adjusted after memory sizing. -	 */ -	memctl->memc_mptpr = CONFIG_SYS_MPTPR_2BK_8K; - -	memctl->memc_mar = 0x00000088; - -	/* -	 * Map controller bank 1 to the SDRAM bank at -	 * preliminary address - these have to be modified after the -	 * SDRAM size has been determined. -	 */ -	memctl->memc_or3 = CONFIG_SYS_OR3_PRELIM; -	memctl->memc_br3 = CONFIG_SYS_BR3_PRELIM; - -	memctl->memc_mamr = CONFIG_SYS_MAMR_8COL & (~(MAMR_PTAE));	/* no refresh yet */ - -	udelay (200); - -	/* perform SDRAM initializsation sequence */ - -	memctl->memc_mcr = 0x80006105;	/* SDRAM bank 0 */ -	udelay (200); -	memctl->memc_mcr = 0x80006230;	/* SDRAM bank 0 - execute twice */ -	udelay (200); - -	memctl->memc_mamr |= MAMR_PTAE;	/* enable refresh */ - -	udelay (1000); - -	/* -	 * Check Bank 0 Memory Size for re-configuration -	 * -	 * try 8 column mode -	 */ -	size8 = dram_size (CONFIG_SYS_MAMR_8COL, SDRAM_BASE3_PRELIM, SDRAM_MAX_SIZE); - -	udelay (1000); - -	/* -	 * try 9 column mode -	 */ -	size9 = dram_size (CONFIG_SYS_MAMR_9COL, SDRAM_BASE3_PRELIM, SDRAM_MAX_SIZE); - -	udelay (1000); - -	if (size8 < size9) { -		size_b0 = size9; -	} else { -		size_b0 = size8; -		memctl->memc_mamr = CONFIG_SYS_MAMR_8COL; -		udelay (500); -	} - -	/* -	 * Adjust refresh rate depending on SDRAM type, both banks. -	 * For types > 128 MBit leave it at the current (fast) rate -	 */ -	if ((size_b0 < 0x02000000)) { -		/* reduce to 15.6 us (62.4 us / quad) */ -		memctl->memc_mptpr = CONFIG_SYS_MPTPR_2BK_4K; -		udelay (1000); -	} - -	/* -	 * Final mapping -	 */ - -	memctl->memc_or3 = ((-size_b0) & 0xFFFF0000) | CONFIG_SYS_OR_TIMING_SDRAM; -	memctl->memc_br3 = (CONFIG_SYS_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V; - -	/* adjust refresh rate depending on SDRAM type, one bank */ -	reg = memctl->memc_mptpr; -	reg >>= 1;					/* reduce to CONFIG_SYS_MPTPR_1BK_8K / _4K */ -	memctl->memc_mptpr = reg; - -	udelay (10000); - -	/* Configure UPMB for NAND flash access */ -	upmconfig (UPMB, (uint *) nand_flash_table, -			   sizeof (nand_flash_table) / sizeof (uint)); - -	memctl->memc_mbmr = CONFIG_SYS_MBMR_NAND; - -	return (size_b0); -} - -/* ------------------------------------------------------------------------- */ - -/* - * Check memory range for valid RAM. A simple memory test determines - * the actually available RAM size between addresses `base' and - * `base + maxsize'. Some (not all) hardware errors are detected: - * - short between address lines - * - short between data lines - */ - -static long int dram_size (long int mamr_value, long int *base, long int maxsize) -{ -	volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR; -	volatile memctl8xx_t *memctl = &immap->im_memctl; - -	memctl->memc_mamr = mamr_value; - -	return (get_ram_size(base, maxsize)); -} - - -#if defined(CONFIG_CP850) - -#define DPRAM_VARNAME           "KP850DIP" -#define PARAM_ADDR              0x7C0 -#define NAME_ADDR               0x7F8 -#define BOARD_NAME              "KP01" -#define DEFAULT_LB              "241111" - -int misc_init_r(void) -{ -	int             iCompatMode = 0; -	char            *pParam = NULL; -	char            *envlb; - -	/* -	   First byte in CPLD read address space signals compatibility mode -	   0 - cp850 -	   1 - kp852 -	*/ -	pParam = (char*)(CONFIG_SYS_CPLD_BASE); -	if( *pParam != 0) -		iCompatMode = 1; - -	if ( iCompatMode != 0) { -		/* -		   In KP852 compatibility mode we have to write to -		   DPRAM as early as possible the binary coded -		   line config and board name. -		   The line config is derived from the environment -		   variable DPRAM_VARNAME by converting from ASCII -		   to binary per character. -		*/ -		if ( (envlb = getenv ( DPRAM_VARNAME )) == 0) { -			setenv( DPRAM_VARNAME, DEFAULT_LB); -			envlb = DEFAULT_LB; -		} - -		/* Status string */ -		printf("Mode:  KP852(LB=%s)\n", envlb); - -		/* copy appl init */ -		pParam = (char*)(DPRAM_BASE_ADDR + PARAM_ADDR); -		while (*envlb) { -			*(pParam++) = *(envlb++) - '0'; -		} -		*pParam = '\0'; - -		/* copy board id */ -		pParam = (char*)(DPRAM_BASE_ADDR + NAME_ADDR); -		strcpy( pParam, BOARD_NAME); -	} else { -		puts("Mode:  CP850\n"); -	} - -	return 0; -} -#endif diff --git a/board/nc650/u-boot.lds b/board/nc650/u-boot.lds deleted file mode 100644 index e89a9bc9c..000000000 --- a/board/nc650/u-boot.lds +++ /dev/null @@ -1,126 +0,0 @@ -/* - * (C) Copyright 2001 - * Wolfgang Denk, DENX Software Engineering, wd@denx.de. - * - * 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 - */ - -OUTPUT_ARCH(powerpc) -/* Do we need any of these for elf? -   __DYNAMIC = 0;    */ -SECTIONS -{ -  /* Read-only sections, merged into text segment: */ -  . = + SIZEOF_HEADERS; -  .interp : { *(.interp) } -  .hash          : { *(.hash)		} -  .dynsym        : { *(.dynsym)		} -  .dynstr        : { *(.dynstr)		} -  .rel.text      : { *(.rel.text)		} -  .rela.text     : { *(.rela.text)	} -  .rel.data      : { *(.rel.data)		} -  .rela.data     : { *(.rela.data)	} -  .rel.rodata    : { *(.rel.rodata)	} -  .rela.rodata   : { *(.rela.rodata)	} -  .rel.got       : { *(.rel.got)		} -  .rela.got      : { *(.rela.got)		} -  .rel.ctors     : { *(.rel.ctors)	} -  .rela.ctors    : { *(.rela.ctors)	} -  .rel.dtors     : { *(.rel.dtors)	} -  .rela.dtors    : { *(.rela.dtors)	} -  .rel.bss       : { *(.rel.bss)		} -  .rela.bss      : { *(.rela.bss)		} -  .rel.plt       : { *(.rel.plt)		} -  .rela.plt      : { *(.rela.plt)		} -  .init          : { *(.init)	} -  .plt : { *(.plt) } -  .text      : -  { -    arch/powerpc/cpu/mpc8xx/start.o	(.text) -    *(.text) -    *(.got1) -  } -  _etext = .; -  PROVIDE (etext = .); -  .rodata    : -  { -    *(.eh_frame) -    *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) -  } -  .fini      : { *(.fini)    } =0 -  .ctors     : { *(.ctors)   } -  .dtors     : { *(.dtors)   } - -  /* Read-write section, merged into data segment: */ -  . = (. + 0x0FFF) & 0xFFFFF000; -  _erotext = .; -  PROVIDE (erotext = .); -  .reloc   : -  { -    *(.got) -    _GOT2_TABLE_ = .; -    *(.got2) -    _FIXUP_TABLE_ = .; -    *(.fixup) -  } -  __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2; -  __fixup_entries = (. - _FIXUP_TABLE_)>>2; - -  .data    : -  { -    *(.data) -    *(.data1) -    *(.sdata) -    *(.sdata2) -    *(.dynamic) -    CONSTRUCTORS -  } -  _edata  =  .; -  PROVIDE (edata = .); - -  . = .; -  __u_boot_cmd_start = .; -  .u_boot_cmd : { *(.u_boot_cmd) } -  __u_boot_cmd_end = .; - - -  . = .; -  __start___ex_table = .; -  __ex_table : { *(__ex_table) } -  __stop___ex_table = .; - -  . = ALIGN(256); -  __init_begin = .; -  .text.init : { *(.text.init) } -  .data.init : { *(.data.init) } -  . = ALIGN(256); -  __init_end = .; - -  __bss_start = .; -  .bss (NOLOAD)       : -  { -   *(.sbss) *(.scommon) -   *(.dynbss) -   *(.bss) -   *(COMMON) -   . = ALIGN(4); -  } -  _end = . ; -  PROVIDE (end = .); -} diff --git a/board/nc650/u-boot.lds.debug b/board/nc650/u-boot.lds.debug deleted file mode 100644 index 770adf789..000000000 --- a/board/nc650/u-boot.lds.debug +++ /dev/null @@ -1,125 +0,0 @@ -/* - * (C) Copyright 2001 - * Wolfgang Denk, DENX Software Engineering, wd@denx.de. - * - * 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 - */ - -OUTPUT_ARCH(powerpc) -/* Do we need any of these for elf? -   __DYNAMIC = 0;    */ -SECTIONS -{ -  /* Read-only sections, merged into text segment: */ -  . = + SIZEOF_HEADERS; -  .interp : { *(.interp) } -  .hash          : { *(.hash)		} -  .dynsym        : { *(.dynsym)		} -  .dynstr        : { *(.dynstr)		} -  .rel.text      : { *(.rel.text)		} -  .rela.text     : { *(.rela.text)	} -  .rel.data      : { *(.rel.data)		} -  .rela.data     : { *(.rela.data)	} -  .rel.rodata    : { *(.rel.rodata)	} -  .rela.rodata   : { *(.rela.rodata)	} -  .rel.got       : { *(.rel.got)		} -  .rela.got      : { *(.rela.got)		} -  .rel.ctors     : { *(.rel.ctors)	} -  .rela.ctors    : { *(.rela.ctors)	} -  .rel.dtors     : { *(.rel.dtors)	} -  .rela.dtors    : { *(.rela.dtors)	} -  .rel.bss       : { *(.rel.bss)		} -  .rela.bss      : { *(.rela.bss)		} -  .rel.plt       : { *(.rel.plt)		} -  .rela.plt      : { *(.rela.plt)		} -  .init          : { *(.init)	} -  .plt : { *(.plt) } -  .text      : -  { -    arch/powerpc/cpu/mpc8xx/start.o	(.text) -    *(.text) -    *(.got1) -  } -  _etext = .; -  PROVIDE (etext = .); -  .rodata    : -  { -    *(.rodata) -    *(.rodata1) -    *(.rodata.str1.4) -    *(.eh_frame) -  } -  .fini      : { *(.fini)    } =0 -  .ctors     : { *(.ctors)   } -  .dtors     : { *(.dtors)   } - -  /* Read-write section, merged into data segment: */ -  . = (. + 0x0FFF) & 0xFFFFF000; -  _erotext = .; -  PROVIDE (erotext = .); -  .reloc   : -  { -    *(.got) -    _GOT2_TABLE_ = .; -    *(.got2) -    _FIXUP_TABLE_ = .; -    *(.fixup) -  } -  __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2; -  __fixup_entries = (. - _FIXUP_TABLE_)>>2; - -  .data    : -  { -    *(.data) -    *(.data1) -    *(.sdata) -    *(.sdata2) -    *(.dynamic) -    CONSTRUCTORS -  } -  _edata  =  .; -  PROVIDE (edata = .); - -  __u_boot_cmd_start = .; -  .u_boot_cmd : { *(.u_boot_cmd) } -  __u_boot_cmd_end = .; - - -  __start___ex_table = .; -  __ex_table : { *(__ex_table) } -  __stop___ex_table = .; - -  . = ALIGN(4096); -  __init_begin = .; -  .text.init : { *(.text.init) } -  .data.init : { *(.data.init) } -  . = ALIGN(4096); -  __init_end = .; - -  __bss_start = .; -  .bss       : -  { -   *(.sbss) *(.scommon) -   *(.dynbss) -   *(.bss) -   *(COMMON) -  } -  _end = . ; -  PROVIDE (end = .); -} diff --git a/boards.cfg b/boards.cfg index 3960beff4..0f3292fd3 100644 --- a/boards.cfg +++ b/boards.cfg @@ -3,9 +3,7 @@  #  # Syntax:  #	white-space separated list of entries; -#	each entry has the following fields: -# -#	Targetname  Architecture  CPU  Boardname  Vendor  SoC +#	each entry has the fields documented below.  #  #	Unused fields can be specified as "-", or omitted if they  #	are the last field on the line. @@ -13,6 +11,16 @@  #	Lines starting with '#' are comments.  #	Blank lines are ignored.  # +#	The options field takes the form: +#		<board config name>[:comma separated config options] +#	Each config option has the form (value defaults to "1"): +#		option[=value] +#	So if you have: +#		FOO:HAS_BAR,BAZ=64 +#	The file include/configs/FOO.h will be used, and these defines created: +#		#define CONFIG_HAS_BAR	1 +#		#define CONFIG_BAZ	64 +#  # To keep the list sorted, use something like  #  #	:.,$! sort -f -k2,2 -k3,3 -k6,6 -k5,5 -k1,1 @@ -77,6 +85,7 @@ dnp1110		arm	sa1100  gcplus		arm	sa1100  lart		arm	sa1100  shannon		arm	sa1100 +jornada		arm	sa1100  mimc200		avr32	at32ap		-		mimc		at32ap700x  ip04		blackfin	blackfin  eNET		i386	i386		-		-		sc520 @@ -252,7 +261,6 @@ TQM866M		powerpc	mpc8xx		tqm8xx		tqc  TQM885D		powerpc	mpc8xx		tqm8xx		tqc  AMX860		powerpc	mpc8xx		amx860		westel  AdderII		powerpc	mpc8xx		adder		-		-	Adder:MPC852T -CP850		powerpc	mpc8xx		nc650		-		-	NC650:CP850=1,IDS852_REV2=1  IVML24		powerpc	mpc8xx		ivm		-		-	IVML24:IVML24_16M  IVMS8		powerpc	mpc8xx		ivm		-		-	IVMS8:IVMS8_16M  NETTA		powerpc	mpc8xx		netta		-		-	NETTA @@ -611,8 +619,6 @@ IVML24_128	powerpc	mpc8xx		ivm		-		-	IVML24:IVML24_32M  IVML24_256	powerpc	mpc8xx		ivm		-		-	IVML24:IVML24_64M  IVMS8_128	powerpc	mpc8xx		ivm		-		-	IVMS8:IVMS8_32M  IVMS8_256	powerpc	mpc8xx		ivm		-		-	IVMS8:IVMS8_64M -NC650_Rev1	powerpc	mpc8xx		nc650		-		-	NC650:IDS852_REV2=1 -NC650_Rev2	powerpc	mpc8xx		nc650		-		-	NC650:IDS852_REV1=1  NETTA2_V2	powerpc	mpc8xx		netta2		-		-	NETTA2:NETTA2_VERSION=2  NETTA_6412	powerpc	mpc8xx		netta		-		-	NETTA:NETTA_6412=1  NETTA_ISDN	powerpc	mpc8xx		netta		-		-	NETTA:NETTA_ISDN=1 diff --git a/common/cmd_fpga.c b/common/cmd_fpga.c index e50c9de87..0ad310f53 100644 --- a/common/cmd_fpga.c +++ b/common/cmd_fpga.c @@ -163,6 +163,7 @@ int do_fpga (cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])  	char *devstr = getenv ("fpga");  	char *datastr = getenv ("fpgadata");  	int rc = FPGA_FAIL; +	int wrong_parms = 0;  #if defined (CONFIG_FIT)  	const char *fit_uname = NULL;  	ulong fit_addr; @@ -229,6 +230,32 @@ int do_fpga (cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])  		break;  	} +	if (dev == FPGA_INVALID_DEVICE) { +		puts("FPGA device not specified\n"); +		op = FPGA_NONE; +	} + +	switch (op) { +	case FPGA_NONE: +	case FPGA_INFO: +		break; +	case FPGA_LOAD: +	case FPGA_LOADB: +	case FPGA_DUMP: +		if (!fpga_data || !data_size) +			wrong_parms = 1; +		break; +	case FPGA_LOADMK: +		if (!fpga_data) +			wrong_parms = 1; +		break; +	} + +	if (wrong_parms) { +		puts("Wrong parameters for FPGA request\n"); +		op = FPGA_NONE; +	} +  	switch (op) {  	case FPGA_NONE:  		return cmd_usage(cmdtp); @@ -342,17 +369,18 @@ static int fpga_get_op (char *opstr)  }  U_BOOT_CMD (fpga, 6, 1, do_fpga, -	    "loadable FPGA image support", -	    "fpga [operation type] [device number] [image address] [image size]\n" -	    "fpga operations:\n" -	    "\tinfo\tlist known device information\n" -	    "\tload\tLoad device from memory buffer\n" -	    "\tloadb\tLoad device from bitstream buffer (Xilinx devices only)\n" -	    "\tloadmk\tLoad device generated with mkimage\n" -	    "\tdump\tLoad device to memory buffer" +	"loadable FPGA image support", +	"[operation type] [device number] [image address] [image size]\n" +	"fpga operations:\n" +	"  dump\t[dev]\t\t\tLoad device to memory buffer\n" +	"  info\t[dev]\t\t\tlist known device information\n" +	"  load\t[dev] [address] [size]\tLoad device from memory buffer\n" +	"  loadb\t[dev] [address] [size]\t" +	"Load device from bitstream buffer (Xilinx only)\n" +	"  loadmk [dev] [address]\tLoad device generated with mkimage"  #if defined(CONFIG_FIT) -	    "\n" -	    "\tFor loadmk operating on FIT format uImage address must include\n" -	    "\tsubimage unit name in the form of addr:<subimg_uname>" +	"\n" +	"\tFor loadmk operating on FIT format uImage address must include\n" +	"\tsubimage unit name in the form of addr:<subimg_uname>"  #endif  ); diff --git a/doc/README.arm-relocation b/doc/README.arm-relocation index 8d328e09f..3856633e9 100644 --- a/doc/README.arm-relocation +++ b/doc/README.arm-relocation @@ -97,11 +97,11 @@ Relocation with NAND_SPL (example for the tx25):    the "real" u-boot to CONFIG_SYS_NAND_U_BOOT_DST and starts execution    @CONFIG_SYS_NAND_U_BOOT_START -- This u-boot does no ram int, nor cpu register setup. Just looks -  where it have to relocate and relocate itself to this address. -  If relocate address = CONFIG_SYS_TEXT_BASE(not the same, as the TEXT_BASE -  from the nand_spl code), no need to copy, just go on with bss clear -  and jump to board_init_r. +- This u-boot does no RAM init, nor CPU register setup. Just look +  where it has to copy and relocate itself to this address. If +  relocate address = CONFIG_SYS_TEXT_BASE (not the same, as the +  CONFIG_SYS_TEXT_BASE from the nand_spl code), then there is no need +  to copy, just go on with bss clear and jump to board_init_r.  ----------------------------------------------------------------------------- diff --git a/doc/README.scrapyard b/doc/README.scrapyard new file mode 100644 index 000000000..a707c6fa9 --- /dev/null +++ b/doc/README.scrapyard @@ -0,0 +1,29 @@ +Over time, support for more and more boards gets added to U-Boot - +while other board support code dies a silent death caused by +negligence in combination with ordinary bitrot.  Sometimes this goes +by unnoticed, but often build errors will result.  If nobody cares any +more to resolve such problems, then the code is really dead and will +be removed from the U-Boot source tree.  The remainders rest in piece +in the imperishable depths of the git history.  This document tries to +maintain a list of such former fellows, so archeologists can check +easily if here is something they might want to dig for... + + +Board	Arch	CPU	removed	    Commit	last known maintainer/contact +============================================================================= +NC650	powerpc	MPC852	333d86d   2010-10-19	Wolfgang Denk <wd@denx.de> +CP850	powerpc	MPC852	333d86d   2010-10-19	Wolfgang Denk <wd@denx.de> +logodl	ARM	PXA2xx	059e778   2010-10-18	August Hoeraendl <august.hoerandl@gmx.at> +CCM	powerpc	MPC860	dff07e1   2010-10-06	Wolfgang Grandegger <wg@denx.de> +PCU_E	powerpc	MPC860T	544d97e   2010-10-06	Wolfgang Denk <wd@denx.de> +spieval	powerpc	MPC5200	69434e4   2010-09-19 +smmaco4	powerpc	MPC5200	9ddc3af   2010-09-19 +HMI10	powerpc	MPC823	77efe35   2010-09-19	Wolfgang Denk <wd@denx.de> +GTH	powerpc	MPC860	0fe247b   2010-07-17	Thomas Lange <thomas@corelatus.se> +AmigaOneG3SE		953b7e6   2010-06-23 +suzaku	microblaze	4f18060   2009-10-03	Yasushi Shoji <yashi@atmark-techno.com> +XUPV2P	microblaze	8fab49e   2008-12-10	Michal Simek <monstr@monstr.eu> +MVS1	powerpc	MPC823	306620b   2008-08-26	Andre Schwarz <andre.schwarz@matrix-vision.de> +adsvix	ARM	PXA27x	7610db1   2008-07-30	Adrian Filipi <adrian.filipi@eurotech.com> +R5200	ColdFire	48ead7a   2008-03-31	Zachary P. Landau <zachary.landau@labxtechnologies.com> +CPCI440	powerpc	440GP	b568fd2   2007-12-27	Matthias Fuchs <matthias.fuchs@esd-electronics.com> diff --git a/doc/README.ubi b/doc/README.ubi new file mode 100644 index 000000000..da2dfac50 --- /dev/null +++ b/doc/README.ubi @@ -0,0 +1,144 @@ +------------------- +UBI usage in U-Boot +------------------- + +Here the list of the currently implemented UBI commands: + +=> help ubi +ubi - ubi commands + +Usage: +ubi part [part] [offset] + - Show or set current partition (with optional VID header offset) +ubi info [l[ayout]] - Display volume and ubi layout information +ubi create[vol] volume [size] [type] - create volume name with size +ubi write[vol] address volume size - Write volume from address with size +ubi read[vol] address volume [size] - Read volume to address with size +ubi remove[vol] volume - Remove volume +[Legends] + volume: character name + size: specified in bytes + type: s[tatic] or d[ynamic] (default=dynamic) + + +The first command that is needed to be issues is "ubi part" to connect +one mtd partition to the UBI subsystem. This command will either create +a new UBI device on the requested MTD partition. Or it will attach a +previously created UBI device. The other UBI commands will only work +when such a UBI device is attached (via "ubi part"). Here an example: + +=> mtdparts + +device nor0 <1fc000000.nor_flash>, # parts = 6 + #: name                size            offset          mask_flags + 0: kernel              0x00200000      0x00000000      0 + 1: dtb                 0x00040000      0x00200000      0 + 2: root                0x00200000      0x00240000      0 + 3: user                0x01ac0000      0x00440000      0 + 4: env                 0x00080000      0x01f00000      0 + 5: u-boot              0x00080000      0x01f80000      0 + +active partition: nor0,0 - (kernel) 0x00200000 @ 0x00000000 + +defaults: +mtdids  : nor0=1fc000000.nor_flash +mtdparts: mtdparts=1fc000000.nor_flash:2m(kernel),256k(dtb),2m(root),27392k(user),512k(env),512k(u-boot) + +=> ubi part root +Creating 1 MTD partitions on "nor0": +0x000000240000-0x000000440000 : "mtd=2" +UBI: attaching mtd1 to ubi0 +UBI: physical eraseblock size:   262144 bytes (256 KiB) +UBI: logical eraseblock size:    262016 bytes +UBI: smallest flash I/O unit:    1 +UBI: VID header offset:          64 (aligned 64) +UBI: data offset:                128 +UBI: attached mtd1 to ubi0 +UBI: MTD device name:            "mtd=2" +UBI: MTD device size:            2 MiB +UBI: number of good PEBs:        8 +UBI: number of bad PEBs:         0 +UBI: max. allowed volumes:       128 +UBI: wear-leveling threshold:    4096 +UBI: number of internal volumes: 1 +UBI: number of user volumes:     1 +UBI: available PEBs:             0 +UBI: total number of reserved PEBs: 8 +UBI: number of PEBs reserved for bad PEB handling: 0 +UBI: max/mean erase counter: 2/1 + + +Now that the UBI device is attached, this device can be modified +using the following commands: + +ubi info	Display volume and ubi layout information +ubi createvol	Create UBI volume on UBI device +ubi removevol	Remove UBI volume from UBI device +ubi read	Read data from UBI volume to memory +ubi write	Write data from memory to UBI volume + + +Here a few examples on the usage: + +=> ubi create testvol +Creating dynamic volume testvol of size 1048064 + +=> ubi info l +UBI: volume information dump: +UBI: vol_id          0 +UBI: reserved_pebs   4 +UBI: alignment       1 +UBI: data_pad        0 +UBI: vol_type        3 +UBI: name_len        7 +UBI: usable_leb_size 262016 +UBI: used_ebs        4 +UBI: used_bytes      1048064 +UBI: last_eb_bytes   262016 +UBI: corrupted       0 +UBI: upd_marker      0 +UBI: name            testvol + +UBI: volume information dump: +UBI: vol_id          2147479551 +UBI: reserved_pebs   2 +UBI: alignment       1 +UBI: data_pad        0 +UBI: vol_type        3 +UBI: name_len        13 +UBI: usable_leb_size 262016 +UBI: used_ebs        2 +UBI: used_bytes      524032 +UBI: last_eb_bytes   2 +UBI: corrupted       0 +UBI: upd_marker      0 +UBI: name            layout volume + +=> ubi info +UBI: MTD device name:            "mtd=2" +UBI: MTD device size:            2 MiB +UBI: physical eraseblock size:   262144 bytes (256 KiB) +UBI: logical eraseblock size:    262016 bytes +UBI: number of good PEBs:        8 +UBI: number of bad PEBs:         0 +UBI: smallest flash I/O unit:    1 +UBI: VID header offset:          64 (aligned 64) +UBI: data offset:                128 +UBI: max. allowed volumes:       128 +UBI: wear-leveling threshold:    4096 +UBI: number of internal volumes: 1 +UBI: number of user volumes:     1 +UBI: available PEBs:             0 +UBI: total number of reserved PEBs: 8 +UBI: number of PEBs reserved for bad PEB handling: 0 +UBI: max/mean erase counter: 4/1 + +=> ubi write 800000 testvol 80000 +Volume "testvol" found at volume id 0 + +=> ubi read 900000 testvol 80000 +Volume testvol found at volume id 0 +read 524288 bytes from volume 0 to 900000(buf address) + +=> cmp.b 800000 900000 80000 +Total of 524288 bytes were the same diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c index 2d4ffed4f..3f09c2b65 100644 --- a/drivers/net/fec_mxc.c +++ b/drivers/net/fec_mxc.c @@ -414,6 +414,9 @@ static int fec_init(struct eth_device *dev, bd_t* bd)  	uint32_t base;  	struct fec_priv *fec = (struct fec_priv *)dev->priv; +	/* Initialize MAC address */ +	fec_set_hwaddr(dev); +  	/*  	 * reserve memory for both buffer descriptor chains at once  	 * Datasheet forces the startaddress of each chain is 16 byte diff --git a/include/configs/NC650.h b/include/configs/NC650.h deleted file mode 100644 index df1c1ca42..000000000 --- a/include/configs/NC650.h +++ /dev/null @@ -1,451 +0,0 @@ -/* - * (C) Copyright 2006, 2007 Detlev Zundel, dzu@denx.de - * (C) Copyright 2005 - * Wolfgang Denk, DENX Software Engineering, wd@denx.de. - * - * 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 - */ - -/* - * board/config.h - configuration options, board specific - */ - -#ifndef __CONFIG_H -#define __CONFIG_H - -/* - * High Level Configuration Options - * (easy to change) - */ -#define CONFIG_MPC852T		1 -#define CONFIG_NC650		1 - -#define	CONFIG_SYS_TEXT_BASE	0x40700000 - -#define	CONFIG_8xx_CONS_SMC1	1	/* Console is on SMC1		*/ -#undef	CONFIG_8xx_CONS_SMC2 -#undef	CONFIG_8xx_CONS_NONE -#define CONFIG_BAUDRATE		115200 -#define CONFIG_LOADS_ECHO	1	/* echo on for serial download	*/ - -/* - * 10 MHz - PLL input clock - */ -#define CONFIG_8xx_OSCLK		10000000 - -/* - * 50 MHz - default CPU clock - */ -#define CONFIG_8xx_CPUCLK_DEFAULT	50000000 - -/* - * 15 MHz - CPU minimum clock - */ -#define CONFIG_SYS_8xx_CPUCLK_MIN		15000000 - -/* - * 133 MHz - CPU maximum clock - */ -#define CONFIG_SYS_8xx_CPUCLK_MAX		133000000 - -#define CONFIG_SYS_MEASURE_CPUCLK -#define CONFIG_SYS_8XX_XIN			CONFIG_8xx_OSCLK - -#define CONFIG_BOOTDELAY		5	/* autoboot after 5 seconds	*/ -#define CONFIG_AUTOBOOT_KEYED -#define CONFIG_AUTOBOOT_PROMPT		\ -	"\nEnter password - autoboot in %d seconds...\n", bootdelay -#define CONFIG_AUTOBOOT_DELAY_STR	"ids" -#define CONFIG_BOOT_RETRY_TIME		900 -#define CONFIG_BOOT_RETRY_MIN		30 - -#define CONFIG_PREBOOT	"echo;echo Type \\\"run flash_nfs\\\" to mount root filesystem over NFS;echo" - -#undef	CONFIG_BOOTARGS -#define CONFIG_BOOTCOMMAND							\ -	"bootp;"								\ -	"setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath} "	\ -	"ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off;"	\ -	"bootm" - -#define CONFIG_WATCHDOG			/* watchdog enabled		*/ - -#undef	CONFIG_STATUS_LED		/* Status LED disabled		*/ - -/* - * BOOTP options - */ -#define CONFIG_BOOTP_SUBNETMASK -#define CONFIG_BOOTP_GATEWAY -#define CONFIG_BOOTP_HOSTNAME -#define CONFIG_BOOTP_BOOTPATH -#define CONFIG_BOOTP_BOOTFILESIZE - - -#define	CONFIG_FEC_ENET		1	/* use FEC ethernet  */ -#define FEC_ENET -#define CONFIG_MII -#define CONFIG_SYS_DISCOVER_PHY	1 - - -/* enable I2C and select the hardware/software driver */ -#undef  CONFIG_HARD_I2C			/* I2C with hardware support	*/ -#define CONFIG_SOFT_I2C		1	/* I2C bit-banged		*/ -#define CONFIG_SYS_I2C_SPEED		100000	/* 100 kHz			*/ -#define CONFIG_SYS_I2C_SLAVE		0x7f - -/* - * Software (bit-bang) I2C driver configuration - */ -#if defined(CONFIG_IDS852_REV1) - -#define SCL		0x1000		/* PA 3 */ -#define SDA		0x2000		/* PA 2 */ - -#define __I2C_DIR	immr->im_ioport.iop_padir -#define __I2C_DAT	immr->im_ioport.iop_padat -#define __I2C_PAR	immr->im_ioport.iop_papar - -#elif defined(CONFIG_IDS852_REV2) - -#define SCL		0x0002		/* PB 30 */ -#define SDA		0x0001		/* PB 31 */ - -#define __I2C_PAR	immr->im_cpm.cp_pbpar -#define __I2C_DIR	immr->im_cpm.cp_pbdir -#define __I2C_DAT	immr->im_cpm.cp_pbdat - -#endif - -#define	I2C_INIT	{ __I2C_PAR &= ~(SDA|SCL);	\ -			  __I2C_DIR |= (SDA|SCL);	} -#define	I2C_READ	((__I2C_DAT & SDA) ? 1 : 0) -#define	I2C_SDA(x)	{ if (x) __I2C_DAT |= SDA; else __I2C_DAT &= ~SDA; } -#define	I2C_SCL(x)	{ if (x) __I2C_DAT |= SCL; else __I2C_DAT &= ~SCL; } -#define	I2C_DELAY	{ udelay(5); } -#define	I2C_ACTIVE	{ __I2C_DIR |= SDA; } -#define	I2C_TRISTATE	{ __I2C_DIR &= ~SDA; } - -#define CONFIG_RTC_PCF8563 -#define CONFIG_SYS_I2C_RTC_ADDR		0x51 - - -/* - * Command line configuration. - */ -#include <config_cmd_default.h> - -#define CONFIG_CMD_ASKENV -#define CONFIG_CMD_DATE -#define CONFIG_CMD_DHCP -#define CONFIG_CMD_I2C -#define CONFIG_CMD_NAND -#define CONFIG_CMD_JFFS2 -#define CONFIG_CMD_NFS -#define CONFIG_CMD_SNTP - - -/* - * Miscellaneous configurable options - */ -#define	CONFIG_SYS_LONGHELP			/* undef to save memory		*/ -#define	CONFIG_SYS_PROMPT	"=> "		/* Monitor Command Prompt	*/ -#if defined(CONFIG_CMD_KGDB) -#define	CONFIG_SYS_CBSIZE	1024		/* Console I/O Buffer Size	*/ -#else -#define	CONFIG_SYS_CBSIZE	256		/* Console I/O Buffer Size	*/ -#endif -#define	CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */ -#define	CONFIG_SYS_MAXARGS	16		/* max number of command args	*/ -#define CONFIG_SYS_BARGSIZE	CONFIG_SYS_CBSIZE	/* Boot Argument Buffer Size	*/ - -#define CONFIG_SYS_MEMTEST_START	0x0100000	/* memtest works on	*/ -#define CONFIG_SYS_MEMTEST_END		0x0400000	/* 1 ... 4 MB in DRAM	*/ - -#define CONFIG_SYS_LOAD_ADDR		0x00100000 - -#define	CONFIG_SYS_HZ		1000		/* decrementer freq: 1 ms ticks	*/ - -#define CONFIG_SYS_BAUDRATE_TABLE	{ 9600, 19200, 38400, 57600, 115200 } - -/* - * Low Level Configuration Settings - * (address mappings, register initial values, etc.) - * You should know what you are doing if you make changes here. - */ -/*----------------------------------------------------------------------- - * Internal Memory Mapped Register - */ -#define CONFIG_SYS_IMMR		0xF0000000 -#define CONFIG_SYS_IMMR_SIZE		((uint)(64 * 1024)) - -/*----------------------------------------------------------------------- - * Definitions for initial stack pointer and data area (in DPRAM) - */ -#define CONFIG_SYS_INIT_RAM_ADDR	CONFIG_SYS_IMMR -#define	CONFIG_SYS_INIT_RAM_END	0x2F00	/* End of used area in DPRAM	*/ -#define	CONFIG_SYS_GBL_DATA_SIZE	64  /* size in bytes reserved for initial data */ -#define CONFIG_SYS_GBL_DATA_OFFSET	(CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define	CONFIG_SYS_INIT_SP_OFFSET	CONFIG_SYS_GBL_DATA_OFFSET - -/*----------------------------------------------------------------------- - * Start addresses for the final memory configuration - * (Set up by the startup code) - * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0 - */ -#define	CONFIG_SYS_SDRAM_BASE		0x00000000 -#define CONFIG_SYS_FLASH_BASE		0x40000000 - -#define CONFIG_SYS_RESET_ADDRESS	0xFFF00100 - -#define CONFIG_SYS_MONITOR_LEN		(256 << 10)	/* Reserve 256 kB for Monitor */ -#define CONFIG_SYS_MONITOR_BASE	CONFIG_SYS_TEXT_BASE -#define	CONFIG_SYS_MALLOC_LEN		(256 << 10)	/* Reserve 256 kB for malloc()	*/ - -/* - * For booting Linux, the board info and command line data - * have to be in the first 8 MB of memory, since this is - * the maximum mapped by the Linux kernel during initialization. - */ -#define	CONFIG_SYS_BOOTMAPSZ		(8 << 20)	/* Initial Memory map for Linux	*/ -/*----------------------------------------------------------------------- - * FLASH organization - */ -#define CONFIG_SYS_MAX_FLASH_BANKS	1	/* max number of memory banks		*/ -#define CONFIG_SYS_MAX_FLASH_SECT	64	/* max number of sectors on one chip	*/ - -#define CONFIG_SYS_FLASH_ERASE_TOUT	120000	/* Timeout for Flash Erase (in ms)	*/ -#define CONFIG_SYS_FLASH_WRITE_TOUT	500	/* Timeout for Flash Write (in ms)	*/ - - -#define	CONFIG_ENV_IS_IN_FLASH	1 -#define CONFIG_ENV_OFFSET		0x00740000 - -#define CONFIG_ENV_SECT_SIZE	0x20000	/* Total Size of Environment sector	*/ -#define	CONFIG_ENV_SIZE		0x4000	/* Used Size of Environment Sector	*/ - -/*----------------------------------------------------------------------- - * Cache Configuration - */ -#define CONFIG_SYS_CACHELINE_SIZE	16	/* For all MPC8xx CPUs			*/ -#if defined(CONFIG_CMD_KGDB) -#define CONFIG_SYS_CACHELINE_SHIFT	4	/* log base 2 of the above value	*/ -#endif - -/* - * NAND flash support - */ -#define CONFIG_SYS_MAX_NAND_DEVICE	1 - -/*----------------------------------------------------------------------- - * SYPCR - System Protection Control					11-9 - * SYPCR can only be written once after reset! - *----------------------------------------------------------------------- - * Software & Bus Monitor Timer max, Bus Monitor enable, SW Watchdog freeze - */ -#if defined(CONFIG_WATCHDOG) -#define CONFIG_SYS_SYPCR	(SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | \ -			 SYPCR_SWE  | SYPCR_SWRI| SYPCR_SWP) -#else -#define CONFIG_SYS_SYPCR	(SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | SYPCR_SWP) -#endif - -/*----------------------------------------------------------------------- - * SIUMCR - SIU Module Configuration					11-6 - *----------------------------------------------------------------------- - */ -#define CONFIG_SYS_SIUMCR	(SIUMCR_DBGC11 | SIUMCR_DBPC00 | SIUMCR_MLRC01) - -/*----------------------------------------------------------------------- - * TBSCR - Time Base Status and Control					11-26 - *----------------------------------------------------------------------- - * Clear Reference Interrupt Status, Timebase freezing enabled - */ -#define CONFIG_SYS_TBSCR	(TBSCR_REFA | TBSCR_REFB | TBSCR_TBE) - -/*----------------------------------------------------------------------- - * PISCR - Periodic Interrupt Status and Control		11-31 - *----------------------------------------------------------------------- - * Clear Periodic Interrupt Status, Interrupt Timer freezing enabled - */ -#define CONFIG_SYS_PISCR	(PISCR_PS | PISCR_PITF) - -/*----------------------------------------------------------------------- - * SCCR - System Clock and reset Control Register		15-27 - *----------------------------------------------------------------------- - * Set clock output, timebase and RTC source and divider, - * power management and some other internal clocks - */ -#define SCCR_MASK	SCCR_EBDF11 -#define CONFIG_SYS_SCCR	(SCCR_COM00	| SCCR_DFSYNC00	| \ -			 SCCR_DFBRG00	| SCCR_DFNL000	| SCCR_DFNH000	| \ -			 SCCR_DFLCD000	| SCCR_DFALCD00) - - /*----------------------------------------------------------------------- - * - *----------------------------------------------------------------------- - * - */ -#define CONFIG_SYS_DER		0 - -/* - * Init Memory Controller: - * - * BR0 and OR0 (FLASH) - */ - -#define FLASH_BASE0_PRELIM	0x40000000	/* FLASH bank #0	*/ - -#define CONFIG_SYS_REMAP_OR_AM		0x80000000	/* OR addr mask */ -#define CONFIG_SYS_PRELIM_OR_AM	0xE0000000	/* OR addr mask */ - -/* FLASH timing: Default value of OR0 after reset */ -#define CONFIG_SYS_OR_TIMING_FLASH	(OR_CSNT_SAM  | OR_ACS_MSK | OR_BI | \ -				 OR_SCY_15_CLK | OR_TRLX) - -#define CONFIG_SYS_OR0_REMAP	(CONFIG_SYS_REMAP_OR_AM  | CONFIG_SYS_OR_TIMING_FLASH) -#define CONFIG_SYS_OR0_PRELIM	(CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_FLASH) -#define CONFIG_SYS_BR0_PRELIM	((FLASH_BASE0_PRELIM & BR_BA_MSK) | BR_PS_8 | BR_V) - -/* - * BR2 and OR2 (NAND Flash) - addressed through UPMB on rev 1 - * rev2 only uses the chipselect - */ -#define CONFIG_SYS_NAND_BASE		0x50000000 -#define CONFIG_SYS_NAND_SIZE		0x04000000 - -#define CONFIG_SYS_OR_TIMING_NAND	(OR_CSNT_SAM | OR_ACS_DIV1 | OR_BI | \ -				 OR_SCY_15_CLK | OR_EHTR | OR_TRLX) - -#define CONFIG_SYS_BR2_PRELIM  ((CONFIG_SYS_NAND_BASE & BR_BA_MSK) | BR_PS_8 | BR_MS_UPMB | BR_V  ) -#define CONFIG_SYS_OR2_PRELIM  (((-CONFIG_SYS_NAND_SIZE) & OR_AM_MSK) | OR_BI ) - -/* - * BR3 and OR3 (SDRAM) - */ -#define SDRAM_BASE3_PRELIM	0x00000000	/* SDRAM bank		*/ -#define SDRAM_MAX_SIZE		0x04000000	/* max 64 MB per bank	*/ - - /* -  * SDRAM timing: Multiplexed addresses, GPL5 output to GPL5_A (don't care) -  */ -#define CONFIG_SYS_OR_TIMING_SDRAM	0x00000A00 - -#define CONFIG_SYS_OR3_PRELIM	(CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_SDRAM) -#define CONFIG_SYS_BR3_PRELIM	((SDRAM_BASE3_PRELIM & BR_BA_MSK) | BR_MS_UPMA | BR_V) - -/* - * BR4 and OR4 (CPLD) - */ -#define CONFIG_SYS_CPLD_BASE           0x80000000      /* CPLD                 */ -#define CONFIG_SYS_CPLD_SIZE           0x10000         /* only 16 used         */ - -#define CONFIG_SYS_OR_TIMING_CPLD	(OR_CSNT_SAM | OR_ACS_DIV1 | OR_BI | \ -				 OR_SCY_1_CLK) - -#define CONFIG_SYS_BR4_PRELIM  ((CONFIG_SYS_CPLD_BASE & BR_BA_MSK) | BR_PS_8 | BR_V ) -#define CONFIG_SYS_OR4_PRELIM  (((-CONFIG_SYS_CPLD_SIZE) & OR_AM_MSK) | CONFIG_SYS_OR_TIMING_CPLD) - -/* - * BR5 and OR5 (SRAM) - */ -#define CONFIG_SYS_SRAM_BASE		0x60000000 -#define CONFIG_SYS_SRAM_SIZE		0x00080000 - -#define CONFIG_SYS_OR_TIMING_SRAM	(OR_CSNT_SAM | OR_ACS_DIV1 | OR_BI | \ -				 OR_SCY_15_CLK | OR_EHTR | OR_TRLX) - -#define CONFIG_SYS_BR5_PRELIM  ((CONFIG_SYS_SRAM_BASE & BR_BA_MSK) | BR_PS_8 | BR_V ) -#define CONFIG_SYS_OR5_PRELIM  (((-CONFIG_SYS_SRAM_SIZE) & OR_AM_MSK) | CONFIG_SYS_OR_TIMING_SRAM) - -#if defined(CONFIG_CP850) -/* - *  BR6 and OR6 (DPRAM) - only on CP850 - */ -#define CONFIG_SYS_OR6_PRELIM          0xffff8170 -#define CONFIG_SYS_BR6_PRELIM          0xa0000401 -#define DPRAM_BASE_ADDR         0xa0000000 - -#define CONFIG_MISC_INIT_R      1 -#endif - -/* - * 4096 Rows from SDRAM example configuration - * 1000 factor s -> ms - * 64   PTP (pre-divider from MPTPR) from SDRAM example configuration - * 4    Number of refresh cycles per period - * 64   Refresh cycle in ms per number of rows - */ -#define CONFIG_SYS_PTA_PER_CLK		((4096 * 64 * 1000) / (4 * 64)) - -/* - * Memory Periodic Timer Prescaler - */ - -/* periodic timer for refresh */ -#define CONFIG_SYS_MAMR_PTA		39 - -/* refresh rate 15.6 us (= 64 ms / 4K = 62.4 / quad bursts) for <= 128 MBit	*/ -#define CONFIG_SYS_MPTPR_2BK_4K	MPTPR_PTP_DIV16		/* setting for 2 banks	*/ -#define CONFIG_SYS_MPTPR_1BK_4K	MPTPR_PTP_DIV32		/* setting for 1 bank	*/ - -/* refresh rate 7.8 us (= 64 ms / 8K = 31.2 / quad bursts) for 256 MBit		*/ -#define CONFIG_SYS_MPTPR_2BK_8K	MPTPR_PTP_DIV8		/* setting for 2 banks	*/ -#define CONFIG_SYS_MPTPR_1BK_8K	MPTPR_PTP_DIV16		/* setting for 1 bank	*/ - -/* - * MAMR settings for SDRAM - */ - -#define CONFIG_SYS_MAMR_8COL	((CONFIG_SYS_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE | \ -			 MAMR_AMA_TYPE_0 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A11 | \ -			 MAMR_RLFA_1X    | MAMR_WLFA_1X    | MAMR_TLFA_4X) -#define CONFIG_SYS_MAMR_9COL	((CONFIG_SYS_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE | \ -			 MAMR_AMA_TYPE_1 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A10 | \ -			 MAMR_RLFA_1X    | MAMR_WLFA_1X    | MAMR_TLFA_4X) - -/* - * MBMR settings for NAND flash - */ - -#define CONFIG_SYS_MBMR_NAND ( MBMR_WLFB_5X ) - -#define CONFIG_JFFS2_NAND 1			/* jffs2 on nand support */ -#define NAND_CACHE_PAGES 16			/* size of nand cache in 512 bytes pages */ - -/* - * JFFS2 partitions - */ - -/* No command line, one static partition */ -#undef CONFIG_CMD_MTDPARTS -#define CONFIG_JFFS2_DEV		"nand0" -#define CONFIG_JFFS2_PART_SIZE		0x00400000 -#define CONFIG_JFFS2_PART_OFFSET	0x00000000 - -/* mtdparts command line support */ -#define CONFIG_CMD_MTDPARTS -#define MTDIDS_DEFAULT		"nor0=nc650-0,nand0=nc650-nand" - -#define MTDPARTS_DEFAULT	"mtdparts=nc650-0:1m(kernel1),1m(kernel2)," \ -					"4m(cramfs1),1m(cramfs2)," \ -					"256k(u-boot),128k(env);" \ -				"nc650-nand:4m(jffs1),28m(jffs2)" - -#endif	/* __CONFIG_H */ diff --git a/include/configs/a4m072.h b/include/configs/a4m072.h index 6dcebe6f4..24a04ebef 100644 --- a/include/configs/a4m072.h +++ b/include/configs/a4m072.h @@ -37,6 +37,8 @@  #define CONFIG_A4M072		1	/* ... on A4M072 board */  #define CONFIG_MPC5200_DDR	1	/* ... use DDR RAM */ +#define CONFIG_SYS_TEXT_BASE	0xFE000000 +  #define CONFIG_MISC_INIT_R  #define CONFIG_SYS_MPC5XXX_CLKIN	33000000 /* ... running at 33.000000MHz */ @@ -125,7 +127,7 @@  #define CONFIG_CMD_PCI  #endif -#if (TEXT_BASE == 0xFE000000)		/* Boot low with 32 MB Flash */ +#if (CONFIG_SYS_TEXT_BASE == 0xFE000000)		/* Boot low with 32 MB Flash */  #define CONFIG_SYS_LOWBOOT		1  #define CONFIG_SYS_LOWBOOT32		1  #endif @@ -238,7 +240,7 @@  #define CONFIG_SYS_GBL_DATA_OFFSET	(CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE)  #define CONFIG_SYS_INIT_SP_OFFSET	CONFIG_SYS_GBL_DATA_OFFSET -#define CONFIG_SYS_MONITOR_BASE    TEXT_BASE +#define CONFIG_SYS_MONITOR_BASE    CONFIG_SYS_TEXT_BASE  #if (CONFIG_SYS_MONITOR_BASE < CONFIG_SYS_FLASH_BASE)  #   define CONFIG_SYS_RAMBOOT		1  #endif diff --git a/include/configs/jornada.h b/include/configs/jornada.h new file mode 100644 index 000000000..69a045cc3 --- /dev/null +++ b/include/configs/jornada.h @@ -0,0 +1,155 @@ +/* + * Copyright 2010 (C) + * Kristoffer Ericson <kristoffer.ericson@gmail.com> + * + * 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_H +#define __CONFIG_H + +/* + * High Level Configuration Options + * (easy to change) + */ +#define CONFIG_SA1110			1	/* This is an SA110 CPU */ +#define CONFIG_JORNADA700		1	/* on an HP Jornada 700 series */ +#define CONFIG_SYS_FLASH_PROTECTION	1 +#define CONFIG_SYS_ARM_WITHOUT_RELOC	1 + +#define CONFIG_SYS_TEXT_BASE		0xC1F00000 + +/* we will never enable dcache, because we have to setup MMU first */ +#define CONFIG_SYS_NO_DCACHE +#undef CONFIG_USE_IRQ + +/* Console setting */ + +#define CONFIG_CMDLINE_TAG		1	/* enable passing of ATAGs      */ +#define CONFIG_SETUP_MEMORY_TAGS	1 +#define CONFIG_INITRD_TAG		1 + +/* + * Size of malloc() pool + */ +#define CONFIG_SYS_MALLOC_LEN		(CONFIG_ENV_SIZE + 128*1024) +#define CONFIG_SYS_GBL_DATA_SIZE	128	/* size for initial data */ + +/* + * select serial console configuration + */ +#define CONFIG_SA1100_SERIAL	1 +#define CONFIG_SERIAL3		1	/* we use serial 3 */ +#define CONFIG_BAUDRATE	19200 +#define CONFIG_LOADS_ECHO	1 + +/* + * Command line configuration. + */ +#include <config_cmd_default.h> +#define CONFIG_CMD_FLASH +#define CONFIG_CMD_JFFS2 +#undef CONFIG_CMD_NET +#undef CONFIG_CMD_NFS +#undef CONFIG_CMD_FPGA +#undef CONFIG_CMD_MISC +#undef CONFIG_CMD_SETGETDCR +#undef CONFIG_CMD_XIMG + +#define CONFIG_BOOTDELAY	5 +#define CONFIG_BOOTARGS	"root=/dev/hda1 console=ttySA0,19200n8 console=tty1" +#define CONFIG_BOOTCOMMAND	"run boot_kernel" +#define CONFIG_SYS_AUTOLOAD	"n"	/* No autoload */ +#define CONFIG_SYS_LOAD_ADDR	0xc0000000 + +/* + * Miscellaneous configurable options + */ +#define CONFIG_SYS_LONGHELP	/* undef to save memory */ +#define CONFIG_SYS_PROMPT		"HP Jornada# " +#define CONFIG_SYS_CBSIZE		256	/* console buffsize */ +#define CONFIG_SYS_PBSIZE		(256+sizeof(CONFIG_SYS_PROMPT)+16) +#define CONFIG_SYS_MAXARGS		16	/* max number of command args */ +#define CONFIG_SYS_BARGSIZE		256	/* Boot Argument Buffer Size */ +#define CONFIG_SYS_MEMTEST_START	0xc0040000	/* memtest works on */ +#define CONFIG_SYS_MEMTEST_END		0xc2000000	/* 4..128 MB */ +#define CONFIG_SYS_HZ			1000 +#define CONFIG_SYS_CPUSPEED		0x0a /* core clock 206MHz */ +#define CONFIG_SYS_BAUDRATE_TABLE	{ 19200, 38400, 57600, 115200 } + +/*----------------------------------------------------------------------- + * Stack sizes + * + * The stack sizes are set up in start.S using the settings below + */ +#define CONFIG_STACKSIZE		(128*1024)	/* regular stack */ +#define CONFIG_SYS_FLASH_CFI		1 +#define CONFIG_FLASH_CFI_DRIVER	1 +#define CONFIG_FLASH_CFI_WIDTH		FLASH_CFI_32BIT +#define CONFIG_SYS_FLASH_BASE		0x00000000 +#define CONFIG_SYS_FLASH_ERASE_TOUT	(4096) +#define CONFIG_SYS_FLASH_WRITE_TOUT	(4096) +#define CONFIG_SYS_FLASH_INCREMENT	0x02000000 +#define PHYS_FLASH_1			0x00000000	/* starts at 0x0 */ +#define PHYS_FLASH_SIZE		0x04000000	/* 64MB */ +#define PHYS_FLASH_SECT_SIZE		0x00040000	/* 256KB Sectors */ +#define CONFIG_SYS_MAX_FLASH_BANKS	1 +#define CONFIG_SYS_MAX_FLASH_SECT	260 +#define CONFIG_SYS_FLASH_BANKS_LIST	{ PHYS_FLASH_1 } +#define CONFIG_SYS_FLASH_EMPTY_INFO	1 +#define CONFIG_SYS_MONITOR_LEN		0x00040000 +#define CONFIG_SYS_MONITOR_BASE	0x00000000 +#define CONFIG_FLASH_SHOW_PROGRESS	1 + +/* Environment */ +#define CONFIG_ENV_IS_IN_FLASH	1 +#define CONFIG_ENV_ADDR		0x00040000 +#define CONFIG_ENV_OFFSET	0x00040000 +#define CONFIG_ENV_SIZE		0x00040000 +#define CONFIG_ENV_SECT_SIZE	0x00040000 +#define CONFIG_ENV_OVERWRITE	1 + +/* +  Monitor -     0x00000000 - 0x00040000 (256kb) +  Environment - 0x00040000 - 0x00080000 (256kb) +  Kernel -      0x00080000 - 0x00380000 (3mb) +  Rootfs -      0x00380000 - 0x........ (rest) +*/ + +#define CONFIG_NR_DRAM_BANKS		2 +#define CONFIG_SYS_SDRAM_BASE		0x00000000 +#define CONFIG_SYS_INTRAM_BASE		INTERNAL_SRAM_BASE +#define CONFIG_SYS_INTRAM_SIZE		INTERNAL_SRAM_SIZE +#define CONFIG_SYS_INIT_SP_ADDR	0x0 +#define PHYS_SDRAM_1			0xc0000000	/* SDRAM Bank #1 */ +#define PHYS_SDRAM_2			0xc4000000	/* SDRAM Bank #2 */ +#define PHYS_SDRAM_1_SIZE		0x04000000	/* 64 MB */ +#define PHYS_SDRAM_2_SIZE		0x04000000	/* 64 MB */ + +#define CONFIG_CMD_MTDPARTS +#define CONFIG_MTD_DEVICE +#define CONFIG_FLASH_CFI_MTD +#define MTDIDS_DEFAULT		"nor0=jornada7xx-0" +#define MTDPARTS_DEFAULT	"mtdparts=jornada7xx-0:256k(u-boot),256k(env),"\ +		"3m(kernel),-(user);" + +#define	CONFIG_EXTRA_ENV_SETTINGS				\ +	"flash_kernel=protect off all; "				\ +	"erase 00080000 0037ffff;cp.b c0000000 00080000 00300000;\0"	\ +	"flash_uboot=protect off all; "					\ +	"erase 00000000 0003ffff;cp.b c0000000 00000000 00040000;\0"	\ +	"boot_kernel=cp.b 00080000 c0000000 00300000;bootm;\0" +#endif /* __CONFIG_H */ diff --git a/include/lattice.h b/include/lattice.h index 33d2ac3df..75729b605 100755 --- a/include/lattice.h +++ b/include/lattice.h @@ -308,6 +308,7 @@ int lattice_info(Lattice_desc *desc);  void ispVMStart(void);  void ispVMEnd(void); +extern void ispVMFreeMem(void);  signed char ispVMCode(void);  void ispVMDelay(unsigned short int a_usMicroSecondDelay);  void ispVMCalculateCRC32(unsigned char a_ucData); diff --git a/nand_spl/nand_boot.c b/nand_spl/nand_boot.c index 4d6db14ab..ccd0af255 100644 --- a/nand_spl/nand_boot.c +++ b/nand_spl/nand_boot.c @@ -224,7 +224,8 @@ static int nand_load(struct mtd_info *mtd, unsigned int offs,  #if defined(CONFIG_ARM) && !defined(CONFIG_SYS_ARM_WITHOUT_RELOC)  void board_init_f (ulong bootflag)  { -	relocate_code (CONFIG_SYS_TEXT_BASE - TOTAL_MALLOC_LEN, NULL, TEXT_BASE); +	relocate_code (CONFIG_SYS_TEXT_BASE - TOTAL_MALLOC_LEN, NULL, +		       CONFIG_SYS_TEXT_BASE);  }  #endif diff --git a/nand_spl/nand_boot_fsl_nfc.c b/nand_spl/nand_boot_fsl_nfc.c index 959f16232..21ed3fcff 100644 --- a/nand_spl/nand_boot_fsl_nfc.c +++ b/nand_spl/nand_boot_fsl_nfc.c @@ -266,7 +266,8 @@ static int nand_load(unsigned int from, unsigned int size, unsigned char *buf)  #if defined(CONFIG_ARM) && !defined(CONFIG_SYS_ARM_WITHOUT_RELOC)  void board_init_f (ulong bootflag)  { -	relocate_code (CONFIG_SYS_TEXT_BASE - TOTAL_MALLOC_LEN, NULL, TEXT_BASE); +	relocate_code (CONFIG_SYS_TEXT_BASE - TOTAL_MALLOC_LEN, NULL, +		       CONFIG_SYS_TEXT_BASE);  }  #endif diff --git a/post/drivers/memory.c b/post/drivers/memory.c index 006236009..3f47449f1 100644 --- a/post/drivers/memory.c +++ b/post/drivers/memory.c @@ -452,30 +452,66 @@ static int memory_post_tests (unsigned long start, unsigned long size)  	return ret;  } -int memory_post_test (int flags) +__attribute__((weak)) +int arch_memory_test_prepare(u32 *vstart, u32 *size, phys_addr_t *phys_offset)  { -	int ret = 0;  	bd_t *bd = gd->bd; -	unsigned long memsize = (bd->bi_memsize >= 256 << 20 ? -				 256 << 20 : bd->bi_memsize) - (1 << 20); +	*vstart = CONFIG_SYS_SDRAM_BASE; +	*size = (bd->bi_memsize >= 256 << 20 ? +			256 << 20 : bd->bi_memsize) - (1 << 20);  	/* Limit area to be tested with the board info struct */ -	if (CONFIG_SYS_SDRAM_BASE + memsize > (ulong)bd) -		memsize = (ulong)bd - CONFIG_SYS_SDRAM_BASE; +	if ((*vstart) + (*size) > (ulong)bd) +		*size = (ulong)bd - *vstart; -	if (flags & POST_SLOWTEST) { -		ret = memory_post_tests (CONFIG_SYS_SDRAM_BASE, memsize); -	} else {			/* POST_NORMAL */ +	return 0; +} -		unsigned long i; +__attribute__((weak)) +int arch_memory_test_advance(u32 *vstart, u32 *size, phys_addr_t *phys_offset) +{ +	return 1; +} -		for (i = 0; i < (memsize >> 20) && ret == 0; i++) { -			if (ret == 0) -				ret = memory_post_tests (i << 20, 0x800); -			if (ret == 0) -				ret = memory_post_tests ((i << 20) + 0xff800, 0x800); +__attribute__((weak)) +int arch_memory_test_cleanup(u32 *vstart, u32 *size, phys_addr_t *phys_offset) +{ +	return 0; +} + +__attribute__((weak)) +void arch_memory_failure_handle(void) +{ +	return; +} + +int memory_post_test(int flags) +{ +	int ret = 0; +	phys_addr_t phys_offset = 0; +	u32 memsize, vstart; + +	arch_memory_test_prepare(&vstart, &memsize, &phys_offset); + +	do { +		if (flags & POST_SLOWTEST) { +			ret = memory_post_tests(vstart, memsize); +		} else {			/* POST_NORMAL */ +			unsigned long i; +			for (i = 0; i < (memsize >> 20) && ret == 0; i++) { +				if (ret == 0) +					ret = memory_post_tests(i << 20, 0x800); +				if (ret == 0) +					ret = memory_post_tests( +						(i << 20) + 0xff800, 0x800); +			}  		} -	} +	} while (!ret && +		!arch_memory_test_advance(&vstart, &memsize, &phys_offset)); + +	arch_memory_test_cleanup(&vstart, &memsize, &phys_offset); +	if (ret) +		arch_memory_failure_handle();  	return ret;  } |