mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-12-10 13:45:10 -05:00
Hopefully fix the remaining iPod Nano 2G flash issues, by adding a tiny sleep after resetting the chip. Also remove some evil tabs.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23489 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
24c1c75364
commit
890444c917
1 changed files with 13 additions and 12 deletions
|
|
@ -186,6 +186,7 @@ uint32_t nand_reset(uint32_t bank)
|
||||||
if (nand_send_cmd(NAND_CMD_RESET)) return 1;
|
if (nand_send_cmd(NAND_CMD_RESET)) return 1;
|
||||||
if (nand_wait_chip_ready(bank)) return 1;
|
if (nand_wait_chip_ready(bank)) return 1;
|
||||||
FMCTRL1 = FMCTRL1_CLEARRFIFO | FMCTRL1_CLEARWFIFO;
|
FMCTRL1 = FMCTRL1_CLEARRFIFO | FMCTRL1_CLEARWFIFO;
|
||||||
|
sleep(HZ / 100); /* Some chips seem to need this */
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -344,11 +345,11 @@ uint32_t nand_read_page(uint32_t bank, uint32_t page, void* databuffer,
|
||||||
void* sparebuffer, uint32_t doecc,
|
void* sparebuffer, uint32_t doecc,
|
||||||
uint32_t checkempty)
|
uint32_t checkempty)
|
||||||
{
|
{
|
||||||
uint8_t* data = nand_data;
|
uint8_t* data = nand_data;
|
||||||
uint8_t* spare = nand_spare;
|
uint8_t* spare = nand_spare;
|
||||||
if (databuffer && !((uint32_t)databuffer & 0xf))
|
if (databuffer && !((uint32_t)databuffer & 0xf))
|
||||||
data = (uint8_t*)databuffer;
|
data = (uint8_t*)databuffer;
|
||||||
if (sparebuffer && !((uint32_t)sparebuffer & 0xf))
|
if (sparebuffer && !((uint32_t)sparebuffer & 0xf))
|
||||||
spare = (uint8_t*)sparebuffer;
|
spare = (uint8_t*)sparebuffer;
|
||||||
mutex_lock(&nand_mtx);
|
mutex_lock(&nand_mtx);
|
||||||
led(true);
|
led(true);
|
||||||
|
|
@ -371,7 +372,7 @@ uint32_t nand_read_page(uint32_t bank, uint32_t page, void* databuffer,
|
||||||
{
|
{
|
||||||
if (nand_transfer_data(bank, 0, spare, 0x40))
|
if (nand_transfer_data(bank, 0, spare, 0x40))
|
||||||
return nand_unlock(1);
|
return nand_unlock(1);
|
||||||
if (sparebuffer && spare != sparebuffer)
|
if (sparebuffer && spare != sparebuffer)
|
||||||
memcpy(sparebuffer, spare, 0x800);
|
memcpy(sparebuffer, spare, 0x800);
|
||||||
if (checkempty)
|
if (checkempty)
|
||||||
rc = nand_check_empty((uint8_t*)sparebuffer) << 1;
|
rc = nand_check_empty((uint8_t*)sparebuffer) << 1;
|
||||||
|
|
@ -401,19 +402,19 @@ uint32_t nand_read_page(uint32_t bank, uint32_t page, void* databuffer,
|
||||||
uint32_t nand_write_page(uint32_t bank, uint32_t page, void* databuffer,
|
uint32_t nand_write_page(uint32_t bank, uint32_t page, void* databuffer,
|
||||||
void* sparebuffer, uint32_t doecc)
|
void* sparebuffer, uint32_t doecc)
|
||||||
{
|
{
|
||||||
uint8_t* data = nand_data;
|
uint8_t* data = nand_data;
|
||||||
uint8_t* spare = nand_spare;
|
uint8_t* spare = nand_spare;
|
||||||
if (databuffer && !((uint32_t)databuffer & 0xf))
|
if (databuffer && !((uint32_t)databuffer & 0xf))
|
||||||
data = (uint8_t*)databuffer;
|
data = (uint8_t*)databuffer;
|
||||||
if (sparebuffer && !((uint32_t)sparebuffer & 0xf))
|
if (sparebuffer && !((uint32_t)sparebuffer & 0xf))
|
||||||
spare = (uint8_t*)sparebuffer;
|
spare = (uint8_t*)sparebuffer;
|
||||||
mutex_lock(&nand_mtx);
|
mutex_lock(&nand_mtx);
|
||||||
led(true);
|
led(true);
|
||||||
if (!nand_powered) nand_power_up();
|
if (!nand_powered) nand_power_up();
|
||||||
if (sparebuffer)
|
if (sparebuffer)
|
||||||
{
|
{
|
||||||
if (spare != sparebuffer) memcpy(spare, sparebuffer, 0x40);
|
if (spare != sparebuffer) memcpy(spare, sparebuffer, 0x40);
|
||||||
}
|
}
|
||||||
else memset(spare, 0xFF, 0x40);
|
else memset(spare, 0xFF, 0x40);
|
||||||
if (doecc)
|
if (doecc)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue