diff options
| -rwxr-xr-x | MAKEALL | 1 | ||||
| -rw-r--r-- | Makefile | 3 | ||||
| -rw-r--r-- | board/mx31ads/Makefile | 47 | ||||
| -rw-r--r-- | board/mx31ads/config.mk | 1 | ||||
| -rw-r--r-- | board/mx31ads/lowlevel_init.S | 281 | ||||
| -rw-r--r-- | board/mx31ads/mx31ads.c | 94 | ||||
| -rw-r--r-- | board/mx31ads/u-boot.lds | 59 | ||||
| -rw-r--r-- | include/asm-arm/arch-mx31/mx31-regs.h | 14 | ||||
| -rw-r--r-- | include/configs/mx31ads.h | 166 | 
9 files changed, 666 insertions, 0 deletions
| @@ -510,6 +510,7 @@ LIST_ARM11="		\  	apollon		\  	imx31_litekit	\  	imx31_phycore	\ +	mx31ads		\  "  ######################################################################### @@ -2636,6 +2636,9 @@ imx31_litekit_config	: unconfig  imx31_phycore_config	: unconfig  	@$(MKCONFIG) $(@:_config=) arm arm1136 imx31_phycore NULL mx31 +mx31ads_config		: unconfig +	@$(MKCONFIG) $(@:_config=) arm arm1136 mx31ads NULL mx31 +  #========================================================================  # i386  #======================================================================== diff --git a/board/mx31ads/Makefile b/board/mx31ads/Makefile new file mode 100644 index 000000000..dfadd9685 --- /dev/null +++ b/board/mx31ads/Makefile @@ -0,0 +1,47 @@ +# +# Copyright (C) 2008, Guennadi Liakhovetski <lg@denx.de> +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, +# MA 02111-1307 USA +# + +include $(TOPDIR)/config.mk + +LIB	= $(obj)lib$(BOARD).a + +COBJS	:= mx31ads.o +SOBJS	:= lowlevel_init.o + +SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c) +OBJS	:= $(addprefix $(obj),$(COBJS)) +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 .depend + +######################################################################### + +# defines $(obj).depend target +include $(SRCTREE)/rules.mk + +sinclude $(obj).depend + +######################################################################### diff --git a/board/mx31ads/config.mk b/board/mx31ads/config.mk new file mode 100644 index 000000000..d34dc02d9 --- /dev/null +++ b/board/mx31ads/config.mk @@ -0,0 +1 @@ +TEXT_BASE = 0x87f00000 diff --git a/board/mx31ads/lowlevel_init.S b/board/mx31ads/lowlevel_init.S new file mode 100644 index 000000000..099a7ca81 --- /dev/null +++ b/board/mx31ads/lowlevel_init.S @@ -0,0 +1,281 @@ +/* + * Copyright (C) 2008, Guennadi Liakhovetski <lg@denx.de> + * + * 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 <asm/arch/mx31-regs.h> + +.macro REG reg, val +	ldr r2, =\reg +	ldr r3, =\val +	str r3, [r2] +.endm + +.macro REG8 reg, val +	ldr r2, =\reg +	ldr r3, =\val +	strb r3, [r2] +.endm + +.macro DELAY loops +	ldr r2, =\loops +1: +	subs	r2, r2, #1 +	nop +	bcs 1b +.endm + +/* RedBoot: AIPS setup - Only setup MPROTx registers. + * The PACR default values are good.*/ +.macro init_aips +	/* +	 * Set all MPROTx to be non-bufferable, trusted for R/W, +	 * not forced to user-mode. +	 */ +	ldr r0, =0x43F00000 +	ldr r1, =0x77777777 +	str r1, [r0, #0x00] +	str r1, [r0, #0x04] +	ldr r0, =0x53F00000 +	str r1, [r0, #0x00] +	str r1, [r0, #0x04] + +	/* +	 * Clear the on and off peripheral modules Supervisor Protect bit +	 * for SDMA to access them. Did not change the AIPS control registers +	 * (offset 0x20) access type +	 */ +	ldr r0, =0x43F00000 +	ldr r1, =0x0 +	str r1, [r0, #0x40] +	str r1, [r0, #0x44] +	str r1, [r0, #0x48] +	str r1, [r0, #0x4C] +	ldr r1, [r0, #0x50] +	and r1, r1, #0x00FFFFFF +	str r1, [r0, #0x50] + +	ldr r0, =0x53F00000 +	ldr r1, =0x0 +	str r1, [r0, #0x40] +	str r1, [r0, #0x44] +	str r1, [r0, #0x48] +	str r1, [r0, #0x4C] +	ldr r1, [r0, #0x50] +	and r1, r1, #0x00FFFFFF +	str r1, [r0, #0x50] +.endm /* init_aips */ + +/* RedBoot: MAX (Multi-Layer AHB Crossbar Switch) setup */ +.macro init_max +	ldr r0, =0x43F04000 +	/* MPR - priority is M4 > M2 > M3 > M5 > M0 > M1 */ +	ldr r1, =0x00302154 +	str r1, [r0, #0x000]        /* for S0 */ +	str r1, [r0, #0x100]        /* for S1 */ +	str r1, [r0, #0x200]        /* for S2 */ +	str r1, [r0, #0x300]        /* for S3 */ +	str r1, [r0, #0x400]        /* for S4 */ +	/* SGPCR - always park on last master */ +	ldr r1, =0x10 +	str r1, [r0, #0x010]        /* for S0 */ +	str r1, [r0, #0x110]        /* for S1 */ +	str r1, [r0, #0x210]        /* for S2 */ +	str r1, [r0, #0x310]        /* for S3 */ +	str r1, [r0, #0x410]        /* for S4 */ +	/* MGPCR - restore default values */ +	ldr r1, =0x0 +	str r1, [r0, #0x800]        /* for M0 */ +	str r1, [r0, #0x900]        /* for M1 */ +	str r1, [r0, #0xA00]        /* for M2 */ +	str r1, [r0, #0xB00]        /* for M3 */ +	str r1, [r0, #0xC00]        /* for M4 */ +	str r1, [r0, #0xD00]        /* for M5 */ +.endm /* init_max */ + +/* RedBoot: M3IF setup */ +.macro init_m3if +	/* Configure M3IF registers */ +	ldr r1, =0xB8003000 +	/* +	* M3IF Control Register (M3IFCTL) +	* MRRP[0] = L2CC0 not on priority list (0 << 0)	= 0x00000000 +	* MRRP[1] = L2CC1 not on priority list (0 << 0)	= 0x00000000 +	* MRRP[2] = MBX not on priority list (0 << 0)	= 0x00000000 +	* MRRP[3] = MAX1 not on priority list (0 << 0)	= 0x00000000 +	* MRRP[4] = SDMA not on priority list (0 << 0)	= 0x00000000 +	* MRRP[5] = MPEG4 not on priority list (0 << 0)	= 0x00000000 +	* MRRP[6] = IPU1 on priority list (1 << 6)	= 0x00000040 +	* MRRP[7] = IPU2 not on priority list (0 << 0)	= 0x00000000 +	*						------------ +	*						  0x00000040 +	*/ +	ldr r0, =0x00000040 +	str r0, [r1]  /* M3IF control reg */ +.endm /* init_m3if */ + +/* RedBoot: To support 133MHz DDR */ +.macro  init_drive_strength +	/* +	 * Disable maximum drive strength SDRAM/DDR lines by clearing DSE1 bits +	 * in SW_PAD_CTL registers +	 */ + +	/* SDCLK */ +	ldr r1, =0x43FAC200 +	ldr r0, [r1, #0x6C] +	bic r0, r0, #(1 << 12) +	str r0, [r1, #0x6C] + +	/* CAS */ +	ldr r0, [r1, #0x70] +	bic r0, r0, #(1 << 22) +	str r0, [r1, #0x70] + +	/* RAS */ +	ldr r0, [r1, #0x74] +	bic r0, r0, #(1 << 2) +	str r0, [r1, #0x74] + +	/* CS2 (CSD0) */ +	ldr r0, [r1, #0x7C] +	bic r0, r0, #(1 << 22) +	str r0, [r1, #0x7C] + +	/* DQM3 */ +	ldr r0, [r1, #0x84] +	bic r0, r0, #(1 << 22) +	str r0, [r1, #0x84] + +	/* DQM2, DQM1, DQM0, SD31-SD0, A25-A0, MA10 (0x288..0x2DC) */ +	ldr r2, =22	/* (0x2E0 - 0x288) / 4 = 22 */ +pad_loop: +	ldr r0, [r1, #0x88] +	bic r0, r0, #(1 << 22) +	bic r0, r0, #(1 << 12) +	bic r0, r0, #(1 << 2) +	str r0, [r1, #0x88] +	add r1, r1, #4 +	subs r2, r2, #0x1 +	bne pad_loop +.endm /* init_drive_strength */ + +/* CPLD on CS4 setup */ +.macro init_cs4 +	ldr r0, =WEIM_BASE +	ldr r1, =0x0000D843 +	str r1, [r0, #0x40] +	ldr r1, =0x22252521 +	str r1, [r0, #0x44] +	ldr r1, =0x22220A00 +	str r1, [r0, #0x48] +.endm /* init_cs4 */ + +.globl lowlevel_init +lowlevel_init: + +	/* Redboot initializes very early AIPS, what for? +	 * Then it also initializes Multi-Layer AHB Crossbar Switch, +	 * M3IF */ +	/* Also setup the Peripheral Port Remap register inside the core */ +	ldr r0, =0x40000015        /* start from AIPS 2GB region */ +	mcr p15, 0, r0, c15, c2, 4 + +	init_aips + +	init_max + +	init_m3if + +	init_drive_strength + +	init_cs4 + +	/* Image Processing Unit: */ +	/* Too early to switch display on? */ +	REG	IPU_CONF, IPU_CONF_DI_EN	/* Switch on Display Interface */ +	/* Clock Control Module: */ +	REG	CCM_CCMR, 0x074B0BF5		/* Use CKIH, MCU PLL off */ + +	DELAY 0x40000 + +	REG	CCM_CCMR, 0x074B0BF5 | CCMR_MPE			/* MCU PLL on */ +	REG	CCM_CCMR, (0x074B0BF5 | CCMR_MPE) & ~CCMR_MDS	/* Switch to MCU PLL */ + +	/* PBC CPLD on CS4 */ +	mov	r1, #CS4_BASE +	ldrh	r1, [r1, #0x2] +	/* Is 27MHz switch set? */ +	ands	r1, r1, #0x16 + +	/* 532-133-66.5 */ +	ldr	r0, =CCM_BASE +	ldr	r1, =0xFF871D58 +	/* PDR0 */ +	str	r1, [r0, #0x4] +	ldreq	r1, MPCTL_PARAM_532 +	ldrne	r1, MPCTL_PARAM_532_27 +	/* MPCTL */ +	str	r1, [r0, #0x10] + +	/* Set UPLL=240MHz, USB=60MHz */ +	ldr	r1, =0x49FCFE7F +	/* PDR1 */ +	str	r1, [r0, #0x8] +	ldreq	r1, UPCTL_PARAM_240 +	ldrne	r1, UPCTL_PARAM_240_27 +	/* UPCTL */ +	str	r1, [r0, #0x14] +	/* default CLKO to 1/8 of the ARM core */ +	mov	r1, #0x000002C0 +	add	r1, r1, #0x00000006 +	/* COSR */ +	str	r1, [r0, #0x1c] + +	/* RedBoot sets 0x1ff, 7, 3, 5, 1, 3, 0 */ +/*	REG	CCM_PDR0, PDR0_CSI_PODF(0x1ff) | PDR0_PER_PODF(7) | PDR0_HSP_PODF(2) | PDR0_NFC_PODF(6) | PDR0_IPG_PODF(1) | PDR0_MAX_PODF(2) | PDR0_MCU_PODF(0)*/ + +	/* Redboot: 0, 51, 10, 12 / 0, 14, 9, 13 */ +/*	REG	CCM_MPCTL, PLL_PD(0) | PLL_MFD(0x33) | PLL_MFI(7) | PLL_MFN(0x23)*/ +	/* Default: 1, 4, 12, 1 */ +	REG	CCM_SPCTL, PLL_PD(1) | PLL_MFD(4) | PLL_MFI(12) | PLL_MFN(1) + +	/* B8xxxxxx - NAND, 8xxxxxxx - CSD0 RAM */ +	REG	0xB8001010, 0x00000004 +	REG	0xB8001004, 0x006ac73a +	REG	0xB8001000, 0x92100000 +	REG	0x80000f00, 0x12344321 +	REG	0xB8001000, 0xa2100000 +	REG	0x80000000, 0x12344321 +	REG	0x80000000, 0x12344321 +	REG	0xB8001000, 0xb2100000 +	REG8	0x80000033, 0xda +	REG8	0x81000000, 0xff +	REG	0xB8001000, 0x82226080 +	REG	0x80000000, 0xDEADBEEF +	REG	0xB8001010, 0x0000000c + +	mov	pc, lr + +MPCTL_PARAM_532: +	.word (((1-1) << 26) + ((52-1) << 16) + (10 << 10) + (12 << 0)) +MPCTL_PARAM_532_27: +	.word (((1-1) << 26) + ((15-1) << 16) + (9  << 10) + (13 << 0)) +UPCTL_PARAM_240: +	.word (((2-1) << 26) + ((13-1) << 16) + (9  << 10) + (3  << 0)) +UPCTL_PARAM_240_27: +	.word (((2-1) << 26) + ((9 -1) << 16) + (8  << 10) + (8  << 0)) diff --git a/board/mx31ads/mx31ads.c b/board/mx31ads/mx31ads.c new file mode 100644 index 000000000..7c50c023e --- /dev/null +++ b/board/mx31ads/mx31ads.c @@ -0,0 +1,94 @@ +/* + * Copyright (C) 2008, Guennadi Liakhovetski <lg@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 <asm/io.h> +#include <asm/arch/mx31.h> +#include <asm/arch/mx31-regs.h> + +DECLARE_GLOBAL_DATA_PTR; + +int dram_init (void) +{ +	gd->bd->bi_dram[0].start = PHYS_SDRAM_1; +	gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE; + +	return 0; +} + +int board_init (void) +{ +	int i; +#if 0 +	/* CS0: Nor Flash */ +	/* +	 * These are values from the RedBoot sources by Freescale. However, +	 * under U-Boot with this configuration 32-bit accesses don't work, +	 * lower 16 bits of data are read twice for each 32-bit read. +	 */ +	__REG(CSCR_U(0)) = 0x23524E80; +	__REG(CSCR_L(0)) = 0x10000D03; /* WRAP bit (1) is suspicious here, but +					* disabling it doesn't help either */ +	__REG(CSCR_A(0)) = 0x00720900; +#endif + +	/* setup pins for UART1 */ +	mx31_gpio_mux(MUX_RXD1__UART1_RXD_MUX); +	mx31_gpio_mux(MUX_TXD1__UART1_TXD_MUX); +	mx31_gpio_mux(MUX_RTS1__UART1_RTS_B); +	mx31_gpio_mux(MUX_RTS1__UART1_CTS_B); + +	/* PBC setup */ +	/* Enable UART transceivers also reset the Ethernet/external UART */ +	readw(CS4_BASE + 4); + +	writew(0x8023, CS4_BASE + 4); + +	/* RedBoot also has an empty loop with 100000 iterations here - +	 * clock doesn't run yet */ +	for (i = 0; i < 100000; i++) +		; + +	/* Clear the reset, toggle the LEDs */ +	writew(0xDF, CS4_BASE + 6); + +	/* clock still doesn't run */ +	for (i = 0; i < 100000; i++) +		; + +	/* See 1.5.4 in IMX31ADSE_PERI_BUS_CNTRL_CPLD_RM.pdf */ +	readb(CS4_BASE + 8); +	readb(CS4_BASE + 7); +	readb(CS4_BASE + 8); +	readb(CS4_BASE + 7); + +	gd->bd->bi_arch_number = 447;		/* board id for linux */ +	gd->bd->bi_boot_params = 0x80000100;	/* adress of boot parameters */ + +	return 0; +} + +int checkboard (void) +{ +	printf("Board: MX31ADS\n"); +	return 0; +} diff --git a/board/mx31ads/u-boot.lds b/board/mx31ads/u-boot.lds new file mode 100644 index 000000000..1460adcdd --- /dev/null +++ b/board/mx31ads/u-boot.lds @@ -0,0 +1,59 @@ +/* + * January 2004 - Changed to support H4 device + * Copyright (c) 2004 Texas Instruments + * + * (C) Copyright 2002 + * Gary Jennejohn, DENX Software Engineering, <gj@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_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +ENTRY(_start) +SECTIONS +{ +	. = 0x00000000; + +	. = ALIGN(4); +	.text	   : +	{ +	  cpu/arm1136/start.o	(.text) +	  *(.text) +	} + +	. = ALIGN(4); +	.rodata : { *(.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 : { *(.bss) } +	_end = .; +} diff --git a/include/asm-arm/arch-mx31/mx31-regs.h b/include/asm-arm/arch-mx31/mx31-regs.h index d04072e67..02b7dcbcb 100644 --- a/include/asm-arm/arch-mx31/mx31-regs.h +++ b/include/asm-arm/arch-mx31/mx31-regs.h @@ -138,5 +138,19 @@  #define MUX_CSPI2_MOSI__I2C2_SCL ((MUX_CTL_ALT1 << 8) | MUX_CTL_CSPI2_MOSI)  #define MUX_CSPI2_MISO__I2C2_SCL ((MUX_CTL_ALT1 << 8) | MUX_CTL_CSPI2_MISO) +/* + * Memory regions and CS + */ +#define IPU_MEM_BASE	0x70000000 +#define CSD0_BASE	0x80000000 +#define CSD1_BASE	0x90000000 +#define CS0_BASE	0xA0000000 +#define CS1_BASE	0xA8000000 +#define CS2_BASE	0xB0000000 +#define CS3_BASE	0xB2000000 +#define CS4_BASE	0xB4000000 +#define CS4_PSRAM_BASE	0xB5000000 +#define CS5_BASE	0xB6000000 +#define PCMCIA_MEM_BASE	0xC0000000  #endif /* __ASM_ARCH_MX31_REGS_H */ diff --git a/include/configs/mx31ads.h b/include/configs/mx31ads.h new file mode 100644 index 000000000..77a9a8366 --- /dev/null +++ b/include/configs/mx31ads.h @@ -0,0 +1,166 @@ +/* + * Copyright (C) 2008, Guennadi Liakhovetski <lg@denx.de> + * + * Configuration settings for the MX31ADS Freescale board. + * + * 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 + +#include <asm/arch/mx31-regs.h> + + /* High Level Configuration Options */ +#define CONFIG_ARM1136		1		/* This is an arm1136 CPU core */ +#define CONFIG_MX31		1		/* in a mx31 */ +#define CONFIG_MX31_HCLK_FREQ	26000000	/* RedBoot says 26MHz */ +#define CONFIG_MX31_CLK32	32000 + +#define CONFIG_DISPLAY_CPUINFO +#define CONFIG_DISPLAY_BOARDINFO + +/* + * Disabled for now due to build problems under Debian and a significant increase + * in the final file size: 144260 vs. 109536 Bytes. + */ +#if 0 +#define CONFIG_OF_LIBFDT		1 +#define CONFIG_FIT			1 +#define CONFIG_FIT_VERBOSE		1 +#endif + +#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 CFG_MALLOC_LEN		(CFG_ENV_SIZE + 128 * 1024) +#define CFG_GBL_DATA_SIZE	128  /* size in bytes reserved for initial data */ + +/* + * Hardware drivers + */ + +#define CONFIG_MX31_UART	1 +#define CFG_MX31_UART1		1 + +/* allow to overwrite serial and ethaddr */ +#define CONFIG_ENV_OVERWRITE +#define CONFIG_CONS_INDEX	1 +#define CONFIG_BAUDRATE		115200 +#define CFG_BAUDRATE_TABLE	{9600, 19200, 38400, 57600, 115200} + +/*********************************************************** + * Command definition + ***********************************************************/ + +#include <config_cmd_default.h> + +#define CONFIG_CMD_MII +#define CONFIG_CMD_PING + +#define CONFIG_BOOTDELAY	3 + +#define CONFIG_NETMASK		255.255.255.0 +#define CONFIG_IPADDR		192.168.23.168 +#define CONFIG_SERVERIP		192.168.23.2 + +#define	CONFIG_EXTRA_ENV_SETTINGS											\ +	"bootargs_base=setenv bootargs console=ttymxc0,115200\0"							\ +	"bootargs_nfs=setenv bootargs $(bootargs) root=/dev/nfs ip=dhcp nfsroot=$(serverip):$(nfsrootfs),v3,tcp\0"	\ +	"bootcmd=run bootcmd_net\0"											\ +	"bootcmd_net=run bootargs_base bootargs_mtd bootargs_nfs; tftpboot 0x80000000 uImage-mx31; bootm\0"		\ +	"prg_uboot=tftpboot 0x80000000 u-boot-mx31ads.bin; protect off 0xa0000000 0xa001ffff; erase 0xa0000000 0xa001ffff; cp.b 0x80000000 0xa0000000 $(filesize)\0" + + +#define CONFIG_DRIVER_CS8900	1 +#define CS8900_BASE		0xb4020300 +#define CS8900_BUS16		1	/* the Linux driver does accesses as shorts */ + +/* + * Miscellaneous configurable options + */ +#define CFG_LONGHELP		/* undef to save memory */ +#define CFG_PROMPT		"=> " +#define CFG_CBSIZE		256		/* Console I/O Buffer Size */ +/* Print Buffer Size */ +#define CFG_PBSIZE		(CFG_CBSIZE+sizeof(CFG_PROMPT)+16) +#define CFG_MAXARGS		16		/* max number of command args */ +#define CFG_BARGSIZE		CFG_CBSIZE	/* Boot Argument Buffer Size */ + +#define CFG_MEMTEST_START	0		/* memtest works on */ +#define CFG_MEMTEST_END		0x10000 + +#undef	CFG_CLKS_IN_HZ		/* everything, incl board info, in Hz */ + +#define CFG_LOAD_ADDR		CSD0_BASE	/* default load address */ + +#define CFG_HZ			32000 + +#define CONFIG_CMDLINE_EDITING	1 + +/*----------------------------------------------------------------------- + * Stack sizes + * + * The stack sizes are set up in start.S using the settings below + */ +#define CONFIG_STACKSIZE	(128 * 1024)	/* regular stack */ + +/*----------------------------------------------------------------------- + * Physical Memory Map + */ +#define CONFIG_NR_DRAM_BANKS	1 +#define PHYS_SDRAM_1		CSD0_BASE +#define PHYS_SDRAM_1_SIZE	(128 * 1024 * 1024) + +/*----------------------------------------------------------------------- + * FLASH and environment organization + */ +#define CFG_FLASH_BASE		CS0_BASE +#define CFG_MAX_FLASH_BANKS	1		/* max number of memory banks */ +#define CFG_MAX_FLASH_SECT	262		/* max number of sectors on one chip */ +#define CFG_MONITOR_BASE	CFG_FLASH_BASE	/* Monitor at beginning of flash */ +#define CFG_MONITOR_LEN		(128 * 1024)	/* Reserve 128KiB */ + +#define	CFG_ENV_IS_IN_FLASH	1 +#define CFG_ENV_SECT_SIZE	(32 * 1024) +#define CFG_ENV_SIZE		CFG_ENV_SECT_SIZE +/* S29WS256N NOR flash has 4 32KiB small sectors at the beginning and at the end. + * The rest of 32MiB is in 128KiB big sectors. U-Boot occupies the low 4 sectors, + * if we put environment next to it, we will have to occupy 128KiB for it. + * Putting it at the top of flash we use only 32KiB. */ +#define CFG_ENV_ADDR		(CFG_MONITOR_BASE + 32 * 1024 * 1024 - CFG_ENV_SIZE) + +/*----------------------------------------------------------------------- + * CFI FLASH driver setup + */ +#define CFG_FLASH_CFI			1 /* Flash memory is CFI compliant */ +#define CFG_FLASH_CFI_DRIVER		1 /* Use drivers/cfi_flash.c */ +#if 0 /* Doesn't work yet, work in progress */ +#define CFG_FLASH_USE_BUFFER_WRITE	1 /* Use buffered writes (~10x faster) */ +#endif +#define CFG_FLASH_PROTECTION		1 /* Use hardware sector protection */ + +/* + * JFFS2 partitions + */ +#undef CONFIG_JFFS2_CMDLINE +#define CONFIG_JFFS2_DEV	"nor0" + +#endif /* __CONFIG_H */ |