NSMBW-Decomp
A decompilation of New Super Mario Bros. Wii
Loading...
Searching...
No Matches
ipcHardware.h
1#ifndef RVL_SDK_IPC_HARDWARE_H
2#define RVL_SDK_IPC_HARDWARE_H
3#include <types.h>
4#ifdef __cplusplus
5extern "C" {
6#endif
7
8/**
9 * IPC hardware registers
10 */
11volatile u32 IPC_HW_REGS_PPC[256] AT_ADDRESS(0xCD000000);
12volatile u32 IPC_HW_REGS[256] AT_ADDRESS(0xCD800000);
13
14/**
15 * Hardware register indexes
16 */
17// clang-format off
18#define LIST_OF_REGS \
19 X(IPC_PPCMSG, 0xCD000000) \
20 X(IPC_PPCCTRL, 0xCD000004) \
21 X(IPC_ARMMSG, 0xCD000008) \
22 X(IPC_ARMCTRL, 0xCD00000C) \
23 X(TIMER, 0xCD000010) \
24 X(ALARM, 0xCD000014) \
25 X(PPCIRQFLAG, 0xCD000030) \
26 X(PPCIRQMASK, 0xCD000034) \
27 X(ARMIRQFLAG, 0xCD000038) \
28 X(ARMIRQMASK, 0xCD00003C) \
29 X(MEMMIRR, 0xCD000060) \
30 X(AHBPROT, 0xCD000064) \
31 X(EXICTRL, 0xCD000070) \
32 X(GPIO1BOUT, 0xCD0000C0) \
33 X(GPIO1BDIR, 0xCD0000C4) \
34 X(GPIO1BIN, 0xCD0000C8) \
35 X(GPIO1BINTLVL, 0xCD0000CC) \
36 X(GPIO1BINTFLAG, 0xCD0000D0) \
37 X(GPIO1BINTENABLE, 0xCD0000D4) \
38 X(GPIO1BINMIR, 0xCD0000D8) \
39 X(GPIO1ENABLE, 0xCD0000DC) \
40 X(GPIO1OUT, 0xCD0000E0) \
41 X(GPIO1DIR, 0xCD0000E4) \
42 X(GPIO1IN, 0xCD0000E8) \
43 X(GPIO1INTLVL, 0xCD0000EC) \
44 X(GPIO1INTFLAG, 0xCD0000F0) \
45 X(GPIO1INTENABLE, 0xCD0000F4) \
46 X(GPIO1INMIR, 0xCD0000F8) \
47 X(GPIO1OWNER, 0xCD0000FC) \
48 X(DIFLAGS, 0xCD000180) \
49 X(RESETS, 0xCD000194) \
50 X(CLOCKS, 0xCD0001B4) \
51 X(GPIO2OUT, 0xCD0001C8) \
52 X(GPIO2DIR, 0xCD0001CC) \
53 X(GPIO2IN, 0xCD0001D0) \
54 X(OTPCMD, 0xCD0001EC) \
55 X(OTPDATA, 0xCD0001F0) \
56 X(VERSION, 0xCD000214)
57// clang-format on
58
59/**
60 * Hardware register indexes (IPC)
61 */
62#define X(NAME, ADDR) IPC_##NAME = (ADDR - 0xCD000000) / 4,
63typedef enum { LIST_OF_REGS } IPCHwReg;
64#undef X
65
66/**
67 * Hardware register indexes (ACR)
68 */
69#define X(NAME, ADDR) ACR_##NAME = (ADDR - 0xCD000000),
70typedef enum { LIST_OF_REGS } ACRHwReg;
71#undef X
72
73/**
74 * GPIO register flags
75 */
76typedef enum {
77 GPIO_POWER = (1 << 0),
78 GPIO_SHUTDOWN = (1 << 1),
79 GPIO_FAN = (1 << 2),
80 GPIO_DCDC = (1 << 3),
81 GPIO_DISPIN = (1 << 4),
82 GPIO_SLOTLED = (1 << 5),
83 GPIO_EJECTBTN = (1 << 6),
84 GPIO_SLOTIN = (1 << 7),
85 GPIO_SENSORBAR = (1 << 8),
86 GPIO_DOEJECT = (1 << 9),
87 GPIO_EEP_CS = (1 << 10),
88 GPIO_EEP_CLK = (1 << 11),
89 GPIO_EEP_MOSI = (1 << 12),
90 GPIO_EEP_MISO = (1 << 13),
91 GPIO_AVE_SCL = (1 << 14),
92 GPIO_AVE_SDA = (1 << 15),
93 GPIO_DEBUG0 = (1 << 16),
94 GPIO_DEBUG1 = (1 << 17),
95 GPIO_DEBUG2 = (1 << 18),
96 GPIO_DEBUG3 = (1 << 19),
97 GPIO_DEBUG4 = (1 << 20),
98 GPIO_DEBUG5 = (1 << 21),
99 GPIO_DEBUG6 = (1 << 22),
100 GPIO_DEBUG7 = (1 << 23),
101} GPIOFlag;
102
103#undef LIST_OF_REGS
104
105#ifdef __cplusplus
106}
107#endif
108#endif