[aadk-commits] qwell: branch u-boot/upstreamsync r633 - /u-boot/branches/upstreamsync/u-boot...
SVN commits to the AADK repository
aadk-commits at lists.digium.com
Wed Oct 17 16:04:52 CDT 2007
Author: qwell
Date: Wed Oct 17 16:04:51 2007
New Revision: 633
URL: http://svn.digium.com/view/aadk?view=rev&rev=633
Log:
Merge many of the changes made in the bf537-stamp board.
Modified:
u-boot/branches/upstreamsync/u-boot_1.1.6/board/s800i/flash-defines.h
u-boot/branches/upstreamsync/u-boot_1.1.6/board/s800i/flash.c
u-boot/branches/upstreamsync/u-boot_1.1.6/board/s800i/post-memory.c
u-boot/branches/upstreamsync/u-boot_1.1.6/board/s800i/s800i.c
u-boot/branches/upstreamsync/u-boot_1.1.6/board/s800i/stm_m25p64.c
Modified: u-boot/branches/upstreamsync/u-boot_1.1.6/board/s800i/flash-defines.h
URL: http://svn.digium.com/view/aadk/u-boot/branches/upstreamsync/u-boot_1.1.6/board/s800i/flash-defines.h?view=diff&rev=633&r1=632&r2=633
==============================================================================
--- u-boot/branches/upstreamsync/u-boot_1.1.6/board/s800i/flash-defines.h (original)
+++ u-boot/branches/upstreamsync/u-boot_1.1.6/board/s800i/flash-defines.h Wed Oct 17 16:04:51 2007
@@ -49,10 +49,6 @@
#define FLASH_MAN_ST 2
#define RESET_VAL 0xF0
-
-asm("#define FLASH_START_L 0x0000");
-asm("#define FLASH_START_H 0x2000");
-
flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
int get_codes(void);
@@ -61,7 +57,7 @@
int erase_flash(void);
int erase_block_flash(int);
void unlock_flash(long lOffset);
-int write_data(long lStart, long lCount, uchar *pnData);
+int write_data(long lStart, long lCount, uchar * pnData);
int read_flash(long nOffset, int *pnValue);
int write_flash(long nOffset, int nValue);
void get_sector_number(long lOffset, int *pnSector);
@@ -70,7 +66,6 @@
int AFP_NumSectors = 71;
long AFP_SectorSize2 = 0x10000;
int AFP_SectorSize1 = 0x2000;
-
#define NUM_SECTORS 71
Modified: u-boot/branches/upstreamsync/u-boot_1.1.6/board/s800i/flash.c
URL: http://svn.digium.com/view/aadk/u-boot/branches/upstreamsync/u-boot_1.1.6/board/s800i/flash.c?view=diff&rev=633&r1=632&r2=633
==============================================================================
--- u-boot/branches/upstreamsync/u-boot_1.1.6/board/s800i/flash.c (original)
+++ u-boot/branches/upstreamsync/u-boot_1.1.6/board/s800i/flash.c Wed Oct 17 16:04:51 2007
@@ -27,6 +27,8 @@
*/
#include <malloc.h>
+#include <config.h>
+#include <asm/io.h>
#include "flash-defines.h"
void flash_reset(void)
@@ -34,14 +36,13 @@
reset_flash();
}
-unsigned long flash_get_size(ulong baseaddr, flash_info_t * info,
- int bank_flag)
+unsigned long flash_get_size(ulong baseaddr, flash_info_t * info, int bank_flag)
{
int id = 0, i = 0;
static int FlagDev = 1;
id = get_codes();
- if(FlagDev) {
+ if (FlagDev) {
FlagDev = 0;
}
info->flash_id = id;
@@ -50,7 +51,9 @@
for (i = PriFlashABegin; i < SecFlashABegin; i++)
info->start[i] = (baseaddr + (i * AFP_SectorSize1));
for (i = SecFlashABegin; i < NUM_SECTORS; i++)
- info->start[i] = (baseaddr + SecFlashAOff + ((i-SecFlashABegin) * AFP_SectorSize2));
+ info->start[i] =
+ (baseaddr + SecFlashAOff +
+ ((i - SecFlashABegin) * AFP_SectorSize2));
info->size = 0x800000;
info->sector_count = NUM_SECTORS;
break;
@@ -88,12 +91,16 @@
if (flash_info[0].flash_id == FLASH_UNKNOWN || size_b == 0) {
printf("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b, size_b >> 20);
+ size_b, size_b >> 20);
}
/* flash_protect (int flag, ulong from, ulong to, flash_info_t *info) */
- (void)flash_protect(FLAG_PROTECT_SET,CFG_FLASH_BASE,(flash_info[0].start[2] - 1),&flash_info[0]);
- (void)flash_protect(FLAG_PROTECT_SET, 0x203F0000, 0x203FFFFF, &flash_info[0]);
+ (void)flash_protect(FLAG_PROTECT_SET, CFG_FLASH_BASE,
+ (flash_info[0].start[2] - 1), &flash_info[0]);
+#if (BFIN_BOOT_MODE == BF537_BYPASS_BOOT)
+ (void)flash_protect(FLAG_PROTECT_SET, 0x203F0000, 0x203FFFFF,
+ &flash_info[0]);
+#endif
return (size_b);
}
@@ -106,21 +113,21 @@
printf("missing or unknown FLASH type\n");
return;
}
-
+
switch (info->flash_id) {
+ case (STM_ID_29W320EB & 0xFFFF):
case (STM_ID_29W320DB & 0xFFFF):
printf("ST Microelectronics ");
break;
default:
- printf("Unknown Vendor ");
+ printf("Unknown Vendor: (0x%08X) ", info->flash_id);
break;
}
for (i = 0; i < info->sector_count; ++i) {
if ((i % 5) == 0)
printf("\n ");
printf(" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " ");
+ info->start[i], info->protect[i] ? " (RO)" : " ");
}
printf("\n");
return;
@@ -128,50 +135,69 @@
int flash_erase(flash_info_t * info, int s_first, int s_last)
{
- int cnt = 0,i;
- int prot,sect;
+ int cnt = 0, i;
+ int prot, sect;
prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect])
- prot++;
- }
+ 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");
+ printf("- Warning: %d protected sectors will not be erased!\n",
+ prot);
+ else
+ printf("\n");
cnt = s_last - s_first + 1;
+#if (BFIN_BOOT_MODE == BF537_BYPASS_BOOT)
printf("Erasing Flash locations, Please Wait\n");
for (i = s_first; i <= s_last; i++) {
if (info->protect[i] == 0) { /* not protected */
- if(erase_block_flash(i) < 0) {
+ if (erase_block_flash(i) < 0) {
printf("Error Sector erasing \n");
return FLASH_FAIL;
}
}
}
- printf ("\n");
+#elif (BFIN_BOOT_MODE == BF537_SPI_MASTER_BOOT)
+ if (cnt == FLASH_TOT_SECT) {
+ printf("Erasing flash, Please Wait \n");
+ if (erase_flash() < 0) {
+ printf("Erasing flash failed \n");
+ return FLASH_FAIL;
+ }
+ } else {
+ printf("Erasing Flash locations, Please Wait\n");
+ for (i = s_first; i <= s_last; i++) {
+ if (info->protect[i] == 0) { /* not protected */
+ if (erase_block_flash(i) < 0) {
+ printf("Error Sector erasing \n");
+ return FLASH_FAIL;
+ }
+ }
+ }
+ }
+#endif
+ printf("\n");
return FLASH_SUCCESS;
}
int write_buff(flash_info_t * info, uchar * src, ulong addr, ulong cnt)
{
int d;
- if(addr%2){
- read_flash(addr-1-CFG_FLASH_BASE,&d);
- d = (int)((d&0x00FF)|(*src++<<8));
- write_data(addr-1,2,&d);
- write_data(addr+1,cnt-1,src);
- }
- else
+ if (addr % 2) {
+ read_flash(addr - 1 - CFG_FLASH_BASE, &d);
+ d = (int)((d & 0x00FF) | (*src++ << 8));
+ write_data(addr - 1, 2, (uchar *) & d);
+ write_data(addr + 1, cnt - 1, src);
+ } else
write_data(addr, cnt, src);
return FLASH_SUCCESS;
}
-
-int write_data(long lStart, long lCount, uchar *pnData)
+int write_data(long lStart, long lCount, uchar * pnData)
{
long i = 0;
unsigned long ulOffset = lStart - CFG_FLASH_BASE;
@@ -179,43 +205,47 @@
int nSector = 0;
int flag = 0;
- if(lCount%2){
- flag = 1;
- lCount = lCount -1;
- }
-
- for(i = 0; i< lCount-1;i+=2,ulOffset+=2){
+ if (lCount % 2) {
+ flag = 1;
+ lCount = lCount - 1;
+ }
+
+ for (i = 0; i < lCount - 1; i += 2, ulOffset += 2) {
get_sector_number(ulOffset, &nSector);
read_flash(ulOffset, &d);
- if(d != 0xffff) {
- printf("Flash not erased at offset 0x%x Please erase to reprogram \n",ulOffset);
- return FLASH_FAIL;
- }
+ if (d != 0xffff) {
+ printf
+ ("Flash not erased at offset 0x%x Please erase to reprogram \n",
+ ulOffset);
+ return FLASH_FAIL;
+ }
unlock_flash(ulOffset);
- d = (int)(pnData[i]|pnData[i+1]<<8);
- write_flash(ulOffset,d);
- if(poll_toggle_bit(ulOffset) < 0){
- printf("Error programming the flash \n");
- return FLASH_FAIL;
- }
- if((i>0)&&(!(i%AFP_SectorSize2)))
- printf(".");
- }
- if(flag){
+ d = (int)(pnData[i] | pnData[i + 1] << 8);
+ write_flash(ulOffset, d);
+ if (poll_toggle_bit(ulOffset) < 0) {
+ printf("Error programming the flash \n");
+ return FLASH_FAIL;
+ }
+ if ((i > 0) && (!(i % AFP_SectorSize2)))
+ printf(".");
+ }
+ if (flag) {
get_sector_number(ulOffset, &nSector);
- read_flash(ulOffset, &d);
- if(d != 0xffff) {
- printf("Flash not erased at offset 0x%x Please erase to reprogram \n",ulOffset);
- return FLASH_FAIL;
- }
- unlock_flash(ulOffset);
- d = (int)(pnData[i]|(d&0xFF00));
- write_flash(ulOffset,d);
- if(poll_toggle_bit(ulOffset) < 0){
- printf("Error programming the flash \n");
- return FLASH_FAIL;
- }
- }
+ read_flash(ulOffset, &d);
+ if (d != 0xffff) {
+ printf
+ ("Flash not erased at offset 0x%x Please erase to reprogram \n",
+ ulOffset);
+ return FLASH_FAIL;
+ }
+ unlock_flash(ulOffset);
+ d = (int)(pnData[i] | (d & 0xFF00));
+ write_flash(ulOffset, d);
+ if (poll_toggle_bit(ulOffset) < 0) {
+ printf("Error programming the flash \n");
+ return FLASH_FAIL;
+ }
+ }
return FLASH_SUCCESS;
}
@@ -224,14 +254,19 @@
long addr;
addr = (CFG_FLASH_BASE + nOffset);
- *(unsigned volatile short *) addr = nValue;
- __builtin_bfin_ssync();
+ *(unsigned volatile short *)addr = nValue;
+ sync();
+#if (BFIN_BOOT_MODE == BF537_SPI_MASTER_BOOT)
+ if (icache_status())
+ udelay(CONFIG_CCLK_HZ / 1000000);
+#endif
return FLASH_SUCCESS;
}
int read_flash(long nOffset, int *pnValue)
{
- unsigned short *pFlashAddr = (unsigned short *)(CFG_FLASH_BASE + nOffset);
+ unsigned short *pFlashAddr =
+ (unsigned short *)(CFG_FLASH_BASE + nOffset);
*pnValue = *pFlashAddr;
@@ -240,28 +275,29 @@
int poll_toggle_bit(long lOffset)
{
- unsigned int u1,u2;
- volatile unsigned long *FB = (volatile unsigned long *)(CFG_FLASH_BASE + lOffset);
- while(1) {
+ unsigned int u1, u2;
+ volatile unsigned long *FB =
+ (volatile unsigned long *)(CFG_FLASH_BASE + lOffset);
+ while (1) {
u1 = *(volatile unsigned short *)FB;
u2 = *(volatile unsigned short *)FB;
- u1^= u2;
- if( !(u1 & 0x0040))
+ u1 ^= u2;
+ if (!(u1 & 0x0040))
break;
- if( !(u2 & 0x0020))
+ if (!(u2 & 0x0020))
continue;
- else{
- u1 = *(volatile unsigned short *)FB;
- u2 = *(volatile unsigned short *)FB;
- u1^= u2;
- if( !(u1 & 0x0040))
- break;
- else{
+ else {
+ u1 = *(volatile unsigned short *)FB;
+ u2 = *(volatile unsigned short *)FB;
+ u1 ^= u2;
+ if (!(u1 & 0x0040))
+ break;
+ else {
reset_flash();
return FLASH_FAIL;
- }
}
}
+ }
return FLASH_SUCCESS;
}
@@ -281,7 +317,7 @@
write_flash(WRITESEQ5, WRITEDATA5);
write_flash(WRITESEQ6, WRITEDATA6);
- if(poll_toggle_bit(0x0000) < 0)
+ if (poll_toggle_bit(0x0000) < 0)
return FLASH_FAIL;
return FLASH_SUCCESS;
@@ -293,17 +329,18 @@
if ((nBlock < 0) || (nBlock > AFP_NumSectors))
return FALSE;
-
- // figure out the offset of the block in flash
- if( (nBlock >=0) && (nBlock <SecFlashABegin))
+
+ /* figure out the offset of the block in flash */
+ if ((nBlock >= 0) && (nBlock < SecFlashABegin))
ulSectorOff = nBlock * AFP_SectorSize1;
- else if( (nBlock >= SecFlashABegin) && (nBlock < NUM_SECTORS) )
- ulSectorOff = SecFlashAOff + (nBlock-SecFlashABegin)* AFP_SectorSize2;
- // no such sector
+ else if ((nBlock >= SecFlashABegin) && (nBlock < NUM_SECTORS))
+ ulSectorOff =
+ SecFlashAOff + (nBlock - SecFlashABegin) * AFP_SectorSize2;
+ /* no such sector */
else
return FLASH_FAIL;
-
+
write_flash((WRITESEQ1 | ulSectorOff), WRITEDATA1);
write_flash((WRITESEQ2 | ulSectorOff), WRITEDATA2);
write_flash((WRITESEQ3 | ulSectorOff), WRITEDATA3);
@@ -312,7 +349,7 @@
write_flash(ulSectorOff, BlockEraseVal);
- if(poll_toggle_bit(ulSectorOff) < 0)
+ if (poll_toggle_bit(ulSectorOff) < 0)
return FLASH_FAIL;
printf(".");
@@ -336,8 +373,6 @@
write_flash(WRITESEQ1, GETCODEDATA1);
write_flash(WRITESEQ2, GETCODEDATA2);
write_flash(WRITESEQ3, GETCODEDATA3);
-
-
read_flash(0x0402, &dev_id);
dev_id &= 0x0000FFFF;
@@ -353,19 +388,16 @@
long lMainEnd = 0x400000;
long lBootEnd = 0x10000;
- // sector numbers for the FLASH A boot sectors
- if(ulOffset < lBootEnd)
- {
- nSector = (int)ulOffset / AFP_SectorSize1 ;
- }
- // sector numbers for the FLASH B boot sectors
- else if( ( ulOffset >= lBootEnd ) && ( ulOffset < lMainEnd ) )
- {
- nSector = (( ulOffset / (AFP_SectorSize2) ) + 7 );
- }
-
- // if it is a valid sector, set it
- if ( (nSector >= 0) && (nSector < AFP_NumSectors) )
+ /* sector numbers for the FLASH A boot sectors */
+ if (ulOffset < lBootEnd) {
+ nSector = (int)ulOffset / AFP_SectorSize1;
+ }
+ /* sector numbers for the FLASH B boot sectors */
+ else if ((ulOffset >= lBootEnd) && (ulOffset < lMainEnd)) {
+ nSector = ((ulOffset / (AFP_SectorSize2)) + 7);
+ }
+ /* if it is a valid sector, set it */
+ if ((nSector >= 0) && (nSector < AFP_NumSectors))
*pnSector = nSector;
}
Modified: u-boot/branches/upstreamsync/u-boot_1.1.6/board/s800i/post-memory.c
URL: http://svn.digium.com/view/aadk/u-boot/branches/upstreamsync/u-boot_1.1.6/board/s800i/post-memory.c?view=diff&rev=633&r1=632&r2=633
==============================================================================
--- u-boot/branches/upstreamsync/u-boot_1.1.6/board/s800i/post-memory.c (original)
+++ u-boot/branches/upstreamsync/u-boot_1.1.6/board/s800i/post-memory.c Wed Oct 17 16:04:51 2007
@@ -1,4 +1,5 @@
#include <common.h>
+#include <asm/io.h>
#ifdef CONFIG_POST
@@ -14,117 +15,119 @@
#define SCLK_NUM 3
void post_out_buff(char *buff);
-int post_key_pressed(void);
+int post_key_pressed(void);
void post_init_pll(int mult, int div);
-int post_init_sdram(int sclk);
+int post_init_sdram(int sclk);
void post_init_uart(int sclk);
const int pll[CCLK_NUM][SCLK_NUM][2] = {
- { {20, 4}, {20, 5}, {20, 10} }, /* CCLK = 500M */
- { {16, 4}, {16, 5}, {16, 8} }, /* CCLK = 400M */
- { {8 , 2}, {8, 4}, {8, 5} }, /* CCLK = 200M */
- { {4 , 1}, {4, 2}, {4, 4} } /* CCLK = 100M */
- };
+ {{20, 4}, {20, 5}, {20, 10}}, /* CCLK = 500M */
+ {{16, 4}, {16, 5}, {16, 8}}, /* CCLK = 400M */
+ {{8, 2}, {8, 4}, {8, 5}}, /* CCLK = 200M */
+ {{4, 1}, {4, 2}, {4, 4}} /* CCLK = 100M */
+};
const char *const log[CCLK_NUM][SCLK_NUM] = {
- {"CCLK-500Mhz SCLK-125Mhz: Writing...\0",
- "CCLK-500Mhz SCLK-100Mhz: Writing...\0",
- "CCLK-500Mhz SCLK- 50Mhz: Writing...\0",},
- {"CCLK-400Mhz SCLK-100Mhz: Writing...\0",
- "CCLK-400Mhz SCLK- 80Mhz: Writing...\0",
- "CCLK-400Mhz SCLK- 50Mhz: Writing...\0",},
- {"CCLK-200Mhz SCLK-100Mhz: Writing...\0",
- "CCLK-200Mhz SCLK- 50Mhz: Writing...\0",
- "CCLK-200Mhz SCLK- 40Mhz: Writing...\0",},
- {"CCLK-100Mhz SCLK-100Mhz: Writing...\0",
- "CCLK-100Mhz SCLK- 50Mhz: Writing...\0",
- "CCLK-100Mhz SCLK- 25Mhz: Writing...\0",},
- };
-
-int memory_post_test (int flags)
+ {"CCLK-500Mhz SCLK-125Mhz: Writing...\0",
+ "CCLK-500Mhz SCLK-100Mhz: Writing...\0",
+ "CCLK-500Mhz SCLK- 50Mhz: Writing...\0",},
+ {"CCLK-400Mhz SCLK-100Mhz: Writing...\0",
+ "CCLK-400Mhz SCLK- 80Mhz: Writing...\0",
+ "CCLK-400Mhz SCLK- 50Mhz: Writing...\0",},
+ {"CCLK-200Mhz SCLK-100Mhz: Writing...\0",
+ "CCLK-200Mhz SCLK- 50Mhz: Writing...\0",
+ "CCLK-200Mhz SCLK- 40Mhz: Writing...\0",},
+ {"CCLK-100Mhz SCLK-100Mhz: Writing...\0",
+ "CCLK-100Mhz SCLK- 50Mhz: Writing...\0",
+ "CCLK-100Mhz SCLK- 25Mhz: Writing...\0",},
+};
+
+int memory_post_test(int flags)
{
int addr;
- int m,n;
+ int m, n;
int sclk, sclk_temp;
int ret = 1;
- sclk_temp = CLKIN/1000000;
+ sclk_temp = CLKIN / 1000000;
sclk_temp = sclk_temp * CONFIG_VCO_MULT;
- for(sclk = 0; sclk_temp>0;sclk++)
+ for (sclk = 0; sclk_temp > 0; sclk++)
sclk_temp -= CONFIG_SCLK_DIV;
sclk = sclk * 1000000;
post_init_uart(sclk);
- if(post_key_pressed() == 0)
+ if (post_key_pressed() == 0)
return 0;
- for(m=0;m<CCLK_NUM; m++){
- for(n=0;n< SCLK_NUM; n++){
- /* Calculate the sclk */
- sclk_temp = CLKIN/1000000;
- sclk_temp = sclk_temp*pll[m][n][0];
- for(sclk=0;sclk_temp>0;sclk++)
+ for (m = 0; m < CCLK_NUM; m++) {
+ for (n = 0; n < SCLK_NUM; n++) {
+ /* Calculate the sclk */
+ sclk_temp = CLKIN / 1000000;
+ sclk_temp = sclk_temp * pll[m][n][0];
+ for (sclk = 0; sclk_temp > 0; sclk++)
sclk_temp -= pll[m][n][1];
sclk = sclk * 1000000;
-
- post_init_pll(pll[m][n][0],pll[m][n][1]);
+
+ post_init_pll(pll[m][n][0], pll[m][n][1]);
post_init_sdram(sclk);
post_init_uart(sclk);
post_out_buff("\n\r\0");
post_out_buff(log[m][n]);
- for(addr=0x0;addr<CFG_MAX_RAM_SIZE;addr+=4)
- *(unsigned long *)addr = PATTERN1;
- post_out_buff("Reading...\0");
- for(addr=0x0;addr<CFG_MAX_RAM_SIZE;addr+=4){
- if( (*(unsigned long *)addr)!= PATTERN1){
+ for (addr = 0x0; addr < CFG_MAX_RAM_SIZE; addr += 4)
+ *(unsigned long *)addr = PATTERN1;
+ post_out_buff("Reading...\0");
+ for (addr = 0x0; addr < CFG_MAX_RAM_SIZE; addr += 4) {
+ if ((*(unsigned long *)addr) != PATTERN1) {
post_out_buff("Error\n\r\0");
ret = 0;
}
- }
+ }
post_out_buff("OK\n\r\0");
}
}
- if(ret)
+ if (ret)
post_out_buff("memory POST passed\n\r\0");
else
post_out_buff("memory POST failed\n\r\0");
post_out_buff("\n\r\n\r\0");
- return 1;
-}
-
-void post_init_uart(int sclk) {
+ return 1;
+}
+
+void post_init_uart(int sclk)
+{
int divisor;
- for(divisor =0;sclk > 0;divisor ++)
- sclk -= 57600*16;
-
+ for (divisor = 0; sclk > 0; divisor++)
+ sclk -= 57600 * 16;
+
*pPORTF_FER = 0x000F;
- *pPORTH_FER = 0xFFFF;
-
- *pUART_GCTL = 0x00;
- *pUART_LCR = 0x83;
- __builtin_bfin_ssync();
- *pUART_DLL = (divisor & 0xFF);
- __builtin_bfin_ssync();
- *pUART_DLH = ((divisor >> 8) & 0xFF);
- __builtin_bfin_ssync();
- *pUART_LCR = 0x03;
- __builtin_bfin_ssync();
- *pUART_GCTL = 0x01;
- __builtin_bfin_ssync();
-}
-
-void post_out_buff (char *buff) {
-
- int i=0;
- for(i=0;i< 0x80000;i++);
+ *pPORTH_FER = 0xFFFF;
+
+ *pUART_GCTL = 0x00;
+ *pUART_LCR = 0x83;
+ sync();
+ *pUART_DLL = (divisor & 0xFF);
+ sync();
+ *pUART_DLH = ((divisor >> 8) & 0xFF);
+ sync();
+ *pUART_LCR = 0x03;
+ sync();
+ *pUART_GCTL = 0x01;
+ sync();
+}
+
+void post_out_buff(char *buff)
+{
+
+ int i = 0;
+ for (i = 0; i < 0x80000; i++) ;
i = 0;
- while ( (buff[i] != '\0') && ( i != 100 ) ) {
- while ( ! (*pUART_LSR & 0x20) ) ;
- *pUART_THR=buff[i];
- __builtin_bfin_ssync();
- i++;
- }
- for(i=0;i< 0x80000;i++);
+ while ((buff[i] != '\0') && (i != 100)) {
+ while (!(*pUART_LSR & 0x20)) ;
+ *pUART_THR = buff[i];
+ sync();
+ i++;
+ }
+ for (i = 0; i < 0x80000; i++) ;
}
/* Using sw10-PF5 as the hotkey */
@@ -132,178 +135,188 @@
#define KEY_DELAY 0x80
int post_key_pressed(void)
{
- int i, n;
+ int i, n;
unsigned short value;
- *pPORTF_FER &= ~PF5;
- *pPORTFIO_DIR &= ~PF5;
- *pPORTFIO_INEN|= PF5;
- __builtin_bfin_ssync();
-
- post_out_buff("########Press SW10 to enter Memory POST########: 3\0");
- for(i=0;i<KEY_LOOP;i++){
- value = *pPORTFIO & PF5;
- if(*pUART0_RBR == 0x0D){
- value =0;
- goto key_pressed;
- }
- if(value != 0){
- goto key_pressed;
- }
- for(n=0;n<KEY_DELAY;n++);
- }
- post_out_buff("\b2\0");
-
- for(i=0;i<KEY_LOOP;i++){
- value = *pPORTFIO & PF5;
- if(*pUART0_RBR == 0x0D){
- value =0;
- goto key_pressed;
- }
- if(value != 0){
- goto key_pressed;
- }
- for(n=0;n<KEY_DELAY;n++);
- }
- post_out_buff("\b1\0");
-
- for(i=0;i<KEY_LOOP;i++){
- value = *pPORTFIO & PF5;
- if(*pUART0_RBR == 0x0D){
- value =0;
- goto key_pressed;
- }
- if(value != 0){
- goto key_pressed;
- }
- for(n=0;n<KEY_DELAY;n++);
- }
-key_pressed:
- post_out_buff("\b0");
- post_out_buff("\n\r\0");
- if(value == 0)
- return 0;
- post_out_buff("Hotkey has been pressed, Enter POST . . . . . .\n\r\0");
+ *pPORTF_FER &= ~PF5;
+ *pPORTFIO_DIR &= ~PF5;
+ *pPORTFIO_INEN |= PF5;
+ sync();
+
+ post_out_buff("########Press SW10 to enter Memory POST########: 3\0");
+ for (i = 0; i < KEY_LOOP; i++) {
+ value = *pPORTFIO & PF5;
+ if (*pUART0_RBR == 0x0D) {
+ value = 0;
+ goto key_pressed;
+ }
+ if (value != 0) {
+ goto key_pressed;
+ }
+ for (n = 0; n < KEY_DELAY; n++)
+ asm("nop");
+ }
+ post_out_buff("\b2\0");
+
+ for (i = 0; i < KEY_LOOP; i++) {
+ value = *pPORTFIO & PF5;
+ if (*pUART0_RBR == 0x0D) {
+ value = 0;
+ goto key_pressed;
+ }
+ if (value != 0) {
+ goto key_pressed;
+ }
+ for (n = 0; n < KEY_DELAY; n++)
+ asm("nop");
+ }
+ post_out_buff("\b1\0");
+
+ for (i = 0; i < KEY_LOOP; i++) {
+ value = *pPORTFIO & PF5;
+ if (*pUART0_RBR == 0x0D) {
+ value = 0;
+ goto key_pressed;
+ }
+ if (value != 0) {
+ goto key_pressed;
+ }
+ for (n = 0; n < KEY_DELAY; n++)
+ asm("nop");
+ }
+ key_pressed:
+ post_out_buff("\b0");
+ post_out_buff("\n\r\0");
+ if (value == 0)
+ return 0;
+ post_out_buff("Hotkey has been pressed, Enter POST . . . . . .\n\r\0");
return 1;
}
-void post_init_pll(int mult, int div) {
-
- *pSIC_IWR=0x01;
- *pPLL_CTL=(mult<<9);
- *pPLL_DIV = div;
- asm("CLI R2;");
- asm("IDLE;");
- asm("STI R2;");
- while (! (*pPLL_STAT & 0x20)) ;
-}
-
-int post_init_sdram(int sclk) {
- int SDRAM_tRP, SDRAM_tRP_num, SDRAM_tRAS, SDRAM_tRAS_num, SDRAM_tRCD, SDRAM_tWR;
- int SDRAM_Tref, SDRAM_NRA, SDRAM_CL, SDRAM_SIZE, SDRAM_WIDTH, mem_SDGCTL, mem_SDBCTL, mem_SDRRC;
-
-if (( sclk > 119402985 )) {
- SDRAM_tRP = TRP_2;
- SDRAM_tRP_num = 2;
- SDRAM_tRAS = TRAS_7;
- SDRAM_tRAS_num = 7;
- SDRAM_tRCD = TRCD_2;
- SDRAM_tWR = TWR_2;
-} else if (( sclk > 104477612 ) && ( sclk <= 119402985 )) {
- SDRAM_tRP = TRP_2;
- SDRAM_tRP_num = 2;
- SDRAM_tRAS = TRAS_6;
- SDRAM_tRAS_num = 6;
- SDRAM_tRCD = TRCD_2;
- SDRAM_tWR = TWR_2;
-} else if (( sclk > 89552239 ) && ( sclk <= 104477612 )) {
- SDRAM_tRP = TRP_2;
- SDRAM_tRP_num = 2;
- SDRAM_tRAS = TRAS_5;
- SDRAM_tRAS_num = 5;
- SDRAM_tRCD = TRCD_2;
- SDRAM_tWR = TWR_2;
-} else if (( sclk > 74626866 ) && ( sclk <= 89552239 )) {
- SDRAM_tRP = TRP_2;
- SDRAM_tRP_num = 2;
- SDRAM_tRAS = TRAS_4;
- SDRAM_tRAS_num = 4;
- SDRAM_tRCD = TRCD_2;
- SDRAM_tWR = TWR_2;
-} else if (( sclk > 66666667 ) && ( sclk <= 74626866 )) {
- SDRAM_tRP = TRP_2;
- SDRAM_tRP_num = 2;
- SDRAM_tRAS = TRAS_3;
- SDRAM_tRAS_num = 3;
- SDRAM_tRCD = TRCD_2;
- SDRAM_tWR = TWR_2;
-} else if (( sclk > 59701493 ) && ( sclk <= 66666667 )) {
- SDRAM_tRP = TRP_1;
- SDRAM_tRP_num = 1;
- SDRAM_tRAS = TRAS_4;
- SDRAM_tRAS_num = 4;
- SDRAM_tRCD = TRCD_1;
- SDRAM_tWR = TWR_2;
-} else if (( sclk > 44776119 ) && ( sclk <= 59701493 )) {
- SDRAM_tRP = TRP_1;
- SDRAM_tRP_num = 1;
- SDRAM_tRAS = TRAS_3;
- SDRAM_tRAS_num = 3;
- SDRAM_tRCD = TRCD_1;
- SDRAM_tWR = TWR_2;
-} else if (( sclk > 29850746 ) && ( sclk <= 44776119 )) {
- SDRAM_tRP = TRP_1;
- SDRAM_tRP_num = 1;
- SDRAM_tRAS = TRAS_2;
- SDRAM_tRAS_num = 2;
- SDRAM_tRCD = TRCD_1;
- SDRAM_tWR = TWR_2;
-} else if ( sclk <= 29850746 ) {
- SDRAM_tRP = TRP_1;
- SDRAM_tRP_num = 1;
- SDRAM_tRAS = TRAS_1;
- SDRAM_tRAS_num = 1;
- SDRAM_tRCD = TRCD_1;
- SDRAM_tWR = TWR_2;
-} else {
- SDRAM_tRP = TRP_1;
- SDRAM_tRP_num = 1;
- SDRAM_tRAS = TRAS_1;
- SDRAM_tRAS_num = 1;
- SDRAM_tRCD = TRCD_1;
- SDRAM_tWR = TWR_2;
-}
+void post_init_pll(int mult, int div)
+{
+
+ *pSIC_IWR = 0x01;
+ *pPLL_CTL = (mult << 9);
+ *pPLL_DIV = div;
+ asm("CLI R2;");
+ asm("IDLE;");
+ asm("STI R2;");
+ while (!(*pPLL_STAT & 0x20)) ;
+}
+
+int post_init_sdram(int sclk)
+{
+ int SDRAM_tRP, SDRAM_tRP_num, SDRAM_tRAS, SDRAM_tRAS_num, SDRAM_tRCD,
+ SDRAM_tWR;
+ int SDRAM_Tref, SDRAM_NRA, SDRAM_CL, SDRAM_SIZE, SDRAM_WIDTH,
+ mem_SDGCTL, mem_SDBCTL, mem_SDRRC;
+
+ if ((sclk > 119402985)) {
+ SDRAM_tRP = TRP_2;
+ SDRAM_tRP_num = 2;
+ SDRAM_tRAS = TRAS_7;
+ SDRAM_tRAS_num = 7;
+ SDRAM_tRCD = TRCD_2;
+ SDRAM_tWR = TWR_2;
+ } else if ((sclk > 104477612) && (sclk <= 119402985)) {
+ SDRAM_tRP = TRP_2;
+ SDRAM_tRP_num = 2;
+ SDRAM_tRAS = TRAS_6;
+ SDRAM_tRAS_num = 6;
+ SDRAM_tRCD = TRCD_2;
+ SDRAM_tWR = TWR_2;
+ } else if ((sclk > 89552239) && (sclk <= 104477612)) {
+ SDRAM_tRP = TRP_2;
+ SDRAM_tRP_num = 2;
+ SDRAM_tRAS = TRAS_5;
+ SDRAM_tRAS_num = 5;
+ SDRAM_tRCD = TRCD_2;
+ SDRAM_tWR = TWR_2;
+ } else if ((sclk > 74626866) && (sclk <= 89552239)) {
+ SDRAM_tRP = TRP_2;
+ SDRAM_tRP_num = 2;
+ SDRAM_tRAS = TRAS_4;
+ SDRAM_tRAS_num = 4;
+ SDRAM_tRCD = TRCD_2;
+ SDRAM_tWR = TWR_2;
+ } else if ((sclk > 66666667) && (sclk <= 74626866)) {
+ SDRAM_tRP = TRP_2;
+ SDRAM_tRP_num = 2;
+ SDRAM_tRAS = TRAS_3;
+ SDRAM_tRAS_num = 3;
+ SDRAM_tRCD = TRCD_2;
+ SDRAM_tWR = TWR_2;
+ } else if ((sclk > 59701493) && (sclk <= 66666667)) {
+ SDRAM_tRP = TRP_1;
+ SDRAM_tRP_num = 1;
+ SDRAM_tRAS = TRAS_4;
+ SDRAM_tRAS_num = 4;
+ SDRAM_tRCD = TRCD_1;
+ SDRAM_tWR = TWR_2;
+ } else if ((sclk > 44776119) && (sclk <= 59701493)) {
+ SDRAM_tRP = TRP_1;
+ SDRAM_tRP_num = 1;
+ SDRAM_tRAS = TRAS_3;
+ SDRAM_tRAS_num = 3;
+ SDRAM_tRCD = TRCD_1;
+ SDRAM_tWR = TWR_2;
+ } else if ((sclk > 29850746) && (sclk <= 44776119)) {
+ SDRAM_tRP = TRP_1;
+ SDRAM_tRP_num = 1;
+ SDRAM_tRAS = TRAS_2;
+ SDRAM_tRAS_num = 2;
+ SDRAM_tRCD = TRCD_1;
+ SDRAM_tWR = TWR_2;
+ } else if (sclk <= 29850746) {
+ SDRAM_tRP = TRP_1;
+ SDRAM_tRP_num = 1;
+ SDRAM_tRAS = TRAS_1;
+ SDRAM_tRAS_num = 1;
+ SDRAM_tRCD = TRCD_1;
+ SDRAM_tWR = TWR_2;
+ } else {
+ SDRAM_tRP = TRP_1;
+ SDRAM_tRP_num = 1;
+ SDRAM_tRAS = TRAS_1;
+ SDRAM_tRAS_num = 1;
+ SDRAM_tRCD = TRCD_1;
+ SDRAM_tWR = TWR_2;
+ }
/*SDRAM INFORMATION: */
- SDRAM_Tref = 64; /* Refresh period in milliseconds */
- SDRAM_NRA = 4096; /* Number of row addresses in SDRAM */
- SDRAM_CL = CL_3; // 2
-
- SDRAM_SIZE = EBSZ_64;
- SDRAM_WIDTH = EBCAW_10;
-
-
- mem_SDBCTL = SDRAM_WIDTH | SDRAM_SIZE | EBE;
+ SDRAM_Tref = 64; /* Refresh period in milliseconds */
+ SDRAM_NRA = 4096; /* Number of row addresses in SDRAM */
+ SDRAM_CL = CL_3; /* 2 */
+
+ SDRAM_SIZE = EBSZ_64;
+ SDRAM_WIDTH = EBCAW_10;
+
+ mem_SDBCTL = SDRAM_WIDTH | SDRAM_SIZE | EBE;
/* Equation from section 17 (p17-46) of BF533 HRM */
- mem_SDRRC = ((( CONFIG_SCLK_HZ / 1000) * SDRAM_Tref) / SDRAM_NRA) - (SDRAM_tRAS_num + SDRAM_tRP_num);
+ mem_SDRRC =
+ (((CONFIG_SCLK_HZ / 1000) * SDRAM_Tref) / SDRAM_NRA) -
+ (SDRAM_tRAS_num + SDRAM_tRP_num);
/* Enable SCLK Out */
- mem_SDGCTL = ( SCTLE | SDRAM_CL | SDRAM_tRAS | SDRAM_tRP | SDRAM_tRCD | SDRAM_tWR | PSS );
-
- __builtin_bfin_ssync();
-
+ mem_SDGCTL =
+ (SCTLE | SDRAM_CL | SDRAM_tRAS | SDRAM_tRP | SDRAM_tRCD | SDRAM_tWR
+ | PSS);
+
+ sync();
+
*pEBIU_SDGCTL |= 0x1000000;
/* Set the SDRAM Refresh Rate control register based on SSCLK value */
- *pEBIU_SDRRC = mem_SDRRC;
-
- //SDRAM Memory Bank Control Register
- *pEBIU_SDBCTL= mem_SDBCTL;
-
- //SDRAM Memory Global Control Register
- *pEBIU_SDGCTL= mem_SDGCTL;
- __builtin_bfin_ssync();
+ *pEBIU_SDRRC = mem_SDRRC;
+
+ /* SDRAM Memory Bank Control Register */
+ *pEBIU_SDBCTL = mem_SDBCTL;
+
+ /* SDRAM Memory Global Control Register */
+ *pEBIU_SDGCTL = mem_SDGCTL;
+ sync();
return mem_SDRRC;
}
-#endif /* CONFIG_POST & CFG_POST_MEMORY */
-#endif /* CONFIG_POST */
+#endif /* CONFIG_POST & CFG_POST_MEMORY */
+#endif /* CONFIG_POST */
Modified: u-boot/branches/upstreamsync/u-boot_1.1.6/board/s800i/s800i.c
URL: http://svn.digium.com/view/aadk/u-boot/branches/upstreamsync/u-boot_1.1.6/board/s800i/s800i.c?view=diff&rev=633&r1=632&r2=633
==============================================================================
--- u-boot/branches/upstreamsync/u-boot_1.1.6/board/s800i/s800i.c (original)
+++ u-boot/branches/upstreamsync/u-boot_1.1.6/board/s800i/s800i.c Wed Oct 17 16:04:51 2007
@@ -43,9 +43,9 @@
* to also add booting from SPI, or TWI, but this function does
* not currently support that.
*/
-int do_bootldr (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- ulong addr, entry;
+int do_bootldr(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
+{
+ ulong addr, entry;
ulong *data;
/* Get the address */
@@ -56,79 +56,81 @@
}
/* Check if it is a LDR file */
- data = (ulong *)addr;
- if ( *data == 0xFF800060 || *data == 0xFF800040 || *data == 0xFF800020 ) {
+ data = (ulong *) addr;
+ if (*data == 0xFF800060 || *data == 0xFF800040 || *data == 0xFF800020) {
/* We want to boot from FLASH or SDRAM */
entry = _BOOTROM_BOOT_DXE_FLASH;
- printf ("## Booting ldr image at 0x%08lx ...\n", addr);
- if (icache_status ())
+ printf("## Booting ldr image at 0x%08lx ...\n", addr);
+ if (icache_status())
icache_disable();
- if (dcache_status ())
- dcache_disable ();
-
- __asm__(
- "R7=%[a];\n"
- "P0=%[b];\n"
- "JUMP (P0);\n"
- :
- : [a] "d" (addr), [b] "a" (entry)
- : "R7", "P0" );
+ if (dcache_status())
+ dcache_disable();
+
+ __asm__("R7=%[a];\n" "P0=%[b];\n" "JUMP (P0);\n":
+ :[a] "d"(addr),[b] "a"(entry)
+ :"R7", "P0");
} else {
- printf ("## No ldr image at address 0x%08lx\n", addr);
- }
-
- return 0;
-}
-
-U_BOOT_CMD(bootldr,2,0,do_bootldr,
- "bootldr - boot ldr image from memory\n",
- "[addr]\n - boot ldr image stored in memory\n");
+ printf("## No ldr image at address 0x%08lx\n", addr);
+ }
+
+ return 0;
+}
+
+U_BOOT_CMD(bootldr, 2, 0, do_bootldr,
+ "bootldr - boot ldr image from memory\n",
+ "[addr]\n - boot ldr image stored in memory\n");
int checkboard(void)
{
- printf("CPU: ADSP BF537 Rev.: 0.%d\n", *pCHIPID >>28);
+#if (BFIN_CPU == ADSP_BF534)
+ printf("CPU: ADSP BF534 Rev.: 0.%d\n", *pCHIPID >> 28);
+#elif (BFIN_CPU == ADSP_BF536)
+ printf("CPU: ADSP BF536 Rev.: 0.%d\n", *pCHIPID >> 28);
+#else
+ printf("CPU: ADSP BF537 Rev.: 0.%d\n", *pCHIPID >> 28);
+#endif
printf("Board: Digium S800i\n");
printf(" Support: http://www.digium.com/en/supportcenter/\n");
return 0;
}
-#ifdef CONFIG_BF537_CF
-
-void cf_outb(unsigned char val, volatile unsigned char* addr)
-{
- *(addr) = val;
- __builtin_bfin_ssync();
+#if defined(CONFIG_BFIN_IDE)
+
+void cf_outb(unsigned char val, volatile unsigned char *addr)
+{
+ *(addr) = val;
+ sync();
}
unsigned char cf_inb(volatile unsigned char *addr)
{
- volatile unsigned char c;
-
- c = *(addr);
- __builtin_bfin_ssync();
-
- return c;
+ volatile unsigned char c;
+
+ c = *(addr);
+ sync();
+
+ return c;
}
void cf_insw(unsigned short *sect_buf, unsigned short *addr, int words)
{
- int i;
-
- for (i = 0;i < words; i++)
- *(sect_buf + i) = *(addr);
- __builtin_bfin_ssync();
+ int i;
+
+ for (i = 0; i < words; i++)
+ *(sect_buf + i) = *(addr);
+ sync();
}
void cf_outsw(unsigned short *addr, unsigned short *sect_buf, int words)
{
- int i;
-
- for (i = 0;i < words; i++)
- *(addr) = *(sect_buf + i);
- __builtin_bfin_ssync();
-}
-#endif
+ int i;
+
+ for (i = 0; i < words; i++)
+ *(addr) = *(sect_buf + i);
+ sync();
+}
+#endif /* CONFIG_BFIN_IDE */
long int initdram(int board_type)
{
@@ -137,7 +139,7 @@
int brate;
char *tmp = getenv("baudrate");
brate = simple_strtoul(tmp, NULL, 16);
- printf("Serial Port initialized with Baud rate = %x\n",brate);
+ printf("Serial Port initialized with Baud rate = %x\n", brate);
printf("SDRAM attributes:\n");
printf("tRCD %d SCLK Cycles,tRP %d SCLK Cycles,tRAS %d SCLK Cycles"
"tWR %d SCLK Cycles,CAS Latency %d SCLK cycles \n",
@@ -154,34 +156,49 @@
/* miscellaneous platform dependent initialisations */
int misc_init_r(void)
{
+#if (BFIN_BOOT_MODE == BF537_BYPASS_BOOT)
char nid[32];
- unsigned short *pMACaddr = (unsigned short *) 0x203F0000;
-
-#if 0
- if ( getenv("ethaddr") == NULL) {
- sprintf (nid, "%02x:%02x:%02x:%02x:%02x:%02x",
- pMACaddr[0] & 0xFF , pMACaddr[0] >> 8,
- pMACaddr[1] & 0xFF , pMACaddr[1] >> 8,
- pMACaddr[2] & 0xFF , pMACaddr[2] >> 8);
- setenv ("ethaddr", nid);
- }
-#endif
-#ifdef CONFIG_BF537_CF
- unsigned short *addr = CF_ATASEL_ENA;
- unsigned short buf=0;
-
- cf_outsw(addr, &buf, 1);
- udelay(5000);
+ unsigned char *pMACaddr = (unsigned char *)0x203F0000;
+ u8 SrcAddr[6] = { 0x02, 0x80, 0xAD, 0x20, 0x31, 0xB8 };
+
+#if (CONFIG_COMMANDS & CFG_CMD_NET)
+ /* The 0xFF check here is to make sure we don't use the address
+ * in flash if it's simply been erased (aka all 0xFF values) */
+ if (getenv("ethaddr") == NULL && is_valid_ether_addr(pMACaddr)) {
+ sprintf(nid, "%02x:%02x:%02x:%02x:%02x:%02x",
+ pMACaddr[0], pMACaddr[1],
+ pMACaddr[2], pMACaddr[3], pMACaddr[4], pMACaddr[5]);
+ setenv("ethaddr", nid);
+ }
+ if (getenv("ethaddr")) {
+ SetupMacAddr(SrcAddr);
+ }
+#endif /* CONFIG_COMMANDS & CFG_CMD_NET */
+#endif /* BFIN_BOOT_MODE == BF537_BYPASS_BOOT */
+
+#if defined(CONFIG_BFIN_IDE)
+#if defined(CONFIG_BFIN_TRUE_IDE)
+ /* Enable ATASEL when in True IDE mode */
+ printf("Using CF True IDE Mode\n");
+ cf_outb(0, (unsigned char *)CONFIG_CF_ATASEL_ENA);
+ udelay(1000);
+#elif defined(CONFIG_BFIN_CF_IDE)
+ /* Disable ATASEL when we're in Common Memory Mode */
+ printf("Using CF Common Memory Mode\n");
+ cf_outb(0, (unsigned char *)CONFIG_CF_ATASEL_DIS);
+ udelay(1000);
+#elif defined(CONFIG_BFIN_HDD_IDE)
+ printf("Using HDD IDE Mode\n");
+#endif
ide_init();
-#endif
+#endif /* CONFIG_BFIN_IDE */
adm_init();
SetupMacAddr(nid);
set_bootcmd_args(); /* Modify arguments that are passed to OS */
-
- return 0;
-}
-#endif
+ return 0;
+}
+#endif /* CONFIG_MISC_INIT_R */
#if (CONFIG_COMMANDS & CFG_CMD_NAND)
#include <linux/mtd/nand.h>
@@ -203,25 +220,57 @@
#endif
#ifdef CONFIG_POST
+#if (BFIN_BOOT_MODE != BF537_BYPASS_BOOT)
/* Using sw10-PF5 as the hotkey */
int post_hotkeys_pressed(void)
{
+ return 0;
+}
+#else
+/* Using sw10-PF5 as the hotkey */
+int post_hotkeys_pressed(void)
+{
+ int delay = 3;
+ int i;
+ unsigned short value;
+
+ *pPORTF_FER &= ~PF5;
+ *pPORTFIO_DIR &= ~PF5;
+ *pPORTFIO_INEN |= PF5;
+
+ printf("########Press SW10 to enter Memory POST########: %2d ", delay);
+ while (delay--) {
+ for (i = 0; i < 100; i++) {
+ value = *pPORTFIO & PF5;
+ if (value != 0) {
+ break;
+ }
+ udelay(10000);
+ }
+ printf("\b\b\b%2d ", delay);
+ }
+ printf("\b\b\b 0");
+ printf("\n");
+ if (value == 0)
return 0;
-}
+ else {
+ printf("Hotkey has been pressed, Enter POST . . . . . .\n");
+ return 1;
+ }
+}
+#endif
#endif
#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER)
void post_word_store(ulong a)
{
- volatile ulong *save_addr =
- (volatile ulong *)POST_WORD_ADDR;
+ volatile ulong *save_addr = (volatile ulong *)POST_WORD_ADDR;
*save_addr = a;
}
ulong post_word_load(void)
{
- volatile ulong *save_addr =
- (volatile ulong *)POST_WORD_ADDR;
+ volatile ulong *save_addr = (volatile ulong *)POST_WORD_ADDR;
return *save_addr;
}
#endif
@@ -235,44 +284,50 @@
#define BLOCK_SIZE 0x10000
#define VERIFY_ADDR 0x2000000
extern int erase_block_flash(int);
-extern int write_data(long lStart, long lCount, uchar *pnData);
+extern int write_data(long lStart, long lCount, uchar * pnData);
int flash_post_test(int flags)
{
unsigned short *pbuf, *temp;
- int offset,n,i;
+ int offset, n, i;
int value = 0;
int result = 0;
printf("\n");
pbuf = (unsigned short *)VERIFY_ADDR;
temp = pbuf;
- for(n=FLASH_START_POST_BLOCK;n<FLASH_END_POST_BLOCK;n++){
- offset = (n - 7)*BLOCK_SIZE;
+ for (n = FLASH_START_POST_BLOCK; n < FLASH_END_POST_BLOCK; n++) {
+ offset = (n - 7) * BLOCK_SIZE;
printf("--------Erase block:%2d..", n);
erase_block_flash(n);
printf("OK\r");
printf("--------Program block:%2d...", n);
- write_data(CFG_FLASH_BASE+offset, BLOCK_SIZE, pbuf);
+ write_data(CFG_FLASH_BASE + offset, BLOCK_SIZE, pbuf);
printf("OK\r");
printf("--------Verify block:%2d...", n);
- for(i=0;i< BLOCK_SIZE;i+=2){
- if( *(unsigned short *)(CFG_FLASH_BASE + offset +i)!=*temp++){
+ for (i = 0; i < BLOCK_SIZE; i += 2) {
+ if (*(unsigned short *)(CFG_FLASH_BASE + offset + i) !=
+ *temp++) {
value = 1;
result = 1;
}
}
- if(value)
+ if (value)
printf("failed\n");
else
- printf("OK %3d%%\r",(int)((n+1-FLASH_START_POST_BLOCK)*100/(FLASH_END_POST_BLOCK - FLASH_START_POST_BLOCK)));
+ printf("OK %3d%%\r",
+ (int)(
+ (n + 1 -
+ FLASH_START_POST_BLOCK) *
+ 100 / (FLASH_END_POST_BLOCK -
+ FLASH_START_POST_BLOCK)));
temp = pbuf;
value = 0;
}
- printf("\n");
- if(result)
+ printf("\n");
+ if (result)
return -1;
else
- return 0;
+ return 0;
}
/****************************************************
@@ -282,33 +337,33 @@
****************************************************/
int led_post_test(int flags)
{
- *pPORTF_FER &= ~(PF6|PF7|PF8|PF9|PF10|PF11);
- *pPORTFIO_DIR |= PF6|PF7|PF8|PF9|PF10|PF11;
- *pPORTFIO_INEN &= ~(PF6|PF7|PF8|PF9|PF10|PF11);
- *pPORTFIO &= ~(PF6|PF7|PF8|PF9|PF10|PF11);
+ *pPORTF_FER &= ~(PF6 | PF7 | PF8 | PF9 | PF10 | PF11);
+ *pPORTFIO_DIR |= PF6 | PF7 | PF8 | PF9 | PF10 | PF11;
+ *pPORTFIO_INEN &= ~(PF6 | PF7 | PF8 | PF9 | PF10 | PF11);
+ *pPORTFIO &= ~(PF6 | PF7 | PF8 | PF9 | PF10 | PF11);
udelay(1000000);
printf("LED1 on");
- *pPORTFIO |= PF6;
+ *pPORTFIO |= PF6;
udelay(1000000);
printf("\b\b\b\b\b\b\b");
printf("LED2 on");
- *pPORTFIO |= PF7;
+ *pPORTFIO |= PF7;
udelay(1000000);
printf("\b\b\b\b\b\b\b");
printf("LED3 on");
- *pPORTFIO |= PF8;
- udelay(1000000);
+ *pPORTFIO |= PF8;
+ udelay(1000000);
printf("\b\b\b\b\b\b\b");
printf("LED4 on");
- *pPORTFIO |= PF9;
+ *pPORTFIO |= PF9;
udelay(1000000);
printf("\b\b\b\b\b\b\b");
printf("LED5 on");
- *pPORTFIO |= PF10;
- udelay(1000000);
+ *pPORTFIO |= PF10;
+ udelay(1000000);
printf("\b\b\b\b\b\b\b");
printf("lED6 on");
- *pPORTFIO |= PF11;
+ *pPORTFIO |= PF11;
printf("\b\b\b\b\b\b\b ");
return 0;
}
@@ -319,88 +374,88 @@
************************************************/
int button_post_test(int flags)
{
- int i,delay = 5;
- unsigned short value = 0;
+ int i, delay = 5;
+ unsigned short value = 0;
int result = 0;
- *pPORTF_FER &= ~(PF5|PF4|PF3|PF2);
- *pPORTFIO_DIR &= ~(PF5|PF4|PF3|PF2);
- *pPORTFIO_INEN|= (PF5|PF4|PF3|PF2);
-
- printf("\n--------Press SW10: %2d ",delay);
- while(delay--){
- for(i=0;i<100;i++){
- value = *pPORTFIO & PF5;
- if(value != 0){
- break;
- }
- udelay(10000);
- }
- printf("\b\b\b%2d ",delay);
- }
- if(value!=0)
+ *pPORTF_FER &= ~(PF5 | PF4 | PF3 | PF2);
+ *pPORTFIO_DIR &= ~(PF5 | PF4 | PF3 | PF2);
[... 969 lines stripped ...]
More information about the aadk-commits
mailing list