@ -219,24 +219,12 @@ static int twsi_stop(int status)
( CONFIG_SYS_TCLK / ( 10 * ( m + 1 ) * ( 1 < < n ) ) )
/*
* These are required to be reprogrammed before enabling the controller
* because a reset loses them .
* Default values come from the spec , but a twsi_reset will change them .
* twsi_slave_address left uninitialized lest checkpatch . pl complains .
*/
/* Baudrate generator: m (bits 6..3) = 8, n (bits 2..0) = 4 */
static u8 twsi_baud_rate = 0x44 ; /* baudrate at controller reset */
/* Default slave address is 0 (so is an uninitialized static) */
static u8 twsi_slave_address ;
/*
* Reset controller .
* Called at end of i2c_init unsuccessful i2c transactions .
* Controller reset also resets the baud rate and slave address , so
* re - establish them .
*/
static void twsi_reset ( void )
static void twsi_reset ( u8 baud_rate , u8 slave_address )
{
/* ensure controller will be enabled by any twsi*() function */
twsi_control_flags = MVTWSI_CONTROL_TWSIEN ;
@ -245,9 +233,9 @@ static void twsi_reset(void)
/* wait 2 ms -- this is what the Marvell LSP does */
udelay ( 20000 ) ;
/* set baud rate */
writel ( twsi_ baud_rate, & twsi - > baudrate ) ;
writel ( baud_rate , & twsi - > baudrate ) ;
/* set slave address even though we don't use it */
writel ( twsi_ slave_address, & twsi - > slave_address ) ;
writel ( slave_address , & twsi - > slave_address ) ;
writel ( 0 , & twsi - > xtnd_slave_addr ) ;
/* assert STOP but don't care for the result */
( void ) twsi_stop ( 0 ) ;
@ -275,11 +263,8 @@ void i2c_init(int requested_speed, int slaveadd)
}
}
}
/* save baud rate and slave for later calls to twsi_reset */
twsi_baud_rate = baud ;
twsi_slave_address = slaveadd ;
/* reset controller */
twsi_reset ( ) ;
twsi_reset ( baud , slaveadd ) ;
}
/*