23 #define CMD_PACKET_MAX 128
24 #define CMD_PACKET_DATA_MAX 112
25 #define SYS_CMD_HANDLER_MAX 32
26 #define USR_CMD_HANDLER_MAX 32
30 #define DMAC_COMM_STAT 0x1000e010
31 #define DMAC_SIF0_CHCR 0x1000c000
32 #define CHCR_STR 0x100
33 #define STAT_SIF0 0x20
59 static unsigned int _SifSendCmd(
int cid,
int mode,
void *pkt,
int pktsize,
void *src,
73 header->
psize = pktsize;
83 dmat[count].
src = src;
84 dmat[count].
dest = dest;
85 dmat[count].
size = size;
90 dmat[count].
src = pkt;
92 dmat[count].
size = pktsize;
106 void *extra_from,
void *extra_dest,
int extra_len)
108 return _SifSendCmd(
command, 0, send_data, send_len,
109 extra_from, extra_dest, extra_len);
114 void *extra_from,
void *extra_dest,
int extra_len)
117 extra_from, extra_dest, extra_len);
121 #ifdef F__sif_cmd_int_handler
129 int size, pktquads, id, i = 0;
135 if (!(size = header->
psize))
138 pktquads = (size + 30) >> 4;
168 if (cmd_handlers[
id].handler)
177 #ifdef F_sif_cmd_main
181 static u8 sif_unused[64] __attribute__((aligned(64)));
185 static int sregs[32];
189 static int sif0_id = -1;
196 static void change_addr(
void *
packet,
void *harg)
199 struct ca_pkt *pkt = (
struct ca_pkt *)
packet;
210 static void set_sreg(
void *
packet,
void *harg)
213 struct sr_pkt *pkt = (
struct sr_pkt *)
packet;
220 static struct ca_pkt
packet __attribute((aligned(64)));
222 static int _rb_count = 0;
252 for (i = 0; i < 32; i++)
304 #ifdef F_sif_cmd_client
323 cmd_handlers[
id].
handler = handler;
324 cmd_handlers[
id].harg = harg;
328 #ifdef F_sif_cmd_remove_cmdhandler
340 #ifdef F_sif_sreg_get
int DisableDmac(int dmac)
u32 SifSetDma(SifDmaTransfer_t *sdd, s32 len)
u32 iSifSetDma(SifDmaTransfer_t *sdd, s32 len)
s32 AddDmacHandler(s32 channel, s32(*handler)(s32 channel), s32 next)
int SifSetReg(u32 register_num, int register_value)
s32 RemoveDmacHandler(s32 channel, s32 handler_id)
void FlushCache(s32 operation)
int SifGetReg(u32 register_num)
int _SifCmdIntHandler(int channel)
struct cmd_data _sif_cmd_data
#define SYS_CMD_HANDLER_MAX
#define CMD_PACKET_DATA_MAX
#define USR_CMD_HANDLER_MAX
void SifRemoveCmdHandler(int pos)
int SifGetSreg(int index)
unsigned int SifSendCmd(int cmd, void *packet, int packet_size, void *src_extra, void *dest_extra, int size_extra)
#define SIF_CMD_ID_SYSTEM
#define SIF_CMD_CHANGE_SADDR
void SifWriteBackDCache(void *ptr, int size)
SifCmdHandlerData_t * SifSetCmdBuffer(SifCmdHandlerData_t *db, int size)
void(* SifCmdHandler_t)(void *data, void *harg)
void SifAddCmdHandler(int pos, SifCmdHandler_t handler, void *harg)
unsigned int iSifSendCmd(int cmd, void *packet, int packet_size, void *src_extra, void *dest_extra, int size_extra)
SifCmdHandlerData_t * usr_cmd_handlers
SifCmdHandlerData_t * sys_cmd_handlers
static void _sw(u32 val, u32 addr)