spicard.h: use void* pointers

First initialized cart reads correctly now, and cardswap just hangs.
This commit is contained in:
Balint Kovacs 2019-07-09 03:57:20 +02:00 committed by d0k3
parent 2ceafc545b
commit ac4ec6ee90
3 changed files with 14 additions and 24 deletions

View File

@ -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; }

View File

@ -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();

View File

@ -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);
/**