31 #define PAD_BIND_RPC_ID1 0x80000100
32 #define PAD_BIND_RPC_ID2 0x80000101
34 #define PAD_RPCCMD_OPEN 0x01
35 #define PAD_RPCCMD_SET_MMODE 0x06
36 #define PAD_RPCCMD_SET_ACTDIR 0x07
37 #define PAD_RPCCMD_SET_ACTALIGN 0x08
38 #define PAD_RPCCMD_GET_BTNMASK 0x09
39 #define PAD_RPCCMD_SET_BTNINFO 0x0A
40 #define PAD_RPCCMD_SET_VREF 0x0B
41 #define PAD_RPCCMD_GET_PORTMAX 0x0C
42 #define PAD_RPCCMD_GET_SLOTMAX 0x0D
43 #define PAD_RPCCMD_CLOSE 0x0E
44 #define PAD_RPCCMD_END 0x0F
45 #define PAD_RPCCMD_INIT 0x10
46 #define PAD_RPCCMD_GET_MODVER 0x12
48 #define PAD_BIND_RPC_ID1 0x8000010f
49 #define PAD_BIND_RPC_ID2 0x8000011f
51 #define PAD_RPCCMD_OPEN 0x80000100
52 #define PAD_RPCCMD_INFO_ACT 0x80000102
53 #define PAD_RPCCMD_INFO_COMB 0x80000103
54 #define PAD_RPCCMD_INFO_MODE 0x80000104
55 #define PAD_RPCCMD_SET_MMODE 0x80000105
56 #define PAD_RPCCMD_SET_ACTDIR 0x80000106
57 #define PAD_RPCCMD_SET_ACTALIGN 0x80000107
58 #define PAD_RPCCMD_GET_BTNMASK 0x80000108
59 #define PAD_RPCCMD_SET_BTNINFO 0x80000109
60 #define PAD_RPCCMD_SET_VREF 0x8000010a
61 #define PAD_RPCCMD_GET_PORTMAX 0x8000010b
62 #define PAD_RPCCMD_GET_SLOTMAX 0x8000010c
63 #define PAD_RPCCMD_CLOSE 0x8000010d
64 #define PAD_RPCCMD_END 0x8000010e
65 #define PAD_RPCCMD_INIT 0x00000100
147 "FINDCTP1",
"",
"",
"EXECCMD",
235 buffer __attribute__((aligned(64)));
237 buffer __attribute__((aligned(16)));
242 static struct open_slot openSlot[2] __attribute__((aligned(64)));
273 static struct open_slot*
274 padGetConnDmaStr(
void)
278 if(openSlot[0].frame < openSlot[1].frame)
301 static int _rb_count = 0;
322 }
while(!
padsif[0].server);
329 }
while(!
padsif[1].server);
359 buffer.padInitArgs.statBuf = openSlot;
365 return(ret >= 0 ?
buffer.padResult.result : 0);
383 ret =
buffer.padResult.result;
401 printf(
"Address is not 16-byte aligned.\n");
407 printf(
"Address is not 16-byte aligned.\n");
412 for (i=0; i<2; i++) {
413 memset(dma_buf[i].
data, 0xff, 32);
414 dma_buf[i].
frame = 0;
422 dma_buf[i].currentTask = 0;
426 dma_buf[i].buttonDataReady = 0;
445 return buffer.padOpenResult.result;
457 buffer.padCloseArgs.mode = 1;
465 return buffer.padResult.result;
495 if (pdata->findPadRetries)
556 return buffer.padResult.result;
569 return buffer.padResult.result;
576 buffer.command = PAD_RPCCMD_GET_MODVER;
581 return buffer.padResult.result;
595 if (pdata->currentTask != 1)
602 if (pdata->modeCurId == 0xF3)
605 return (pdata->modeCurId >> 4);
609 if (pdata->modeConfig == pdata->currentTask)
611 return pdata->modeTable[pdata->modeCurOffs];
615 if (pdata->modeConfig != 0)
616 return pdata->modeCurOffs;
622 if (pdata->modeConfig != 0) {
624 return pdata->nrOfModes;
626 else if (index < pdata->nrOfModes) {
627 return pdata->modeTable[
index];
648 if (
buffer.padModeResult.result == 1) {
651 return buffer.padModeResult.result;
668 if (
buffer.padModeResult.result == 1) {
671 return buffer.padModeResult.result;
713 return buffer.padResult.result;
729 val =
buffer.padSetButtonInfoResult.result;
734 return buffer.padSetButtonInfoResult.result;
745 if (pdata->currentTask != 1)
747 if (pdata->modeConfig < 2)
749 if (
actuator >= pdata->nrOfActuators)
753 return pdata->nrOfActuators;
758 return pdata->actData[
actuator*4+cmd];
764 buffer.padInfoActArgs.act_cmd = cmd;
769 if (
buffer.padModeResult.result == 1) {
772 return buffer.padModeResult.result;
786 ptr =
buffer.padActDirAlignArgs.align;
793 if (
buffer.padModeResult.result == 1) {
796 return buffer.padModeResult.result;
809 ptr =
buffer.padActDirAlignArgs.align;
816 return buffer.padModeResult.result;
826 struct open_slot *oslot;
828 oslot = padGetConnDmaStr();
830 return ((oslot->openSlots[
port] >>
slot) & 0x1);
static void nopdelay(void)
void SyncDCache(void *start, void *end)
#define PAD_RPCCMD_SET_ACTALIGN
struct @31::@40 padGetButtonMaskArgs
int padPortOpen(int port, int slot, void *padArea)
int padPortInit(int mode)
struct @31::@43 padInfoActArgs
#define PAD_RPCCMD_SET_ACTDIR
struct @31::@32 padOpenResult
struct @31::@38 padSetMainModeArgs
struct @31::@39 padModeResult
struct @31::@42 padSetButtonInfoResult
#define PAD_RPCCMD_GET_PORTMAX
#define PAD_RPCCMD_INFO_MODE
unsigned char padRead(int port, int slot, struct padButtonStatus *data)
int padInfoMode(int port, int slot, int infoMode, int index)
int padSetActAlign(int port, int slot, char actAlign[6])
unsigned char padInfoAct(int port, int slot, int actuator, int cmd)
int padGetButtonMask(int port, int slot)
int padExitPressMode(int port, int slot)
struct @31::@41 padSetButtonInfoArgs
#define PAD_RPCCMD_GET_BTNMASK
struct @31::@33 padResult
struct @31::@36 padSlotMaxArgs
int padSetButtonInfo(int port, int slot, int buttonInfo)
int padGetConnection(int port, int slot)
static int padInitialised
void padReqStateInt2String(int state, char buf[16])
struct @31::@34 padOpenArgs
int padSetActDirect(int port, int slot, char actAlign[6])
int padSetReqState(int port, int slot, int state)
int padPortClose(int port, int slot)
struct @31::@37 padInfoModeArgs
int padGetState(int port, int slot)
static struct pad_data * padGetDmaStr(int port, int slot)
unsigned char padGetReqState(int port, int slot)
#define PAD_RPCCMD_GET_SLOTMAX
static const char padReqStateString[3][16]
#define PAD_RPCCMD_INFO_ACT
static struct pad_state PadState[2][8]
static const char padStateString[8][16]
int padInfoPressMode(int port, int slot)
struct @31::@35 padCloseArgs
#define PAD_RPCCMD_SET_MMODE
void padStateInt2String(int state, char buf[16])
int padSetMainMode(int port, int slot, int mode, int lock)
static SifRpcClientData_t padsif[2]
int padEnterPressMode(int port, int slot)
struct @31::@44 padActDirAlignArgs
int padGetSlotMax(int port)
#define PAD_RPCCMD_SET_BTNINFO
#define PAD_STATE_EXECCMD
#define PAD_STATE_FINDPAD
int SifBindRpc(SifRpcClientData_t *client, int rpc_number, int mode)
int SifCallRpc(SifRpcClientData_t *client, int rpc_number, int mode, void *send, int ssize, void *receive, int rsize, SifRpcEndFunc_t end_function, void *end_param)
struct t_SifRpcServerData * server
struct pad_data * padData