@ -40,88 +40,7 @@ static int do_sata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
sata_curr_device = rc ;
}
switch ( argc ) {
case 0 :
case 1 :
return CMD_RET_USAGE ;
case 2 :
if ( strncmp ( argv [ 1 ] , " inf " , 3 ) = = 0 ) {
blk_list_devices ( IF_TYPE_SATA ) ;
return 0 ;
} else if ( strncmp ( argv [ 1 ] , " dev " , 3 ) = = 0 ) {
if ( blk_print_device_num ( IF_TYPE_SATA ,
sata_curr_device ) ) {
printf ( " \n no SATA devices available \n " ) ;
return CMD_RET_FAILURE ;
}
return 0 ;
} else if ( strncmp ( argv [ 1 ] , " part " , 4 ) = = 0 ) {
if ( blk_list_part ( IF_TYPE_SATA ) )
puts ( " \n no SATA devices available \n " ) ;
return 0 ;
}
return CMD_RET_USAGE ;
case 3 :
if ( strncmp ( argv [ 1 ] , " dev " , 3 ) = = 0 ) {
int dev = ( int ) simple_strtoul ( argv [ 2 ] , NULL , 10 ) ;
if ( ! blk_show_device ( IF_TYPE_SATA , dev ) ) {
sata_curr_device = dev ;
printf ( " ... is now current device \n " ) ;
} else {
return CMD_RET_FAILURE ;
}
return 0 ;
} else if ( strncmp ( argv [ 1 ] , " part " , 4 ) = = 0 ) {
int dev = ( int ) simple_strtoul ( argv [ 2 ] , NULL , 10 ) ;
if ( blk_print_part_devnum ( IF_TYPE_SATA , dev ) ) {
printf ( " \n SATA device %d not available \n " ,
dev ) ;
return CMD_RET_FAILURE ;
}
return rc ;
}
return CMD_RET_USAGE ;
default : /* at least 4 args */
if ( strcmp ( argv [ 1 ] , " read " ) = = 0 ) {
ulong addr = simple_strtoul ( argv [ 2 ] , NULL , 16 ) ;
ulong cnt = simple_strtoul ( argv [ 4 ] , NULL , 16 ) ;
ulong n ;
lbaint_t blk = simple_strtoul ( argv [ 3 ] , NULL , 16 ) ;
printf ( " \n SATA read: device %d block # %ld, count %ld ... " ,
sata_curr_device , blk , cnt ) ;
n = blk_read_devnum ( IF_TYPE_SATA , sata_curr_device , blk ,
cnt , ( ulong * ) addr ) ;
printf ( " %ld blocks read: %s \n " ,
n , ( n = = cnt ) ? " OK " : " ERROR " ) ;
return ( n = = cnt ) ? 0 : 1 ;
} else if ( strcmp ( argv [ 1 ] , " write " ) = = 0 ) {
ulong addr = simple_strtoul ( argv [ 2 ] , NULL , 16 ) ;
ulong cnt = simple_strtoul ( argv [ 4 ] , NULL , 16 ) ;
ulong n ;
lbaint_t blk = simple_strtoul ( argv [ 3 ] , NULL , 16 ) ;
printf ( " \n SATA write: device %d block # %ld, count %ld ... " ,
sata_curr_device , blk , cnt ) ;
n = blk_write_devnum ( IF_TYPE_SATA , sata_curr_device ,
blk , cnt , ( ulong * ) addr ) ;
printf ( " %ld blocks written: %s \n " ,
n , ( n = = cnt ) ? " OK " : " ERROR " ) ;
return ( n = = cnt ) ? 0 : 1 ;
} else {
return CMD_RET_USAGE ;
}
return rc ;
}
return blk_common_cmd ( argc , argv , IF_TYPE_SATA , & sata_curr_device ) ;
}
U_BOOT_CMD (