Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
131 changes: 131 additions & 0 deletions common/include/s147_mmio_hwport.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
/*
# _____ ___ ____ ___ ____
# ____| | ____| | | |____|
# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
#-----------------------------------------------------------------------
# Copyright ps2dev - http://www.ps2dev.org
# Licenced under Academic Free License version 2.0
# Review ps2sdk README & LICENSE files for further details.
*/

/**
* @file
* Definitions for memory-mapped I/O for System 147.
*/

#ifndef __S147_MMIO_HWPORT__
#define __S147_MMIO_HWPORT__

typedef struct s147_dev9_mem_mmio_
{
vu8 m_unk00;
vu8 m_led;
vu8 m_security_unlock_unlock;
vu8 m_unk03;
vu8 m_rtc_flag;
vu8 m_watchdog_flag2;
vu8 m_unk06;
vu8 m_sram_write_flag;
vu8 m_pad08;
vu8 m_pad09;
vu8 m_pad0A;
vu8 m_pad0B;
vu8 m_security_unlock_set1;
vu8 m_security_unlock_set2;
} s147_dev9_mem_mmio_t;

#if !defined(USE_S147_DEV9_MEM_MMIO) && defined(_IOP)
// cppcheck-suppress-macro constVariablePointer
#define USE_S147_DEV9_MEM_MMIO() s147_dev9_mem_mmio_t *const s147_dev9_mem_mmio = (s147_dev9_mem_mmio_t *)0xB0000000
#endif
#if !defined(USE_S147_DEV9_MEM_MMIO)
#define USE_S147_DEV9_MEM_MMIO()
#endif

typedef struct s147nand_dev9_io_mmio_
{
vu8 m_nand_waitflag; // 0 (R/B)
vu8 m_nand_cmd_enable; // 1 (CE+WE)
vu8 m_nand_cmd_sel; // 10 (CE+WE+CLE)
vu8 m_nand_cmd_offs; // 11 (CE+WE+ALE)
vu8 m_nand_write_cmd_unlock; // 100
vu8 m_pad05;
vu8 m_pad06;
vu8 m_pad07;
vu8 m_nand_outbyte; // 1000 (CE+RE)
} s147nand_dev9_io_mmio_t;

#if !defined(USE_S147MAMD_DEV9_IO_MMIO) && defined(_IOP)
// cppcheck-suppress-macro constVariablePointer
#define USE_S147MAMD_DEV9_IO_MMIO() s147nand_dev9_io_mmio_t *const s147nand_dev9_io_mmio = (s147nand_dev9_io_mmio_t *)0xB4000000
#endif
#if !defined(USE_S147MAMD_DEV9_IO_MMIO)
#define USE_S147MAMD_DEV9_IO_MMIO()
#endif

typedef struct s147link_dev9_mem_mmio_
{
vu8 m_pad00;
vu8 m_unk01;
vu8 m_pad02;
vu8 m_unk03;
vu8 m_pad04;
vu8 m_node_unk05;
vu8 m_pad06;
vu8 m_unk07;
vu8 m_pad08;
vu8 m_unk09;
vu8 m_pad0A;
vu8 m_pad0B;
vu8 m_pad0C;
vu8 m_unk0D;
vu8 m_pad0E;
vu8 m_pad0F;
vu8 m_pad10;
vu8 m_pad11;
vu8 m_stsH_unk12;
vu8 m_stsL_unk13;
vu8 m_unk14;
vu8 m_unk15;
vu8 m_pad16;
vu8 m_unk17;
vu8 m_pad18;
vu8 m_pad19;
vu8 m_pad1A;
vu8 m_pad1B;
vu8 m_unk1C;
vu8 m_unk1D;
vu8 m_rxfc_hi_unk1E;
vu8 m_rxfc_lo_unk1F;
vu8 m_pad20;
vu8 m_unk21;
vu8 m_unk22;
vu8 m_unk23;
vu8 m_unk24;
vu8 m_unk25;
vu8 m_pad26;
vu8 m_pad27;
vu8 m_unk28;
vu8 m_unk29;
vu8 m_pad2A;
vu8 m_maxnode_unk2B;
vu8 m_pad2C;
vu8 m_mynode_unk2D;
vu8 m_pad2E;
vu8 m_unk2F;
vu8 m_pad30;
vu8 m_unk31;
vu8 m_pad32;
vu8 m_pad33;
vu8 m_watchdog_flag_unk34;
} s147link_dev9_mem_mmio_t;

