Code cleanup.

This commit is contained in:
wdenk
2004-12-16 21:44:03 +00:00
parent bea8e84b52
commit efe2a4d5cf
37 changed files with 1850 additions and 1808 deletions

View File

@@ -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 */

View File

@@ -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

View File

@@ -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;

View File

@@ -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 */
};

View File

@@ -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 */
};

View File

@@ -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 */
};

View File

@@ -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 */
};

View File

@@ -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,

View File

@@ -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;

View File

@@ -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 */

View File

@@ -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 */

View File

@@ -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

View File

@@ -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>
*

View File

@@ -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

View File

@@ -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);

View File

@@ -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);

View File

@@ -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 !!!! */

View File

@@ -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 */

View File

@@ -60,7 +60,7 @@ const unsigned char fpgadata[] =
int checkboard (void) {
ulong val;
uchar val8;
uchar val8;
puts ("Board: ");
puts("esd TASREG");

View File

@@ -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
*/

View File

@@ -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");
}

View File

@@ -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;
}

View File

@@ -176,4 +176,3 @@ void flash_preinit(void)
*/
*(vu_long *)MPC5XXX_BOOTCS_CFG &= ~0x1; /* clear RO */
}

View File

@@ -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 */