sm64/lib/src/osLeoDiskInit.c
2023-08-17 08:56:02 -04:00

32 lines
1,013 B
C

#include "libultra_internal.h"
#include "PR/rcp.h"
#include "PR/os.h"
OSPiHandle __Dom2SpeedParam;
OSPiHandle *__osDiskHandle;
OSPiHandle *osLeoDiskInit(void) {
s32 saveMask;
__Dom2SpeedParam.type = DEVICE_TYPE_64DD;
__Dom2SpeedParam.baseAddress = PHYS_TO_K1(PI_DOM2_ADDR1);
__Dom2SpeedParam.latency = 3;
__Dom2SpeedParam.pulse = 6;
__Dom2SpeedParam.pageSize = 6;
__Dom2SpeedParam.relDuration = 2;
#ifdef VERSION_SH
__Dom2SpeedParam.domain = 1;
#endif
IO_WRITE(PI_BSD_DOM2_LAT_REG, __Dom2SpeedParam.latency);
IO_WRITE(PI_BSD_DOM2_PWD_REG, __Dom2SpeedParam.pulse);
IO_WRITE(PI_BSD_DOM2_PGS_REG, __Dom2SpeedParam.pageSize);
IO_WRITE(PI_BSD_DOM2_RLS_REG, __Dom2SpeedParam.relDuration);
bzero(&__Dom2SpeedParam.transferInfo, sizeof(__OSTranxInfo));
saveMask = __osDisableInt();
__Dom2SpeedParam.next = __osPiTable;
__osPiTable = &__Dom2SpeedParam;
__osDiskHandle = &__Dom2SpeedParam;
__osRestoreInt(saveMask);
return &__Dom2SpeedParam;
}