#if !defined(USE_S147LINK_DEV9_MEM_MMIO) && defined(_IOP)
// cppcheck-suppress-macro constVariablePointer
#define USE_S147LINK_DEV9_MEM_MMIO() s147link_dev9_mem_mmio_t *const s147link_dev9_mem_mmio = (s147link_dev9_mem_mmio_t *)0xB0800000
#endif
#if !defined(USE_S147LINK_DEV9_MEM_MMIO)
#define USE_S147LINK_DEV9_MEM_MMIO()
#endif

#endif /* __S147_MMIO_HWPORT__ */
8 changes: 7 additions & 1 deletion iop/arcade/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,13 @@ SUBDIRS = \
acsram \
actimer \
acuart \
acuart_tty
acuart_tty \
romwrite \
s147ctrl \
s147link \
s147mdev \
s147nand \
s147netb

include $(PS2SDKSRC)/Defs.make
include $(PS2SDKSRC)/Rules.make
25 changes: 25 additions & 0 deletions iop/arcade/romwrite/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# _____ ___ ____ ___ ____
# ____| | ____| | | |____|
# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
#-----------------------------------------------------------------------
# Copyright ps2dev - http://www.ps2dev.org
# Licenced under Academic Free License version 2.0
# Review ps2sdk README & LICENSE files for further details.

IOP_BIN ?= romwrite.irx

IOP_IMPORT_INCS += \
system/intrman \
system/ioman \
arcade/s147nand \
system/sysclib \
system/sysmem \
system/loadcore \
system/threadman

IOP_OBJS = romwrite.o imports.o

include $(PS2SDKSRC)/Defs.make
include $(PS2SDKSRC)/iop/Rules.bin.make
include $(PS2SDKSRC)/iop/Rules.make
include $(PS2SDKSRC)/iop/Rules.release
15 changes: 15 additions & 0 deletions iop/arcade/romwrite/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# ROMWRITE

This module allows access to writing the NAND flash of System 147.

## Configurations

There are multiple configurations of this library, allowing the choice of
balancing between size, speed, and features.

* `romwrite` -> The recommended version.

## How to use this module in your program

In order to use this module in your program, use `LoadModule` or \
`LoadModuleBuffer` with arguments.
57 changes: 57 additions & 0 deletions iop/arcade/romwrite/src/imports.lst
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@

s147nand_IMPORTS_start
I_s147nand_6_checkformat
I_s147nand_7_multi_read_dma
I_s147nand_8_multi_write_dma
I_s147nand_9_get_nand_partition
I_s147nand_10_get_nand_partition_size
I_s147nand_11_erasetranslatepageoffs
I_s147nand_12_load_logaddrtable
I_s147nand_13_translate_blockoffs
I_s147nand_16_getnandinfo
I_s147nand_22_nand_write_dma
I_s147nand_24_eraseoffset
I_s147nand_25_nand_blockerase
I_s147nand_26_nand_readid
I_s147nand_27_blocks2pages
I_s147nand_28_pages2blocks
I_s147nand_29_pages2blockround
I_s147nand_30_bytes2pagesnoeccround
s147nand_IMPORTS_end

sysmem_IMPORTS_start
I_AllocSysMemory
I_FreeSysMemory
I_Kprintf
sysmem_IMPORTS_end

intrman_IMPORTS_start
I_CpuSuspendIntr
I_CpuResumeIntr
intrman_IMPORTS_end

ioman_IMPORTS_start
I_open
I_close
I_read
I_lseek
ioman_IMPORTS_end

sysclib_IMPORTS_start
I_memset
I_sprintf
I_strcat
I_strcmp
I_strcpy
I_strncmp
I_strncpy
I_strtol
I_vsprintf
sysclib_IMPORTS_end

thbase_IMPORTS_start
I_CreateThread
I_StartThread
I_ExitThread
I_DelayThread
thbase_IMPORTS_end
26 changes: 26 additions & 0 deletions iop/arcade/romwrite/src/irx_imports.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/*
# _____ ___ ____ ___ ____
# ____| | ____| | | |____|
# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
#-----------------------------------------------------------------------
# Copyright ps2dev - http://www.ps2dev.org
# Licenced under Academic Free License version 2.0
# Review ps2sdk README & LICENSE files for further details.
#
# Defines all IRX imports.
*/

#ifndef IOP_IRX_IMPORTS_H
#define IOP_IRX_IMPORTS_H

#include <irx.h>

/* Please keep these in alphabetical order! */
#include <intrman.h>
#include <ioman.h>
#include <s147nand.h>
#include <sysclib.h>
#include <sysmem.h>
#include <thbase.h>

#endif /* IOP_IRX_IMPORTS_H */
Loading