@ -54,13 +54,9 @@ static int nand_dump(nand_info_t *nand, ulong off)
return 1 ;
}
off & = ~ ( nand - > writesize - 1 ) ;
#if 0
i = nand_read_raw ( nand , buf , off , nand - > writesize , nand - > oobsize ) ;
# else
size_t dummy ;
loff_t addr = ( loff_t ) off ;
i = nand - > read ( nand , addr , nand - > writesize , & dummy , buf ) ;
# endif
if ( i < 0 ) {
printf ( " Error (%d) reading page %08lx \n " , i , off ) ;
free ( buf ) ;
@ -257,7 +253,7 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
if ( strcmp ( cmd , " erase " ) = = 0 | | strcmp ( cmd , " scrub " ) = = 0 ) {
nand_erase_options_t opts ;
/* "clean" at index 2 means request to write cleanmarker */
int clean = ! strcmp ( " clean " , argv [ 2 ] ) ;
int clean = argc > 2 & & ! strcmp ( " clean " , argv [ 2 ] ) ;
int o = clean ? 3 : 2 ;
int scrub = ! strcmp ( cmd , " scrub " ) ;
@ -267,7 +263,6 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
return 1 ;
memset ( & opts , 0 , sizeof ( opts ) ) ;
opts . offset = off ;
opts . length = size ;
opts . jffs2 = clean ;
@ -340,7 +335,13 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
opts . length = size ;
opts . offset = off ;
opts . quiet = quiet ;
/* ret = nand_read_opts(nand, &opts); */
/*
* ! BROKEN !
*
* TODO : Function must be implemented
*
* ret = nand_read_opts ( nand , & opts ) ;
*/
} else {
/* write */
mtd_oob_ops_t opts ;
@ -404,12 +405,17 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
if ( ! strcmp ( " status " , argv [ 2 ] ) )
status = 1 ;
}
/*
* ! BROKEN !
*
* TODO : must be implemented and tested by someone with HW
*/
#if 0
if ( status ) {
ulong block_start = 0 ;
ulong off ;
/* ulong block_start = 0;
int last_status = - 1 ;
*/
struct nand_chip * nand_chip = nand - > priv ;
/* check the WP bit */
nand_chip - > cmdfunc ( nand , NAND_CMD_STATUS , - 1 , - 1 ) ;
@ -418,7 +424,6 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
" NOT " : " " ) ) ;
for ( off = 0 ; off < nand - > size ; off + = nand - > writesize ) {
#if 0 /* must be fixed */
int s = nand_get_lock_status ( nand , off ) ;
/* print message only if status has changed
@ -437,18 +442,16 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
}
last_status = s ;
# endif
}
} else {
#if 0 /* must be fixed */
if ( ! nand_lock ( nand , tight ) ) {
puts ( " NAND flash successfully locked \n " ) ;
} else {
puts ( " Error locking NAND flash \n " ) ;
return 1 ;
}
# endif
}
# endif
return 0 ;
}
@ -456,7 +459,12 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
if ( arg_off_size ( argc - 2 , argv + 2 , nand , & off , & size ) < 0 )
return 1 ;
#if 0 /* must be fixed */
/*
* ! BROKEN !
*
* TODO : must be implemented and tested by someone with HW
*/
#if 0
if ( ! nand_unlock ( nand , off , size ) ) {
puts ( " NAND flash successfully unlocked \n " ) ;
} else {
@ -542,6 +550,7 @@ static int nand_load_image(cmd_tbl_t *cmdtp, nand_info_t *nand,
puts ( " ** Unknown image type \n " ) ;
return 1 ;
}
show_boot_progress ( 57 ) ;
r = nand_read ( nand , offset , & cnt , ( u_char * ) addr ) ;
if ( r ) {
@ -887,8 +896,7 @@ int do_nand (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
ret = nand_legacy_rw ( nand_dev_desc + curr_device ,
cmd , off , size ,
& total ,
( u_char * ) addr ) ;
& total , ( u_char * ) addr ) ;
printf ( " %d bytes %s: %s \n " , total ,
( cmd & NANDRW_READ ) ? " read " : " written " ,