mirror of
https://github.com/fail0verflow/mini.git
synced 2024-11-16 08:29:25 +01:00
Add NAND error bit and check logic
This commit is contained in:
parent
b23b1890dd
commit
6465f2f08c
15
nand.c
15
nand.c
@ -39,6 +39,7 @@ type *name = (type*)(((u32)(_al__##name)) + ((alignment) - (( \
|
|||||||
#define NAND_WRITE_POST 0x10
|
#define NAND_WRITE_POST 0x10
|
||||||
|
|
||||||
#define NAND_BUSY_MASK 0x80000000
|
#define NAND_BUSY_MASK 0x80000000
|
||||||
|
#define NAND_ERROR 0x20000000
|
||||||
|
|
||||||
#define NAND_FLAGS_IRQ 0x40000000
|
#define NAND_FLAGS_IRQ 0x40000000
|
||||||
#define NAND_FLAGS_WAIT 0x8000
|
#define NAND_FLAGS_WAIT 0x8000
|
||||||
@ -53,9 +54,16 @@ type *name = (type*)(((u32)(_al__##name)) + ((alignment) - (( \
|
|||||||
static int ipc_code = 0;
|
static int ipc_code = 0;
|
||||||
static int ipc_tag = 0;
|
static int ipc_tag = 0;
|
||||||
|
|
||||||
|
static inline u32 __nand_read32(u32 addr)
|
||||||
|
{
|
||||||
|
return read32(addr);
|
||||||
|
}
|
||||||
|
|
||||||
void nand_irq(void)
|
void nand_irq(void)
|
||||||
{
|
{
|
||||||
int code, tag;
|
int code, tag;
|
||||||
|
if(__nand_read32(NAND_CMD) & NAND_ERROR)
|
||||||
|
gecko_printf("NAND: Error on IRQ\n");
|
||||||
ahb_memflush(NAND);
|
ahb_memflush(NAND);
|
||||||
magic_bullshit(0);
|
magic_bullshit(0);
|
||||||
if (ipc_code != 0) {
|
if (ipc_code != 0) {
|
||||||
@ -66,11 +74,6 @@ void nand_irq(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline u32 __nand_read32(u32 addr)
|
|
||||||
{
|
|
||||||
return read32(addr);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void __nand_write32(u32 addr, u32 data)
|
inline void __nand_write32(u32 addr, u32 data)
|
||||||
{
|
{
|
||||||
write32(addr, data);
|
write32(addr, data);
|
||||||
@ -78,6 +81,8 @@ inline void __nand_write32(u32 addr, u32 data)
|
|||||||
|
|
||||||
inline void __nand_wait(void) {
|
inline void __nand_wait(void) {
|
||||||
while(__nand_read32(NAND_CMD) & NAND_BUSY_MASK);
|
while(__nand_read32(NAND_CMD) & NAND_BUSY_MASK);
|
||||||
|
if(__nand_read32(NAND_CMD) & NAND_ERROR)
|
||||||
|
gecko_printf("NAND: Error on wait\n");
|
||||||
ahb_memflush(NAND);
|
ahb_memflush(NAND);
|
||||||
magic_bullshit(0);
|
magic_bullshit(0);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user