summaryrefslogtreecommitdiff
path: root/src/libleo/api/testunitready.c
blob: 2116bc9e2af841ffd43ef6c8bc9810c9b8369f46 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include "ultra64.h"
#include "ultra64/leo.h"
#include "ultra64/leoappli.h"
#include "ultra64/leodrive.h"

s32 LeoTestUnitReady(u8* status) {
    volatile LEOCmdTestUnitReady cmdBlock;

    if (!__leoActive) {
        return -1;
    }

    if (IO_READ(PI_STATUS_REG) & PI_STATUS_DMA_BUSY) {
        return LEO_ERROR_BUSY;
    }

    cmdBlock.header.command = 3;
    cmdBlock.header.reserve1 = 0;
    cmdBlock.header.control = 0;
    cmdBlock.header.reserve3 = 0;

    leoCommand((void*)&cmdBlock);

    while (cmdBlock.header.status == 8) {}

    *status = cmdBlock.test;
    return GET_ERROR(cmdBlock);
}