sdk-core
v2026.11.05
PS2 SDK - core tier (build-critical EE/IOP modules)
Toggle main menu visibility
Loading...
Searching...
No Matches
iop_mmio_hwport.h
Go to the documentation of this file.
1
/*
2
# _____ ___ ____ ___ ____
3
# ____| | ____| | | |____|
4
# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
5
#-----------------------------------------------------------------------
6
# Copyright ps2dev - http://www.ps2dev.org
7
# Licenced under Academic Free License version 2.0
8
# Review ps2sdk README & LICENSE files for further details.
9
*/
10
16
17
#ifndef __IOP_MMIO_HWPORT__
18
#define __IOP_MMIO_HWPORT__
19
20
typedef
struct
dmac_channel_
21
{
22
vu32 madr;
23
vu32 bcr;
24
vu32 chcr;
25
vu32 tadr;
26
} dmac_channel_t;
27
28
typedef
struct
dmac1_mmio_hwport_
29
{
30
dmac_channel_t oldch[7];
31
vu32 dpcr1;
32
vu32 dicr1;
33
} dmac1_mmio_hwport_t;
34
35
typedef
struct
dmac2_mmio_hwport_
36
{
37
dmac_channel_t newch[6];
38
dmac_channel_t new_unusedch;
39
vu32 dpcr2;
40
vu32 dicr2;
41
vu32 dmacen;
42
vu32 dmacinten;
43
} dmac2_mmio_hwport_t;
44
45
typedef
struct
dmac_channel3_
46
{
47
vu32 madr;
48
vu32 dlen;
49
vu32 slice;
50
vu32 chcr;
51
vu32 rtar;
52
vu32 DmarReadStart;
53
vu32 DmarReadEnd;
54
} dmac_channel3_t;
55
56
typedef
struct
dmac3_mmio_hwport_
57
{
58
dmac_channel3_t dmac_channel3_0;
59
u8 unused_1c[0x4];
60
dmac_channel3_t dmac_channel3_1;
61
u8 unused_3c[0x4];
62
dmac_channel3_t dmac_channel3_2;
63
vu32 DmarWriteStart;
64
vu32 DmarWriteEnd;
65
u8 unused_64[0x1C];
66
} dmac3_mmio_hwport_t;
67
68
typedef
struct
ssbus1_mmio_hwport_
69
{
70
vu32 ind_0_address;
71
vu32 ind_8_address;
72
vu32 ind_0_delay;
73
vu32 ind_1_delay;
74
vu32 ind_2_delay;
75
vu32 ind_4_delay;
76
vu32 ind_5_delay;
77
vu32 ind_8_delay;
78
vu32 common_delay;
79
} ssbus1_mmio_hwport_t;
80
81
typedef
struct
ssbus2_mmio_hwport_
82
{
83
vu32 ind_1_address;
84
vu32 ind_4_address;
85
vu32 ind_5_address;
86
vu32 ind_9_address;
87
vu32 ind_B_address;
88
vu32 ind_9_delay;
89
vu32 ind_A_delay;
90
vu32 ind_B_delay;
91
vu32 ind_C_delay;
92
} ssbus2_mmio_hwport_t;
93
94
typedef
struct
sio0_1_mmio_hwport_
95
{
96
vu32 data;
97
vu32 stat;
98
vu16 mode;
99
vu16 ctrl;
100
vu16 misc;
101
vu16 baud;
102
} sio0_1_mmio_hwport_t;
103
104
typedef
struct
sio2_mmio_hwport_
105
{
106
vu32 send3_buf[16];
107
vu32 send1_2_buf[8];
108
vu8 out_fifo;
/* PCSX2 says in */
109
u8 pad1[3];
110
vu8 in_fifo;
/* PCSX2 says out */
111
u8 pad2[3];
112
vu32 ctrl;
113
vu32 recv1;
114
vu32 recv2;
115
vu32 recv3;
116
vu32 unk_78;
117
vu32 unk_7c;
118
vu32 stat;
119
u8 unused[0x7c];
120
} sio2_mmio_hwport_t;
121
122
typedef
struct
usb_mmio_hwport_
123
{
124
vu32 HcRevision;
125
vu32 HcControl;
126
vu32 HcCommandStatus;
127
vu32 HcInterruptStatus;
128
vu32 HcInterruptEnable;
129
vu32 HcInterruptDisable;
130
vu32 HcHCCA;
131
vu32 HcPeriodCurrentEd;
132
vu32 HcControlHeadEd;
133
vu32 HcControlCurrentEd;
134
vu32 HcBulkHeadEd;
135
vu32 HcBulkCurrentEd;
136
vu32 HcDoneHead;
137
vu32 HcFmInterval;
138
vu32 HcFmRemaining;
139
vu32 HcFmNumber;
140
vu32 HcPeriodicStart;
141
vu32 HcLsThreshold;
142
vu32 HcRhDescriptorA;
143
vu32 HcRhDescriptorB;
144
vu32 HcRhStatus;
145
vu32 HcRhPortStatus[2];
/* PCSX2 says 15 or 11 */
146
u8 unused[0xa4];
147
} usb_mmio_hwport_t;
148
149
typedef
struct
ieee1394_mmio_hwport_
150
{
151
vu32 NodeID;
152
vu32 CycleTime;
153
154
vu32 ctrl0;
155
vu32 ctrl1;
156
vu32 ctrl2;
157
158
vu32 PHYAccess;
159
160
vu32 UnknownRegister18;
161
vu32 UnknownRegister1C;
162
163
vu32 intr0;
164
vu32 intr0Mask;
165
166
vu32 intr1;
167
vu32 intr1Mask;
168
169
vu32 intr2;
170
vu32 intr2Mask;
171
172
vu32 dmar;
173
vu32 ack_status;
174
vu32 ubufTransmitNext;
175
vu32 ubufTransmitLast;
176
vu32 ubufTransmitClear;
177
vu32 ubufReceiveClear;
178
vu32 ubufReceive;
179
vu32 ubufReceiveLevel;
180
181
vu32 unmapped1[0x06];
182
183
vu32 UnknownRegister70;
184
vu32 UnknownRegister74;
185
vu32 UnknownRegister78;
186
vu32 UnknownRegister7C;
187
188
vu32 PHT_ctrl_ST_R0;
189
vu32 PHT_split_TO_R0;
190
vu32 PHT_ReqResHdr0_R0;
191
vu32 PHT_ReqResHdr1_R0;
192
vu32 PHT_ReqResHdr2_R0;
193
194
vu32 STRxNIDSel0_R0;
195
vu32 STRxNIDSel1_R0;
196
197
vu32 STRxHDR_R0;
198
vu32 STTxHDR_R0;
199
200
vu32 DTransCTRL0;
201
vu32 CIPHdrTx0_R0;
202
vu32 CIPHdrTx1_R0;
203
204
vu32 padding4;
205
vu32 STTxTimeStampOffs_R0;
206
207
vu32 dmaCtrlSR0;
208
vu32 dmaTransTRSH0;
209
vu32 dbufFIFO_lvlR0;
210
vu32 dbufTxDataR0;
211
vu32 dbufRxDataR0;
212
213
vu32 dbufWatermarksR0;
214
vu32 dbufFIFOSzR0;
215
216
vu32 unmapped2[0x0B];
217
218
vu32 PHT_ctrl_ST_R1;
219
vu32 PHT_split_TO_R1;
220
vu32 PHT_ReqResHdr0_R1;
221
vu32 PHT_ReqResHdr1_R1;
222
vu32 PHT_ReqResHdr2_R1;
223
224
vu32 STRxNIDSel0_R1;
225
vu32 STRxNIDSel1_R1;
226
227
vu32 STRxHDR_R1;
228
vu32 STTxHDR_R1;
229
230
vu32 DTransCTRL1;
231
vu32 CIPHdrTx0_R1;
232
vu32 CIPHdrTx1_R1;
233
234
vu32 padding5;
235
vu32 STTxTimeStampOffs_R1;
236
237
vu32 dmaCtrlSR1;
238
vu32 dmaTransTRSH1;
239
vu32 dbufFIFO_lvlR1;
240
vu32 dbufTxDataR1;
241
vu32 dbufRxDataR1;
242
243
vu32 dbufWatermarksR1;
244
vu32 dbufFIFOSzR1;
245
} ieee1394_mmio_hwport_t;
246
247
typedef
struct
iop_counter_mmio_hwport_
248
{
249
vu32 count;
250
vu32 mode;
251
vu32 target;
252
vu32 unused_c;
253
} iop_counter_mmio_hwport_t;
254
255
typedef
struct
iop_mmio_hwport_
/* base -> 0xBF800000 */
256
{
257
u8 scratchpad_cache0[0x400];
258
u8 scratchpad_cache1[0x400];
259
u8 unv_0800[0x800];
260
ssbus1_mmio_hwport_t ssbus1;
/* 0x1000 */
261
u8 unv_1024[0x1c];
262
sio0_1_mmio_hwport_t sio0;
263
sio0_1_mmio_hwport_t sio1;
264
vu32 iop_ram_size;
265
u8 unv_1064[0xC];
266
vu32 istat;
267
vu32 imask;
268
vu32 iop_sbus_info;
269
vu32 unk_107c;
270
dmac1_mmio_hwport_t dmac1;
/* 0x1080 */
271
u8 unv_10f8[0x8];
272
iop_counter_mmio_hwport_t counter1[3];
/* 0x1100 */
273
u8 unv_1130[0x2d0];
274
ssbus2_mmio_hwport_t ssbus2;
/* 0x1400 */
275
u8 unv_1424[0x2c];
276
vu32 iop_sbus_ctrl[2];
/* 0x1450 */
277
u8 unk_1458[0x8];
278
u8 dev9c[0x20];
279
iop_counter_mmio_hwport_t counter2[3];
/* 0x1480 */
280
u8 unk_14b0[0x10];
281
vu32 rtc_holdmode;
282
u8 unk_14c4[0x3c];
283
dmac2_mmio_hwport_t dmac2;
/* 0x1500 */
284
dmac3_mmio_hwport_t dmac3;
/* 0x1580 */
285
usb_mmio_hwport_t usb;
/* 0x1600 */
286
u8 unk_1700[0x100];
287
vu32 ps1_cdrom;
288
u8 unk_1804[0xc];
289
vu32 ps1_gpu1;
290
vu32 ps1_gpu2;
291
u8 unk_1818[0x8];
292
vu32 ps1_mdec1;
293
vu32 ps1_mdec2;
294
u8 unk_1828[0x8];
295
u8 unk_1830[0xd0];
296
u8 deckard_i2c[0x20];
/* 0x1900 */
297
u8 unv_1920[0x2e0];
298
u8 spu_core0[0x400];
/* 0x1C00 */
299
u8 exp2_r2[0x2000];
/* 0x2000 */
300
u8 unk_4000[0x4000];
301
u8 sio2_internal[0x200];
/* 0x8000 */
302
sio2_mmio_hwport_t sio2;
/* 0x8200 */
303
u8 unk_8300[0x100];
304
ieee1394_mmio_hwport_t ieee1394;
/* 0x8400 */
305
} iop_mmio_hwport_t;
306
307
#if !defined(USE_IOP_MMIO_HWPORT) && defined(_IOP)
308
// cppcheck-suppress-macro constVariablePointer
309
#define USE_IOP_MMIO_HWPORT() iop_mmio_hwport_t *const iop_mmio_hwport = (iop_mmio_hwport_t *)0xBF800000
310
#endif
311
#if !defined(USE_IOP_MMIO_HWPORT)
312
#define USE_IOP_MMIO_HWPORT()
313
#endif
314
315
#endif
/* __IOP_MMIO_HWPORT__ */
dmac1_mmio_hwport_
Definition
iop_mmio_hwport.h:29
dmac2_mmio_hwport_
Definition
iop_mmio_hwport.h:36
dmac3_mmio_hwport_
Definition
iop_mmio_hwport.h:57
dmac_channel3_
Definition
iop_mmio_hwport.h:46
dmac_channel_
Definition
iop_mmio_hwport.h:21
ieee1394_mmio_hwport_
Definition
iop_mmio_hwport.h:150
iop_counter_mmio_hwport_
Definition
iop_mmio_hwport.h:248
iop_mmio_hwport_
Definition
iop_mmio_hwport.h:256
sio0_1_mmio_hwport_
Definition
iop_mmio_hwport.h:95
sio2_mmio_hwport_
Definition
iop_mmio_hwport.h:105
ssbus1_mmio_hwport_
Definition
iop_mmio_hwport.h:69
ssbus2_mmio_hwport_
Definition
iop_mmio_hwport.h:82
usb_mmio_hwport_
Definition
iop_mmio_hwport.h:123
core
common
include
iop_mmio_hwport.h
Generated by
1.18.0