various io files

This commit is contained in:
angie
2023-09-03 18:03:11 -03:00
parent bc35674ed3
commit f8bb3c248b
24 changed files with 109 additions and 80 deletions
+6
View File
@@ -93,6 +93,12 @@ typedef struct OSDevMgr {
#define OS_MESG_PRI_NORMAL 0
#define OS_MESG_PRI_HIGH 1
/*
* PI/EPI
*/
#define PI_DOMAIN1 0
#define PI_DOMAIN2 1
extern OSPiHandle* __osPiTable;
+6
View File
@@ -115,6 +115,12 @@
#define CHNL_ERR_MASK 0xC0 /* Bit 6-7: channel errors */
#define PI_DOM1_ADDR1 0x06000000 /* to 0x07FFFFFF */
#define PI_DOM1_ADDR2 0x10000000 /* to 0x1FBFFFFF */
#define PI_DOM1_ADDR3 0x1FD00000 /* to 0x7FFFFFFF */
#define PI_DOM2_ADDR1 0x05000000 /* to 0x05FFFFFF */
#define PI_DOM2_ADDR2 0x08000000 /* to 0x0FFFFFFF */
#define IO_READ(addr) (*(vu32*)PHYS_TO_K1(addr))
#define IO_WRITE(addr,data) (*(vu32*)PHYS_TO_K1(addr)=(u32)(data))
+1
View File
@@ -112,6 +112,7 @@ beginseg
pad_text
include "build/src/libultra/io/devmgr.o"
include "build/src/libultra/io/pirawdma.o"
include "build/src/libultra/vimodes/vimodentschpn1.o"
include "build/src/libultra/io/contpfs.o"
include "build/asm/boot/getcount.text.o"
pad_text
+2 -2
View File
@@ -1,6 +1,6 @@
#include "prevent_bss_reordering.h"
#include "ultra64.h"
#include "global.h"
#include "alignment.h"
u32 __osFlashID[4] ALIGNED(8);
OSIoMesg __osFlashMsg ALIGNED(8);
@@ -8,7 +8,7 @@ OSMesgQueue __osFlashMessageQ ALIGNED(8);
OSPiHandle __osFlashHandler ALIGNED(8);
OSMesg __osFlashMsgBuf[1];
s32 __osFlashVersion;
UNK_TYPE1 D_801FD0FC[0x14];
s32 D_801FD0FC[0x5];
typedef enum {
/* 0 */ FLASH_OLD,
+1 -1
View File
@@ -1,4 +1,4 @@
#include "global.h"
#include "ultra64.h"
u32 osAiGetLength(void) {
return IO_READ(AI_LEN_REG);
+4 -4
View File
@@ -1,17 +1,17 @@
#include "global.h"
#include "ultra64.h"
s32 osAiSetFrequency(u32 frequency) {
u8 bitrate;
f32 dacRateF = ((f32)osViClock / frequency) + 0.5f;
u32 dacRate = dacRateF;
if (dacRate < 132) {
if (dacRate < AI_MIN_DAC_RATE) {
return -1;
}
bitrate = (dacRate / 66);
if (bitrate > 16) {
bitrate = 16;
if (bitrate > AI_MAX_BIT_RATE) {
bitrate = AI_MAX_BIT_RATE;
}
IO_WRITE(AI_DACRATE_REG, dacRate - 1);
+6 -4
View File
@@ -1,6 +1,8 @@
#include "global.h"
#include "ultra64.h"
#include "libc/stdbool.h"
#include "alignment.h"
OSPiHandle __CartRomHandle;
OSPiHandle __CartRomHandle ALIGNED(8);
OSPiHandle* osCartRomInit(void) {
register u32 initialConfig;
@@ -22,8 +24,8 @@ OSPiHandle* osCartRomInit(void) {
sCartRomNeedsInit = false;
__CartRomHandle.type = DEVICE_TYPE_CART;
__CartRomHandle.baseAddress = 0xB0000000;
__CartRomHandle.domain = 0;
__CartRomHandle.baseAddress = PHYS_TO_K1(PI_DOM1_ADDR2);
__CartRomHandle.domain = PI_DOMAIN1;
__CartRomHandle.speed = 0;
bzero(&__CartRomHandle.transferInfo, sizeof(__OSTranxInfo));
+5 -4
View File
@@ -1,4 +1,5 @@
#include "global.h"
#include "ultra64.h"
#include "PR/controller.h"
s32 __osContChannelReset(OSMesgQueue* mq, s32 channel) {
s32 i;
@@ -7,13 +8,13 @@ s32 __osContChannelReset(OSMesgQueue* mq, s32 channel) {
__osSiGetAccess();
__osPfsPifRam.status = 1;
__osPfsPifRam.status = CONT_CMD_EXE;
for (i = 0; i < channel; i++) {
*bufptr++ = 0;
*bufptr++ = CONT_CMD_REQUEST_STATUS;
}
*bufptr++ = 0xFD;
*bufptr++ = CONT_CMD_CHANNEL_RESET;
*bufptr = CONT_CMD_END;
__osSiRawStartDma(OS_WRITE, &__osPfsPifRam);
+4 -34
View File
@@ -1,39 +1,9 @@
#include "ultra64.h"
#include "global.h"
#include "PR/controller.h"
#include "alignment.h"
__OSInode __osPfsInodeCache ALIGNED(8);
__OSInode __osPfsInodeCache;
OSViMode osViModeNtscHpn1 = {
8, // type
{
// comRegs
0x324E, // ctrl
0x500, // width
0x3E52239, // burst
0x20C, // vSync
0xC15, // hSync
0xC150C15, // leap
0x6C02EC, // hStart
0x400, // xScale
0, // vCurrent
},
{ // fldRegs
{
// [0]
0x500, // origin
0x400, // yScale
0x2301FD, // vStart
0xE0204, // vBurst
2, // vIntr
},
{
// [1]
0xA00, // origin
0x400, // yScale
0x2501FF, // vStart
0xE0204, // vBurst
2, // vIntr
} },
};
s32 __osPfsInodeCacheChannel = -1;
u8 __osPfsInodeCacheBank = 250;
+5 -4
View File
@@ -1,19 +1,20 @@
#include "global.h"
#include "ultra64.h"
#include "PR/controller.h"
s32 osContStartQuery(OSMesgQueue* mq) {
s32 ret;
__osSiGetAccess();
if (__osContLastPoll != 0) {
__osPackRequestData(0);
if (__osContLastPoll != CONT_CMD_REQUEST_STATUS) {
__osPackRequestData(CONT_CMD_REQUEST_STATUS);
__osSiRawStartDma(OS_WRITE, &__osContPifRam);
osRecvMesg(mq, NULL, OS_MESG_BLOCK);
}
ret = __osSiRawStartDma(OS_READ, &__osContPifRam);
__osContLastPoll = 0;
__osContLastPoll = CONT_CMD_REQUEST_STATUS;
__osSiRelAccess();
+2 -1
View File
@@ -1,4 +1,5 @@
#include "global.h"
#include "ultra64.h"
#include "PR/controller.h"
#include "PR/voiceinternal.h"
#define BLOCKSIZE 32
+1 -1
View File
@@ -1,6 +1,6 @@
#include "ultra64.h"
#include "PR/controller.h"
#include "PR/voiceinternal.h"
#include "global.h"
s32 __osContRamWrite(OSMesgQueue* mq, s32 channel, u16 address, u8* buffer, s32 force) {
s32 ret = 0;
+3 -1
View File
@@ -1,4 +1,6 @@
#include "global.h"
#include "ultra64.h"
#include "PR/controller.h"
#include "macros.h"
void __osPackReadData(void);
+9 -6
View File
@@ -1,13 +1,16 @@
#include "global.h"
#include "ultra64.h"
#include "PR/controller.h"
#include "alignment.h"
#include "macros.h"
s32 __osContinitialized = 0;
OSPifRam __osContPifRam;
OSPifRam __osContPifRam ALIGNED(16);
u8 __osContLastPoll;
u8 __osMaxControllers;
OSTimer __osEepromTimer;
OSMesgQueue __osEepromTimerQ;
OSMesgQueue __osEepromTimerQ ALIGNED(8);
OSMesg __osEepromTimerMsg[1];
s32 osContInit(OSMesgQueue* mq, u8* bitpattern, OSContStatus* data) {
@@ -24,15 +27,15 @@ s32 osContInit(OSMesgQueue* mq, u8* bitpattern, OSContStatus* data) {
__osContinitialized = 1;
t = osGetTime();
if (t < 0x165A0BC) {
if (t < OS_USEC_TO_CYCLES(500000)) {
osCreateMesgQueue(&timerMesgQueue, &dummy, 1);
osSetTimer(&mytimer, 0x165A0BC - t, 0, &timerMesgQueue, &dummy);
osSetTimer(&mytimer, OS_USEC_TO_CYCLES(500000) - t, 0, &timerMesgQueue, &dummy);
osRecvMesg(&timerMesgQueue, &dummy, OS_MESG_BLOCK);
}
__osMaxControllers = 4;
__osPackRequestData(0);
__osPackRequestData(CONT_CMD_REQUEST_STATUS);
ret = __osSiRawStartDma(OS_WRITE, &__osContPifRam);
osRecvMesg(mq, &dummy, OS_MESG_BLOCK);
+5 -4
View File
@@ -1,14 +1,15 @@
#include "global.h"
#include "ultra64.h"
#include "PR/controller.h"
s32 osContSetCh(u8 ch) {
__osSiGetAccess();
if (4 < ch) {
__osMaxControllers = 4;
if (ch > MAXCONTROLLERS) {
__osMaxControllers = MAXCONTROLLERS;
} else {
__osMaxControllers = ch;
}
__osContLastPoll = -2;
__osContLastPoll = CONT_CMD_END;
__osSiRelAccess();
return 0;
+1 -1
View File
@@ -69,7 +69,7 @@
* implementing CRC (Cyclic Redundancy Check) calculation
* ](http://www.sunshine2k.de/articles/coding/crc/understanding_crc.html)
*/
#include "global.h"
#include "ultra64.h"
#define ADDRESS_CRC_MESSAGE_LENGTH 10
#define ADDRESS_CRC_LENGTH 5
+2 -1
View File
@@ -1,4 +1,5 @@
#include "global.h"
#include "ultra64.h"
#include "libc/stdbool.h"
void __osDevMgrMain(void* arg) {
OSIoMesg* ioMesg;
+1 -1
View File
@@ -1,4 +1,4 @@
#include "global.h"
#include "ultra64.h"
u32 osDpGetStatus(void) {
return IO_READ(DPC_STATUS_REG);
+1 -1
View File
@@ -1,4 +1,4 @@
#include "global.h"
#include "ultra64.h"
void osDpSetStatus(u32 data) {
IO_WRITE(DPC_STATUS_REG, data);
+5 -5
View File
@@ -1,4 +1,4 @@
#include "global.h"
#include "ultra64.h"
s32 osEPiStartDma(OSPiHandle* pihandle, OSIoMesg* mb, s32 direction) {
register s32 result;
@@ -9,13 +9,13 @@ s32 osEPiStartDma(OSPiHandle* pihandle, OSIoMesg* mb, s32 direction) {
mb->piHandle = pihandle;
if (direction == 0) {
mb->hdr.type = 15;
if (direction == OS_READ) {
mb->hdr.type = OS_MESG_TYPE_EDMAREAD;
} else {
mb->hdr.type = 16;
mb->hdr.type = OS_MESG_TYPE_EDMAWRITE;
}
if (mb->hdr.pri == 1) {
if (mb->hdr.pri == OS_MESG_PRI_HIGH) {
result = osJamMesg(osPiGetCmdQueue(), mb, OS_MESG_NOBLOCK);
} else {
result = osSendMesg(osPiGetCmdQueue(), mb, OS_MESG_NOBLOCK);
+1 -1
View File
@@ -1,4 +1,4 @@
#include "global.h"
#include "ultra64.h"
s32 osEPiLinkHandle(OSPiHandle* handle) {
u32 saveMask = __osDisableInt();
-4
View File
@@ -1,4 +0,0 @@
#ifndef _SIINT_H_
#define _SIINT_H_
#endif
+37
View File
@@ -0,0 +1,37 @@
#include "PR/os.h"
#include "PR/rcp.h"
#include "PR/viint.h"
OSViMode osViModeNtscHpn1 = {
OS_VI_NTSC_HPN1, // type
{
// comRegs
VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 |
VI_CTRL_PIXEL_ADV_3, // ctrl
WIDTH(1280), // width
BURST(57, 34, 5, 62), // burst
VSYNC(524), // vSync
HSYNC(3093, 0), // hSync
LEAP(3093, 3093), // leap
HSTART(108, 748), // hStart
SCALE(1, 0), // xScale
VCURRENT(0), // vCurrent
},
{ // fldRegs
{
// [0]
ORIGIN(1280), // origin
SCALE(1, 0), // yScale
HSTART(35, 509), // vStart
BURST(4, 2, 14, 0), // vBurst
VINTR(2), // vIntr
},
{
// [1]
ORIGIN(2560), // origin
SCALE(1, 0), // yScale
HSTART(37, 511), // vStart
BURST(4, 2, 14, 0), // vBurst
VINTR(2), // vIntr
} },
};
+1
View File
@@ -270,6 +270,7 @@
0x80097E70 : "pimgr",
0x80097EA0 : "piacs",
0x80097EB0 : "contpfs",
0x80097EB0 : "vimodentschpn1",
0x80097F10 : "seteventmesg",
0x80097F20 : "xprintf",
0x80097F70 : "timerintr",