1#ifndef RVL_SDK_EXI_COMMON_H
2#define RVL_SDK_EXI_COMMON_H
12 EXI_STATE_DMA_ACCESS = (1 << 0),
13 EXI_STATE_IMM_ACCESS = (1 << 1),
14 EXI_STATE_SELECTED = (1 << 2),
15 EXI_STATE_ATTACHED = (1 << 3),
16 EXI_STATE_LOCKED = (1 << 4),
18 EXI_STATE_BUSY = EXI_STATE_DMA_ACCESS | EXI_STATE_IMM_ACCESS
31typedef enum { EXI_CHAN_0, EXI_CHAN_1, EXI_CHAN_2, EXI_MAX_CHAN } EXIChannel;
33typedef enum { EXI_DEV_EXT, EXI_DEV_INT, EXI_DEV_NET, EXI_MAX_DEV } EXIDev;
35typedef enum { EXI_READ, EXI_WRITE, EXI_TYPE_2, EXI_MAX_TYPE } EXIType;
38 EXI_ID_MEMCARD_59 = 0x00000004,
39 EXI_ID_MEMCARD_123 = 0x00000008,
40 EXI_ID_MEMCARD_251 = 0x00000010,
41 EXI_ID_MEMCARD_507 = 0x00000020,
42 EXI_ID_MEMCARD_1019 = 0x00000040,
43 EXI_ID_MEMCARD_2043 = 0x00000080,
44 EXI_ID_USB_ADAPTER = 0x01010000,
45 EXI_ID_IS_DOL_VIEWER = 0x05070000,
46 EXI_ID_BROADBAND_ADAPTER = 0x04020200,
47 EXI_ID_INVALID = 0xFFFFFFFF
50typedef void (*EXICallback)(EXIChannel chan,
OSContext* ctx);
52extern const u32 __EXIFreq;
54static u32 __EXISwap32(u32 val) {
55 return val >> 24 & 0x000000FF | val >> 8 & 0x0000FF00 |
56 val << 8 & 0x00FF0000 | val << 24 & 0xFF000000;
59BOOL EXIWriteReg(EXIChannel chan, u32 dev, u32 cmd,
const void* buf, s32 len);