Skip to content

Commit a80d2e5

Browse files
authored
Merge pull request #803 from uyjulian/s147modules
Implementation of System 147 IOP modules
2 parents 37099fc + 2649ede commit a80d2e5

36 files changed

Lines changed: 5370 additions & 1 deletion

common/include/s147_mmio_hwport.h

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
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+
11+
/**
12+
* @file
13+
* Definitions for memory-mapped I/O for System 147.
14+
*/
15+
16+
#ifndef __S147_MMIO_HWPORT__
17+
#define __S147_MMIO_HWPORT__
18+
19+
typedef struct s147_dev9_mem_mmio_
20+
{
21+
vu8 m_unk00;
22+
vu8 m_led;
23+
vu8 m_security_unlock_unlock;
24+
vu8 m_unk03;
25+
vu8 m_rtc_flag;
26+
vu8 m_watchdog_flag2;
27+
vu8 m_unk06;
28+
vu8 m_sram_write_flag;
29+
vu8 m_pad08;
30+
vu8 m_pad09;
31+
vu8 m_pad0A;
32+
vu8 m_pad0B;
33+
vu8 m_security_unlock_set1;
34+
vu8 m_security_unlock_set2;
35+
} s147_dev9_mem_mmio_t;
36+
37+
#if !defined(USE_S147_DEV9_MEM_MMIO) && defined(_IOP)
38+
// cppcheck-suppress-macro constVariablePointer
39+
#define USE_S147_DEV9_MEM_MMIO() s147_dev9_mem_mmio_t *const s147_dev9_mem_mmio = (s147_dev9_mem_mmio_t *)0xB0000000
40+
#endif
41+
#if !defined(USE_S147_DEV9_MEM_MMIO)
42+
#define USE_S147_DEV9_MEM_MMIO()
43+
#endif
44+
45+
typedef struct s147nand_dev9_io_mmio_
46+
{
47+
vu8 m_nand_waitflag; // 0 (R/B)
48+
vu8 m_nand_cmd_enable; // 1 (CE+WE)
49+
vu8 m_nand_cmd_sel; // 10 (CE+WE+CLE)
50+
vu8 m_nand_cmd_offs; // 11 (CE+WE+ALE)
51+
vu8 m_nand_write_cmd_unlock; // 100
52+
vu8 m_pad05;
53+
vu8 m_pad06;
54+
vu8 m_pad07;
55+
vu8 m_nand_outbyte; // 1000 (CE+RE)
56+
} s147nand_dev9_io_mmio_t;
57+
58+
#if !defined(USE_S147MAMD_DEV9_IO_MMIO) && defined(_IOP)
59+
// cppcheck-suppress-macro constVariablePointer
60+
#define USE_S147MAMD_DEV9_IO_MMIO() s147nand_dev9_io_mmio_t *const s147nand_dev9_io_mmio = (s147nand_dev9_io_mmio_t *)0xB4000000
61+
#endif
62+
#if !defined(USE_S147MAMD_DEV9_IO_MMIO)
63+
#define USE_S147MAMD_DEV9_IO_MMIO()
64+
#endif
65+
66+
typedef struct s147link_dev9_mem_mmio_
67+
{
68+
vu8 m_pad00;
69+
vu8 m_unk01;
70+
vu8 m_pad02;
71+
vu8 m_unk03;
72+
vu8 m_pad04;
73+
vu8 m_node_unk05;
74+
vu8 m_pad06;
75+
vu8 m_unk07;
76+
vu8 m_pad08;
77+
vu8 m_unk09;
78+
vu8 m_pad0A;
79+
vu8 m_pad0B;
80+
vu8 m_pad0C;
81+
vu8 m_unk0D;
82+
vu8 m_pad0E;
83+
vu8 m_pad0F;
84+
vu8 m_pad10;
85+
vu8 m_pad11;
86+
vu8 m_stsH_unk12;
87+
vu8 m_stsL_unk13;
88+
vu8 m_unk14;
89+
vu8 m_unk15;
90+
vu8 m_pad16;
91+
vu8 m_unk17;
92+
vu8 m_pad18;
93+
vu8 m_pad19;
94+
vu8 m_pad1A;
95+
vu8 m_pad1B;
96+
vu8 m_unk1C;
97+
vu8 m_unk1D;
98+
vu8 m_rxfc_hi_unk1E;
99+
vu8 m_rxfc_lo_unk1F;
100+
vu8 m_pad20;
101+
vu8 m_unk21;
102+
vu8 m_unk22;
103+
vu8 m_unk23;
104+
vu8 m_unk24;
105+
vu8 m_unk25;
106+
vu8 m_pad26;
107+
vu8 m_pad27;
108+
vu8 m_unk28;
109+
vu8 m_unk29;
110+
vu8 m_pad2A;
111+
vu8 m_maxnode_unk2B;
112+
vu8 m_pad2C;
113+
vu8 m_mynode_unk2D;
114+
vu8 m_pad2E;
115+
vu8 m_unk2F;
116+
vu8 m_pad30;
117+
vu8 m_unk31;
118+
vu8 m_pad32;
119+
vu8 m_pad33;
120+
vu8 m_watchdog_flag_unk34;
121+
} s147link_dev9_mem_mmio_t;
122+
123+
#if !defined(USE_S147LINK_DEV9_MEM_MMIO) && defined(_IOP)
124+
// cppcheck-suppress-macro constVariablePointer
125+
#define USE_S147LINK_DEV9_MEM_MMIO() s147link_dev9_mem_mmio_t *const s147link_dev9_mem_mmio = (s147link_dev9_mem_mmio_t *)0xB0800000
126+
#endif
127+
#if !defined(USE_S147LINK_DEV9_MEM_MMIO)
128+
#define USE_S147LINK_DEV9_MEM_MMIO()
129+
#endif
130+
131+
#endif /* __S147_MMIO_HWPORT__ */

