* Patches by Robert Schwebel, 06 Mar 2003:
- fix bug in BOOTP code (must use NetCopyIP) - update of CSB226 port - clear BSS segment on XScale - added support for i2c_init_board() function - update to the Innokom plattform * Extend support for redundand environments for configurations where environment size < sector size
This commit is contained in:
@@ -1128,6 +1128,15 @@ static void I2C_Set_Stat (unsigned int eumbbar, I2C_STAT stat)
|
||||
|
||||
void i2c_init (int speed, int slaveadd)
|
||||
{
|
||||
#ifdef CFG_I2C_INIT_BOARD
|
||||
/*
|
||||
* call board specific i2c bus reset routine before accessing the
|
||||
* environment, which might be in a chip on that bus. For details
|
||||
* about this problem see doc/I2C_Edge_Conditions.
|
||||
*/
|
||||
i2c_init_board();
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG
|
||||
I2C_Initialize (0x7f, 0, (void *) printf);
|
||||
#else
|
||||
|
||||
@@ -221,6 +221,13 @@ void i2c_init(int speed, int slaveadd)
|
||||
volatile I2C_BD *rxbd, *txbd;
|
||||
uint dpaddr;
|
||||
|
||||
#ifdef CFG_I2C_INIT_BOARD
|
||||
/* call board specific i2c bus reset routine before accessing the */
|
||||
/* environment, which might be in a chip on that bus. For details */
|
||||
/* about this problem see doc/I2C_Edge_Conditions. */
|
||||
i2c_init_board();
|
||||
#endif
|
||||
|
||||
dpaddr = *((unsigned short*)(&immap->im_dprambase[PROFF_I2C_BASE]));
|
||||
if (dpaddr == 0) {
|
||||
/* need to allocate dual port ram */
|
||||
|
||||
@@ -215,6 +215,13 @@ i2c_init(int speed, int slaveaddr)
|
||||
volatile I2C_BD *rxbd, *txbd;
|
||||
uint dpaddr;
|
||||
|
||||
#ifdef CFG_I2C_INIT_BOARD
|
||||
/* call board specific i2c bus reset routine before accessing the */
|
||||
/* environment, which might be in a chip on that bus. For details */
|
||||
/* about this problem see doc/I2C_Edge_Conditions. */
|
||||
i2c_init_board();
|
||||
#endif
|
||||
|
||||
#ifdef CFG_I2C_UCODE_PATCH
|
||||
iip = (iic_t *)&cp->cp_dpmem[iip->iic_rpbase];
|
||||
#else
|
||||
|
||||
@@ -85,7 +85,15 @@ void i2c_init (int speed, int slaveadd)
|
||||
unsigned long freqOPB;
|
||||
int val, divisor;
|
||||
|
||||
#ifdef CFG_I2C_INIT_BOARD
|
||||
/* call board specific i2c bus reset routine before accessing the */
|
||||
/* environment, which might be in a chip on that bus. For details */
|
||||
/* about this problem see doc/I2C_Edge_Conditions. */
|
||||
i2c_init_board();
|
||||
#endif
|
||||
|
||||
/* Handle possible failed I2C state */
|
||||
/* FIXME: put this into i2c_init_board()? */
|
||||
_i2c_bus_reset ();
|
||||
|
||||
/* clear lo master address */
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
* - I2C_PXA_SLAVE_ADDR
|
||||
*/
|
||||
|
||||
#include <asm/arch/hardware.h>
|
||||
#include <asm/arch/pxa-regs.h>
|
||||
#include <i2c.h>
|
||||
|
||||
@@ -244,6 +245,12 @@ i2c_transfer_finish:
|
||||
|
||||
void i2c_init(int speed, int slaveaddr)
|
||||
{
|
||||
#ifdef CFG_I2C_INIT_BOARD
|
||||
/* call board specific i2c bus reset routine before accessing the */
|
||||
/* environment, which might be in a chip on that bus. For details */
|
||||
/* about this problem see doc/I2C_Edge_Conditions. */
|
||||
i2c_init_board();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -83,6 +83,17 @@ _armboot_end_data:
|
||||
_armboot_end:
|
||||
.word armboot_end
|
||||
|
||||
/*
|
||||
* This is defined in the board specific linker script
|
||||
*/
|
||||
.globl _bss_start
|
||||
_bss_start:
|
||||
.word bss_start
|
||||
|
||||
.globl _bss_end
|
||||
_bss_end:
|
||||
.word bss_end
|
||||
|
||||
/*
|
||||
* _armboot_real_end is the first usable RAM address behind armboot
|
||||
* and the various stacks
|
||||
@@ -143,7 +154,20 @@ copy_loop:
|
||||
ldr r0, _uboot_reloc /* upper 128 KiB: relocated uboot */
|
||||
sub r0, r0, #CFG_MALLOC_LEN /* malloc area */
|
||||
/* FIXME: bdinfo should be here */
|
||||
sub sp, r0, #12 /* leave 3 words for abort-stack */
|
||||
sub sp, r0, #12 /* leave 3 words for abort-stack */
|
||||
|
||||
clear_bss:
|
||||
|
||||
ldr r0, _bss_start /* find start of bss segment */
|
||||
add r0, r0, #4 /* start at first byte of bss */
|
||||
ldr r1, _bss_end /* stop here */
|
||||
mov r2, #0x00000000 /* clear */
|
||||
|
||||
clbss_l:str r2, [r0] /* clear loop... */
|
||||
add r0, r0, #4
|
||||
cmp r0, r1
|
||||
bne clbss_l
|
||||
|
||||
|
||||
ldr pc, _start_armboot
|
||||
|
||||
|
||||
Reference in New Issue
Block a user