/* 
 * Copyright Codito Technologies (www.codito.com) 
 *
 *  include/configs/aa3.h
 *
 *  Copyright (C) 
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 * 
 * Authors : Sandeep Patil (sandeep.patil@codito.com)
 * 			 Pradeep Sawlani (pradeep.sawlani@codito.com)
 */

#ifndef __CONFIG_H
#define __CONFIG_H

#include <config_cmd_default.h>

#undef CONFIG_IDE_PREINIT
#define CONFIG_CMD_IDE
#define CONFIG_CMD_EXT2
#define CONFIG_CMD_ELF
#define CONFIG_CMD_MEMORY
#define CONFIG_CMD_BOOTD
#define CONFIG_CMD_NET
#define CONFIG_NET_MULTI
#define CONFIG_CMD_PING
#define CONFIG_BOOTARGS "abc123"        // sample Linux cmdline 
  
#define CONFIG_SYS_NO_FLASH
#define CONFIG_PCMCIA_SLOT_A
#define CONFIG_DOS_PARTITION
#define CONFIG_SYS_IDE_MAXDEVICE 1
#define CONFIG_SYS_IDE_MAXBUS 1
#define CONFIG_SYS_LONGHELP 1
#define CONFIG_IDE_PREINIT
#define CONFIG_CRC32_VERIFY
#define CONFIG_SHOW_BOOT_PROGRESS


// Timeouts

#define CONFIG_ARP_TIMEOUT 5000000UL


//#define CONFIG_ARC_SYS_CTRL_DEV   You need special XBF's for this.

//#define CONFIG_LCD   Don't want a display by default.
#ifdef CONFIG_LCD
#    define CONFIG_ARC_PGU
#    define CONFIG_SYS_LCD_AND_SERIAL_CONSOLE
#    define CONFIG_SPLASH_SCREEN
#    define CONFIG_PREBOOT \
    	"ide reset;"\
	"setenv splashimage 0x2000000;"\
	"ext2load ide 0:1 $(splashimage) /boot/logo.bmp;"\
	"bmp info $(splashimage);"\
	"cls;"
#endif

/* Disk stuff */
#define CONFIG_SYS_ATA_BASE_ADDR 0xc0fc9000
#define CONFIG_SYS_ATA_REG_OFFSET 0xA0
#define CONFIG_SYS_ATA_DATA_OFFSET 0xA0
#define CONFIG_SYS_ATA_ALT_OFFSET 0xA0
#define CONFIG_SYS_ATA_STRIDE 4
#undef CONFIG_SYS_DIRECT_FLASH_TFTP

#define CONFIG_BOOTDELAY 10
#define CONFIG_BOOTCOMMAND \
    "ide reset;"\
    "ext2load ide 0:1 4000000 /boot/vmlinux;"\
    "bootelf"


#define CONFIG_ARC					1 			/* This is an ARC cpu */
#undef CONFIG_CMD_IMLS
#undef CONFIG_CMD_FLASH


/*
 *  Size of malloc pool
 */
#define CONFIG_SYS_MALLOC_LEN				0x8000 		/* Malloc size = 32k */


/*
 *  Serial configuartion
 */
#define CONFIG_ARC_SERIAL_BAUD		57600		/* Baudrate for serial port */


/*
 *  Physical memory map
 */

/*Donot edit automatically defined by mkconfig */
#define ARC700				1		//	 For arc 700 	
/*#define ARC5			 		1			 For arc 5 automatically defined by mkconfig */

/*This clock speed is for u-boot */
#define CONFIG_ARC_CLK				80000000	/* 70MHz default clock speed */ 				  
#define CONFIG_NR_DRAM_BANKS    	1          		/* We have 1 bank of DRAM */
#define PHYS_SDRAM_1            	0x00000000 		/* SDRAM Bank #1 */

#if defined ARC5
	#define PHYS_SDRAM_1_SIZE	0x200000		/* 2 MB for arc 5 */
	#define UART_BASEADDR 		0x00FC1000		/* UART base address */
	#define VMAC_REG_BASEADDR 	0x00FC2000		/* EMAC base address */
#endif

#if defined ARC700

	#define PHYS_SDRAM_1_SIZE   0x400000 		/* 4 MB for arc 700*/
	#define UART_BASEADDR 		0xC0FC1000
	#define VMAC_REG_BASEADDR 	0xC0FC2000
#endif


/*
 *  Environment variables
 */
