blob: bf7768668caa682015b2890931312529eece1474 [file] [log] [blame]
diff --git a/arch/arm/cpu/arm926ejs/aspeed/IO.c b/arch/arm/cpu/arm926ejs/aspeed/IO.c
index 86e9918..b06fdba 100644
--- a/arch/arm/cpu/arm926ejs/aspeed/IO.c
+++ b/arch/arm/cpu/arm926ejs/aspeed/IO.c
@@ -31,7 +31,7 @@ static const char ThisFile[] = "IO.c";
#include <post.h>
#include <malloc.h>
#include <net.h>
- #include <COMMINF.H>
+ #include "COMMINF.H"
#endif
#ifdef SLT_DOS
#include <stdlib.h>
@@ -353,4 +353,3 @@ ULONG ReadSOC_DD(ULONG addr)
#endif
return 0;
}
-
diff --git a/arch/arm/cpu/arm926ejs/aspeed/LAN9303.c b/arch/arm/cpu/arm926ejs/aspeed/LAN9303.c
index 498d4fd..fdabd45 100644
--- a/arch/arm/cpu/arm926ejs/aspeed/LAN9303.c
+++ b/arch/arm/cpu/arm926ejs/aspeed/LAN9303.c
@@ -13,9 +13,9 @@ static const char ThisFile[] = "LAN9303.c";
#include "SWFUNC.H"
#ifdef SLT_UBOOT
- #include <COMMINF.H>
- #include <MAC.H>
- #include <IO.H>
+ #include "COMMINF.H"
+ #include "MAC.H"
+ #include "IO.H"
#endif
#ifdef SLT_DOS
diff --git a/arch/arm/cpu/arm926ejs/aspeed/MAC.c b/arch/arm/cpu/arm926ejs/aspeed/MAC.c
index 829da92..b4182f5 100644
--- a/arch/arm/cpu/arm926ejs/aspeed/MAC.c
+++ b/arch/arm/cpu/arm926ejs/aspeed/MAC.c
@@ -16,7 +16,7 @@ static const char ThisFile[] = "MAC.c";
#ifdef SLT_UBOOT
#include <common.h>
#include <command.h>
- #include <COMMINF.H>
+ #include "COMMINF.H"
#include "STDUBOOT.H"
#endif
#ifdef SLT_DOS
@@ -2081,5 +2081,3 @@ char TestingLoop (ULONG loop_checknum) {
return(0);
} // End char TestingLoop (ULONG loop_checknum)
-
-
diff --git a/arch/arm/cpu/arm926ejs/aspeed/Makefile b/arch/arm/cpu/arm926ejs/aspeed/Makefile
index 378745e..4c4e239 100644
--- a/arch/arm/cpu/arm926ejs/aspeed/Makefile
+++ b/arch/arm/cpu/arm926ejs/aspeed/Makefile
@@ -16,7 +16,7 @@
include $(TOPDIR)/config.mk
-LIB = $(obj)lib$(SOC).a
+LIB = $(obj)lib$(SOC).o
COBJS = timer.o
COBJS += reset.o
@@ -41,7 +41,7 @@ START := $(addprefix $(obj),$(START))
all: $(obj).depend $(LIB)
$(LIB): $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
+ $(call cmd_link_o_target, $(OBJS))
#########################################################################
diff --git a/arch/arm/cpu/arm926ejs/aspeed/NCSI.c b/arch/arm/cpu/arm926ejs/aspeed/NCSI.c
index 7de06c3..7e86fb6 100644
--- a/arch/arm/cpu/arm926ejs/aspeed/NCSI.c
+++ b/arch/arm/cpu/arm926ejs/aspeed/NCSI.c
@@ -16,9 +16,9 @@ static const char ThisFile[] = "NCSI.c";
#ifdef SLT_UBOOT
#include <common.h>
#include <command.h>
- #include <COMMINF.H>
- #include <NCSI.H>
- #include <IO.H>
+ #include "COMMINF.H"
+ #include "NCSI.H"
+ #include "IO.H"
#endif
#ifdef SLT_DOS
#include <stdio.h>
diff --git a/arch/arm/cpu/arm926ejs/aspeed/PHY.c b/arch/arm/cpu/arm926ejs/aspeed/PHY.c
index 6afed9d..db73a70 100644
--- a/arch/arm/cpu/arm926ejs/aspeed/PHY.c
+++ b/arch/arm/cpu/arm926ejs/aspeed/PHY.c
@@ -16,7 +16,7 @@ static const char ThisFile[] = "PHY.c";
#ifdef SLT_UBOOT
#include <common.h>
#include <command.h>
- #include <COMMINF.H>
+ #include "COMMINF.H"
#include "STDUBOOT.H"
#endif
#ifdef SLT_DOS
diff --git a/arch/arm/cpu/arm926ejs/aspeed/PLLTESTU.c b/arch/arm/cpu/arm926ejs/aspeed/PLLTESTU.c
index 95958b0..2414d57 100644
--- a/arch/arm/cpu/arm926ejs/aspeed/PLLTESTU.c
+++ b/arch/arm/cpu/arm926ejs/aspeed/PLLTESTU.c
@@ -13,11 +13,11 @@ static const char ThisFile[] = "PLLTEST.c";
#include "SWFUNC.H"
-#include <COMMINF.H>
-#include <STDUBOOT.H>
-#include <TYPEDEF.H>
-#include <IO.H>
-#include <PLLTESTU.H>
+#include "COMMINF.H"
+#include "STDUBOOT.H"
+#include "TYPEDEF.H"
+#include "IO.H"
+#include "PLLTESTU.H"
/*
* static
@@ -407,5 +407,3 @@ int pll_function(int argc, char *argv[])
return (ERR_FATAL);
}
}
-
-
diff --git a/arch/arm/cpu/arm926ejs/aspeed/STDUBOOT.H b/arch/arm/cpu/arm926ejs/aspeed/STDUBOOT.H
index 7fbf590..4e0adf6 100644
--- a/arch/arm/cpu/arm926ejs/aspeed/STDUBOOT.H
+++ b/arch/arm/cpu/arm926ejs/aspeed/STDUBOOT.H
@@ -13,6 +13,5 @@
unsigned long int strtoul(char *string, char **endPtr, int base);
int atoi( char s[] );
-int rand(void);
#endif // End STDUBOOT_H
diff --git a/arch/arm/cpu/arm926ejs/aspeed/STDUBOOT.c b/arch/arm/cpu/arm926ejs/aspeed/STDUBOOT.c
index 90e2997..4b1f439 100644
--- a/arch/arm/cpu/arm926ejs/aspeed/STDUBOOT.c
+++ b/arch/arm/cpu/arm926ejs/aspeed/STDUBOOT.c
@@ -19,11 +19,11 @@ int isspace ( char c )
{
if ( ( c == ' ' ) || ( c == 9 ) || ( c == 13 ) )
return 1;
-
+
return 0;
}
-/*
+/*
* strtoul.c --
*
* Source code for the "strtoul" library procedure.
@@ -111,7 +111,7 @@ strtoul(char *string, char **endPtr, int base)
* If no base was provided, pick one from the leading characters
* of the string.
*/
-
+
if (base == 0)
{
if (*p == '0') {
@@ -219,17 +219,6 @@ int atoi( char s[] )
ans = ( 10 * ans ) + ( s[i] - '0' );
return ans;
-}
-
-// -----------------------------------------------------------------------------
-/* rand:return pseudo-random integer on 0...32767 */
-int rand(void)
-{
- static unsigned long int next = 1;
-
- next = next * 1103515245 + 12345;
-
- return (unsigned int) ( next / 65536 ) % 32768;
}
#endif // End SLT_UBOOT
diff --git a/arch/arm/cpu/arm926ejs/aspeed/STRESS.c b/arch/arm/cpu/arm926ejs/aspeed/STRESS.c
index dffd64f..e86685e 100644
--- a/arch/arm/cpu/arm926ejs/aspeed/STRESS.c
+++ b/arch/arm/cpu/arm926ejs/aspeed/STRESS.c
@@ -12,8 +12,8 @@
static const char ThisFile[] = "STRESS.c";
#include "SWFUNC.H"
-#include <COMMINF.H>
-#include <IO.H>
+#include "COMMINF.H"
+#include "IO.H"
#define TIMEOUT_DRAM 5000000
@@ -142,4 +142,3 @@ int dram_stress_function(int argc, char *argv[])
return( ret );
}
-
diff --git a/arch/arm/cpu/arm926ejs/aspeed/TRAPTEST.c b/arch/arm/cpu/arm926ejs/aspeed/TRAPTEST.c
index 72936c0..24ec0c5 100644
--- a/arch/arm/cpu/arm926ejs/aspeed/TRAPTEST.c
+++ b/arch/arm/cpu/arm926ejs/aspeed/TRAPTEST.c
@@ -13,9 +13,9 @@ static const char ThisFile[] = "PLLTEST.c";
#include "SWFUNC.H"
-#include <COMMINF.H>
-#include <TYPEDEF.H>
-#include <IO.H>
+#include "COMMINF.H"
+#include "TYPEDEF.H"
+#include "IO.H"
#define ASTCHIP_2400 0
#define ASTCHIP_2300 1
diff --git a/arch/arm/cpu/arm926ejs/aspeed/mactest.c b/arch/arm/cpu/arm926ejs/aspeed/mactest.c
index 95bd560..62a696d 100644
--- a/arch/arm/cpu/arm926ejs/aspeed/mactest.c
+++ b/arch/arm/cpu/arm926ejs/aspeed/mactest.c
@@ -19,9 +19,9 @@ static const char ThisFile[] = "MACTEST.c";
#include <post.h>
#include <malloc.h>
#include <net.h>
- #include <COMMINF.H>
- #include <STDUBOOT.H>
- #include <IO.H>
+ #include "COMMINF.H"
+ #include "STDUBOOT.H"
+ #include "IO.H"
#else
#include <stdlib.h>
#include <string.h>
@@ -1212,4 +1212,3 @@ Find_Err_IOMargin:;
return(Finish_Check(0));
}
-
diff --git a/arch/arm/cpu/arm926ejs/aspeed/reset.c b/arch/arm/cpu/arm926ejs/aspeed/reset.c
index e0a57f9..ce8dba1 100644
--- a/arch/arm/cpu/arm926ejs/aspeed/reset.c
+++ b/arch/arm/cpu/arm926ejs/aspeed/reset.c
@@ -17,7 +17,7 @@ void reset_cpu(ulong addr)
{
__raw_writel(0x10 , AST_WDT_BASE+0x04);
__raw_writel(0x4755, AST_WDT_BASE+0x08);
- __raw_writel(0x3, AST_WDT_BASE+0x0c);
+ __raw_writel(0x23, AST_WDT_BASE+0x0c); /* reset the full chip */
while (1)
/*nothing*/;
diff --git a/arch/arm/cpu/arm926ejs/aspeed/timer.c b/arch/arm/cpu/arm926ejs/aspeed/timer.c
index 4bba5c5..add4c0e 100644
--- a/arch/arm/cpu/arm926ejs/aspeed/timer.c
+++ b/arch/arm/cpu/arm926ejs/aspeed/timer.c
@@ -16,12 +16,17 @@
*/
#include <common.h>
-#include <arm926ejs.h>
+
+#if CONFIG_ASPEED_TIMER_CLK < CONFIG_SYS_HZ
+#error "CONFIG_ASPEED_TIMER_CLK must be as large as CONFIG_SYS_HZ"
+#endif
#define TIMER_LOAD_VAL 0xffffffff
+#define CLK_PER_HZ (CONFIG_ASPEED_TIMER_CLK / CONFIG_SYS_HZ)
/* macro to read the 32 bit timer */
-#define READ_TIMER (*(volatile ulong *)(CONFIG_SYS_TIMERBASE+0))
+#define READ_CLK (*(volatile ulong *)(CONFIG_SYS_TIMERBASE + 0))
+#define READ_TIMER (READ_CLK / CLK_PER_HZ)
static ulong timestamp;
static ulong lastdec;
@@ -57,27 +62,25 @@ void set_timer (ulong t)
}
/* delay x useconds AND perserve advance timstamp value */
-void udelay (unsigned long usec)
+void __udelay (unsigned long usec)
{
- ulong tmo, tmp;
-
- if(usec >= 1000){ /* if "big" number, spread normalization to seconds */
- tmo = usec / 1000; /* start to normalize for usec to ticks per sec */
- tmo *= CONFIG_SYS_HZ; /* find number of "ticks" to wait to achieve target */
- tmo /= 1000; /* finish normalize. */
- }else{ /* else small number, don't kill it prior to HZ multiply */
- tmo = usec * CONFIG_SYS_HZ;
- tmo /= (1000*1000);
- }
-
- tmp = get_timer (0); /* get current timestamp */
- if( (tmo + tmp + 1) < tmp ) /* if setting this fordward will roll time stamp */
- reset_timer_masked (); /* reset "advancing" timestamp to 0, set lastdec value */
- else
- tmo += tmp; /* else, set advancing stamp wake up time */
-
- while (get_timer_masked () < tmo)/* loop till event */
- /*NOP*/;
+ ulong last = READ_CLK;
+ ulong clks;
+ ulong elapsed = 0;
+
+ /* translate usec to clocks */
+ clks = (usec / 1000) * CLK_PER_HZ;
+ clks += (usec % 1000) * CLK_PER_HZ / 1000;
+
+ while (clks > elapsed) {
+ ulong now = READ_CLK;
+ if (now <= last) {
+ elapsed += last - now;
+ } else {
+ elapsed += TIMER_LOAD_VAL - (now - last);
+ }
+ last = now;
+ }
}
void reset_timer_masked (void)
@@ -100,7 +103,7 @@ ulong get_timer_masked (void)
* (TLV-now) amount of time after passing though -1
* nts = new "advancing time stamp"...it could also roll and cause problems.
*/
- timestamp += lastdec + TIMER_LOAD_VAL - now;
+ timestamp += lastdec + (TIMER_LOAD_VAL / CLK_PER_HZ) - now;
}
lastdec = now;
@@ -110,25 +113,7 @@ ulong get_timer_masked (void)
/* waits specified delay value and resets timestamp */
void udelay_masked (unsigned long usec)
{
- ulong tmo;
- ulong endtime;
- signed long diff;
-
- if (usec >= 1000) { /* if "big" number, spread normalization to seconds */
- tmo = usec / 1000; /* start to normalize for usec to ticks per sec */
- tmo *= CONFIG_SYS_HZ; /* find number of "ticks" to wait to achieve target */
- tmo /= 1000; /* finish normalize. */
- } else { /* else small number, don't kill it prior to HZ multiply */
- tmo = usec * CONFIG_SYS_HZ;
- tmo /= (1000*1000);
- }
-
- endtime = get_timer_masked () + tmo;
-
- do {
- ulong now = get_timer_masked ();
- diff = endtime - now;
- } while (diff >= 0);
+ __udelay(usec);
}
/*
@@ -146,8 +131,5 @@ unsigned long long get_ticks(void)
*/
ulong get_tbclk (void)
{
- ulong tbclk;
-
- tbclk = CONFIG_SYS_HZ;
- return tbclk;
+ return CONFIG_SYS_HZ;
}
diff --git a/board/aspeed/ast2400/Makefile b/board/aspeed/ast2400/Makefile
index 1970ea1..fb77fc9 100644
--- a/board/aspeed/ast2400/Makefile
+++ b/board/aspeed/ast2400/Makefile
@@ -11,7 +11,7 @@
include $(TOPDIR)/config.mk
-LIB = $(obj)lib$(BOARD).a
+LIB = $(obj)lib$(BOARD).o
COBJS := ast2400.o flash.o flash_spi.o pci.o crc32.o slt.o regtest.o vfun.o vhace.o crt.o videotest.o mactest.o hactest.o mictest.o
@@ -28,17 +28,13 @@ OBJS := $(addprefix $(obj),$(COBJS))
SOBJS := $(addprefix $(obj),$(SOBJS))
$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
+ $(call cmd_link_o_target, $(OBJS) $(SOBJS))
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak $(obj).depend
+#########################################################################
# defines $(obj).depend target
include $(SRCTREE)/rules.mk
-sinclude .depend
+sinclude $(obj).depend
#########################################################################
diff --git a/board/aspeed/ast2400/ast2400.c b/board/aspeed/ast2400/ast2400.c
index 65bccbe..55ed6b7 100644
--- a/board/aspeed/ast2400/ast2400.c
+++ b/board/aspeed/ast2400/ast2400.c
@@ -10,6 +10,7 @@
*/
#include <common.h>
+#include <asm/io.h>
#include <command.h>
#include <pci.h>
@@ -105,8 +106,8 @@ int dram_init (void)
{
DECLARE_GLOBAL_DATA_PTR;
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
+ /* dram_init must store complete ramsize in gd->ram_size */
+ gd->ram_size = get_ram_size((void *)PHYS_SDRAM_1, PHYS_SDRAM_1_SIZE);
return 0;
}
@@ -190,6 +191,22 @@ int ast1070_calibration()
return 0;
}
+static void watchdog_init()
+{
+#ifdef CONFIG_ASPEED_ENABLE_WATCHDOG
+#define AST_WDT_BASE 0x1e785000
+#define AST_WDT_CLK (1*1000*1000) /* 1M clock source */
+ u32 reload = AST_WDT_CLK * CONFIG_ASPEED_WATCHDOG_TIMEOUT;
+ /* set the reload value */
+ __raw_writel(reload, AST_WDT_BASE + 0x04);
+ /* magic word to reload */
+ __raw_writel(0x4755, AST_WDT_BASE + 0x08);
+ /* start the watchdog with 1M clk src and reset whole chip */
+ __raw_writel(0x33, AST_WDT_BASE + 0x0c);
+ printf("Watchdog: %us\n", CONFIG_ASPEED_WATCHDOG_TIMEOUT);
+#endif
+}
+
int misc_init_r(void)
{
unsigned int reg, reg1, revision, chip_id, lpc_plus;
@@ -290,6 +307,8 @@ int misc_init_r(void)
if (getenv ("eeprom") == NULL) {
setenv ("eeprom", "y");
}
+
+ watchdog_init();
}
#ifdef CONFIG_PCI
@@ -302,3 +321,15 @@ void pci_init_board(void)
aspeed_init_pci(&hose);
}
#endif
+
+int board_eth_init(bd_t *bis)
+{
+ int ret = -1;
+#if defined(CONFIG_ASPEEDNIC)
+ ret = aspeednic_initialize(bis);
+#else
+ printf("No ETH, ");
+#endif
+
+ return ret;
+}
diff --git a/board/aspeed/ast2400/config.mk b/board/aspeed/ast2400/config.mk
index 24ca09b..eddc3bf 100755
--- a/board/aspeed/ast2400/config.mk
+++ b/board/aspeed/ast2400/config.mk
@@ -9,10 +9,5 @@
# MA 02111-1307 USA
#
-# ROM version
-#TEXT_BASE = 0xBFC00000
-
-# RAM version
-TEXT_BASE = 0x40500000
-#TEXT_BASE = 0x00000000
-#TEXT_BASE = 0x00400000
+# SPI flash is mapped to 0x00000000 initially
+CONFIG_SYS_TEXT_BASE = 0x00000000
diff --git a/board/aspeed/ast2400/flash_spi.c b/board/aspeed/ast2400/flash_spi.c
index ad89254..339e531 100755
--- a/board/aspeed/ast2400/flash_spi.c
+++ b/board/aspeed/ast2400/flash_spi.c
@@ -23,7 +23,7 @@
*/
/* The DEBUG define must be before common to enable debugging */
-/* #define DEBUG */
+/* #define DEBUG */
#include <common.h>
#include <asm/processor.h>
@@ -68,6 +68,7 @@ flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* FLASH chips info */
/* Support Flash ID */
#define STM25P64 0x172020
#define STM25P128 0x182020
+#define N25Q128 0x18ba20
#define N25Q256 0x19ba20
#define N25Q512 0x20ba20
#define S25FL064A 0x160201
@@ -581,7 +582,7 @@ static ulong flash_get_size (ulong base, int banknum)
ulID = ((ulong)ch[0]) | ((ulong)ch[1] << 8) | ((ulong)ch[2] << 16) ;
info->flash_id = ulID;
- //printf("SPI Flash ID: %x \n", ulID);
+ printf("SPI Flash ID: %x \n", ulID);
/* init default */
info->iomode = IOMODEx1;
@@ -617,6 +618,19 @@ static ulong flash_get_size (ulong base, int banknum)
ReadClk = 50;
break;
+ case N25Q128:
+ info->sector_count = 256;
+ info->size = 0x1000000;
+ erase_region_size = 0x10000;
+ info->readcmd = 0x0b;
+ info->dualport = 0;
+ info->dummybyte = 1;
+ info->buffersize = 256;
+ WriteClk = 50;
+ EraseClk = 20;
+ ReadClk = 50;
+ break;
+
case N25Q256:
info->sector_count = 256;
info->size = 0x1000000;
@@ -1051,8 +1065,7 @@ AST2300 A0 SPI can't run faster than 50Mhz
} /* JDEC */
}
- debug ("erase_region_count = %d erase_region_size = %d\n",
- erase_region_count, erase_region_size);
+ debug ("erase_region_size = %d\n", erase_region_size);
sector = base;
for (j = 0; j < info->sector_count; j++) {
diff --git a/board/aspeed/ast2400/platform.S b/board/aspeed/ast2400/platform.S
index 27e8f26..dd94da0 100644
--- a/board/aspeed/ast2400/platform.S
+++ b/board/aspeed/ast2400/platform.S
@@ -334,7 +334,11 @@ set_MPLL:
str r1, [r0]
/* Debug - UART console message */
- ldr r0, =0x1e78400c
+ ldr r0, =0x1e6e2080
+ ldr r1, =0xFFFF0000 @ enable UART3 and UART4
+ str r1, [r0]
+
+ ldr r0, =CONFIG_ASPEED_COM_LCR
mov r1, #0x83
str r1, [r0]
@@ -342,28 +346,38 @@ set_MPLL:
ldr r2, [r0]
mov r2, r2, lsr #12
tst r2, #0x01
- ldr r0, =0x1e784000
+ ldr r0, =CONFIG_ASPEED_COM
+#if CONFIG_BAUDRATE == 115200
moveq r1, #0x0D @ Baudrate 115200
movne r1, #0x01 @ Baudrate 115200, div13
-#if defined(CONFIG_DRAM_UART_38400)
+#endif
+#if CONFIG_BAUDRATE == 57600
+ moveq r1, #0x1A @ Baudrate 57600
+ movne r1, #0x02 @ Baudrate 57600, div13
+#endif
+#if CONFIG_BAUDRATE == 38400
moveq r1, #0x27 @ Baudrate 38400
movne r1, #0x03 @ Baudrate 38400 , div13
#endif
+#if CONFIG_BAUDRATE == 9600
+ moveq r1, #0x9c @ Baudrate 9600
+ movne r1, #0x0C @ Baudrate 9600 , div13
+#endif
str r1, [r0]
- ldr r0, =0x1e784004
+ ldr r0, =CONFIG_ASPEED_COM_IER
mov r1, #0x00
str r1, [r0]
- ldr r0, =0x1e78400c
+ ldr r0, =CONFIG_ASPEED_COM_LCR
mov r1, #0x03
str r1, [r0]
- ldr r0, =0x1e784008
+ ldr r0, =CONFIG_ASPEED_COM_IIR
mov r1, #0x07
str r1, [r0]
- ldr r0, =0x1e784000
+ ldr r0, =CONFIG_ASPEED_COM
mov r1, #0x0D @ '\r'
str r1, [r0]
mov r1, #0x0A @ '\n'
@@ -575,7 +589,7 @@ delay_2:
******************************************************************************/
ddr3_init:
/* Debug - UART console message */
- ldr r0, =0x1e784000
+ ldr r0, =CONFIG_ASPEED_COM
mov r1, #0x33 @ '3'
str r1, [r0]
mov r1, #0x0D @ '\r'
@@ -764,7 +778,7 @@ delay3_4:
******************************************************************************/
ddr2_init:
/* Debug - UART console message */
- ldr r0, =0x1e784000
+ ldr r0, =CONFIG_ASPEED_COM
mov r1, #0x32 @ '2'
str r1, [r0]
mov r1, #0x0D @ '\r'
@@ -1416,7 +1430,7 @@ init_sram_start3:
*****************************************************************************/
CBR0_START:
/* Debug - UART console message */
- ldr r0, =0x1e784000
+ ldr r0, =CONFIG_ASPEED_COM
mov r1, #0x43 @ 'C'
str r1, [r0]
mov r1, #0x42 @ 'B'
@@ -1454,7 +1468,7 @@ cbr0_next_dqidly:
bgt CBR0_END
/* Debug - UART console message */
- ldr r0, =0x1e784000
+ ldr r0, =CONFIG_ASPEED_COM
and r1, r8, #0x07
add r1, r1, #0x30 @ '0-7'
str r1, [r0]
@@ -1776,7 +1790,7 @@ delay_5:
*****************************************************************************/
CBR1_START:
/* Debug - UART console message */
- ldr r0, =0x1e784000
+ ldr r0, =CONFIG_ASPEED_COM
mov r1, #0x0D @ '\r'
str r1, [r0]
mov r1, #0x0A @ '\n'
@@ -2057,7 +2071,7 @@ cbr1_set_result_end:
CBR3_START:
/* Debug - UART console message */
- ldr r0, =0x1e784000
+ ldr r0, =CONFIG_ASPEED_COM
mov r1, #0x33 @ '3'
str r1, [r0]
/* Debug - UART console message */
@@ -2276,7 +2290,7 @@ CBR3_END:
*****************************************************************************/
CBR4_START:
/* Debug - UART console message */
- ldr r0, =0x1e784000
+ ldr r0, =CONFIG_ASPEED_COM
mov r1, #0x34 @ '4'
str r1, [r0]
/* Debug - UART console message */
@@ -2556,7 +2570,7 @@ set_scratch:
str r1, [r0]
/* Debug - UART console message */
- ldr r0, =0x1e784000
+ ldr r0, =CONFIG_ASPEED_COM
mov r1, #0x44 @ 'D'
str r1, [r0]
mov r1, #0x6F @ 'o'
@@ -2724,11 +2738,13 @@ ECC_Init_Flag:
orr r1, r1, #0x08
str r1, [r0]
+#ifndef CONFIG_ASPEED_ENABLE_JTAG
ldr r0, =0x1e6e2004
ldr r1, [r0]
ldr r2, =0xFFBFFFFF @ Enable JTAG Master, solve ARM stucked by JTAG issue
and r1, r1, r2
str r1, [r0]
+#endif
ldr r0, =0x1e6e2048 @ Set MAC interface delay timing
ldr r1, =0x2255
diff --git a/board/aspeed/ast2400/u-boot.lds b/board/aspeed/ast2400/u-boot.lds
deleted file mode 100755
index ff0fe22..0000000
--- a/board/aspeed/ast2400/u-boot.lds
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * (C) Copyright 2004
- * Wolfgang Denk, DENX Software Engineering, <wg@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_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/arm926ejs/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/boards.cfg b/boards.cfg
index 674896b..ce6bff1 100644
--- a/boards.cfg
+++ b/boards.cfg
@@ -72,7 +72,8 @@ mini2440 arm arm920t mini2440 friendl
VCMA9 arm arm920t vcma9 mpl s3c24x0
smdk2410 arm arm920t - samsung s3c24x0
omap1510inn arm arm925t - ti
-ast2400 arm arm926ejs ast2400 aspeed aspeed
+wedge arm arm926ejs ast2400 aspeed aspeed
+palmetto arm arm926ejs ast2400 aspeed aspeed
integratorap_cm926ejs arm arm926ejs integrator armltd - integratorap:CM926EJ_S
integratorcp_cm926ejs arm arm926ejs integrator armltd - integratorcp:CM924EJ_S
aspenite arm arm926ejs - Marvell armada100
diff --git a/common/cmd_slt.c b/common/cmd_slt.c
index 9763692..6296416 100644
--- a/common/cmd_slt.c
+++ b/common/cmd_slt.c
@@ -9,6 +9,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+#include <common.h>
#include <command.h>
extern int pll_function(int argc, char *argv[]);
diff --git a/common/env_common.c b/common/env_common.c
index 906b41f..f5af537 100644
--- a/common/env_common.c
+++ b/common/env_common.c
@@ -203,6 +203,9 @@ void env_relocate(void)
#else
bootstage_error(BOOTSTAGE_ID_NET_CHECKSUM);
set_default_env("!bad CRC");
+#ifdef CONFIG_ASPEED_WRITE_DEFAULT_ENV
+ saveenv();
+#endif
#endif
} else {
env_relocate_spec();
diff --git a/common/image.c b/common/image.c
index f5ad097..2fc071b 100644
--- a/common/image.c
+++ b/common/image.c
@@ -902,6 +902,11 @@ int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images,
rd_data = image_get_data(rd_hdr);
rd_len = image_get_data_size(rd_hdr);
rd_load = image_get_load(rd_hdr);
+#ifdef CONFIG_ASPEED
+ /* Need to copy the initrd into RAM */
+ memmove_wd((void *)rd_load, (void *)rd_data, rd_len, CHUNKSZ);
+ rd_data = rd_load;
+#endif
break;
#if defined(CONFIG_FIT)
case IMAGE_FORMAT_FIT:
diff --git a/drivers/net/aspeednic.c b/drivers/net/aspeednic.c
index 6b1ce05..d75ef67 100644
--- a/drivers/net/aspeednic.c
+++ b/drivers/net/aspeednic.c
@@ -16,6 +16,7 @@
#include <malloc.h>
#include <net.h>
#include <pci.h>
+#include <linux/mii.h>
/*
@@ -53,7 +54,6 @@
#define MAC1_MDC (1 << 30)
#define MAC1_PHY_LINK (1 << 0)
#define MAC2_MDC_MDIO (1 << 2)
-#define MAC1_PHY_LINK (1 << 0)
#define MAC2_PHY_LINK (1 << 1)
#else
#define MAC2_MDC_MDIO (1 << 20)
@@ -69,6 +69,9 @@ unsigned int aspeednic_iobase[CONFIG_ASPEED_MAC_NUMBER] = {
0x1E660000, 0x1E680000};
#endif
+/* PHY address */
+static u8 g_phy_addr = 0;
+
#undef DEBUG_SROM
#undef DEBUG_SROM2
@@ -249,6 +252,7 @@ struct de4x5_desc {
#define PHYID_RTL8201EL 0x001cc810
#define PHYID_RTL8211 0x001cc910
#define PHYID_BCM54612E 0x03625E6A
+#define PHYID_BCM54616S 0x03625D12
//NCSI define & structure
//NC-SI Command Packet
@@ -410,6 +414,12 @@ static void aspeednic_halt(struct eth_device* dev);
static void set_mac_address (struct eth_device* dev, bd_t* bis);
static void phy_write_register (struct eth_device* dev, u8 PHY_Register, u8 PHY_Address, u16 PHY_Data);
static u16 phy_read_register (struct eth_device* dev, u8 PHY_Register, u8 PHY_Address);
+#if defined(CONFIG_MII) || defined(CONFIG_CMD_MII)
+static int faraday_mdio_read(const char *devname, uint8_t addr, uint8_t reg,
+ uint16_t *value);
+static int faraday_mdio_write(const char *devname, uint8_t addr, uint8_t reg,
+ uint16_t value);
+#endif
static void set_mac_control_register(struct eth_device* dev);
#if defined(CONFIG_E500)
@@ -456,7 +466,7 @@ void NCSI_Struct_Initialize(void)
int aspeednic_initialize(bd_t *bis)
{
- int card_number = 0;
+ int card_number = CONFIG_ASPEED_MAC_CONFIG - 1;
unsigned int iobase, SCURegister;
struct eth_device* dev;
@@ -538,7 +548,7 @@ int aspeednic_initialize(bd_t *bis)
dev->iobase = iobase;
- if (CONFIG_MAC1_PHY_SETTING >= 1) {
+ if (CONFIG_ASPEED_MAC_PHY_SETTING >= 1) {
//NCSI Struct Initialize
NCSI_Struct_Initialize();
}
@@ -556,20 +566,22 @@ int aspeednic_initialize(bd_t *bis)
dev->recv = aspeednic_recv;
/* Ensure we're not sleeping. */
- if (CONFIG_MAC1_PHY_SETTING >= 1) {
+ if (CONFIG_ASPEED_MAC_PHY_SETTING >= 1) {
udelay(2000000); //2.0 sec
}
else {
udelay(10 * 1000);
}
-
dev->init(dev, bis);
eth_register(dev);
+#if defined(CONFIG_MII) || defined(CONFIG_CMD_MII)
+ miiphy_register(dev->name, faraday_mdio_read, faraday_mdio_write);
+#endif
- return card_number;
+ return 1;
}
void Calculate_Checksum(unsigned char *buffer_base, int Length)
@@ -1114,11 +1126,37 @@ void Set_Link (struct eth_device* dev)
Retry = 0;
}
+static void aspeednic_probe_phy(struct eth_device *dev)
+{
+ u8 phy_addr;
+ u16 phy_id;
+
+ /* assume it as 0 */
+ g_phy_addr = 0;
+
+ /* Check if the PHY is up to snuff..., max phy addr is 0x1f */
+ for (phy_addr = 0; phy_addr <= 0x1f; phy_addr++) {
+ phy_id = phy_read_register(dev, MII_PHYSID1, phy_addr);
+ /*
+ * When it is unable to found PHY,
+ * the interface usually return 0xffff or 0x0000
+ */
+ if (phy_id != 0xffff && phy_id != 0x0) {
+ g_phy_addr = phy_addr;
+ break;
+ }
+ }
+ printf("%s: PHY at 0x%02x\n", dev->name, phy_addr);
+}
+
static int aspeednic_init(struct eth_device* dev, bd_t* bis)
{
unsigned long i, Package_Found = 0, Channel_Found = 0, Re_Send = 0, Link_Status;
RESET_DE4X5(dev);
+
+ aspeednic_probe_phy(dev);
+
set_mac_address (dev, bis);
set_mac_control_register (dev);
@@ -1149,7 +1187,7 @@ static int aspeednic_init(struct eth_device* dev, bd_t* bis)
tx_new = 0;
rx_new = 0;
- if (CONFIG_MAC1_PHY_SETTING >= 1) {
+ if (CONFIG_ASPEED_MAC_PHY_SETTING >= 1) {
//NCSI Start
//DeSelect Package/ Select Package
for (i = 0; i < 4; i++) {
@@ -1313,58 +1351,23 @@ static void aspeednic_halt(struct eth_device* dev)
static void set_mac_address (struct eth_device* dev, bd_t* bis)
{
- unsigned char mac_address[6]; // 6 bytes mac address
- unsigned char ethaddress[20]; // string for setenv function
- char *s;
- int i, env; // env variable 0: eeprom, 1: environment parameters
-
- s = getenv ("eeprom");
- env = (s && (*s == 'y')) ? 0 : 1;
-
- if (env == 0) {
- env = 1;
- eeprom_init ();
- eeprom_read (0xA0, 0, mac_address, 6);
-
- for (i = 0; i < 6; i++) {
- if (mac_address[i] != 0xFF) {
- env = 0; //Suppose not all 0xFF is valid
- }
- }
+ if (!eth_getenv_enetaddr_by_index("eth", 0, dev->enetaddr)) {
+ eth_random_enetaddr(dev->enetaddr);
}
- if (env == 0) { // EEPROM
- sprintf (ethaddress, "%02X:%02X:%02X:%02X:%02X:%02X", mac_address[0], mac_address[1], mac_address[2], mac_address[3], mac_address[4], mac_address[5]);
- setenv ("ethaddr", ethaddress);
- OUTL(dev, ((mac_address[2] << 24) | (mac_address[3] << 16) | (mac_address[4] << 8) | mac_address[5]), MAC_LADR_REG);
- OUTL(dev, ((mac_address[0] << 8) | mac_address[1]), MAC_MADR_REG);
- if (CONFIG_MAC1_PHY_SETTING >= 1) {
- for (i = 0; i < 6; i++) {
- NCSI_Request.SA[i] = mac_address[i];
- }
- }
- }
- else { // Environment Parameters
- OUTL(dev, ((bis->bi_enetaddr[2] << 24) | (bis->bi_enetaddr[3] << 16) | (bis->bi_enetaddr[4] << 8) | bis->bi_enetaddr[5]), MAC_LADR_REG);
- OUTL(dev, ((bis->bi_enetaddr[0] << 8) | bis->bi_enetaddr[1]), MAC_MADR_REG);
- if (CONFIG_MAC1_PHY_SETTING >= 1) {
- for (i = 0; i < 6; i++) {
- NCSI_Request.SA[i] = bis->bi_enetaddr[i];
- }
- }
+ OUTL(dev, ((dev->enetaddr[2] << 24) | (dev->enetaddr[3] << 16)
+ | (dev->enetaddr[4] << 8) | dev->enetaddr[5]), MAC_LADR_REG);
+ OUTL(dev, ((dev->enetaddr[0] << 8) | dev->enetaddr[1]), MAC_MADR_REG);
+ if (CONFIG_ASPEED_MAC_PHY_SETTING >= 1) {
+ memcpy(NCSI_Request.SA, dev->enetaddr, 6);
}
-
}
-
static u16 phy_read_register (struct eth_device* dev, u8 PHY_Register, u8 PHY_Address)
{
u32 Data, Status = 0, Loop_Count = 0, PHY_Ready = 1;
u16 Return_Data;
-#ifdef REALTEK_PHY_SUPPORT
- PHY_Address = 0x01;
-#endif
//20us * 100 = 2ms > (1 / 2.5Mhz) * 0x34
OUTL(dev, (PHY_Register << 21) + (PHY_Address << 16) + MIIRD + MDC_CYCTHR, PHYCR_REG);
do {
@@ -1378,7 +1381,6 @@ static u16 phy_read_register (struct eth_device* dev, u8 PHY_Register, u8 PHY_Ad
} while (Status == MIIRD);
if (PHY_Ready == 0) {
- printf ("PHY NOT REDAY ");
return 0;
}
Data = INL (dev, PHYDATA_REG);
@@ -1392,9 +1394,6 @@ static void phy_write_register (struct eth_device* dev, u8 PHY_Register, u8 PHY_
{
u32 Status = 0, Loop_Count = 0, PHY_Ready = 1;
-#ifdef REALTEK_PHY_SUPPORT
- PHY_Address = 0x01;
-#endif
//20us * 100 = 2ms > (1 / 2.5Mhz) * 0x34
OUTL(dev, PHY_Data, PHYDATA_REG);
OUTL(dev, (PHY_Register << 21) + (PHY_Address << 16) + MIIWR + MDC_CYCTHR, PHYCR_REG);
@@ -1407,31 +1406,66 @@ static void phy_write_register (struct eth_device* dev, u8 PHY_Register, u8 PHY_
break;
}
} while (Status == MIIWR);
- if (PHY_Ready == 0) {
- printf ("PHY NOT REDAY ");
+}
+
+#if defined(CONFIG_MII) || defined(CONFIG_CMD_MII)
+
+static int faraday_mdio_read(
+ const char *devname, uint8_t addr, uint8_t reg, uint16_t *value)
+{
+ int ret = 0;
+ struct eth_device *dev;
+
+ dev = eth_get_dev_by_name(devname);
+ if (dev == NULL) {
+ printf("%s: no such device\n", devname);
+ ret = -1;
+ } else {
+ *value = phy_read_register(dev, reg, addr);
+ }
+
+ return ret;
+}
+
+static int faraday_mdio_write(
+ const char *devname, uint8_t addr, uint8_t reg, uint16_t value)
+{
+ int ret = 0;
+ struct eth_device *dev;
+
+ dev = eth_get_dev_by_name(devname);
+ if (dev == NULL) {
+ printf("%s: no such device\n", devname);
+ ret = -1;
+ } else {
+ phy_write_register(dev, reg, addr, value);
}
+
+ return ret;
}
+#endif /* #if defined(CONFIG_MII) || defined(CONFIG_CMD_MII) */
+
static void set_mac_control_register (struct eth_device* dev)
{
unsigned long MAC_CR_Register = 0;
- unsigned long Loop_Count = 0, PHY_Ready = 1, Chip_ID;
+ unsigned int Loop_Count = 0, PHY_Ready = 1, Chip_ID;
u16 PHY_Status, PHY_Speed, PHY_Duplex, Resolved_Status = 0, Advertise, Link_Partner;
- if (CONFIG_MAC1_PHY_SETTING >= 1) {
+ if (CONFIG_ASPEED_MAC_PHY_SETTING >= 1) {
MAC_CR_Register = SPEED_100M_MODE_bit | RX_BROADPKT_bit | FULLDUP_bit | RXMAC_EN_bit | RXDMA_EN_bit | TXMAC_EN_bit | TXDMA_EN_bit | CRC_APD_bit;
}
else {
MAC_CR_Register = SPEED_100M_MODE_bit | FULLDUP_bit | RXMAC_EN_bit | RXDMA_EN_bit | TXMAC_EN_bit | TXDMA_EN_bit | CRC_APD_bit;
}
- if (CONFIG_MAC1_PHY_SETTING != 2) {
- Chip_ID = ((phy_read_register (dev, 0x02, 0)) << 16);
- Chip_ID |= (phy_read_register (dev, 0x03, 0) & 0xffff);
+ if (CONFIG_ASPEED_MAC_PHY_SETTING != 2) {
+ Chip_ID = ((phy_read_register (dev, 0x02, g_phy_addr)) << 16);
+ Chip_ID |= (phy_read_register (dev, 0x03, g_phy_addr) & 0xffff);
if (((Chip_ID & PHYID_VENDOR_MASK) == PHYID_VENDOR_BROADCOM) ||
((Chip_ID & PHYID_VENDOR_MODEL_MASK) == PHYID_RTL8201EL)) {
- Advertise = phy_read_register (dev, 0x04, 0);
- Link_Partner = phy_read_register (dev, 0x05, 0);
+ Advertise = phy_read_register (dev, 0x04, g_phy_addr);
+ Link_Partner = phy_read_register (dev, 0x05, g_phy_addr);
Advertise = (Advertise & PHY_SPEED_DUPLEX_MASK);
Link_Partner = (Link_Partner & PHY_SPEED_DUPLEX_MASK);
if ((Advertise & Link_Partner) & PHY_100M_DUPLEX) {
@@ -1456,7 +1490,8 @@ static void set_mac_control_register (struct eth_device* dev)
//Max waiting time = (20 + 2)ms * 250(PHY_LOOP) = 5.5s
do {
udelay (20000);
- Resolved_Status = (phy_read_register (dev, 0x11, 0) & RESOLVED_BIT);
+ Resolved_Status = (phy_read_register (dev, 0x11, g_phy_addr)
+ & RESOLVED_BIT);
Loop_Count++;
if (Loop_Count >= PHY_LOOP) {
PHY_Ready = 0;
@@ -1466,7 +1501,7 @@ static void set_mac_control_register (struct eth_device* dev)
} while (Resolved_Status != RESOLVED_BIT);
if (PHY_Ready == 1) {
- PHY_Status = phy_read_register (dev, 0x11, 0);
+ PHY_Status = phy_read_register (dev, 0x11, g_phy_addr);
PHY_Speed = (PHY_Status & PHY_SPEED_MASK) >> 14;
PHY_Duplex = (PHY_Status & PHY_DUPLEX_MASK) >> 13;
@@ -1485,40 +1520,54 @@ static void set_mac_control_register (struct eth_device* dev)
}
//LED Control
// if (Chip_ID == 0x1C) {
-// PHY_Status = phy_read_register (dev, 0x18, 0);
-// phy_write_register (dev, 0x18, 0, (PHY_Status | 0x09));
+// PHY_Status = phy_read_register (dev, 0x18, g_phy_addr);
+// phy_write_register (dev, 0x18, g_phy_addr, (PHY_Status | 0x09));
// }
//LED Control D[0], D[6]
// if (Chip_ID == 0x141) {
-// PHY_Status = phy_read_register (dev, 0x18, 0);
-// phy_write_register (dev, 0x18, 0, ((PHY_Status & ~(0x41)) | 0x01));
+// PHY_Status = phy_read_register (dev, 0x18, g_phy_addr);
+// phy_write_register (dev, 0x18, g_phy_addr, ((PHY_Status & ~(0x41)) | 0x01));
// }
}
- else if (Chip_ID == PHYID_BCM54612E ) {
- phy_write_register ( dev, 0x1C, 1, 0x8C00 ); // Disable GTXCLK Clock Delay Enable
- phy_write_register ( dev, 0x18, 1, 0xF0E7 ); // Disable RGMII RXD to RXC Skew
-
- Advertise = phy_read_register (dev, 0x04, 1);
- Link_Partner = phy_read_register (dev, 0x05, 1);
- Advertise = (Advertise & PHY_SPEED_DUPLEX_MASK);
- Link_Partner = (Link_Partner & PHY_SPEED_DUPLEX_MASK);
- if ((Advertise & Link_Partner) & PHY_100M_DUPLEX) {
- MAC_CR_Register |= SPEED_100M_MODE_bit;
- MAC_CR_Register |= FULLDUP_bit;
+ else if (Chip_ID == PHYID_BCM54612E || Chip_ID == PHYID_BCM54616S) {
+ // Disable GTXCLK Clock Delay Enable
+ phy_write_register( dev, 0x1C, g_phy_addr, 0x8C00);
+ // Disable RGMII RXD to RXC Skew
+ phy_write_register( dev, 0x18, g_phy_addr, 0xF0E7);
+ // First Switch shadow register selector
+ phy_write_register(dev, 0x1C, g_phy_addr, 0x2000);
+ PHY_Status = phy_read_register(dev, 0x1C, g_phy_addr);
+ PHY_Duplex = (PHY_Status & 0x0080);
+ switch (PHY_Status & 0x0018) {
+ case 0x0000:
+ PHY_Speed = SPEED_1000M;
+ break;
+ case 0x0008:
+ PHY_Speed = SPEED_100M;
+ break;
+ case 0x0010:
+ PHY_Speed = SPEED_10M;
+ break;
+ default:
+ PHY_Speed = SPEED_100M;
+ break;
}
- else if ((Advertise & Link_Partner) & PHY_100M_HALF) {
- MAC_CR_Register |= SPEED_100M_MODE_bit;
- MAC_CR_Register &= ~FULLDUP_bit;
+ if (PHY_Speed == SPEED_1000M) {
+ MAC_CR_Register |= GMAC_MODE_bit;
+ } else {
+ MAC_CR_Register &= ~GMAC_MODE_bit;
+ if (PHY_Speed == SPEED_100M) {
+ MAC_CR_Register |= SPEED_100M_MODE_bit;
+ } else {
+ MAC_CR_Register &= ~SPEED_100M_MODE_bit;
+ }
}
- else if ((Advertise & Link_Partner) & PHY_10M_DUPLEX) {
- MAC_CR_Register &= ~SPEED_100M_MODE_bit;
+ if (PHY_Duplex) {
MAC_CR_Register |= FULLDUP_bit;
- }
- else if ((Advertise & Link_Partner) & PHY_10M_HALF) {
- MAC_CR_Register &= ~SPEED_100M_MODE_bit;
+ } else {
MAC_CR_Register &= ~FULLDUP_bit;
}
- }else {
+ } else {
printf("Unknow Chip_ID %x\n",Chip_ID);
}
}
diff --git a/include/configs/wedge.h b/include/configs/wedge.h
new file mode 100644
index 0000000..6bb7639
--- /dev/null
+++ b/include/configs/wedge.h
@@ -0,0 +1,350 @@
+/*
+ * Copyright 2004-present Facebook. All Rights Reserved.
+ *
+ * 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
+
+/* Uncommit the following line to enable JTAG in u-boot */
+//#define CONFIG_ASPEED_ENABLE_JTAG
+
+/*
+ * High Level Configuration Options
+ * (easy to change)
+ */
+//#define CONFIG_INIT_CRITICAL /* define for U-BOOT 1.1.1 */
+#undef CONFIG_INIT_CRITICAL /* undef for U-BOOT 1.1.4 */
+//#define CONFIG_FPGA_ASPEED 1
+#define CONFIG_ARM926EJS 1 /* This is an arm926ejs CPU */
+#define CONFIG_ASPEED 1
+#define CONFIG_AST2400 1
+//#define CONFIG_AST1070 1
+//#define CONFIG_SYS_FLASH_CFI /* CONFIG_FLASH_CFI, CONFIG_FLASH_SPI is exclusive*/
+#define CONFIG_FLASH_SPI
+//#define CONFIG_2SPIFLASH /* Boot SPI: CS2, 2nd SPI: CS0 */
+#undef CONFIG_2SPIFLASH
+#undef CONFIG_ASPEED_SLT
+#define CONFIG_FLASH_AST2300
+//#define CONFIG_FLASH_AST2300_DMA
+//#define CONFIG_FLASH_SPIx2_Dummy
+//#define CONFIG_FLASH_SPIx4_Dummy
+#define CONFIG_CRT_DISPLAY 1 /* undef if not support CRT */
+
+//#define CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */
+#define CONFIG_MISC_INIT_R
+
+/*
+ * DRAM Config
+ *
+ * 1. DRAM Size //
+ * CONFIG_DRAM_512MBIT // 512M bit
+ * CONFIG_DRAM_1GBIT // 1G bit (default)
+ * CONFIG_DRAM_2GBIT // 2G bit
+ * CONFIG_DRAM_4GBIT // 4G bit
+ * 2. DRAM Speed //
+ * CONFIG_DRAM_336 // 336MHz (DDR-667)
+ * CONFIG_DRAM_408 // 408MHz (DDR-800) (default)
+ * 3. VGA Mode
+ * CONFIG_CRT_DISPLAY // define to disable VGA function
+ * 4. ECC Function enable
+ * CONFIG_DRAM_ECC // define to enable ECC function
+ * 5. UART Debug Message
+ * CONFIG_DRAM_UART_OUT // enable output message at UART5
+ * CONFIG_DRAM_UART_38400 // set the UART baud rate to 38400, default is 115200
+ */
+
+//1. DRAM Size
+//#define CONFIG_DRAM_512MBIT
+#define CONFIG_DRAM_1GBIT
+//#define CONFIG_DRAM_2GBIT
+//#define CONFIG_DRAM_4GBIT
+//2. DRAM Speed
+//#define CONFIG_DRAM_336
+#define CONFIG_DRAM_408
+//3. VGA Mode
+//#define CONFIG_CRT_DISPLAY
+//4. ECC Function enable
+//#define CONFIG_DRAM_ECC
+//5. UART Debug Message
+#define CONFIG_DRAM_UART_OUT
+//#define CONFIG_DRAM_UART_38400
+
+
+
+/*
+ * Environment Config
+ */
+#define CONFIG_CMDLINE_TAG 1 /* enable passing of ATAGs */
+#define CONFIG_SETUP_MEMORY_TAGS 1
+#define CONFIG_INITRD_TAG 1
+#define CONFIG_BOOTARGS "debug console=ttyS2,9600n8 root=/dev/ram rw"
+#define CONFIG_UPDATE "tftp 40800000 ast2400.scr; so 40800000'"
+
+#define CONFIG_BOOTDELAY 3 /* autoboot after 3 seconds */
+#define CONFIG_AUTOBOOT_KEYED
+#define CONFIG_AUTOBOOT_PROMPT \
+ "autoboot in %d seconds (stop with 'Delete' key)...\n", bootdelay
+#define CONFIG_AUTOBOOT_STOP_STR "\x1b\x5b\x33\x7e" /* 'Delete', ESC[3~ */
+#define CONFIG_ZERO_BOOTDELAY_CHECK
+
+#ifdef CONFIG_FLASH_AST2300
+#define CONFIG_BOOTCOMMAND "bootm 20080000 20300000"
+#else
+#ifdef CONFIG_SYS_FLASH_CFI
+#define CONFIG_BOOTCOMMAND "bootm 10080000 10300000"
+#else
+#define CONFIG_BOOTCOMMAND "bootm 14080000 14300000"
+#endif
+#endif
+#define CONFIG_BOOTFILE "all.bin"
+#define CONFIG_ENV_OVERWRITE
+
+/*
+ * Command line configuration.
+ */
+#include <config_cmd_default.h>
+
+#define CONFIG_CMD_DFL
+#define CONFIG_CMD_ENV
+#define CONFIG_CMD_FLASH
+#define CONFIG_CMD_MII
+#define CONFIG_CMD_NET
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_I2C
+#define CONFIG_CMD_EEPROM
+#define CONFIG_CMD_NETTEST
+#define CONFIG_CMD_SLT
+
+/*
+ * CPU Setting
+ */
+#define CPU_CLOCK_RATE 18000000 /* 16.5 MHz clock for the ARM core */
+
+/*
+ * Size of malloc() pool
+ */
+#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + 768*1024)
+#define CONFIG_SYS_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */
+
+/*
+ * Stack sizes, The stack sizes are set up in start.S using the settings below
+ */
+#define CONFIG_STACKSIZE (128*1024) /* regular stack */
+#define CONFIG_STACKSIZE_IRQ (4*1024) /* IRQ stack */
+#define CONFIG_STACKSIZE_FIQ (4*1024) /* FIQ stack */
+
+/*
+ * Memory Configuration
+ */
+#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */
+#define PHYS_SDRAM_1 0x40000000 /* SDRAM Bank #1 */
+#define PHYS_SDRAM_1_SIZE 0x10000000 /* 256 MB */
+
+#define CONFIG_SYS_SDRAM_BASE 0x40000000
+
+/*
+ * FLASH Configuration
+ */
+#ifdef CONFIG_SYS_FLASH_CFI /* NOR Flash */
+
+#ifdef CONFIG_FLASH_AST2300
+#define PHYS_FLASH_1 0x20000000 /* Flash Bank #1 */
+#else
+#define PHYS_FLASH_1 0x10000000 /* Flash Bank #1 */
+#endif
+
+#define CONFIG_SYS_FLASH_BASE PHYS_FLASH_1
+#define CONFIG_FLASH_BANKS_LIST { PHYS_FLASH_1 }
+
+#define CONFIG_SYS_MAX_FLASH_BANKS 1
+#define CONFIG_SYS_MAX_FLASH_SECT (256) /* max number of sectors on one chip */
+
+#define CONFIG_ENV_IS_IN_FLASH 1
+#define CONFIG_ENV_OFFSET 0x60000 /* environment starts here */
+#define CONFIG_ENV_SIZE 0x20000 /* Total Size of Environment Sector */
+
+#define CONFIG_SYS_FLASH_CFI_AMD_RESET
+#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE
+
+#else /* SPI Flash */
+
+#ifdef CONFIG_FLASH_AST2300
+#define PHYS_FLASH_1 0x20000000 /* Flash Bank #1 */
+#else
+#define PHYS_FLASH_1 0x14000000 /* Flash Bank #1 */
+#define PHYS_FLASH_2 0x14800000 /* Flash Bank #2 */
+#define PHYS_FLASH_2_BASE 0x10000000
+#endif
+
+#ifdef CONFIG_2SPIFLASH
+#define CONFIG_SYS_FLASH_BASE PHYS_FLASH_2_BASE
+#define CONFIG_FLASH_BANKS_LIST { PHYS_FLASH_1, PHYS_FLASH_2 }
+#define CONFIG_SYS_MAX_FLASH_BANKS 2
+#define CONFIG_SYS_MAX_FLASH_SECT (1024) /* max number of sectors on one chip */
+
+#define CONFIG_ENV_IS_IN_FLASH 1
+#define CONFIG_ENV_OFFSET 0x7F0000 /* environment starts here */
+#define CONFIG_ENV_SIZE 0x010000 /* Total Size of Environment Sector */
+#else
+#define CONFIG_SYS_FLASH_BASE PHYS_FLASH_1
+#define CONFIG_FLASH_BANKS_LIST { PHYS_FLASH_1 }
+#define CONFIG_SYS_MAX_FLASH_BANKS 1
+#define CONFIG_SYS_MAX_FLASH_SECT (1024) /* max number of sectors on one chip */
+
+#define CONFIG_ENV_IS_IN_FLASH 1
+#define CONFIG_ENV_OFFSET 0x60000 /* environment starts here */
+#define CONFIG_ENV_SIZE 0x20000 /* Total Size of Environment Sector */
+#define CONFIG_ASPEED_WRITE_DEFAULT_ENV
+#endif
+
+#endif
+
+#define __LITTLE_ENDIAN 1
+
+#define CONFIG_MONITOR_BASE TEXT_BASE
+#define CONFIG_MONITOR_LEN (192 << 10)
+
+/* timeout values are in ticks */
+#define CONFIG_SYS_FLASH_ERASE_TOUT (20*CONFIG_SYS_HZ) /* Timeout for Flash Erase */
+#define CONFIG_SYS_FLASH_WRITE_TOUT (20*CONFIG_SYS_HZ) /* Timeout for Flash Write */
+
+/*
+ * Miscellaneous configurable options
+ */
+#define CONFIG_SYS_LONGHELP /* undef to save memory */
+
+#define CONFIG_SYS_PROMPT "boot# " /* Monitor Command Prompt */
+#define CONFIG_SYS_CBSIZE 256 /* Console I/O Buffer Size */
+#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 0x40000000 /* memtest works on */
+#define CONFIG_SYS_MEMTEST_END 0x44FFFFFF /* 256 MB in DRAM */
+
+#define CONFIG_SYS_LOAD_ADDR 0x43000000 /* default load address */
+
+#define CONFIG_SYS_TIMERBASE 0x1E782000 /* use timer 1 */
+#define CONFIG_SYS_HZ 1000
+#define CONFIG_ASPEED_TIMER_CLK (1*1000*1000) /* use external clk (1M) */
+
+/*
+ * Serial Configuration
+ */
+#define CONFIG_SYS_NS16550
+#define CONFIG_SYS_NS16550_SERIAL
+#define CONFIG_SYS_NS16550_MEM32
+#define CONFIG_SYS_NS16550_REG_SIZE -4
+#define CONFIG_SYS_NS16550_CLK 24000000
+#define CONFIG_SYS_NS16550_COM1 0x1e783000
+#define CONFIG_SYS_NS16550_COM2 0x1e784000
+#define CONFIG_SYS_NS16550_COM3 0x1e78e000
+#define CONFIG_SYS_LOADS_BAUD_CHANGE
+#define CONFIG_CONS_INDEX 2
+#define CONFIG_BAUDRATE 9600
+#define CONFIG_SYS_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
+#define CONFIG_ASPEED_COM 0x1e78e000 // COM3
+#define CONFIG_ASPEED_COM_IER (CONFIG_ASPEED_COM + 0x4)
+#define CONFIG_ASPEED_COM_IIR (CONFIG_ASPEED_COM + 0x8)
+#define CONFIG_ASPEED_COM_LCR (CONFIG_ASPEED_COM + 0xc)
+
+/*
+ * USB device configuration
+ */
+/*
+#define CONFIG_USB_DEVICE 1
+#define CONFIG_USB_TTY 1
+
+#define CONFIG_USBD_VENDORID 0x1234
+#define CONFIG_USBD_PRODUCTID 0x5678
+#define CONFIG_USBD_MANUFACTURER "Siemens"
+#define CONFIG_USBD_PRODUCT_NAME "SX1"
+*/
+
+/*
+ * I2C configuration
+ */
+#define CONFIG_HARD_I2C
+#define CONFIG_SYS_I2C_SPEED 100000
+#define CONFIG_SYS_I2C_SLAVE 1
+#define CONFIG_DRIVER_ASPEED_I2C
+
+/*
+* EEPROM configuration
+*/
+#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2
+#define CONFIG_SYS_I2C_EEPROM_ADDR 0xa0
+
+#define __BYTE_ORDER __LITTLE_ENDIAN
+#define __LITTLE_ENDIAN_BITFIELD
+
+/*
+ * NIC configuration
+ */
+#define CONFIG_ASPEEDNIC
+#define CONFIG_NET_MULTI
+#define CONFIG_MAC1_PHY_LINK_INTERRUPT
+#define CONFIG_MAC2_ENABLE
+#define CONFIG_MAC2_PHY_LINK_INTERRUPT
+/*
+*-------------------------------------------------------------------------------
+* NOTICE: MAC1 and MAC2 now have their own seperate PHY configuration.
+* We use 2 bits for each MAC in the scratch register(D[15:11] in 0x1E6E2040) to
+* inform kernel driver.
+* The meanings of the 2 bits are:
+* 00(0): Dedicated PHY
+* 01(1): ASPEED's EVA + INTEL's NC-SI PHY chip EVA
+* 10(2): ASPEED's MAC is connected to NC-SI PHY chip directly
+* 11: Reserved
+*
+* We use CONFIG_MAC1_PHY_SETTING and CONFIG_MAC2_PHY_SETTING in U-Boot
+* 0: Dedicated PHY
+* 1: ASPEED's EVA + INTEL's NC-SI PHY chip EVA
+* 2: ASPEED's MAC is connected to NC-SI PHY chip directly
+* 3: Reserved
+*-------------------------------------------------------------------------------
+*/
+#define CONFIG_MAC1_PHY_SETTING 0
+#define CONFIG_MAC2_PHY_SETTING 0
+#define CONFIG_ASPEED_MAC_NUMBER 2
+#define CONFIG_ASPEED_MAC_CONFIG 2 // config MAC2
+#define _PHY_SETTING_CONCAT(mac) CONFIG_MAC##mac##_PHY_SETTING
+#define _GET_MAC_PHY_SETTING(mac) _PHY_SETTING_CONCAT(mac)
+#define CONFIG_ASPEED_MAC_PHY_SETTING \
+ _GET_MAC_PHY_SETTING(CONFIG_ASPEED_MAC_CONFIG)
+#define CONFIG_MAC_INTERFACE_CLOCK_DELAY 0x2255
+#define CONFIG_RANDOM_MACADDR
+//#define CONFIG_GATEWAYIP 192.168.0.1
+//#define CONFIG_NETMASK 255.255.255.0
+//#define CONFIG_IPADDR 192.168.0.45
+//#define CONFIG_SERVERIP 192.168.0.81
+
+/*
+ * SLT
+ */
+/*
+#define CONFIG_SLT
+#define CFG_CMD_SLT (CFG_CMD_VIDEOTEST | CFG_CMD_MACTEST | CFG_CMD_HACTEST | CFG_CMD_MICTEST)
+*/
+
+#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_SDRAM_BASE + 0x1000 - GENERATED_GBL_DATA_SIZE)
+
+#define CONFIG_ASPEED_ENABLE_WATCHDOG
+#define CONFIG_ASPEED_WATCHDOG_TIMEOUT (5*60) // 5m
+
+#endif /* __CONFIG_H */
diff --git a/include/configs/palmetto.h b/include/configs/palmetto.h
new file mode 100644
index 0000000..6bb7639
--- /dev/null
+++ b/include/configs/palmetto.h
@@ -0,0 +1,350 @@
+/*
+ * Copyright 2004-present Facebook. All Rights Reserved.
+ *
+ * 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
+
+/* Uncommit the following line to enable JTAG in u-boot */
+//#define CONFIG_ASPEED_ENABLE_JTAG
+
+/*
+ * High Level Configuration Options
+ * (easy to change)
+ */
+//#define CONFIG_INIT_CRITICAL /* define for U-BOOT 1.1.1 */
+#undef CONFIG_INIT_CRITICAL /* undef for U-BOOT 1.1.4 */
+//#define CONFIG_FPGA_ASPEED 1
+#define CONFIG_ARM926EJS 1 /* This is an arm926ejs CPU */
+#define CONFIG_ASPEED 1
+#define CONFIG_AST2400 1
+//#define CONFIG_AST1070 1
+//#define CONFIG_SYS_FLASH_CFI /* CONFIG_FLASH_CFI, CONFIG_FLASH_SPI is exclusive*/
+#define CONFIG_FLASH_SPI
+//#define CONFIG_2SPIFLASH /* Boot SPI: CS2, 2nd SPI: CS0 */
+#undef CONFIG_2SPIFLASH
+#undef CONFIG_ASPEED_SLT
+#define CONFIG_FLASH_AST2300
+//#define CONFIG_FLASH_AST2300_DMA
+//#define CONFIG_FLASH_SPIx2_Dummy
+//#define CONFIG_FLASH_SPIx4_Dummy
+#define CONFIG_CRT_DISPLAY 1 /* undef if not support CRT */
+
+//#define CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */
+#define CONFIG_MISC_INIT_R
+
+/*
+ * DRAM Config
+ *
+ * 1. DRAM Size //
+ * CONFIG_DRAM_512MBIT // 512M bit
+ * CONFIG_DRAM_1GBIT // 1G bit (default)
+ * CONFIG_DRAM_2GBIT // 2G bit
+ * CONFIG_DRAM_4GBIT // 4G bit
+ * 2. DRAM Speed //
+ * CONFIG_DRAM_336 // 336MHz (DDR-667)
+ * CONFIG_DRAM_408 // 408MHz (DDR-800) (default)
+ * 3. VGA Mode
+ * CONFIG_CRT_DISPLAY // define to disable VGA function
+ * 4. ECC Function enable
+ * CONFIG_DRAM_ECC // define to enable ECC function
+ * 5. UART Debug Message
+ * CONFIG_DRAM_UART_OUT // enable output message at UART5
+ * CONFIG_DRAM_UART_38400 // set the UART baud rate to 38400, default is 115200
+ */
+
+//1. DRAM Size
+//#define CONFIG_DRAM_512MBIT
+#define CONFIG_DRAM_1GBIT
+//#define CONFIG_DRAM_2GBIT
+//#define CONFIG_DRAM_4GBIT
+//2. DRAM Speed
+//#define CONFIG_DRAM_336
+#define CONFIG_DRAM_408
+//3. VGA Mode
+//#define CONFIG_CRT_DISPLAY
+//4. ECC Function enable
+//#define CONFIG_DRAM_ECC
+//5. UART Debug Message
+#define CONFIG_DRAM_UART_OUT
+//#define CONFIG_DRAM_UART_38400
+
+
+
+/*
+ * Environment Config
+ */
+#define CONFIG_CMDLINE_TAG 1 /* enable passing of ATAGs */
+#define CONFIG_SETUP_MEMORY_TAGS 1
+#define CONFIG_INITRD_TAG 1
+#define CONFIG_BOOTARGS "debug console=ttyS0,57600n8 root=/dev/ram rw"
+#define CONFIG_UPDATE "tftp 40800000 ast2400.scr; so 40800000'"
+
+#define CONFIG_BOOTDELAY 3 /* autoboot after 3 seconds */
+#define CONFIG_AUTOBOOT_KEYED
+#define CONFIG_AUTOBOOT_PROMPT \
+ "autoboot in %d seconds (stop with 'Delete' key)...\n", bootdelay
+#define CONFIG_AUTOBOOT_STOP_STR "\x1b\x5b\x33\x7e" /* 'Delete', ESC[3~ */
+#define CONFIG_ZERO_BOOTDELAY_CHECK
+
+#ifdef CONFIG_FLASH_AST2300
+#define CONFIG_BOOTCOMMAND "bootm 20080000 20300000"
+#else
+#ifdef CONFIG_SYS_FLASH_CFI
+#define CONFIG_BOOTCOMMAND "bootm 10080000 10300000"
+#else
+#define CONFIG_BOOTCOMMAND "bootm 14080000 14300000"
+#endif
+#endif
+#define CONFIG_BOOTFILE "all.bin"
+#define CONFIG_ENV_OVERWRITE
+
+/*
+ * Command line configuration.
+ */
+#include <config_cmd_default.h>
+
+#define CONFIG_CMD_DFL
+#define CONFIG_CMD_ENV
+#define CONFIG_CMD_FLASH
+#define CONFIG_CMD_MII
+#define CONFIG_CMD_NET
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_I2C
+#define CONFIG_CMD_EEPROM
+#define CONFIG_CMD_NETTEST
+#define CONFIG_CMD_SLT
+
+/*
+ * CPU Setting
+ */
+#define CPU_CLOCK_RATE 18000000 /* 16.5 MHz clock for the ARM core */
+
+/*
+ * Size of malloc() pool
+ */
+#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + 768*1024)
+#define CONFIG_SYS_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */
+
+/*
+ * Stack sizes, The stack sizes are set up in start.S using the settings below
+ */
+#define CONFIG_STACKSIZE (128*1024) /* regular stack */
+#define CONFIG_STACKSIZE_IRQ (4*1024) /* IRQ stack */
+#define CONFIG_STACKSIZE_FIQ (4*1024) /* FIQ stack */
+
+/*
+ * Memory Configuration
+ */
+#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */
+#define PHYS_SDRAM_1 0x40000000 /* SDRAM Bank #1 */
+#define PHYS_SDRAM_1_SIZE 0x10000000 /* 256 MB */
+
+#define CONFIG_SYS_SDRAM_BASE 0x40000000
+
+/*
+ * FLASH Configuration
+ */
+#ifdef CONFIG_SYS_FLASH_CFI /* NOR Flash */
+
+#ifdef CONFIG_FLASH_AST2300
+#define PHYS_FLASH_1 0x20000000 /* Flash Bank #1 */
+#else
+#define PHYS_FLASH_1 0x10000000 /* Flash Bank #1 */
+#endif
+
+#define CONFIG_SYS_FLASH_BASE PHYS_FLASH_1
+#define CONFIG_FLASH_BANKS_LIST { PHYS_FLASH_1 }
+
+#define CONFIG_SYS_MAX_FLASH_BANKS 1
+#define CONFIG_SYS_MAX_FLASH_SECT (256) /* max number of sectors on one chip */
+
+#define CONFIG_ENV_IS_IN_FLASH 1
+#define CONFIG_ENV_OFFSET 0x60000 /* environment starts here */
+#define CONFIG_ENV_SIZE 0x20000 /* Total Size of Environment Sector */
+
+#define CONFIG_SYS_FLASH_CFI_AMD_RESET
+#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE
+
+#else /* SPI Flash */
+
+#ifdef CONFIG_FLASH_AST2300
+#define PHYS_FLASH_1 0x20000000 /* Flash Bank #1 */
+#else
+#define PHYS_FLASH_1 0x14000000 /* Flash Bank #1 */
+#define PHYS_FLASH_2 0x14800000 /* Flash Bank #2 */
+#define PHYS_FLASH_2_BASE 0x10000000
+#endif
+
+#ifdef CONFIG_2SPIFLASH
+#define CONFIG_SYS_FLASH_BASE PHYS_FLASH_2_BASE
+#define CONFIG_FLASH_BANKS_LIST { PHYS_FLASH_1, PHYS_FLASH_2 }
+#define CONFIG_SYS_MAX_FLASH_BANKS 2
+#define CONFIG_SYS_MAX_FLASH_SECT (1024) /* max number of sectors on one chip */
+
+#define CONFIG_ENV_IS_IN_FLASH 1
+#define CONFIG_ENV_OFFSET 0x7F0000 /* environment starts here */
+#define CONFIG_ENV_SIZE 0x010000 /* Total Size of Environment Sector */
+#else
+#define CONFIG_SYS_FLASH_BASE PHYS_FLASH_1
+#define CONFIG_FLASH_BANKS_LIST { PHYS_FLASH_1 }
+#define CONFIG_SYS_MAX_FLASH_BANKS 1
+#define CONFIG_SYS_MAX_FLASH_SECT (1024) /* max number of sectors on one chip */
+
+#define CONFIG_ENV_IS_IN_FLASH 1
+#define CONFIG_ENV_OFFSET 0x60000 /* environment starts here */
+#define CONFIG_ENV_SIZE 0x20000 /* Total Size of Environment Sector */
+#define CONFIG_ASPEED_WRITE_DEFAULT_ENV
+#endif
+
+#endif
+
+#define __LITTLE_ENDIAN 1
+
+#define CONFIG_MONITOR_BASE TEXT_BASE
+#define CONFIG_MONITOR_LEN (192 << 10)
+
+/* timeout values are in ticks */
+#define CONFIG_SYS_FLASH_ERASE_TOUT (20*CONFIG_SYS_HZ) /* Timeout for Flash Erase */
+#define CONFIG_SYS_FLASH_WRITE_TOUT (20*CONFIG_SYS_HZ) /* Timeout for Flash Write */
+
+/*
+ * Miscellaneous configurable options
+ */
+#define CONFIG_SYS_LONGHELP /* undef to save memory */
+
+#define CONFIG_SYS_PROMPT "boot# " /* Monitor Command Prompt */
+#define CONFIG_SYS_CBSIZE 256 /* Console I/O Buffer Size */
+#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 0x40000000 /* memtest works on */
+#define CONFIG_SYS_MEMTEST_END 0x44FFFFFF /* 256 MB in DRAM */
+
+#define CONFIG_SYS_LOAD_ADDR 0x43000000 /* default load address */
+
+#define CONFIG_SYS_TIMERBASE 0x1E782000 /* use timer 1 */
+#define CONFIG_SYS_HZ 1000
+#define CONFIG_ASPEED_TIMER_CLK (1*1000*1000) /* use external clk (1M) */
+
+/*
+ * Serial Configuration
+ */
+#define CONFIG_SYS_NS16550
+#define CONFIG_SYS_NS16550_SERIAL
+#define CONFIG_SYS_NS16550_MEM32
+#define CONFIG_SYS_NS16550_REG_SIZE -4
+#define CONFIG_SYS_NS16550_CLK 24000000
+#define CONFIG_SYS_NS16550_COM1 0x1e783000
+#define CONFIG_SYS_NS16550_COM2 0x1e784000
+#define CONFIG_SYS_NS16550_COM3 0x1e78e000
+#define CONFIG_SYS_LOADS_BAUD_CHANGE
+#define CONFIG_CONS_INDEX 2
+#define CONFIG_BAUDRATE 38400
+#define CONFIG_SYS_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
+#define CONFIG_ASPEED_COM 0x1e784000 // UART5
+#define CONFIG_ASPEED_COM_IER (CONFIG_ASPEED_COM + 0x4)
+#define CONFIG_ASPEED_COM_IIR (CONFIG_ASPEED_COM + 0x8)
+#define CONFIG_ASPEED_COM_LCR (CONFIG_ASPEED_COM + 0xc)
+
+/*
+ * USB device configuration
+ */
+/*
+#define CONFIG_USB_DEVICE 1
+#define CONFIG_USB_TTY 1
+
+#define CONFIG_USBD_VENDORID 0x1234
+#define CONFIG_USBD_PRODUCTID 0x5678
+#define CONFIG_USBD_MANUFACTURER "Siemens"
+#define CONFIG_USBD_PRODUCT_NAME "SX1"
+*/
+
+/*
+ * I2C configuration
+ */
+#define CONFIG_HARD_I2C
+#define CONFIG_SYS_I2C_SPEED 100000
+#define CONFIG_SYS_I2C_SLAVE 1
+#define CONFIG_DRIVER_ASPEED_I2C
+
+/*
+* EEPROM configuration
+*/
+#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2
+#define CONFIG_SYS_I2C_EEPROM_ADDR 0xa0
+
+#define __BYTE_ORDER __LITTLE_ENDIAN
+#define __LITTLE_ENDIAN_BITFIELD
+
+/*
+ * NIC configuration
+ */
+#define CONFIG_ASPEEDNIC
+#define CONFIG_NET_MULTI
+#define CONFIG_MAC1_PHY_LINK_INTERRUPT
+#define CONFIG_MAC2_ENABLE
+#define CONFIG_MAC2_PHY_LINK_INTERRUPT
+/*
+*-------------------------------------------------------------------------------
+* NOTICE: MAC1 and MAC2 now have their own seperate PHY configuration.
+* We use 2 bits for each MAC in the scratch register(D[15:11] in 0x1E6E2040) to
+* inform kernel driver.
+* The meanings of the 2 bits are:
+* 00(0): Dedicated PHY
+* 01(1): ASPEED's EVA + INTEL's NC-SI PHY chip EVA
+* 10(2): ASPEED's MAC is connected to NC-SI PHY chip directly
+* 11: Reserved
+*
+* We use CONFIG_MAC1_PHY_SETTING and CONFIG_MAC2_PHY_SETTING in U-Boot
+* 0: Dedicated PHY
+* 1: ASPEED's EVA + INTEL's NC-SI PHY chip EVA
+* 2: ASPEED's MAC is connected to NC-SI PHY chip directly
+* 3: Reserved
+*-------------------------------------------------------------------------------
+*/
+#define CONFIG_MAC1_PHY_SETTING 2
+#define CONFIG_MAC2_PHY_SETTING 0
+#define CONFIG_ASPEED_MAC_NUMBER 1
+#define CONFIG_ASPEED_MAC_CONFIG 1 // config MAC1
+#define _PHY_SETTING_CONCAT(mac) CONFIG_MAC##mac##_PHY_SETTING
+#define _GET_MAC_PHY_SETTING(mac) _PHY_SETTING_CONCAT(mac)
+#define CONFIG_ASPEED_MAC_PHY_SETTING \
+ _GET_MAC_PHY_SETTING(CONFIG_ASPEED_MAC_CONFIG)
+#define CONFIG_MAC_INTERFACE_CLOCK_DELAY 0x2255
+#define CONFIG_RANDOM_MACADDR
+//#define CONFIG_GATEWAYIP 192.168.0.1
+//#define CONFIG_NETMASK 255.255.255.0
+//#define CONFIG_IPADDR 192.168.0.45
+//#define CONFIG_SERVERIP 192.168.0.81
+
+/*
+ * SLT
+ */
+/*
+#define CONFIG_SLT
+#define CFG_CMD_SLT (CFG_CMD_VIDEOTEST | CFG_CMD_MACTEST | CFG_CMD_HACTEST | CFG_CMD_MICTEST)
+*/
+
+#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_SDRAM_BASE + 0x1000 - GENERATED_GBL_DATA_SIZE)
+
+#define CONFIG_ASPEED_ENABLE_WATCHDOG
+#define CONFIG_ASPEED_WATCHDOG_TIMEOUT (5*60) // 5m
+
+#endif /* __CONFIG_H */