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){
|
while(tries < maxTries){
|
||||||
res = SPIReadJEDECIDAndStatusReg(t, &jedec, &sr); // dummy
|
res = SPIReadJEDECIDAndStatusReg(t, &jedec, &sr); // dummy
|
||||||
if(res) return res;
|
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) == 0x00 && (jedec != 0x00ffffff)) { break; }
|
||||||
if ((sr & 0xfd) == 0xF0 && (jedec == 0x00ffffff)) { t = EEPROM_512B; 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;
|
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_BLKLEN = inSize;
|
||||||
REG_NSPI_CNT = cntParams | NSPI_CNT_DIRE_WRITE;
|
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
|
do
|
||||||
{
|
{
|
||||||
if((counter & 31) == 0) nspiWaitFifoBusy();
|
if((counter & 31) == 0) nspiWaitFifoBusy();
|
||||||
REG_NSPI_FIFO = *in++;
|
memcpy(&buf, in_, min(4, inSize - counter));
|
||||||
|
REG_NSPI_FIFO = buf;
|
||||||
counter += 4;
|
counter += 4;
|
||||||
|
in_ += 4;
|
||||||
} while(counter < inSize);
|
} while(counter < inSize);
|
||||||
|
|
||||||
nspiWaitBusy();
|
nspiWaitBusy();
|
||||||
}
|
}
|
||||||
if(out)
|
if(out_)
|
||||||
{
|
{
|
||||||
REG_NSPI_BLKLEN = outSize;
|
REG_NSPI_BLKLEN = outSize;
|
||||||
REG_NSPI_CNT = cntParams | NSPI_CNT_DIRE_READ;
|
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
|
do
|
||||||
{
|
{
|
||||||
if((counter & 31) == 0) nspiWaitFifoBusy();
|
if((counter & 31) == 0) nspiWaitFifoBusy();
|
||||||
*out++ = REG_NSPI_FIFO;
|
buf = REG_NSPI_FIFO;
|
||||||
|
memcpy(out_, &buf, min(4, outSize - counter));
|
||||||
counter += 4;
|
counter += 4;
|
||||||
|
out_ += 4;
|
||||||
} while(counter < outSize);
|
} while(counter < outSize);
|
||||||
|
|
||||||
nspiWaitBusy();
|
nspiWaitBusy();
|
||||||
|
@ -80,7 +80,7 @@ bool _SPICARD_autoPollBit(u32 params);
|
|||||||
* @param[in] outSize Output size. Must be <= 0x1FFFFF.
|
* @param[in] outSize Output size. Must be <= 0x1FFFFF.
|
||||||
* @param[in] done Set to true if this is the last transfer (chip select).
|
* @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