#define CONFIG_AUTO_COMPLETE		1					/* Auto complete commands */
#define CONFIG_HOSTNAME  			arc_aa4				
#define CONFIG_ETHADDR          	00:01:02:03:04:80	/* Ethernet address */
#define CONFIG_IPADDR				172.16.18.99		/* Our ip address */
#define CONFIG_SERVERIP				172.16.0.196		/* Tftp server ip address */
#define CONFIG_NETMASK				255.255.0.0

#if defined ARC700
	#define CONFIG_LOADADDR			0x80000000			/* Default load address for net commands */	
#else 
	#define CONFIG_LOADADDR			0x0
#endif

/* Following macros are used for autoboot */
/*#define CONFIG_BOOTDELAY 		5			
#define  CONFIG_BOOTFILE		arclinux 		
#define CONFIG_BOOTCOMMAND		\
	"tftpboot \"arclinux\";"			\
	"go 0x80002000"				*/


/*
 * Miscellaneous configurable options
 */
//#define CONFIG_SYS_LONGHELP
#define CONFIG_SYS_HZ 				CONFIG_ARC_CLK
#define CONFIG_SYS_PROMPT	 		"ArcAngel4 # "
#define CONFIG_SYS_CBSIZE			256 								/* Size of console buffer */
#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_LOAD_ADDR		CONFIG_LOADADDR						/* Default load address	for bootm command */ 
#define CONFIG_SYS_BAUDRATE_TABLE 	{ 57600 }
#define CONFIG_SYS_MEMTEST_START   0x200 						/* Exception table starts at 0x0 */ /* memtest works on */
#define CONFIG_SYS_MEMTEST_END     (PHYS_SDRAM_1_SIZE - (350 << 10)/* code + stack area */ - (CONFIG_SYS_MALLOC_LEN << 10)/* malloc area */ )/* size of memory (not accurate)*/   
#if defined ARC5			/* As for now flash works only with ARC5 */	
	#define CONFIG_SYS_DIRECT_FLASH_TFTP	1			/* Directly TFTP writes to flash memory */			
#endif


/*
 *  Flash options
 */
/*#define CONFIG_SYS_UBOOT_ON_FLASH 		0			 If flash memory is present and uboot is on the flash then flash = 1 automatically defined by mkconfig*/
#define CONFIG_SYS_MAX_FLASH_BANKS     	1     			/* Max number of memory banks */
#define CONFIG_SYS_MAX_FLASH_SECT      	256  	 		/* Max number of sectors on one chip */
#define CONFIG_SYS_FLASH_BASE			0x800000  		    /* Flash base address */ 

#define CONFIG_ENV_SIZE            	1024
#define CONFIG_SYS_ENV_SIZE            	1024
#define CONFIG_ENV_IS_NOWHERE    1
#define CONFIG_SYS_ENV_ADDR			(CONFIG_SYS_FLASH_BASE + 0x40000) /* 256k i.e first sector occupied by u-boot second sector contains environment*/	

/* 
 * Kernel Parameters 
 */

#define CONFIG_SYS_ENV_IS_NOWHERE
#define CONFIG_SYS_KERN_PARM           0 		/* 		O - disable kernel parameters
												1 - enable kernel parameters 
										 */  

#if CONFIG_SYS_KERN_PARM


#if defined ARC700  				/* Only ARC700 kernel accepts parameters from u-boot*/

#define CONFIG_CLK_SPEED_TAG         CONFIG_ARC_CLK    /* clock speed */

#define CONFIG_SETUP_MEMORY_TAGS     1                 /* configuring bank */
#ifdef CONFIG_SETUP_MEMORY_TAGS  						/* Memory size  */
#define CONFIG_MEMORY_SIZE  0x400000
#endif /* CONFIG_SETUP_MEMORY_TAGS */

#if 0
# define CONFIG_CACHE_TAG         1
#ifdef CONFIG_CACHE_TAG
	#define CONFIG_ICACHE        1
	#define CONFIG_DCACHE        1
#endif /* CONFIG_CACHE_TAG */
#endif

# define CONFIG_SERIAL_TAG 1
#ifdef CONFIG_SERIAL_TAG
	#define CONFIG_UART0_BAUDRATE  CONFIG_ARC_SERIAL_BAUD
#endif /* CONFIG_SERIAL_TAG */

# define CONFIG_VMAC_TAG 1
#ifdef CONFIG_VMAC_TAG
	#define CONFIG_VMAC_ADDR   "00:01:02:03:04:26"
#endif /* CONFIG_VMAC_TAG */
#endif /* ARC700*/
#endif /* CONFIG_SYS_KERN_PARM */

#endif /* __CONFIG_H */



