| Line 344... |
Line 344... |
| 344 |
sleep(50000);
|
344 |
sleep(50000);
|
| 345 |
nand_last_activity_value = USEC_TIMER;
|
345 |
nand_last_activity_value = USEC_TIMER;
|
| 346 |
for (i = 0; i < 4; i++)
|
346 |
for (i = 0; i < 4; i++)
|
| 347 |
if (nand_type[i] >= 0)
|
347 |
if (nand_type[i] >= 0)
|
| 348 |
if (nand_reset(i))
|
348 |
if (nand_reset(i))
|
| 349 |
panicf(PANIC_FATAL, "nand_power_up: nand_reset(bank=%d) failed.", (unsigned int)i);
|
349 |
panicf(PANIC_KILLTHREAD, "nand_power_up: nand_reset(bank=%d) failed.", (unsigned int)i);
|
| 350 |
nand_powered = 1;
|
350 |
nand_powered = 1;
|
| 351 |
nand_last_activity_value = USEC_TIMER;
|
351 |
nand_last_activity_value = USEC_TIMER;
|
| 352 |
mutex_unlock(&nand_mtx);
|
352 |
mutex_unlock(&nand_mtx);
|
| 353 |
}
|
353 |
}
|
| 354 |
|
354 |
|
| Line 380... |
Line 380... |
| 380 |
#endif
|
380 |
#endif
|
| 381 |
uint8_t* data = (uint8_t*)databuffer;
|
381 |
uint8_t* data = (uint8_t*)databuffer;
|
| 382 |
uint8_t* spare = nand_spare;
|
382 |
uint8_t* spare = nand_spare;
|
| 383 |
if (sparebuffer) spare = (uint8_t*)sparebuffer;
|
383 |
if (sparebuffer) spare = (uint8_t*)sparebuffer;
|
| 384 |
if ((uint32_t)databuffer & (CACHEALIGN_SIZE - 1))
|
384 |
if ((uint32_t)databuffer & (CACHEALIGN_SIZE - 1))
|
| 385 |
panicf(PANIC_KILLUSERTHREADS,
|
385 |
panicf(PANIC_KILLTHREAD,
|
| 386 |
"nand_read_page: Misaligned data buffer at %08X (bank %lu, page %lu)",
|
386 |
"nand_read_page: Misaligned data buffer at %08X (bank %lu, page %lu)",
|
| 387 |
(unsigned int)databuffer, bank, page);
|
387 |
(unsigned int)databuffer, bank, page);
|
| 388 |
if ((uint32_t)sparebuffer & (CACHEALIGN_SIZE - 1))
|
388 |
if ((uint32_t)sparebuffer & (CACHEALIGN_SIZE - 1))
|
| 389 |
panicf(PANIC_KILLUSERTHREADS,
|
389 |
panicf(PANIC_KILLTHREAD,
|
| 390 |
"nand_read_page: Misaligned spare buffer at %08X (bank %lu, page %lu)",
|
390 |
"nand_read_page: Misaligned spare buffer at %08X (bank %lu, page %lu)",
|
| 391 |
(unsigned int)sparebuffer, bank, page);
|
391 |
(unsigned int)sparebuffer, bank, page);
|
| 392 |
mutex_lock(&nand_mtx, TIMEOUT_BLOCK);
|
392 |
mutex_lock(&nand_mtx, TIMEOUT_BLOCK);
|
| 393 |
nand_last_activity_value = USEC_TIMER;
|
393 |
nand_last_activity_value = USEC_TIMER;
|
| 394 |
if (!nand_powered) nand_power_up();
|
394 |
if (!nand_powered) nand_power_up();
|
| Line 465... |
Line 465... |
| 465 |
#endif
|
465 |
#endif
|
| 466 |
uint8_t* data = (uint8_t*)databuffer;
|
466 |
uint8_t* data = (uint8_t*)databuffer;
|
| 467 |
uint8_t* spare = nand_spare;
|
467 |
uint8_t* spare = nand_spare;
|
| 468 |
if (sparebuffer) spare = (uint8_t*)sparebuffer;
|
468 |
if (sparebuffer) spare = (uint8_t*)sparebuffer;
|
| 469 |
if ((uint32_t)databuffer & 0xf)
|
469 |
if ((uint32_t)databuffer & 0xf)
|
| 470 |
panicf(PANIC_KILLUSERTHREADS,
|
470 |
panicf(PANIC_KILLTHREAD,
|
| 471 |
"nand_write_page: Misaligned data buffer at %08X (bank %lu, page %lu)",
|
471 |
"nand_write_page: Misaligned data buffer at %08X (bank %lu, page %lu)",
|
| 472 |
(unsigned int)databuffer, bank, page);
|
472 |
(unsigned int)databuffer, bank, page);
|
| 473 |
if ((uint32_t)sparebuffer & 0xf)
|
473 |
if ((uint32_t)sparebuffer & 0xf)
|
| 474 |
panicf(PANIC_KILLUSERTHREADS,
|
474 |
panicf(PANIC_KILLTHREAD,
|
| 475 |
"nand_write_page: Misaligned spare buffer at %08X (bank %lu, page %lu)",
|
475 |
"nand_write_page: Misaligned spare buffer at %08X (bank %lu, page %lu)",
|
| 476 |
(unsigned int)sparebuffer, bank, page);
|
476 |
(unsigned int)sparebuffer, bank, page);
|
| 477 |
mutex_lock(&nand_mtx, TIMEOUT_BLOCK);
|
477 |
mutex_lock(&nand_mtx, TIMEOUT_BLOCK);
|
| 478 |
nand_last_activity_value = USEC_TIMER;
|
478 |
nand_last_activity_value = USEC_TIMER;
|
| 479 |
if (!nand_powered) nand_power_up();
|
479 |
if (!nand_powered) nand_power_up();
|