@ -605,18 +605,28 @@ mod_i2c_mem(cmd_tbl_t *cmdtp, int incrflag, int flag, int argc, char * const arg
/*
/*
* Syntax :
* Syntax :
* i2c probe { addr } { .0 , .1 , .2 }
* i2c probe { addr }
*
* Returns zero ( success ) if one or more I2C devices was found
*/
*/
static int do_i2c_probe ( cmd_tbl_t * cmdtp , int flag , int argc , char * const argv [ ] )
static int do_i2c_probe ( cmd_tbl_t * cmdtp , int flag , int argc , char * const argv [ ] )
{
{
int j ;
int j ;
int addr = - 1 ;
int found = 0 ;
# if defined(CONFIG_SYS_I2C_NOPROBES)
# if defined(CONFIG_SYS_I2C_NOPROBES)
int k , skip ;
int k , skip ;
uchar bus = GET_BUS_NUM ;
uchar bus = GET_BUS_NUM ;
# endif /* NOPROBES */
# endif /* NOPROBES */
if ( argc = = 2 )
addr = simple_strtol ( argv [ 1 ] , 0 , 16 ) ;
puts ( " Valid chip addresses: " ) ;
puts ( " Valid chip addresses: " ) ;
for ( j = 0 ; j < 128 ; j + + ) {
for ( j = 0 ; j < 128 ; j + + ) {
if ( ( 0 < = addr ) & & ( j ! = addr ) )
continue ;
# if defined(CONFIG_SYS_I2C_NOPROBES)
# if defined(CONFIG_SYS_I2C_NOPROBES)
skip = 0 ;
skip = 0 ;
for ( k = 0 ; k < NUM_ELEMENTS_NOPROBE ; k + + ) {
for ( k = 0 ; k < NUM_ELEMENTS_NOPROBE ; k + + ) {
@ -628,8 +638,10 @@ static int do_i2c_probe (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv
if ( skip )
if ( skip )
continue ;
continue ;
# endif
# endif
if ( i2c_probe ( j ) = = 0 )
if ( i2c_probe ( j ) = = 0 ) {
printf ( " %02X " , j ) ;
printf ( " %02X " , j ) ;
found + + ;
}
}
}
putc ( ' \n ' ) ;
putc ( ' \n ' ) ;
@ -642,7 +654,7 @@ static int do_i2c_probe (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv
putc ( ' \n ' ) ;
putc ( ' \n ' ) ;
# endif
# endif
return 0 ;
return ( 0 = = found ) ;
}
}
/*
/*
@ -1380,7 +1392,7 @@ U_BOOT_CMD(
" i2c mm chip address[.0, .1, .2] - write to I2C device (auto-incrementing) \n "
" i2c mm chip address[.0, .1, .2] - write to I2C device (auto-incrementing) \n "
" i2c mw chip address[.0, .1, .2] value [count] - write to I2C device (fill) \n "
" i2c mw chip address[.0, .1, .2] value [count] - write to I2C device (fill) \n "
" i2c nm chip address[.0, .1, .2] - write to I2C device (constant address) \n "
" i2c nm chip address[.0, .1, .2] - write to I2C device (constant address) \n "
" i2c probe - show devices on the I2C bus \n "
" i2c probe [address] - test for and show device( s) on the I2C bus \n "
" i2c read chip address[.0, .1, .2] length memaddress - read to memory \n "
" i2c read chip address[.0, .1, .2] length memaddress - read to memory \n "
" i2c write memaddress chip address[.0, .1, .2] length - write memory to i2c \n "
" i2c write memaddress chip address[.0, .1, .2] length - write memory to i2c \n "
" i2c reset - re-init the I2C Controller \n "
" i2c reset - re-init the I2C Controller \n "