Add (optional) verbose logging of cart traffic, for debugging
This commit is contained in:
parent
f95a7585fc
commit
843095109f
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
#include "protocol.h"
|
#include "protocol.h"
|
||||||
#include "delay.h"
|
#include "delay.h"
|
||||||
|
#include "draw.h"
|
||||||
|
|
||||||
void CTR_SetSecKey(u32 value) {
|
void CTR_SetSecKey(u32 value) {
|
||||||
REG_CTRCARDSECCNT |= ((value & 3) << 8) | 4;
|
REG_CTRCARDSECCNT |= ((value & 3) << 8) | 4;
|
||||||
@ -28,6 +29,10 @@ void CTR_SetSecSeed(const u32* seed, bool flag) {
|
|||||||
|
|
||||||
void CTR_SendCommand(const u32 command[4], u32 pageSize, u32 blocks, u32 latency, void* buffer)
|
void CTR_SendCommand(const u32 command[4], u32 pageSize, u32 blocks, u32 latency, void* buffer)
|
||||||
{
|
{
|
||||||
|
#ifdef VERBOSE_COMMANDS
|
||||||
|
Debug("C> %08X %08X %08X %08X", command[0], command[1], command[2], command[3]);
|
||||||
|
#endif
|
||||||
|
|
||||||
REG_CTRCARDCMD[0] = command[3];
|
REG_CTRCARDCMD[0] = command[3];
|
||||||
REG_CTRCARDCMD[1] = command[2];
|
REG_CTRCARDCMD[1] = command[2];
|
||||||
REG_CTRCARDCMD[2] = command[1];
|
REG_CTRCARDCMD[2] = command[1];
|
||||||
@ -142,4 +147,33 @@ void CTR_SendCommand(const u32 command[4], u32 pageSize, u32 blocks, u32 latency
|
|||||||
// wait rom cs high
|
// wait rom cs high
|
||||||
do { cardCtrl = REG_CTRCARDCNT; } while( cardCtrl & CTRCARD_BUSY );
|
do { cardCtrl = REG_CTRCARDCNT; } while( cardCtrl & CTRCARD_BUSY );
|
||||||
//lastCmd[0] = command[0];lastCmd[1] = command[1];
|
//lastCmd[0] = command[0];lastCmd[1] = command[1];
|
||||||
|
|
||||||
|
#ifdef VERBOSE_COMMANDS
|
||||||
|
if (!useBuf) {
|
||||||
|
Debug("C< NULL");
|
||||||
|
} else if (!useBuf32) {
|
||||||
|
Debug("C< non32");
|
||||||
|
} else {
|
||||||
|
u32* p = (u32*)buffer;
|
||||||
|
int transferWords = count / 4;
|
||||||
|
for (int i = 0; i < transferWords && i < 4*4; i += 4) {
|
||||||
|
switch (transferWords - i) {
|
||||||
|
case 0:
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
Debug("C< %08X", p[i+0]);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
Debug("C< %08X %08X", p[i+0], p[i+1]);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
Debug("C< %08X %08X %08X", p[i+0], p[i+1], p[i+2]);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Debug("C< %08X %08X %08X %08X", p[i+0], p[i+1], p[i+2], p[i+3]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -3,9 +3,14 @@
|
|||||||
// Refer to the license.txt file included.
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
#include "protocol_ntr.h"
|
#include "protocol_ntr.h"
|
||||||
|
#include "draw.h"
|
||||||
|
|
||||||
void NTR_SendCommand(const u32 command[2], u32 pageSize, u32 latency, void* buffer)
|
void NTR_SendCommand(const u32 command[2], u32 pageSize, u32 latency, void* buffer)
|
||||||
{
|
{
|
||||||
|
#ifdef VERBOSE_COMMANDS
|
||||||
|
Debug("N> %08X %08X", command[0], command[1]);
|
||||||
|
#endif
|
||||||
|
|
||||||
REG_NTRCARDMCNT = NTRCARD_CR1_ENABLE;
|
REG_NTRCARDMCNT = NTRCARD_CR1_ENABLE;
|
||||||
|
|
||||||
for( u32 i=0; i<2; ++i )
|
for( u32 i=0; i<2; ++i )
|
||||||
@ -109,4 +114,33 @@ void NTR_SendCommand(const u32 command[2], u32 pageSize, u32 latency, void* buff
|
|||||||
// wait rom cs high
|
// wait rom cs high
|
||||||
do { cardCtrl = REG_NTRCARDROMCNT; } while( cardCtrl & NTRCARD_BUSY );
|
do { cardCtrl = REG_NTRCARDROMCNT; } while( cardCtrl & NTRCARD_BUSY );
|
||||||
//lastCmd[0] = command[0];lastCmd[1] = command[1];
|
//lastCmd[0] = command[0];lastCmd[1] = command[1];
|
||||||
|
|
||||||
|
#ifdef VERBOSE_COMMANDS
|
||||||
|
if (!useBuf) {
|
||||||
|
Debug("N< NULL");
|
||||||
|
} else if (!useBuf32) {
|
||||||
|
Debug("N< non32");
|
||||||
|
} else {
|
||||||
|
u32* p = (u32*)buffer;
|
||||||
|
int transferWords = count / 4;
|
||||||
|
for (int i = 0; i < transferWords && i < 4*4; i += 4) {
|
||||||
|
switch (transferWords - i) {
|
||||||
|
case 0:
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
Debug("N< %08X", p[i+0]);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
Debug("N< %08X %08X", p[i+0], p[i+1]);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
Debug("N< %08X %08X %08X", p[i+0], p[i+1], p[i+2]);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Debug("N< %08X %08X %08X %08X", p[i+0], p[i+1], p[i+2], p[i+3]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user