@ -133,7 +133,13 @@ DECLARE_GLOBAL_DATA_PTR;
# define DISP_LINE_LEN 16
/* implement possible board specific board init */
/**
* i2c_init_board ( ) - Board - specific I2C bus init
*
* This function is the default no - op implementation of I2C bus
* initialization . This function can be overriden by board - specific
* implementation if needed .
*/
__weak
void i2c_init_board ( void )
{
@ -141,12 +147,38 @@ void i2c_init_board(void)
}
/* TODO: Implement architecture-specific get/set functions */
/**
* i2c_get_bus_speed ( ) - Return I2C bus speed
*
* This function is the default implementation of function for retrieveing
* the current I2C bus speed in Hz .
*
* A driver implementing runtime switching of I2C bus speed must override
* this function to report the speed correctly . Simple or legacy drivers
* can use this fallback .
*
* Returns I2C bus speed in Hz .
*/
__weak
unsigned int i2c_get_bus_speed ( void )
{
return CONFIG_SYS_I2C_SPEED ;
}
/**
* i2c_set_bus_speed ( ) - Configure I2C bus speed
* @ speed : Newly set speed of the I2C bus in Hz
*
* This function is the default implementation of function for setting
* the I2C bus speed in Hz .
*
* A driver implementing runtime switching of I2C bus speed must override
* this function to report the speed correctly . Simple or legacy drivers
* can use this fallback .
*
* Returns zero on success , negative value on error .
*/
__weak
int i2c_set_bus_speed ( unsigned int speed )
{
@ -156,9 +188,10 @@ int i2c_set_bus_speed(unsigned int speed)
return 0 ;
}
/*
* get_alen : small parser helper function to get address length
* returns the address length
/**
* get_alen ( ) - Small parser helper function to get address length
*
* Returns the address length .
*/
static uint get_alen ( char * arg )
{
@ -176,11 +209,19 @@ static uint get_alen(char *arg)
return alen ;
}
/*
/**
* do_i2c_read ( ) - Handle the " i2c read " command - line command
* @ cmdtp : Command data struct pointer
* @ flag : Command flag
* @ argc : Command - line argument count
* @ argv : Array of command - line arguments
*
* Returns zero on success , CMD_RET_USAGE in case of misuse and negative
* on error .
*
* Syntax :
* i2c read { i2c_chip } { devaddr } { .0 , .1 , .2 } { len } { memaddr }
*/
static int do_i2c_read ( cmd_tbl_t * cmdtp , int flag , int argc , char * const argv [ ] )
{
u_char chip ;
@ -269,7 +310,16 @@ static int do_i2c_write(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[
return 0 ;
}
/*
/**
* do_i2c_md ( ) - Handle the " i2c md " command - line command
* @ cmdtp : Command data struct pointer
* @ flag : Command flag
* @ argc : Command - line argument count
* @ argv : Array of command - line arguments
*
* Returns zero on success , CMD_RET_USAGE in case of misuse and negative
* on error .
*
* Syntax :
* i2c md { i2c_chip } { addr } { .0 , .1 , .2 } { len }
*/
@ -361,8 +411,15 @@ static int do_i2c_md ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]
return 0 ;
}
/* Write (fill) memory
/**
* do_i2c_mw ( ) - Handle the " i2c mw " command - line command
* @ cmdtp : Command data struct pointer
* @ flag : Command flag
* @ argc : Command - line argument count
* @ argv : Array of command - line arguments
*
* Returns zero on success , CMD_RET_USAGE in case of misuse and negative
* on error .
*
* Syntax :
* i2c mw { i2c_chip } { addr } { .0 , .1 , .2 } { data } [ { count } ]
@ -419,10 +476,20 @@ static int do_i2c_mw ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]
# endif
}
return ( 0 ) ;
return 0 ;
}
/* Calculate a CRC on memory
/**
* do_i2c_crc ( ) - Handle the " i2c crc32 " command - line command
* @ cmdtp : Command data struct pointer
* @ flag : Command flag
* @ argc : Command - line argument count
* @ argv : Array of command - line arguments
*
* Calculate a CRC on memory
*
* Returns zero on success , CMD_RET_USAGE in case of misuse and negative
* on error .
*
* Syntax :
* i2c crc32 { i2c_chip } { addr } { .0 , .1 , .2 } { count }
@ -479,13 +546,22 @@ static int do_i2c_crc (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]
return 0 ;
}
/* Modify memory.
/**
* mod_i2c_mem ( ) - Handle the " i2c mm " and " i2c nm " command - line command
* @ cmdtp : Command data struct pointer
* @ flag : Command flag
* @ argc : Command - line argument count
* @ argv : Array of command - line arguments
*
* Modify memory .
*
* Returns zero on success , CMD_RET_USAGE in case of misuse and negative
* on error .
*
* Syntax :
* i2c mm { . b , . w , . l } { i2c_chip } { addr } { .0 , .1 , .2 }
* i2c nm { . b , . w , . l } { i2c_chip } { addr } { .0 , .1 , .2 }
*/
static int
mod_i2c_mem ( cmd_tbl_t * cmdtp , int incrflag , int flag , int argc , char * const argv [ ] )
{
@ -601,7 +677,16 @@ mod_i2c_mem(cmd_tbl_t *cmdtp, int incrflag, int flag, int argc, char * const arg
return 0 ;
}
/*
/**
* do_i2c_probe ( ) - Handle the " i2c probe " command - line command
* @ cmdtp : Command data struct pointer
* @ flag : Command flag
* @ argc : Command - line argument count
* @ argv : Array of command - line arguments
*
* Returns zero on success , CMD_RET_USAGE in case of misuse and negative
* on error .
*
* Syntax :
* i2c probe { addr }
*
@ -655,7 +740,16 @@ static int do_i2c_probe (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv
return ( 0 = = found ) ;
}
/*
/**
* do_i2c_loop ( ) - Handle the " i2c loop " command - line command
* @ cmdtp : Command data struct pointer
* @ flag : Command flag
* @ argc : Command - line argument count
* @ argv : Array of command - line arguments
*
* Returns zero on success , CMD_RET_USAGE in case of misuse and negative
* on error .
*
* Syntax :
* i2c loop { i2c_chip } { addr } { .0 , .1 , .2 } [ { length } ] [ { delay } ]
* { length } - Number of bytes to read
@ -716,6 +810,8 @@ static int do_i2c_loop(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]
/*
* The SDRAM command is separately configured because many
* ( most ? ) embedded boards don ' t use SDRAM DIMMs .
*
* FIXME : Document and probably move elsewhere !
*/
# if defined(CONFIG_CMD_SDRAM)
static void print_ddr2_tcyc ( u_char const b )
@ -1245,6 +1341,15 @@ static int do_sdram (cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
# endif
# if defined(CONFIG_I2C_MUX)
/**
* do_i2c_add_bus ( ) - Handle the " i2c bus " command - line command
* @ cmdtp : Command data struct pointer
* @ flag : Command flag
* @ argc : Command - line argument count
* @ argv : Array of command - line arguments
*
* Returns zero always .
*/
static int do_i2c_add_bus ( cmd_tbl_t * cmdtp , int flag , int argc , char * const argv [ ] )
{
int ret = 0 ;
@ -1274,6 +1379,16 @@ static int do_i2c_add_bus(cmd_tbl_t * cmdtp, int flag, int argc, char * const ar
# endif /* CONFIG_I2C_MUX */
# if defined(CONFIG_I2C_MULTI_BUS)
/**
* do_i2c_bus_num ( ) - Handle the " i2c dev " command - line command
* @ cmdtp : Command data struct pointer
* @ flag : Command flag
* @ argc : Command - line argument count
* @ argv : Array of command - line arguments
*
* Returns zero on success , CMD_RET_USAGE in case of misuse and negative
* on error .
*/
static int do_i2c_bus_num ( cmd_tbl_t * cmdtp , int flag , int argc , char * const argv [ ] )
{
int bus_idx , ret = 0 ;
@ -1292,6 +1407,16 @@ static int do_i2c_bus_num(cmd_tbl_t * cmdtp, int flag, int argc, char * const ar
}
# endif /* CONFIG_I2C_MULTI_BUS */
/**
* do_i2c_bus_speed ( ) - Handle the " i2c speed " command - line command
* @ cmdtp : Command data struct pointer
* @ flag : Command flag
* @ argc : Command - line argument count
* @ argv : Array of command - line arguments
*
* Returns zero on success , CMD_RET_USAGE in case of misuse and negative
* on error .
*/
static int do_i2c_bus_speed ( cmd_tbl_t * cmdtp , int flag , int argc , char * const argv [ ] )
{
int speed , ret = 0 ;
@ -1309,16 +1434,45 @@ static int do_i2c_bus_speed(cmd_tbl_t * cmdtp, int flag, int argc, char * const
return ret ;
}
/**
* do_i2c_mm ( ) - Handle the " i2c mm " command - line command
* @ cmdtp : Command data struct pointer
* @ flag : Command flag
* @ argc : Command - line argument count
* @ argv : Array of command - line arguments
*
* Returns zero on success , CMD_RET_USAGE in case of misuse and negative
* on error .
*/
static int do_i2c_mm ( cmd_tbl_t * cmdtp , int flag , int argc , char * const argv [ ] )
{
return mod_i2c_mem ( cmdtp , 1 , flag , argc , argv ) ;
}
/**
* do_i2c_nm ( ) - Handle the " i2c nm " command - line command
* @ cmdtp : Command data struct pointer
* @ flag : Command flag
* @ argc : Command - line argument count
* @ argv : Array of command - line arguments
*
* Returns zero on success , CMD_RET_USAGE in case of misuse and negative
* on error .
*/
static int do_i2c_nm ( cmd_tbl_t * cmdtp , int flag , int argc , char * const argv [ ] )
{
return mod_i2c_mem ( cmdtp , 0 , flag , argc , argv ) ;
}
/**
* do_i2c_reset ( ) - Handle the " i2c reset " command - line command
* @ cmdtp : Command data struct pointer
* @ flag : Command flag
* @ argc : Command - line argument count
* @ argv : Array of command - line arguments
*
* Returns zero always .
*/
static int do_i2c_reset ( cmd_tbl_t * cmdtp , int flag , int argc , char * const argv [ ] )
{
i2c_init ( CONFIG_SYS_I2C_SPEED , CONFIG_SYS_I2C_SLAVE ) ;
@ -1354,6 +1508,16 @@ void i2c_reloc(void) {
}
# endif
/**
* do_i2c ( ) - Handle the " i2c " command - line command
* @ cmdtp : Command data struct pointer
* @ flag : Command flag
* @ argc : Command - line argument count
* @ argv : Array of command - line arguments
*
* Returns zero on success , CMD_RET_USAGE in case of misuse and negative
* on error .
*/
static int do_i2c ( cmd_tbl_t * cmdtp , int flag , int argc , char * const argv [ ] )
{
cmd_tbl_t * c ;