mirror of
git://projects.qi-hardware.com/xburst-tools.git
synced 2024-11-01 10:22:48 +02:00
xburst_stage2: don't skip bad block when nand erase
This commit is contained in:
parent
24aa5a2277
commit
0e92eb8bd7
@ -309,19 +309,17 @@ u32 nand_read_raw_4740(void *buf, u32 startpage, u32 pagecount, int option)
|
|||||||
|
|
||||||
u32 nand_erase_4740(int blk_num, int sblk, int force)
|
u32 nand_erase_4740(int blk_num, int sblk, int force)
|
||||||
{
|
{
|
||||||
int i, j;
|
int j;
|
||||||
u32 cur, rowaddr;
|
u32 cur, rowaddr;
|
||||||
|
|
||||||
if (wp_pin)
|
if (wp_pin)
|
||||||
__gpio_set_pin(wp_pin);
|
__gpio_set_pin(wp_pin);
|
||||||
|
|
||||||
cur = sblk * ppb;
|
for (cur = sblk * ppb; cur < (sblk + blk_num) * ppb; cur += ppb) {
|
||||||
for (i = 0; i < blk_num; ) {
|
|
||||||
rowaddr = cur;
|
rowaddr = cur;
|
||||||
select_chip(cur / ppb);
|
select_chip(cur / ppb);
|
||||||
if (!force) {
|
if (!force) {
|
||||||
if (nand_check_block(cur/ppb)) {
|
if (nand_check_block(cur / ppb)) {
|
||||||
cur += ppb;
|
|
||||||
blk_num += Hand.nand_plane;
|
blk_num += Hand.nand_plane;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -341,15 +339,13 @@ u32 nand_erase_4740(int blk_num, int sblk, int force)
|
|||||||
serial_puts("\nErase fail at: \t");
|
serial_puts("\nErase fail at: \t");
|
||||||
serial_put_hex(cur / ppb);
|
serial_put_hex(cur / ppb);
|
||||||
nand_mark_bad_4740(cur/ppb);
|
nand_mark_bad_4740(cur/ppb);
|
||||||
cur += ppb;
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
cur += ppb;
|
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wp_pin)
|
if (wp_pin)
|
||||||
__gpio_clear_pin(wp_pin);
|
__gpio_clear_pin(wp_pin);
|
||||||
|
|
||||||
return cur;
|
return cur;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -744,7 +740,6 @@ u32 nand_mark_bad_4740(int block)
|
|||||||
{
|
{
|
||||||
u32 rowaddr;
|
u32 rowaddr;
|
||||||
|
|
||||||
/* nand_erase_4740( 1, block, 1); force erase before */
|
|
||||||
if (bad_block_page >= ppb) { /* mark four page! */
|
if (bad_block_page >= ppb) { /* mark four page! */
|
||||||
rowaddr = block * ppb + 0;
|
rowaddr = block * ppb + 0;
|
||||||
nand_mark_bad_page(rowaddr);
|
nand_mark_bad_page(rowaddr);
|
||||||
|
Loading…
Reference in New Issue
Block a user