mirror of
https://github.com/fail0verflow/mini.git
synced 2024-11-30 23:24:19 +01:00
Fix usbgecko detection.
Avoid hangs when no usbgecko is present.
This commit is contained in:
parent
4f1ed52dd7
commit
75958b2508
32
gecko.c
32
gecko.c
@ -42,8 +42,22 @@ static u32 _gecko_command(u32 command)
|
|||||||
write32(EXI1_CSR, 0xd0);
|
write32(EXI1_CSR, 0xd0);
|
||||||
write32(EXI1_DATA, command);
|
write32(EXI1_DATA, command);
|
||||||
write32(EXI1_CR, 0x19);
|
write32(EXI1_CR, 0x19);
|
||||||
i = 1000;
|
while (read32(EXI1_CR) & 1);
|
||||||
while ((read32(EXI1_CR) & 1) && (i--));
|
i = read32(EXI1_DATA);
|
||||||
|
write32(EXI1_CSR, 0);
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
static u32 _gecko_getid(void)
|
||||||
|
{
|
||||||
|
u32 i;
|
||||||
|
// Memory Card Port B (Channel 1, Device 0, Frequency 3 (32Mhz Clock))
|
||||||
|
write32(EXI1_CSR, 0xd0);
|
||||||
|
write32(EXI1_DATA, 0);
|
||||||
|
write32(EXI1_CR, 0x19);
|
||||||
|
while (read32(EXI1_CR) & 1);
|
||||||
|
write32(EXI1_CR, 0x39);
|
||||||
|
while (read32(EXI1_CR) & 1);
|
||||||
i = read32(EXI1_DATA);
|
i = read32(EXI1_DATA);
|
||||||
write32(EXI1_CSR, 0);
|
write32(EXI1_CSR, 0);
|
||||||
return i;
|
return i;
|
||||||
@ -93,11 +107,17 @@ static u32 _gecko_checkrecv(void)
|
|||||||
|
|
||||||
static int gecko_isalive(void)
|
static int gecko_isalive(void)
|
||||||
{
|
{
|
||||||
u32 i = 0;
|
u32 i;
|
||||||
i = _gecko_command(0x90000000);
|
|
||||||
if (i&0x04700000)
|
i = _gecko_getid();
|
||||||
return 1;
|
if (i != 0x00000000)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
i = _gecko_command(0x90000000);
|
||||||
|
if ((i & 0xFFFF0000) != 0x04700000)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gecko_flush(void)
|
static void gecko_flush(void)
|
||||||
|
Loading…
Reference in New Issue
Block a user