iop/arcade/Makefile

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,13 @@ SUBDIRS = \
2525
acsram \
2626
actimer \
2727
acuart \
28-
acuart_tty
28+
acuart_tty \
29+
romwrite \
30+
s147ctrl \
31+
s147link \
32+
s147mdev \
33+
s147nand \
34+
s147netb
2935

3036
include $(PS2SDKSRC)/Defs.make
3137
include $(PS2SDKSRC)/Rules.make

iop/arcade/romwrite/Makefile

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# _____ ___ ____ ___ ____
2+
# ____| | ____| | | |____|
3+
# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
4+
#-----------------------------------------------------------------------
5+
# Copyright ps2dev - http://www.ps2dev.org
6+
# Licenced under Academic Free License version 2.0
7+
# Review ps2sdk README & LICENSE files for further details.
8+
9+
IOP_BIN ?= romwrite.irx
10+
11+
IOP_IMPORT_INCS += \
12+
system/intrman \
13+
system/ioman \
14+
arcade/s147nand \
15+
system/sysclib \
16+
system/sysmem \
17+
system/loadcore \
18+
system/threadman
19+
20+
IOP_OBJS = romwrite.o imports.o
21+
22+
include $(PS2SDKSRC)/Defs.make
23+
include $(PS2SDKSRC)/iop/Rules.bin.make
24+
include $(PS2SDKSRC)/iop/Rules.make
25+
include $(PS2SDKSRC)/iop/Rules.release

iop/arcade/romwrite/README.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# ROMWRITE
2+
3+
This module allows access to writing the NAND flash of System 147.
4+
5+
## Configurations
6+
7+
There are multiple configurations of this library, allowing the choice of
8+
balancing between size, speed, and features.
9+
10+
* `romwrite` -> The recommended version.
11+
12+
## How to use this module in your program
13+
14+
In order to use this module in your program, use `LoadModule` or \
15+
`LoadModuleBuffer` with arguments.
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
2+
s147nand_IMPORTS_start
3+
I_s147nand_6_checkformat
4+
I_s147nand_7_multi_read_dma
5+
I_s147nand_8_multi_write_dma
6+
I_s147nand_9_get_nand_partition
7+
I_s147nand_10_get_nand_partition_size
8+
I_s147nand_11_erasetranslatepageoffs
9+
I_s147nand_12_load_logaddrtable
10+
I_s147nand_13_translate_blockoffs
11+
I_s147nand_16_getnandinfo
12+
I_s147nand_22_nand_write_dma
13+
I_s147nand_24_eraseoffset
14+
I_s147nand_25_nand_blockerase
15+
I_s147nand_26_nand_readid
16+
I_s147nand_27_blocks2pages
17+
I_s147nand_28_pages2blocks
18+
I_s147nand_29_pages2blockround
19+
I_s147nand_30_bytes2pagesnoeccround
20+
s147nand_IMPORTS_end
21+
22+
sysmem_IMPORTS_start
23+
I_AllocSysMemory
24+
I_FreeSysMemory
25+
I_Kprintf
26+
sysmem_IMPORTS_end
27+
28+
intrman_IMPORTS_start
29+
I_CpuSuspendIntr
30+
I_CpuResumeIntr
31+
intrman_IMPORTS_end
32+
33+
ioman_IMPORTS_start
34+
I_open
35+
I_close
36+
I_read
37+
I_lseek
38+
ioman_IMPORTS_end
39+
40+
sysclib_IMPORTS_start
41+
I_memset
42+
I_sprintf
43+
I_strcat
44+
I_strcmp
45+
I_strcpy
46+
I_strncmp
47+
I_strncpy
48+
I_strtol
49+
I_vsprintf
50+
sysclib_IMPORTS_end
51+
52+
thbase_IMPORTS_start
53+
I_CreateThread
54+
I_StartThread
55+
I_ExitThread
56+
I_DelayThread
57+
thbase_IMPORTS_end
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
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+
# Defines all IRX imports.
11+
*/
12+
13+
#ifndef IOP_IRX_IMPORTS_H
14+
#define IOP_IRX_IMPORTS_H
15+
16+
#include <irx.h>
17+
18+
/* Please keep these in alphabetical order! */
19+
#include <intrman.h>
20+
#include <ioman.h>
21+
#include <s147nand.h>
22+
#include <sysclib.h>
23+
#include <sysmem.h>
24+
#include <thbase.h>
25+
26+
#endif /* IOP_IRX_IMPORTS_H */

0 commit comments

Comments
 (0)