mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-12-09 05:05:20 -05:00
Nano2G NAND interleaved erase support
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25155 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
382b6dca08
commit
a99f8fae79
1 changed files with 35 additions and 0 deletions
|
|
@ -676,6 +676,41 @@ uint32_t nand_write_page_collect(uint32_t bank)
|
|||
return nand_wait_status_ready(bank);
|
||||
}
|
||||
|
||||
uint32_t nand_block_erase_fast(uint32_t page)
|
||||
{
|
||||
uint32_t i, rc = 0;
|
||||
mutex_lock(&nand_mtx);
|
||||
nand_last_activity_value = current_tick;
|
||||
led(true);
|
||||
if (!nand_powered) nand_power_up();
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if (nand_type[i] == 0xFFFFFFFF) continue;
|
||||
nand_set_fmctrl0(i, 0);
|
||||
if (nand_send_cmd(NAND_CMD_BLOCKERASE))
|
||||
{
|
||||
rc |= 1 << i;
|
||||
continue;
|
||||
}
|
||||
FMANUM = 2;
|
||||
FMADDR0 = page;
|
||||
FMCTRL1 = FMCTRL1_DOTRANSADDR;
|
||||
if (nand_wait_cmddone())
|
||||
{
|
||||
rc |= 1 << i;
|
||||
continue;
|
||||
}
|
||||
if (nand_send_cmd(NAND_CMD_ERASECNFRM)) rc |= 1 << i;
|
||||
}
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if (nand_type[i] == 0xFFFFFFFF) continue;
|
||||
if (rc & (1 << i)) continue;
|
||||
if (nand_wait_status_ready(i)) rc |= 1 << i;
|
||||
}
|
||||
return nand_unlock(rc);
|
||||
}
|
||||
|
||||
const struct nand_device_info_type* nand_get_device_type(uint32_t bank)
|
||||
{
|
||||
if (nand_type[bank] == 0xFFFFFFFF)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue