mirror of
https://github.com/d0k3/GodMode9.git
synced 2025-06-26 13:42:47 +00:00
spicard.h: use void* pointers
First initialized cart reads correctly now, and cardswap just hangs.
This commit is contained in:
parent
2ceafc545b
commit
ac4ec6ee90
@ -350,24 +350,6 @@ int SPIGetCardType(CardType* type, int infrared) {
|
||||
while(tries < maxTries){
|
||||
res = SPIReadJEDECIDAndStatusReg(t, &jedec, &sr); // dummy
|
||||
if(res) return res;
|
||||
res = SPIReadJEDECIDAndStatusReg(t, &jedec, &sr); // dummy
|
||||
if(res) return res;
|
||||
res = SPIReadJEDECIDAndStatusReg(t, &jedec, &sr); // dummy
|
||||
if(res) return res;
|
||||
res = SPIReadJEDECIDAndStatusReg(t, &jedec, &sr); // dummy
|
||||
if(res) return res;
|
||||
res = SPIReadJEDECIDAndStatusReg(t, &jedec, &sr); // dummy
|
||||
if(res) return res;
|
||||
res = SPIReadJEDECIDAndStatusReg(t, &jedec, &sr); // dummy
|
||||
if(res) return res;
|
||||
res = SPIReadJEDECIDAndStatusReg(t, &jedec, &sr); // dummy
|
||||
if(res) return res;
|
||||
res = SPIReadJEDECIDAndStatusReg(t, &jedec, &sr); // dummy
|
||||
if(res) return res;
|
||||
res = SPIReadJEDECIDAndStatusReg(t, &jedec, &sr); // dummy
|
||||
if(res) return res;
|
||||
res = SPIReadJEDECIDAndStatusReg(t, &jedec, &sr); // dummy
|
||||
if(res) return res;
|
||||
|
||||
if ((sr & 0xfd) == 0x00 && (jedec != 0x00ffffff)) { break; }
|
||||
if ((sr & 0xfd) == 0xF0 && (jedec == 0x00ffffff)) { t = EEPROM_512B; break; }
|
||||
|
@ -100,11 +100,15 @@ bool _SPICARD_autoPollBit(u32 params)
|
||||
}
|
||||
*/
|
||||
|
||||
void SPICARD_writeRead(NspiClk clk, const u32 *in, u32 *out, u32 inSize, u32 outSize, bool done)
|
||||
void SPICARD_writeRead(NspiClk clk, const void *in, void *out, u32 inSize, u32 outSize, bool done)
|
||||
{
|
||||
const u32 cntParams = NSPI_CNT_ENABLE | NSPI_CNT_BUS_1BIT | clk;
|
||||
|
||||
if(in)
|
||||
u32 buf;
|
||||
char *in_ = (char *) in;
|
||||
char *out_ = (char *) out;
|
||||
|
||||
if(in_)
|
||||
{
|
||||
REG_NSPI_BLKLEN = inSize;
|
||||
REG_NSPI_CNT = cntParams | NSPI_CNT_DIRE_WRITE;
|
||||
@ -113,13 +117,15 @@ void SPICARD_writeRead(NspiClk clk, const u32 *in, u32 *out, u32 inSize, u32 out
|
||||
do
|
||||
{
|
||||
if((counter & 31) == 0) nspiWaitFifoBusy();
|
||||
REG_NSPI_FIFO = *in++;
|
||||
memcpy(&buf, in_, min(4, inSize - counter));
|
||||
REG_NSPI_FIFO = buf;
|
||||
counter += 4;
|
||||
in_ += 4;
|
||||
} while(counter < inSize);
|
||||
|
||||
nspiWaitBusy();
|
||||
}
|
||||
if(out)
|
||||
if(out_)
|
||||
{
|
||||
REG_NSPI_BLKLEN = outSize;
|
||||
REG_NSPI_CNT = cntParams | NSPI_CNT_DIRE_READ;
|
||||
@ -128,8 +134,10 @@ void SPICARD_writeRead(NspiClk clk, const u32 *in, u32 *out, u32 inSize, u32 out
|
||||
do
|
||||
{
|
||||
if((counter & 31) == 0) nspiWaitFifoBusy();
|
||||
*out++ = REG_NSPI_FIFO;
|
||||
buf = REG_NSPI_FIFO;
|
||||
memcpy(out_, &buf, min(4, outSize - counter));
|
||||
counter += 4;
|
||||
out_ += 4;
|
||||
} while(counter < outSize);
|
||||
|
||||
nspiWaitBusy();
|
||||
|
@ -80,7 +80,7 @@ bool _SPICARD_autoPollBit(u32 params);
|
||||
* @param[in] outSize Output size. Must be <= 0x1FFFFF.
|
||||
* @param[in] done Set to true if this is the last transfer (chip select).
|
||||
*/
|
||||
void SPICARD_writeRead(NspiClk clk, const u32 *in, u32 *out, u32 inSize, u32 outSize, bool done);
|
||||
void SPICARD_writeRead(NspiClk clk, const void *in, void *out, u32 inSize, u32 outSize, bool done);
|
||||
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user