4 /* Ultra64 Parallel Interface */
9 #if !defined(VERSION_EU) && !defined(VERSION_SH)
21 u16 transferMode
; // 4
24 uintptr_t devAddr
; // c
25 #if defined(VERSION_EU) || defined(VERSION_SH)
26 u32 unk10
; //error status added moved to blockinfo
28 u32 bmCtlShadow
; // 10
29 u32 seqCtlShadow
; // 14
30 __OSBlockInfo block
[2]; // 18
33 typedef struct OSPiHandle_s
{
34 struct OSPiHandle_s
*next
;
43 __OSTranxInfo transferInfo
;
55 OSMesgQueue
*retQueue
;
59 /*0x00*/ OSIoMesgHdr hdr
;
60 /*0x08*/ void *dramAddr
;
61 /*0x0C*/ uintptr_t devAddr
;
63 #if defined(VERSION_EU) || defined(VERSION_SH)
64 OSPiHandle
*piHandle
; // from the official definition
70 #define OS_READ 0 // device -> RDRAM
71 #define OS_WRITE 1 // device <- RDRAM
73 #define OS_MESG_PRI_NORMAL 0
74 #define OS_MESG_PRI_HIGH 1
78 s32
osPiStartDma(OSIoMesg
*mb
, s32 priority
, s32 direction
, uintptr_t devAddr
, void *vAddr
,
79 size_t nbytes
, OSMesgQueue
*mq
);
80 void osCreatePiManager(OSPri pri
, OSMesgQueue
*cmdQ
, OSMesg
*cmdBuf
, s32 cmdMsgCnt
);
81 OSMesgQueue
*osPiGetCmdQueue(void);
82 s32
osPiWriteIo(uintptr_t devAddr
, u32 data
);
83 s32
osPiReadIo(uintptr_t devAddr
, u32
*data
);