/*
 * (C) Copyright 2008
 *  Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda@uam.es
 *  This work has been supported by: QTechnology  http://qtec.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, see <http://www.gnu.org/licenses/>.
*/

#ifndef __CONFIG_H
#define __CONFIG_H
/*
#define DEBUG
#define ET_DEBUG
*/
 /*CPU*/
#define CONFIG_XILINX_ML507	1
#define CONFIG_XILINX_440	1
#define CONFIG_440		1
#define CONFIG_4xx		1
#include "../board/xilinx/ml507/xparameters.h"

/*Mem Map*/
#define CFG_SDRAM_BASE		0x0
#define CFG_SDRAM_SIZE_MB	256
#define CFG_MONITOR_BASE	TEXT_BASE
#define CFG_MONITOR_LEN		( 192 * 1024 )
#define CFG_MALLOC_LEN		( CFG_ENV_SIZE + 128 * 1024 )

/*Uart*/
#define CONFIG_XILINX_UARTLITE
#define CONFIG_BAUDRATE		XPAR_UARTLITE_0_BAUDRATE
#define CFG_BAUDRATE_TABLE	{ XPAR_UARTLITE_0_BAUDRATE }
#define CONFIG_SERIAL_BASE	XPAR_UARTLITE_0_BASEADDR

/*Cmd*/
#include <config_cmd_default.h>
#define CONFIG_CMD_ASKENV
#define CONFIG_CMD_CACHE
#define CONFIG_CMD_DIAG
#define CONFIG_CMD_ELF
#define CONFIG_CMD_IRQ
#define CONFIG_CMD_REGINFO
#define CONFIG_CMD_JFFS2
#define CONFIG_JFFS2_CMDLINE
#undef CONFIG_CMD_I2C
#undef CONFIG_CMD_DTT
#undef CONFIG_CMD_NET
#undef CONFIG_CMD_PING
#undef CONFIG_CMD_DHCP
#undef CONFIG_CMD_EEPROM
#undef CONFIG_CMD_IMLS

/*Env*/
#define	CFG_ENV_IS_IN_FLASH
#define	CFG_ENV_SIZE		0x20000
#define	CFG_ENV_SECT_SIZE	0x20000
#define CFG_ENV_OFFSET 		0x340000
#define CFG_ENV_ADDR 		(XPAR_FLASH_MEM0_BASEADDR+CFG_ENV_OFFSET)

/*Misc*/
#define CONFIG_BOOTDELAY	5		/* autoboot after 5 seconds     */
#define CFG_LONGHELP				/* undef to save memory         */
#define CFG_PROMPT		"board:/# "	/* Monitor Command Prompt       */
#if defined(CONFIG_CMD_KGDB)
#define CFG_CBSIZE		1024		/* Console I/O Buffer Size      */
#else
#define CFG_CBSIZE		256		/* Console I/O Buffer Size      */
#endif
#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	0x00400000	/* memtest works on           */
#define CFG_MEMTEST_END		0x00C00000	/* 4 ... 12 MB in DRAM        */
#define CFG_LOAD_ADDR		0x00400000	/* default load address       */
#define CFG_EXTBDINFO		1		/* Extended board_into (bd_t) */
#define CFG_HZ			1000		/* decrementer freq: 1 ms ticks */
#define CONFIG_CMDLINE_EDITING			/* add command line history     */
#define CONFIG_AUTO_COMPLETE			/* add autocompletion support   */
#define CONFIG_LOOPW				/* enable loopw command         */
#define CONFIG_MX_CYCLIC			/* enable mdc/mwc commands      */
#define CONFIG_ZERO_BOOTDELAY_CHECK		/* check for keypress on bootdelay==0 */
#define CONFIG_VERSION_VARIABLE			/* include version env variable */
#define CFG_CONSOLE_INFO_QUIET			/* don't print console @ startup */
#define CFG_HUSH_PARSER				/* Use the HUSH parser          */
#define	CFG_PROMPT_HUSH_PS2	"> "
#define CONFIG_LOADS_ECHO			/* echo on for serial download  */
#define CFG_LOADS_BAUD_CHANGE			/* allow baudrate change        */
#define CFG_BOOTMAPSZ		( 8 << 20 )	/* Initial Memory map for Linux */
#define CONFIG_PREBOOT		"echo U-Boot is up and runnining;"

/*Stack*/
#define CFG_INIT_RAM_ADDR	0x800000	/* Initial RAM address    */
#define CFG_INIT_RAM_END	0x2000		/* End of used area in RAM  */
#define CFG_GBL_DATA_SIZE	128		/* num bytes initial data   */
#define CFG_GBL_DATA_OFFSET	( CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE )
#define CFG_INIT_SP_OFFSET	CFG_GBL_DATA_OFFSET
/*Speed*/
#define CONFIG_SYS_CLK_FREQ	XPAR_CORE_CLOCK_FREQ_HZ

/*Flash*/
#define	CFG_FLASH_BASE		XPAR_FLASH_MEM0_BASEADDR
#define	CFG_FLASH_SIZE		(32*1024*1024)
#define	CFG_FLASH_CFI		1
#define	CONFIG_FLASH_CFI_DRIVER	1
#define	CFG_FLASH_EMPTY_INFO	1
#define	CFG_MAX_FLASH_BANKS	1
#define	CFG_MAX_FLASH_SECT	259
#define	CFG_FLASH_PROTECTION
#define MTDIDS_DEFAULT		"nor0=ml507-flash"
#define MTDPARTS_DEFAULT	"mtdparts=ml507-flash:-(user)"


#endif						/* __CONFIG_H */
