Code cleanup.
This commit is contained in:
@@ -24,7 +24,7 @@
|
||||
#include <common.h>
|
||||
#include <asm/processor.h>
|
||||
|
||||
#undef DEBUG_FLASH
|
||||
#undef DEBUG_FLASH
|
||||
/*
|
||||
* This file implements a Common Flash Interface (CFI) driver for ppcboot.
|
||||
* The width of the port and the width of the chips are determined at initialization.
|
||||
@@ -85,12 +85,8 @@
|
||||
#define FLASH_OFFSET_USER_PROTECTION 0x85
|
||||
#define FLASH_OFFSET_INTEL_PROTECTION 0x81
|
||||
|
||||
|
||||
#define FLASH_MAN_CFI 0x01000000
|
||||
|
||||
|
||||
|
||||
|
||||
typedef union {
|
||||
unsigned char c;
|
||||
unsigned short w;
|
||||
@@ -107,13 +103,10 @@ typedef union {
|
||||
|
||||
flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
* Functions
|
||||
*/
|
||||
|
||||
|
||||
|
||||
static void flash_add_byte(flash_info_t *info, cfiword_t * cword, uchar c);
|
||||
static void flash_make_cmd(flash_info_t * info, uchar cmd, void * cmdbuf);
|
||||
static void flash_write_cmd(flash_info_t * info, int sect, uchar offset, uchar cmd);
|
||||
@@ -249,7 +242,7 @@ int flash_erase (flash_info_t *info, int s_first, int s_last)
|
||||
flash_write_cmd(info, sect, 0, FLASH_CMD_CLEAR_STATUS);
|
||||
flash_write_cmd(info, sect, 0, FLASH_CMD_BLOCK_ERASE);
|
||||
flash_write_cmd(info, sect, 0, FLASH_CMD_ERASE_CONFIRM);
|
||||
|
||||
|
||||
if(flash_full_status_check(info, sect, info->erase_blk_tout, "erase")) {
|
||||
rcode = 1;
|
||||
} else
|
||||
@@ -277,7 +270,7 @@ void flash_print_info (flash_info_t *info)
|
||||
info->size >> 20, info->sector_count);
|
||||
printf(" Erase timeout %ld ms, write timeout %ld ms, buffer write timeout %ld ms, buffer size %d\n",
|
||||
info->erase_blk_tout, info->write_tout, info->buffer_write_tout, info->buffer_size);
|
||||
|
||||
|
||||
printf (" Sector Start Addresses:");
|
||||
for (i=0; i<info->sector_count; ++i) {
|
||||
#ifdef CFG_FLASH_EMPTY_INFO
|
||||
@@ -286,28 +279,28 @@ void flash_print_info (flash_info_t *info)
|
||||
int erased;
|
||||
volatile unsigned long *flash;
|
||||
|
||||
/*
|
||||
* Check if whole sector is erased
|
||||
*/
|
||||
if (i != (info->sector_count-1))
|
||||
size = info->start[i+1] - info->start[i];
|
||||
else
|
||||
size = info->start[0] + info->size - info->start[i];
|
||||
erased = 1;
|
||||
flash = (volatile unsigned long *)info->start[i];
|
||||
size = size >> 2; /* divide by 4 for longword access */
|
||||
for (k=0; k<size; k++)
|
||||
{
|
||||
if (*flash++ != 0xffffffff)
|
||||
{
|
||||
erased = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Check if whole sector is erased
|
||||
*/
|
||||
if (i != (info->sector_count-1))
|
||||
size = info->start[i+1] - info->start[i];
|
||||
else
|
||||
size = info->start[0] + info->size - info->start[i];
|
||||
erased = 1;
|
||||
flash = (volatile unsigned long *)info->start[i];
|
||||
size = size >> 2; /* divide by 4 for longword access */
|
||||
for (k=0; k<size; k++)
|
||||
{
|
||||
if (*flash++ != 0xffffffff)
|
||||
{
|
||||
erased = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ((i % 5) == 0)
|
||||
printf ("\n ");
|
||||
/* print empty and read-only info */
|
||||
/* print empty and read-only info */
|
||||
printf (" %08lX%s%s",
|
||||
info->start[i],
|
||||
erased ? " E" : " ",
|
||||
@@ -414,7 +407,7 @@ int flash_real_protect(flash_info_t *info, long sector, int prot)
|
||||
else
|
||||
flash_write_cmd(info, sector, 0, FLASH_CMD_PROTECT_CLEAR);
|
||||
|
||||
if((retcode = flash_full_status_check(info, sector, info->erase_blk_tout,
|
||||
if((retcode = flash_full_status_check(info, sector, info->erase_blk_tout,
|
||||
prot?"protect":"unprotect")) == 0) {
|
||||
|
||||
info->protect[sector] = prot;
|
||||
@@ -464,7 +457,7 @@ static int flash_full_status_check(flash_info_t * info, ulong sector, ulong tout
|
||||
printf("Command Sequence Error.\n");
|
||||
} else if(flash_isset(info, sector, 0, FLASH_STATUS_ECLBS)){
|
||||
printf("Block Erase Error.\n");
|
||||
retcode = ERR_NOT_ERASED;
|
||||
retcode = ERR_NOT_ERASED;
|
||||
} else if (flash_isset(info, sector, 0, FLASH_STATUS_PSLBS)) {
|
||||
printf("Locking Error\n");
|
||||
}
|
||||
@@ -733,7 +726,7 @@ static int find_sector(flash_info_t *info, ulong addr)
|
||||
{
|
||||
int sector;
|
||||
for(sector = info->sector_count - 1; sector >= 0; sector--) {
|
||||
if(addr >= info->start[sector])
|
||||
if(addr >= info->start[sector])
|
||||
break;
|
||||
}
|
||||
return sector;
|
||||
@@ -741,7 +734,7 @@ static int find_sector(flash_info_t *info, ulong addr)
|
||||
|
||||
static int flash_write_cfibuffer(flash_info_t * info, ulong dest, uchar * cp, int len)
|
||||
{
|
||||
|
||||
|
||||
int sector;
|
||||
int cnt;
|
||||
int retcode;
|
||||
@@ -789,8 +782,8 @@ static int flash_write_cfibuffer(flash_info_t * info, ulong dest, uchar * cp, in
|
||||
flash_write_cmd(info, sector, 0, FLASH_CMD_WRITE_BUFFER_CONFIRM);
|
||||
retcode = flash_full_status_check(info, sector, info->buffer_write_tout,
|
||||
"buffer write");
|
||||
}
|
||||
}
|
||||
flash_write_cmd(info, sector, 0, FLASH_CMD_CLEAR_STATUS);
|
||||
return retcode;
|
||||
}
|
||||
}
|
||||
#endif /* CFG_USE_FLASH_BUFFER_WRITE */
|
||||
|
||||
@@ -136,7 +136,7 @@ void lcd_init(uchar *lcd_reg, uchar *lcd_mem, S1D_REGS *regs, int reg_count,
|
||||
}
|
||||
s1dValue = regs[i].Value;
|
||||
lcd_reg[s1dReg] = s1dValue;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Decompress bmp image
|
||||
|
||||
@@ -68,4 +68,3 @@ typedef struct /**** BMP file info structure ****/
|
||||
unsigned int biClrUsed; /* Number of colors used */
|
||||
unsigned int biClrImportant; /* Number of important colors */
|
||||
} BITMAPINFOHEADER;
|
||||
|
||||
|
||||
@@ -123,4 +123,3 @@ static S1D_REGS regs_13806_1024_768_8bpp[] =
|
||||
{0x01F4,0x00}, /* CPU-to-Memory Access Watchdog Timer Register */
|
||||
{0x01FC,0x01}, /* Display Mode Register */
|
||||
};
|
||||
|
||||
|
||||
@@ -123,4 +123,3 @@ static S1D_REGS regs_13806_320_240_4bpp[] =
|
||||
{0x01F4,0x00}, /* CPU-to-Memory Access Watchdog Timer Register */
|
||||
{0x01FC,0x01}, /* Display Mode Register */
|
||||
};
|
||||
|
||||
|
||||
@@ -123,4 +123,3 @@ static S1D_REGS regs_13806_640_480_16bpp[] =
|
||||
{0x01F4,0x00}, /* CPU-to-Memory Access Watchdog Timer Register */
|
||||
{0x01FC,0x01}, /* Display Mode Register */
|
||||
};
|
||||
|
||||
|
||||
@@ -123,4 +123,3 @@ static S1D_REGS regs_13806_640_320_16bpp[] =
|
||||
{0x01F4,0x00}, /* CPU-to-Memory Access Watchdog Timer Register */
|
||||
{0x01FC,0x01}, /* Display Mode Register */
|
||||
};
|
||||
|
||||
|
||||
@@ -559,11 +559,11 @@ void ide_set_reset(int on)
|
||||
#ifdef CONFIG_CPCI405AB
|
||||
|
||||
#define ONE_WIRE_CLEAR (*(volatile unsigned short *)(CFG_FPGA_BASE_ADDR + CFG_FPGA_MODE) \
|
||||
|= CFG_FPGA_MODE_1WIRE_DIR)
|
||||
|= CFG_FPGA_MODE_1WIRE_DIR)
|
||||
#define ONE_WIRE_SET (*(volatile unsigned short *)(CFG_FPGA_BASE_ADDR + CFG_FPGA_MODE) \
|
||||
&= ~CFG_FPGA_MODE_1WIRE_DIR)
|
||||
&= ~CFG_FPGA_MODE_1WIRE_DIR)
|
||||
#define ONE_WIRE_GET (*(volatile unsigned short *)(CFG_FPGA_BASE_ADDR + CFG_FPGA_STATUS) \
|
||||
& CFG_FPGA_MODE_1WIRE)
|
||||
& CFG_FPGA_MODE_1WIRE)
|
||||
|
||||
/*
|
||||
* Generate a 1-wire reset, return 1 if no presence detect was found,
|
||||
|
||||
@@ -72,28 +72,28 @@ static void i2c_init (int speed, int slaveaddr)
|
||||
/* Setup bus */
|
||||
/* gtI2cReset */
|
||||
GT_REG_WRITE (I2C_SOFT_RESET, 0);
|
||||
asm(" sync");
|
||||
asm(" sync");
|
||||
GT_REG_WRITE (I2C_CONTROL, 0);
|
||||
asm(" sync");
|
||||
asm(" sync");
|
||||
|
||||
DP (puts ("set baudrate\n"));
|
||||
|
||||
GT_REG_WRITE (I2C_STATUS_BAUDE_RATE, (actualM << 3) | actualN);
|
||||
asm(" sync");
|
||||
asm(" sync");
|
||||
|
||||
DP (puts ("udelay...\n"));
|
||||
|
||||
udelay (I2C_DELAY);
|
||||
|
||||
GT_REG_WRITE (I2C_CONTROL, (0x1 << 2) | (0x1 << 6));
|
||||
asm(" sync");
|
||||
asm(" sync");
|
||||
}
|
||||
|
||||
|
||||
static uchar i2c_select_device (uchar dev_addr, uchar read, int ten_bit)
|
||||
{
|
||||
unsigned int status, data, bits = 7;
|
||||
unsigned int control;
|
||||
unsigned int control;
|
||||
int count = 0;
|
||||
|
||||
DP (puts ("i2c_select_device\n"));
|
||||
@@ -107,19 +107,19 @@ static uchar i2c_select_device (uchar dev_addr, uchar read, int ten_bit)
|
||||
GT_REG_READ (I2C_CONTROL, &control);
|
||||
control |= (0x1 << 2);
|
||||
GT_REG_WRITE (I2C_CONTROL, control);
|
||||
asm(" sync");
|
||||
asm(" sync");
|
||||
|
||||
GT_REG_READ (I2C_CONTROL, &control);
|
||||
control |= (0x1 << 5); /* generate the I2C_START_BIT */
|
||||
GT_REG_WRITE (I2C_CONTROL, control);
|
||||
asm(" sync");
|
||||
asm(" sync");
|
||||
RESET_REG_BITS (I2C_CONTROL, (0x01 << 3));
|
||||
asm(" sync");
|
||||
asm(" sync");
|
||||
|
||||
GT_REG_READ (I2C_CONTROL, &status);
|
||||
while ((status & 0x08) != 0x08) {
|
||||
GT_REG_READ (I2C_CONTROL, &status);
|
||||
}
|
||||
GT_REG_READ (I2C_CONTROL, &status);
|
||||
}
|
||||
|
||||
|
||||
count = 0;
|
||||
@@ -128,7 +128,7 @@ static uchar i2c_select_device (uchar dev_addr, uchar read, int ten_bit)
|
||||
while (((status & 0xff) != 0x08) && ((status & 0xff) != 0x10)){
|
||||
if (count > 200) {
|
||||
#ifdef DEBUG_I2C
|
||||
printf ("Failed to set startbit: 0x%02x\n", status);
|
||||
printf ("Failed to set startbit: 0x%02x\n", status);
|
||||
#endif
|
||||
GT_REG_WRITE (I2C_CONTROL, (0x1 << 4)); /*stop */
|
||||
asm(" sync");
|
||||
@@ -146,21 +146,21 @@ static uchar i2c_select_device (uchar dev_addr, uchar read, int ten_bit)
|
||||
/* set the read bit */
|
||||
data |= read;
|
||||
GT_REG_WRITE (I2C_DATA, data);
|
||||
asm(" sync");
|
||||
asm(" sync");
|
||||
RESET_REG_BITS (I2C_CONTROL, BIT3);
|
||||
asm(" sync");
|
||||
asm(" sync");
|
||||
|
||||
GT_REG_READ (I2C_CONTROL, &status);
|
||||
while ((status & 0x08) != 0x08) {
|
||||
GT_REG_READ (I2C_CONTROL, &status);
|
||||
}
|
||||
GT_REG_READ (I2C_CONTROL, &status);
|
||||
}
|
||||
|
||||
GT_REG_READ (I2C_STATUS_BAUDE_RATE, &status);
|
||||
count = 0;
|
||||
while (((status & 0xff) != 0x40) && ((status & 0xff) != 0x18)) {
|
||||
if (count > 200) {
|
||||
#ifdef DEBUG_I2C
|
||||
printf ("Failed to write address: 0x%02x\n", status);
|
||||
printf ("Failed to write address: 0x%02x\n", status);
|
||||
#endif
|
||||
GT_REG_WRITE (I2C_CONTROL, (0x1 << 4)); /*stop */
|
||||
return (status);
|
||||
@@ -195,15 +195,15 @@ static uchar i2c_get_data (uchar * return_data, int len)
|
||||
|
||||
GT_REG_READ (I2C_CONTROL, &status);
|
||||
while ((status & 0x08) != 0x08) {
|
||||
GT_REG_READ (I2C_CONTROL, &status);
|
||||
}
|
||||
GT_REG_READ (I2C_CONTROL, &status);
|
||||
}
|
||||
|
||||
GT_REG_READ (I2C_STATUS_BAUDE_RATE, &status);
|
||||
count++;
|
||||
while ((status & 0xff) != 0x50) {
|
||||
if (count > 20) {
|
||||
#ifdef DEBUG_I2C
|
||||
printf ("Failed to get data len status: 0x%02x\n", status);
|
||||
printf ("Failed to get data len status: 0x%02x\n", status);
|
||||
#endif
|
||||
GT_REG_WRITE (I2C_CONTROL, (0x1 << 4)); /*stop */
|
||||
asm(" sync");
|
||||
@@ -219,13 +219,13 @@ static uchar i2c_get_data (uchar * return_data, int len)
|
||||
|
||||
}
|
||||
RESET_REG_BITS (I2C_CONTROL, BIT2 | BIT3);
|
||||
asm(" sync");
|
||||
asm(" sync");
|
||||
count = 0;
|
||||
|
||||
GT_REG_READ (I2C_CONTROL, &status);
|
||||
while ((status & 0x08) != 0x08) {
|
||||
GT_REG_READ (I2C_CONTROL, &status);
|
||||
}
|
||||
GT_REG_READ (I2C_CONTROL, &status);
|
||||
}
|
||||
|
||||
while ((status & 0xff) != 0x58) {
|
||||
if (count > 2000) {
|
||||
@@ -236,9 +236,9 @@ static uchar i2c_get_data (uchar * return_data, int len)
|
||||
count++;
|
||||
}
|
||||
GT_REG_WRITE (I2C_CONTROL, (0x1 << 4)); /* stop */
|
||||
asm(" sync");
|
||||
asm(" sync");
|
||||
RESET_REG_BITS (I2C_CONTROL, (0x1 << 3));
|
||||
asm(" sync");
|
||||
asm(" sync");
|
||||
|
||||
return (0);
|
||||
}
|
||||
@@ -254,7 +254,7 @@ static uchar i2c_write_data (unsigned int *data, int len)
|
||||
DP (puts ("i2c_write_data\n"));
|
||||
|
||||
while (len) {
|
||||
count = 0;
|
||||
count = 0;
|
||||
temp = (unsigned int) (*temp_ptr);
|
||||
GT_REG_WRITE (I2C_DATA, temp);
|
||||
asm(" sync");
|
||||
@@ -264,7 +264,7 @@ static uchar i2c_write_data (unsigned int *data, int len)
|
||||
GT_REG_READ (I2C_CONTROL, &status);
|
||||
while ((status & 0x08) != 0x08) {
|
||||
GT_REG_READ (I2C_CONTROL, &status);
|
||||
}
|
||||
}
|
||||
|
||||
GT_REG_READ (I2C_STATUS_BAUDE_RATE, &status);
|
||||
count++;
|
||||
@@ -294,7 +294,7 @@ static uchar i2c_write_byte (unsigned char *data, int len)
|
||||
DP (puts ("i2c_write_byte\n"));
|
||||
|
||||
while (len) {
|
||||
count = 0;
|
||||
count = 0;
|
||||
/* Set and assert the data */
|
||||
temp = *temp_ptr;
|
||||
GT_REG_WRITE (I2C_DATA, temp);
|
||||
@@ -306,7 +306,7 @@ static uchar i2c_write_byte (unsigned char *data, int len)
|
||||
GT_REG_READ (I2C_CONTROL, &status);
|
||||
while ((status & 0x08) != 0x08) {
|
||||
GT_REG_READ (I2C_CONTROL, &status);
|
||||
}
|
||||
}
|
||||
|
||||
GT_REG_READ (I2C_STATUS_BAUDE_RATE, &status);
|
||||
count++;
|
||||
@@ -419,7 +419,7 @@ i2c_read (uchar dev_addr, unsigned int offset, int alen, uchar * data,
|
||||
void i2c_stop (void)
|
||||
{
|
||||
GT_REG_WRITE (I2C_CONTROL, (0x1 << 4));
|
||||
asm(" sync");
|
||||
asm(" sync");
|
||||
}
|
||||
|
||||
|
||||
@@ -441,7 +441,7 @@ i2c_write (uchar dev_addr, unsigned int offset, int alen, uchar * data,
|
||||
status);
|
||||
#endif
|
||||
return status;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
status = i2c_write_byte (data, len); /* write the data */
|
||||
@@ -450,7 +450,7 @@ i2c_write (uchar dev_addr, unsigned int offset, int alen, uchar * data,
|
||||
printf ("Data not written: 0x%02x\n", status);
|
||||
#endif
|
||||
return status;
|
||||
}
|
||||
}
|
||||
/* issue a stop bit */
|
||||
i2c_stop ();
|
||||
return 0;
|
||||
|
||||
@@ -32,41 +32,34 @@
|
||||
|
||||
extern ulong ide_bus_offset[CFG_IDE_MAXBUS];
|
||||
|
||||
int ide_preinit
|
||||
(
|
||||
void
|
||||
)
|
||||
{
|
||||
int status;
|
||||
pci_dev_t devbusfn;
|
||||
int l;
|
||||
int ide_preinit (void)
|
||||
{
|
||||
int status;
|
||||
pci_dev_t devbusfn;
|
||||
int l;
|
||||
|
||||
status = 1;
|
||||
for(l=0;l<CFG_IDE_MAXBUS;l++)
|
||||
{
|
||||
ide_bus_offset[l] = -ATA_STATUS;
|
||||
}
|
||||
devbusfn = pci_find_device(0x1103, 0x0004, 0);
|
||||
if (devbusfn != -1)
|
||||
{
|
||||
status = 0;
|
||||
status = 1;
|
||||
for (l = 0; l < CFG_IDE_MAXBUS; l++) {
|
||||
ide_bus_offset[l] = -ATA_STATUS;
|
||||
}
|
||||
devbusfn = pci_find_device (0x1103, 0x0004, 0);
|
||||
if (devbusfn != -1) {
|
||||
status = 0;
|
||||
|
||||
pci_read_config_dword(devbusfn, PCI_BASE_ADDRESS_0, (u32 *)&ide_bus_offset[0]);
|
||||
ide_bus_offset[0] &= 0xfffffffe;
|
||||
ide_bus_offset[0] += CFG_PCI0_IO_SPACE;
|
||||
pci_read_config_dword(devbusfn, PCI_BASE_ADDRESS_2, (u32 *)&ide_bus_offset[1]);
|
||||
ide_bus_offset[1] &= 0xfffffffe;
|
||||
ide_bus_offset[1] += CFG_PCI0_IO_SPACE;
|
||||
}
|
||||
return(status);
|
||||
}
|
||||
pci_read_config_dword (devbusfn, PCI_BASE_ADDRESS_0,
|
||||
(u32 *) & ide_bus_offset[0]);
|
||||
ide_bus_offset[0] &= 0xfffffffe;
|
||||
ide_bus_offset[0] += CFG_PCI0_IO_SPACE;
|
||||
pci_read_config_dword (devbusfn, PCI_BASE_ADDRESS_2,
|
||||
(u32 *) & ide_bus_offset[1]);
|
||||
ide_bus_offset[1] &= 0xfffffffe;
|
||||
ide_bus_offset[1] += CFG_PCI0_IO_SPACE;
|
||||
}
|
||||
return (status);
|
||||
}
|
||||
|
||||
void ide_set_reset
|
||||
(
|
||||
int flag
|
||||
)
|
||||
{
|
||||
return;
|
||||
}
|
||||
void ide_set_reset (int flag) {
|
||||
return;
|
||||
}
|
||||
|
||||
#endif /* of CONFIG_CMDS_IDE */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* (C) Copyright 2003
|
||||
* Ingo Assmus <ingo.assmus@keymile.com>
|
||||
* Ingo Assmus <ingo.assmus@keymile.com>
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
/* This tells PPCBoot that the config options are compiled in */
|
||||
/* #undef ENV_IS_EMBEDDED */
|
||||
/* Don't touch this! PPCBOOT figures this out based on other
|
||||
/* Don't touch this! PPCBOOT figures this out based on other
|
||||
* magic. */
|
||||
|
||||
/* Uncomment and define any of the below options */
|
||||
|
||||
@@ -158,13 +158,13 @@ board_asm_init:
|
||||
rlwinm r3, r3, 16, 16, 31
|
||||
lis r4, CFG_GT_REGS@h
|
||||
ori r4, r4, CFG_GT_REGS@l
|
||||
li r5, INTEGRATED_SRAM_BASE_ADDR
|
||||
stwbrx r3, r5, r4
|
||||
li r5, INTEGRATED_SRAM_BASE_ADDR
|
||||
stwbrx r3, r5, r4
|
||||
|
||||
2: lwbrx r6, r5, r4
|
||||
cmp cr0, r3, r6
|
||||
bne 2b
|
||||
|
||||
bne 2b
|
||||
|
||||
/* done! */
|
||||
blr
|
||||
#endif
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* modified for marvell db64360 eval board by
|
||||
* Ingo Assmus <ingo.assmus@keymile.com>
|
||||
*
|
||||
*
|
||||
* modified for cpci750 board by
|
||||
* Reinhard Arlt <reinhard.arlt@esd-electronics.com>
|
||||
*
|
||||
|
||||
@@ -278,13 +278,13 @@ int misc_init_r (void)
|
||||
udelay(1000);
|
||||
out32(GPIO0_OR, in32(GPIO0_OR) | CFG_TOUCH_RST);
|
||||
|
||||
/*
|
||||
* Enable power on PS/2 interface (with reset)
|
||||
*/
|
||||
*fpga_ctrl &= ~(CFG_FPGA_CTRL_PS2_PWR);
|
||||
for (i=0;i<500;i++)
|
||||
udelay(1000);
|
||||
*fpga_ctrl |= (CFG_FPGA_CTRL_PS2_PWR);
|
||||
/*
|
||||
* Enable power on PS/2 interface (with reset)
|
||||
*/
|
||||
*fpga_ctrl &= ~(CFG_FPGA_CTRL_PS2_PWR);
|
||||
for (i=0;i<500;i++)
|
||||
udelay(1000);
|
||||
*fpga_ctrl |= (CFG_FPGA_CTRL_PS2_PWR);
|
||||
|
||||
/*
|
||||
* Get contrast value from environment variable
|
||||
|
||||
@@ -86,7 +86,7 @@ int misc_init_r (void)
|
||||
*duart2_mcr = 0x08;
|
||||
*duart3_mcr = 0x08;
|
||||
|
||||
/*
|
||||
/*
|
||||
* Set RS232/RS422 control (RS232 = high on GPIO)
|
||||
*/
|
||||
val = in32(GPIO0_OR);
|
||||
|
||||
@@ -293,7 +293,7 @@ int misc_init_r (void)
|
||||
*/
|
||||
#define PCI0_BRDGOPT1 0x4a
|
||||
pci_write_config_word(PCIDEVID_405GP, PCI0_BRDGOPT1, 0x3f20);
|
||||
// pci_write_config_word(PCIDEVID_405GP, PCI0_BRDGOPT1, 0x3f60);
|
||||
/* pci_write_config_word(PCIDEVID_405GP, PCI0_BRDGOPT1, 0x3f60); */
|
||||
|
||||
#define plb0_acr 0x87
|
||||
/*
|
||||
@@ -303,10 +303,10 @@ int misc_init_r (void)
|
||||
|
||||
#if 0 /* test-only */
|
||||
printf("CCR0=%08x\n", mfspr(ccr0)); /* test-only */
|
||||
// mtspr(ccr0, (mfspr(ccr0) & 0xff8fffff) | 0x00100000);
|
||||
/* mtspr(ccr0, (mfspr(ccr0) & 0xff8fffff) | 0x00100000); */
|
||||
mtspr(ccr0, (mfspr(ccr0) & 0xff8fffff) | 0x00000000);
|
||||
#endif
|
||||
// printf("CCR0=%08x\n", mfspr(ccr0)); /* test-only */
|
||||
/* printf("CCR0=%08x\n", mfspr(ccr0)); /* test-only */ */
|
||||
#endif
|
||||
|
||||
free(dst);
|
||||
|
||||
@@ -50,186 +50,174 @@
|
||||
write_without_sync:
|
||||
/*
|
||||
* Write one values to host via pci busmastering
|
||||
* ptr = 0xc0000000 -> 0x01000000 (PCI)
|
||||
* *ptr = 0x01234567;
|
||||
* ptr = 0xc0000000 -> 0x01000000 (PCI)
|
||||
* *ptr = 0x01234567;
|
||||
*/
|
||||
addi r31,0,0
|
||||
lis r31,0xc000
|
||||
addi r31,0,0
|
||||
lis r31,0xc000
|
||||
|
||||
start1:
|
||||
lis r0,0x0123
|
||||
ori r0,r0,0x4567
|
||||
stw r0,0(r31)
|
||||
lis r0,0x0123
|
||||
ori r0,r0,0x4567
|
||||
stw r0,0(r31)
|
||||
|
||||
/*
|
||||
* Read one value back
|
||||
* ptr = (volatile unsigned long *)addr;
|
||||
* val = *ptr;
|
||||
* ptr = (volatile unsigned long *)addr;
|
||||
* val = *ptr;
|
||||
*/
|
||||
|
||||
lwz r0,0(r31)
|
||||
lwz r0,0(r31)
|
||||
|
||||
/*
|
||||
* One pci config write
|
||||
* ibmPciConfigWrite(0x2e, 2, 0x1234);
|
||||
* ibmPciConfigWrite(0x2e, 2, 0x1234);
|
||||
*/
|
||||
/* subsystem id */
|
||||
|
||||
li r4,0x002C
|
||||
oris r4,r4,0x8000
|
||||
lis r3,0xEEC0
|
||||
stwbrx r4,0,r3
|
||||
|
||||
li r5,0x1234
|
||||
ori r3,r3,0x4
|
||||
stwbrx r5,0,r3
|
||||
|
||||
li r4,0x002C
|
||||
oris r4,r4,0x8000
|
||||
lis r3,0xEEC0
|
||||
stwbrx r4,0,r3
|
||||
|
||||
li r5,0x1234
|
||||
ori r3,r3,0x4
|
||||
stwbrx r5,0,r3
|
||||
|
||||
b start1
|
||||
b start1
|
||||
|
||||
blr /* never reached !!!! */
|
||||
|
||||
|
||||
|
||||
.globl write_with_sync
|
||||
write_with_sync:
|
||||
/*
|
||||
* Write one values to host via pci busmastering
|
||||
* ptr = 0xc0000000 -> 0x01000000 (PCI)
|
||||
* *ptr = 0x01234567;
|
||||
* ptr = 0xc0000000 -> 0x01000000 (PCI)
|
||||
* *ptr = 0x01234567;
|
||||
*/
|
||||
addi r31,0,0
|
||||
lis r31,0xc000
|
||||
addi r31,0,0
|
||||
lis r31,0xc000
|
||||
|
||||
start2:
|
||||
lis r0,0x0123
|
||||
ori r0,r0,0x4567
|
||||
stw r0,0(r31)
|
||||
lis r0,0x0123
|
||||
ori r0,r0,0x4567
|
||||
stw r0,0(r31)
|
||||
|
||||
/*
|
||||
* Read one value back
|
||||
* ptr = (volatile unsigned long *)addr;
|
||||
* val = *ptr;
|
||||
* ptr = (volatile unsigned long *)addr;
|
||||
* val = *ptr;
|
||||
*/
|
||||
|
||||
lwz r0,0(r31)
|
||||
lwz r0,0(r31)
|
||||
|
||||
/*
|
||||
* One pci config write
|
||||
* ibmPciConfigWrite(0x2e, 2, 0x1234);
|
||||
* ibmPciConfigWrite(0x2e, 2, 0x1234);
|
||||
*/
|
||||
/* subsystem id */
|
||||
|
||||
li r4,0x002C
|
||||
oris r4,r4,0x8000
|
||||
lis r3,0xEEC0
|
||||
stwbrx r4,0,r3
|
||||
sync
|
||||
|
||||
li r5,0x1234
|
||||
ori r3,r3,0x4
|
||||
stwbrx r5,0,r3
|
||||
sync
|
||||
|
||||
li r4,0x002C
|
||||
oris r4,r4,0x8000
|
||||
lis r3,0xEEC0
|
||||
stwbrx r4,0,r3
|
||||
sync
|
||||
|
||||
li r5,0x1234
|
||||
ori r3,r3,0x4
|
||||
stwbrx r5,0,r3
|
||||
sync
|
||||
|
||||
b start2
|
||||
b start2
|
||||
|
||||
blr /* never reached !!!! */
|
||||
|
||||
|
||||
.globl write_with_less_sync
|
||||
write_with_less_sync:
|
||||
/*
|
||||
* Write one values to host via pci busmastering
|
||||
* ptr = 0xc0000000 -> 0x01000000 (PCI)
|
||||
* *ptr = 0x01234567;
|
||||
* ptr = 0xc0000000 -> 0x01000000 (PCI)
|
||||
* *ptr = 0x01234567;
|
||||
*/
|
||||
addi r31,0,0
|
||||
lis r31,0xc000
|
||||
addi r31,0,0
|
||||
lis r31,0xc000
|
||||
|
||||
start2b:
|
||||
lis r0,0x0123
|
||||
ori r0,r0,0x4567
|
||||
stw r0,0(r31)
|
||||
lis r0,0x0123
|
||||
ori r0,r0,0x4567
|
||||
stw r0,0(r31)
|
||||
|
||||
/*
|
||||
* Read one value back
|
||||
* ptr = (volatile unsigned long *)addr;
|
||||
* val = *ptr;
|
||||
* ptr = (volatile unsigned long *)addr;
|
||||
* val = *ptr;
|
||||
*/
|
||||
|
||||
lwz r0,0(r31)
|
||||
lwz r0,0(r31)
|
||||
|
||||
/*
|
||||
* One pci config write
|
||||
* ibmPciConfigWrite(0x2e, 2, 0x1234);
|
||||
* ibmPciConfigWrite(0x2e, 2, 0x1234);
|
||||
*/
|
||||
/* subsystem id */
|
||||
|
||||
li r4,0x002C
|
||||
oris r4,r4,0x8000
|
||||
lis r3,0xEEC0
|
||||
stwbrx r4,0,r3
|
||||
sync
|
||||
|
||||
|
||||
li r4,0x002C
|
||||
oris r4,r4,0x8000
|
||||
lis r3,0xEEC0
|
||||
stwbrx r4,0,r3
|
||||
sync
|
||||
|
||||
li r5,0x1234
|
||||
ori r3,r3,0x4
|
||||
stwbrx r5,0,r3
|
||||
li r5,0x1234
|
||||
ori r3,r3,0x4
|
||||
stwbrx r5,0,r3
|
||||
/* sync */
|
||||
|
||||
b start2b
|
||||
b start2b
|
||||
|
||||
blr /* never reached !!!! */
|
||||
|
||||
|
||||
.globl write_with_more_sync
|
||||
write_with_more_sync:
|
||||
/*
|
||||
* Write one values to host via pci busmastering
|
||||
* ptr = 0xc0000000 -> 0x01000000 (PCI)
|
||||
* *ptr = 0x01234567;
|
||||
* ptr = 0xc0000000 -> 0x01000000 (PCI)
|
||||
* *ptr = 0x01234567;
|
||||
*/
|
||||
addi r31,0,0
|
||||
lis r31,0xc000
|
||||
addi r31,0,0
|
||||
lis r31,0xc000
|
||||
|
||||
start3:
|
||||
lis r0,0x0123
|
||||
ori r0,r0,0x4567
|
||||
stw r0,0(r31)
|
||||
sync
|
||||
lis r0,0x0123
|
||||
ori r0,r0,0x4567
|
||||
stw r0,0(r31)
|
||||
sync
|
||||
|
||||
/*
|
||||
* Read one value back
|
||||
* ptr = (volatile unsigned long *)addr;
|
||||
* val = *ptr;
|
||||
* ptr = (volatile unsigned long *)addr;
|
||||
* val = *ptr;
|
||||
*/
|
||||
|
||||
lwz r0,0(r31)
|
||||
sync
|
||||
lwz r0,0(r31)
|
||||
sync
|
||||
|
||||
/*
|
||||
* One pci config write
|
||||
* ibmPciConfigWrite(0x2e, 2, 0x1234);
|
||||
* ibmPciConfigWrite(0x2e, 2, 0x1234);
|
||||
*/
|
||||
/* subsystem id (PCIC0_SBSYSVID)*/
|
||||
|
||||
li r4,0x002C
|
||||
oris r4,r4,0x8000
|
||||
lis r3,0xEEC0
|
||||
stwbrx r4,0,r3
|
||||
sync
|
||||
|
||||
li r5,0x1234
|
||||
ori r3,r3,0x4
|
||||
stwbrx r5,0,r3
|
||||
sync
|
||||
|
||||
li r4,0x002C
|
||||
oris r4,r4,0x8000
|
||||
lis r3,0xEEC0
|
||||
stwbrx r4,0,r3
|
||||
sync
|
||||
|
||||
li r5,0x1234
|
||||
ori r3,r3,0x4
|
||||
stwbrx r5,0,r3
|
||||
sync
|
||||
|
||||
b start3
|
||||
b start3
|
||||
|
||||
blr /* never reached !!!! */
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
#include <common.h>
|
||||
#include <asm/processor.h>
|
||||
|
||||
#undef DEBUG_FLASH
|
||||
#undef DEBUG_FLASH
|
||||
/*
|
||||
* This file implements a Common Flash Interface (CFI) driver for ppcboot.
|
||||
* The width of the port and the width of the chips are determined at initialization.
|
||||
@@ -85,12 +85,8 @@
|
||||
#define FLASH_OFFSET_USER_PROTECTION 0x85
|
||||
#define FLASH_OFFSET_INTEL_PROTECTION 0x81
|
||||
|
||||
|
||||
#define FLASH_MAN_CFI 0x01000000
|
||||
|
||||
|
||||
|
||||
|
||||
typedef union {
|
||||
unsigned char c;
|
||||
unsigned short w;
|
||||
@@ -107,13 +103,10 @@ typedef union {
|
||||
|
||||
flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
* Functions
|
||||
*/
|
||||
|
||||
|
||||
|
||||
static void flash_add_byte(flash_info_t *info, cfiword_t * cword, uchar c);
|
||||
static void flash_make_cmd(flash_info_t * info, uchar cmd, void * cmdbuf);
|
||||
static void flash_write_cmd(flash_info_t * info, int sect, uchar offset, uchar cmd);
|
||||
@@ -249,7 +242,7 @@ int flash_erase (flash_info_t *info, int s_first, int s_last)
|
||||
flash_write_cmd(info, sect, 0, FLASH_CMD_CLEAR_STATUS);
|
||||
flash_write_cmd(info, sect, 0, FLASH_CMD_BLOCK_ERASE);
|
||||
flash_write_cmd(info, sect, 0, FLASH_CMD_ERASE_CONFIRM);
|
||||
|
||||
|
||||
if(flash_full_status_check(info, sect, info->erase_blk_tout, "erase")) {
|
||||
rcode = 1;
|
||||
} else
|
||||
@@ -277,7 +270,7 @@ void flash_print_info (flash_info_t *info)
|
||||
info->size >> 20, info->sector_count);
|
||||
printf(" Erase timeout %ld ms, write timeout %ld ms, buffer write timeout %ld ms, buffer size %d\n",
|
||||
info->erase_blk_tout, info->write_tout, info->buffer_write_tout, info->buffer_size);
|
||||
|
||||
|
||||
printf (" Sector Start Addresses:");
|
||||
for (i=0; i<info->sector_count; ++i) {
|
||||
#ifdef CFG_FLASH_EMPTY_INFO
|
||||
@@ -286,28 +279,28 @@ void flash_print_info (flash_info_t *info)
|
||||
int erased;
|
||||
volatile unsigned long *flash;
|
||||
|
||||
/*
|
||||
* Check if whole sector is erased
|
||||
*/
|
||||
if (i != (info->sector_count-1))
|
||||
size = info->start[i+1] - info->start[i];
|
||||
else
|
||||
size = info->start[0] + info->size - info->start[i];
|
||||
erased = 1;
|
||||
flash = (volatile unsigned long *)info->start[i];
|
||||
size = size >> 2; /* divide by 4 for longword access */
|
||||
for (k=0; k<size; k++)
|
||||
{
|
||||
if (*flash++ != 0xffffffff)
|
||||
{
|
||||
erased = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Check if whole sector is erased
|
||||
*/
|
||||
if (i != (info->sector_count-1))
|
||||
size = info->start[i+1] - info->start[i];
|
||||
else
|
||||
size = info->start[0] + info->size - info->start[i];
|
||||
erased = 1;
|
||||
flash = (volatile unsigned long *)info->start[i];
|
||||
size = size >> 2; /* divide by 4 for longword access */
|
||||
for (k=0; k<size; k++)
|
||||
{
|
||||
if (*flash++ != 0xffffffff)
|
||||
{
|
||||
erased = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ((i % 5) == 0)
|
||||
printf ("\n ");
|
||||
/* print empty and read-only info */
|
||||
/* print empty and read-only info */
|
||||
printf (" %08lX%s%s",
|
||||
info->start[i],
|
||||
erased ? " E" : " ",
|
||||
@@ -414,7 +407,7 @@ int flash_real_protect(flash_info_t *info, long sector, int prot)
|
||||
else
|
||||
flash_write_cmd(info, sector, 0, FLASH_CMD_PROTECT_CLEAR);
|
||||
|
||||
if((retcode = flash_full_status_check(info, sector, info->erase_blk_tout,
|
||||
if((retcode = flash_full_status_check(info, sector, info->erase_blk_tout,
|
||||
prot?"protect":"unprotect")) == 0) {
|
||||
|
||||
info->protect[sector] = prot;
|
||||
@@ -464,7 +457,7 @@ static int flash_full_status_check(flash_info_t * info, ulong sector, ulong tout
|
||||
printf("Command Sequence Error.\n");
|
||||
} else if(flash_isset(info, sector, 0, FLASH_STATUS_ECLBS)){
|
||||
printf("Block Erase Error.\n");
|
||||
retcode = ERR_NOT_ERASED;
|
||||
retcode = ERR_NOT_ERASED;
|
||||
} else if (flash_isset(info, sector, 0, FLASH_STATUS_PSLBS)) {
|
||||
printf("Locking Error\n");
|
||||
}
|
||||
@@ -733,7 +726,7 @@ static int find_sector(flash_info_t *info, ulong addr)
|
||||
{
|
||||
int sector;
|
||||
for(sector = info->sector_count - 1; sector >= 0; sector--) {
|
||||
if(addr >= info->start[sector])
|
||||
if(addr >= info->start[sector])
|
||||
break;
|
||||
}
|
||||
return sector;
|
||||
@@ -741,7 +734,7 @@ static int find_sector(flash_info_t *info, ulong addr)
|
||||
|
||||
static int flash_write_cfibuffer(flash_info_t * info, ulong dest, uchar * cp, int len)
|
||||
{
|
||||
|
||||
|
||||
int sector;
|
||||
int cnt;
|
||||
int retcode;
|
||||
@@ -789,8 +782,8 @@ static int flash_write_cfibuffer(flash_info_t * info, ulong dest, uchar * cp, in
|
||||
flash_write_cmd(info, sector, 0, FLASH_CMD_WRITE_BUFFER_CONFIRM);
|
||||
retcode = flash_full_status_check(info, sector, info->buffer_write_tout,
|
||||
"buffer write");
|
||||
}
|
||||
}
|
||||
flash_write_cmd(info, sector, 0, FLASH_CMD_CLEAR_STATUS);
|
||||
return retcode;
|
||||
}
|
||||
}
|
||||
#endif /* CFG_USE_FLASH_BUFFER_WRITE */
|
||||
|
||||
@@ -60,7 +60,7 @@ const unsigned char fpgadata[] =
|
||||
|
||||
int checkboard (void) {
|
||||
ulong val;
|
||||
uchar val8;
|
||||
uchar val8;
|
||||
|
||||
puts ("Board: ");
|
||||
puts("esd TASREG");
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
#include <asm/processor.h>
|
||||
#include <command.h>
|
||||
|
||||
|
||||
#define MEM_MCOPT1_INIT_VAL 0x00800000
|
||||
#define MEM_RTR_INIT_VAL 0x04070000
|
||||
#define MEM_PMIT_INIT_VAL 0x07c00000
|
||||
@@ -34,11 +33,8 @@
|
||||
#define MEM_SDTR1_INIT_VAL 0x00854005
|
||||
#define SDRAM0_CFG_ENABLE 0x80000000
|
||||
|
||||
|
||||
|
||||
#define CFG_SDRAM_SIZE 0x04000000 /* 64 MB */
|
||||
|
||||
|
||||
int board_early_init_f (void)
|
||||
{
|
||||
#if 0 /* test-only */
|
||||
@@ -119,19 +115,19 @@ int checkboard (void)
|
||||
long int init_sdram_static_settings(void)
|
||||
{
|
||||
#define mtsdram0(reg, data) mtdcr(memcfga,reg);mtdcr(memcfgd,data)
|
||||
/* disable memcontroller so updates work */
|
||||
mtsdram0( mem_mcopt1, MEM_MCOPT1_INIT_VAL );
|
||||
mtsdram0( mem_rtr , MEM_RTR_INIT_VAL );
|
||||
mtsdram0( mem_pmit , MEM_PMIT_INIT_VAL );
|
||||
mtsdram0( mem_mb0cf , MEM_MB0CF_INIT_VAL );
|
||||
mtsdram0( mem_mb1cf , MEM_MB1CF_INIT_VAL );
|
||||
mtsdram0( mem_sdtr1 , MEM_SDTR1_INIT_VAL );
|
||||
/* disable memcontroller so updates work */
|
||||
mtsdram0( mem_mcopt1, MEM_MCOPT1_INIT_VAL );
|
||||
mtsdram0( mem_rtr , MEM_RTR_INIT_VAL );
|
||||
mtsdram0( mem_pmit , MEM_PMIT_INIT_VAL );
|
||||
mtsdram0( mem_mb0cf , MEM_MB0CF_INIT_VAL );
|
||||
mtsdram0( mem_mb1cf , MEM_MB1CF_INIT_VAL );
|
||||
mtsdram0( mem_sdtr1 , MEM_SDTR1_INIT_VAL );
|
||||
|
||||
/* SDRAM have a power on delay, 500 micro should do */
|
||||
udelay(500);
|
||||
mtsdram0( mem_mcopt1, MEM_MCOPT1_INIT_VAL|SDRAM0_CFG_ENABLE );
|
||||
/* SDRAM have a power on delay, 500 micro should do */
|
||||
udelay(500);
|
||||
mtsdram0( mem_mcopt1, MEM_MCOPT1_INIT_VAL|SDRAM0_CFG_ENABLE );
|
||||
|
||||
return (CFG_SDRAM_SIZE); /* CFG_SDRAM_SIZE is in G2000.h */
|
||||
return (CFG_SDRAM_SIZE); /* CFG_SDRAM_SIZE is in G2000.h */
|
||||
}
|
||||
|
||||
|
||||
@@ -141,9 +137,9 @@ long int initdram (int board_type)
|
||||
|
||||
/* flzt, we can still turn this on in the future */
|
||||
/* #ifdef CONFIG_SPD_EEPROM
|
||||
ret = spd_sdram ();
|
||||
ret = spd_sdram ();
|
||||
#else
|
||||
ret = init_sdram_static_settings();
|
||||
ret = init_sdram_static_settings();
|
||||
#endif
|
||||
*/
|
||||
|
||||
|
||||
@@ -85,12 +85,8 @@
|
||||
#define FLASH_OFFSET_USER_PROTECTION 0x85
|
||||
#define FLASH_OFFSET_INTEL_PROTECTION 0x81
|
||||
|
||||
|
||||
#define FLASH_MAN_CFI 0x01000000
|
||||
|
||||
|
||||
|
||||
|
||||
typedef union {
|
||||
unsigned char c;
|
||||
unsigned short w;
|
||||
@@ -107,13 +103,10 @@ typedef union {
|
||||
|
||||
flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
* Functions
|
||||
*/
|
||||
|
||||
|
||||
|
||||
static void flash_add_byte(flash_info_t *info, cfiword_t * cword, uchar c);
|
||||
static void flash_make_cmd(flash_info_t * info, uchar cmd, void * cmdbuf);
|
||||
static void flash_write_cmd(flash_info_t * info, int sect, uchar offset, uchar cmd);
|
||||
@@ -286,28 +279,28 @@ void flash_print_info (flash_info_t *info)
|
||||
int erased;
|
||||
volatile unsigned long *flash;
|
||||
|
||||
/*
|
||||
* Check if whole sector is erased
|
||||
*/
|
||||
if (i != (info->sector_count-1))
|
||||
size = info->start[i+1] - info->start[i];
|
||||
else
|
||||
size = info->start[0] + info->size - info->start[i];
|
||||
erased = 1;
|
||||
flash = (volatile unsigned long *)info->start[i];
|
||||
size = size >> 2; /* divide by 4 for longword access */
|
||||
for (k=0; k<size; k++)
|
||||
{
|
||||
if (*flash++ != 0xffffffff)
|
||||
{
|
||||
erased = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Check if whole sector is erased
|
||||
*/
|
||||
if (i != (info->sector_count-1))
|
||||
size = info->start[i+1] - info->start[i];
|
||||
else
|
||||
size = info->start[0] + info->size - info->start[i];
|
||||
erased = 1;
|
||||
flash = (volatile unsigned long *)info->start[i];
|
||||
size = size >> 2; /* divide by 4 for longword access */
|
||||
for (k=0; k<size; k++)
|
||||
{
|
||||
if (*flash++ != 0xffffffff)
|
||||
{
|
||||
erased = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ((i % 5) == 0)
|
||||
printf ("\n ");
|
||||
/* print empty and read-only info */
|
||||
/* print empty and read-only info */
|
||||
printf (" %08lX%s%s",
|
||||
info->start[i],
|
||||
erased ? " E" : " ",
|
||||
@@ -464,7 +457,7 @@ static int flash_full_status_check(flash_info_t * info, ulong sector, ulong tout
|
||||
printf("Command Sequence Error.\n");
|
||||
} else if(flash_isset(info, sector, 0, FLASH_STATUS_ECLBS)){
|
||||
printf("Block Erase Error.\n");
|
||||
retcode = ERR_NOT_ERASED;
|
||||
retcode = ERR_NOT_ERASED;
|
||||
} else if (flash_isset(info, sector, 0, FLASH_STATUS_PSLBS)) {
|
||||
printf("Locking Error\n");
|
||||
}
|
||||
|
||||
@@ -142,9 +142,9 @@ void flash_print_info (flash_info_t *info)
|
||||
}
|
||||
|
||||
switch (info->flash_id & FLASH_TYPEMASK) {
|
||||
case FLASH_AM116DB:
|
||||
printf ("AM29LV116DB (16Mbit, bottom boot sect)\n");
|
||||
break;
|
||||
case FLASH_AM116DB:
|
||||
printf ("AM29LV116DB (16Mbit, bottom boot sect)\n");
|
||||
break;
|
||||
case FLASH_AMLV128U:
|
||||
printf ("AM29LV128ML (128Mbit, uniform sector size)\n");
|
||||
break;
|
||||
@@ -220,21 +220,21 @@ ulong flash_get_size (FPWV *addr, flash_info_t *info)
|
||||
|
||||
case (uchar)AMD_ID_LV116DB:
|
||||
debug ("Chip: AM29LV116DB\n");
|
||||
info->flash_id += FLASH_AM116DB;
|
||||
info->sector_count = 35;
|
||||
info->size = 0x00200000;
|
||||
/*
|
||||
* The first 4 sectors are 16 kB, 8 kB, 8 kB and 32 kB, all
|
||||
* the other ones are 64 kB
|
||||
*/
|
||||
info->start[0] = base + 0x00000000;
|
||||
info->start[1] = base + 0x00004000;
|
||||
info->start[2] = base + 0x00006000;
|
||||
info->start[3] = base + 0x00008000;
|
||||
for( i = 4; i < info->sector_count; i++ )
|
||||
info->start[i] =
|
||||
base + (i * (64 << 10)) - 0x00030000;
|
||||
break; /* => 2 MB */
|
||||
info->flash_id += FLASH_AM116DB;
|
||||
info->sector_count = 35;
|
||||
info->size = 0x00200000;
|
||||
/*
|
||||
* The first 4 sectors are 16 kB, 8 kB, 8 kB and 32 kB, all
|
||||
* the other ones are 64 kB
|
||||
*/
|
||||
info->start[0] = base + 0x00000000;
|
||||
info->start[1] = base + 0x00004000;
|
||||
info->start[2] = base + 0x00006000;
|
||||
info->start[3] = base + 0x00008000;
|
||||
for( i = 4; i < info->sector_count; i++ )
|
||||
info->start[i] =
|
||||
base + (i * (64 << 10)) - 0x00030000;
|
||||
break; /* => 2 MB */
|
||||
|
||||
case (FPW)AMD_ID_LV160B:
|
||||
debug ("Chip: AM29LV160MB\n");
|
||||
@@ -377,8 +377,8 @@ int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
|
||||
|
||||
for (i = 0; i < cnt; i++)
|
||||
if ((rc = write_word_amd(info, (FPW *)(addr+i), src[i])) != 0) {
|
||||
return (rc);
|
||||
}
|
||||
return (rc);
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
@@ -176,4 +176,3 @@ void flash_preinit(void)
|
||||
*/
|
||||
*(vu_long *)MPC5XXX_BOOTCS_CFG &= ~0x1; /* clear RO */
|
||||
}
|
||||
|
||||
|
||||
@@ -419,7 +419,7 @@ int last_stage_init (void)
|
||||
/* save origianl SRAM content */
|
||||
save = *(volatile u16 *)CFG_CS2_START;
|
||||
restore = 1;
|
||||
|
||||
|
||||
/* write test pattern to SRAM */
|
||||
*(volatile u16 *)CFG_CS2_START = 0xA5A5;
|
||||
__asm__ volatile ("sync");
|
||||
@@ -430,7 +430,7 @@ int last_stage_init (void)
|
||||
tmp = *(volatile u16 *)CFG_FLASH_BASE;
|
||||
if (tmp == 0xA5A5)
|
||||
puts ("!! possible error in SRAM detection\n");
|
||||
|
||||
|
||||
if (*(volatile u16 *)CFG_CS2_START != 0xA5A5) {
|
||||
/* no SRAM at all, disable cs */
|
||||
*(vu_long *)MPC5XXX_ADDECR &= ~(1 << 18);
|
||||
@@ -445,31 +445,31 @@ int last_stage_init (void)
|
||||
__asm__ volatile ("sync");
|
||||
if (*(volatile u16 *)(CFG_CS2_START + (1<<19)) == 0x1111) {
|
||||
/* SRAM size = 512 kByte */
|
||||
*(vu_long *)MPC5XXX_CS2_STOP = STOP_REG(CFG_CS2_START,
|
||||
*(vu_long *)MPC5XXX_CS2_STOP = STOP_REG(CFG_CS2_START,
|
||||
0x80000);
|
||||
__asm__ volatile ("sync");
|
||||
puts ("SRAM: 512 kB\n");
|
||||
}
|
||||
else
|
||||
puts ("!! possible error in SRAM detection\n");
|
||||
puts ("!! possible error in SRAM detection\n");
|
||||
}
|
||||
else {
|
||||
puts ("SRAM: 1 MB\n");
|
||||
puts ("SRAM: 1 MB\n");
|
||||
}
|
||||
/* restore origianl SRAM content */
|
||||
if (restore) {
|
||||
*(volatile u16 *)CFG_CS2_START = save;
|
||||
__asm__ volatile ("sync");
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
/*
|
||||
* Check for Grafic Controller
|
||||
*/
|
||||
|
||||
/* save origianl FB content */
|
||||
save = *(volatile u16 *)CFG_CS1_START;
|
||||
restore = 1;
|
||||
|
||||
|
||||
/* write test pattern to FB memory */
|
||||
*(volatile u16 *)CFG_CS1_START = 0xA5A5;
|
||||
__asm__ volatile ("sync");
|
||||
@@ -480,7 +480,7 @@ int last_stage_init (void)
|
||||
tmp = *(volatile u16 *)CFG_FLASH_BASE;
|
||||
if (tmp == 0xA5A5)
|
||||
puts ("!! possible error in grafic controller detection\n");
|
||||
|
||||
|
||||
if (*(volatile u16 *)CFG_CS1_START != 0xA5A5) {
|
||||
/* no grafic controller at all, disable cs */
|
||||
*(vu_long *)MPC5XXX_ADDECR &= ~(1 << 17);
|
||||
@@ -490,14 +490,14 @@ int last_stage_init (void)
|
||||
__asm__ volatile ("sync");
|
||||
}
|
||||
else {
|
||||
puts ("VGA: SMI501 (Voyager) with 8 MB\n");
|
||||
puts ("VGA: SMI501 (Voyager) with 8 MB\n");
|
||||
}
|
||||
/* restore origianl FB content */
|
||||
if (restore) {
|
||||
*(volatile u16 *)CFG_CS1_START = save;
|
||||
__asm__ volatile ("sync");
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif /* CONFIG_CS_AUTOCONF */
|
||||
|
||||
Reference in New Issue
Block a user