Mercurial > nand-ecoscentric
comparison packages/io/nand/current/src/nand.c @ 3384:1229083b0af1
cdl/nand.cdl src/nand.c utils/erasenand.c: Create CYGSEM_IO_NAND_ALLOW_ERASE_WORNBAD.
| author | Ross Younger <wry@ecoscentric.com> |
|---|---|
| date | Sat, 21 Jun 2014 22:52:44 +1200 |
| parents | 6d93cd3d3350 |
| children | 3ec9445648cd |
comparison
equal
deleted
inserted
replaced
| 3383:060772fa9bb3 | 3384:1229083b0af1 |
|---|---|
| 665 #ifdef CYGSEM_IO_NAND_READONLY | 665 #ifdef CYGSEM_IO_NAND_READONLY |
| 666 return -EROFS; | 666 return -EROFS; |
| 667 #else | 667 #else |
| 668 PARTITION_CHECK(prt); | 668 PARTITION_CHECK(prt); |
| 669 cyg_nand_device *dev = prt->dev; | 669 cyg_nand_device *dev = prt->dev; |
| 670 int rv; | 670 int rv, state; |
| 671 DEV_INIT_CHECK(dev); | 671 DEV_INIT_CHECK(dev); |
| 672 cyg_nand_block_addr blk = BLOCK_P_TO_D(prt, pblk); | 672 cyg_nand_block_addr blk = BLOCK_P_TO_D(prt, pblk); |
| 673 | 673 |
| 674 TIMETAG(); | 674 TIMETAG(); |
| 675 LOCK_DEV(dev); | 675 LOCK_DEV(dev); |
| 676 TIMETAG(); | 676 TIMETAG(); |
| 677 | 677 |
| 678 EG(valid_block_addr(prt, blk)); | 678 EG(valid_block_addr(prt, blk)); |
| 679 #ifdef CYGSEM_IO_NAND_USE_BBT | 679 #ifdef CYGSEM_IO_NAND_USE_BBT |
| 680 if (cyg_nand_bbti_query(dev, blk) != CYG_NAND_BBT_OK) { | 680 state = cyg_nand_bbti_query(dev, blk); |
| 681 if ( (state != CYG_NAND_BBT_OK) | |
| 682 #ifdef CYGSEM_IO_NAND_ALLOW_ERASE_WORNBAD | |
| 683 && (state != CYG_NAND_BBT_WORNBAD) | |
| 684 #endif | |
| 685 ) { | |
| 681 NAND_CHATTER(1,dev,"Asked to erase bad block %u\n", blk); | 686 NAND_CHATTER(1,dev,"Asked to erase bad block %u\n", blk); |
| 682 EG(-EINVAL); | 687 EG(-EINVAL); |
| 683 } | 688 } |
| 684 #endif | 689 #endif |
| 685 NAND_CHATTER(8,dev,"Erasing block %u\n", blk); | 690 NAND_CHATTER(8,dev,"Erasing block %u\n", blk); |
