summaryrefslogtreecommitdiff
path: root/src/os/__osSpRawStartDma.c
blob: be6287c34818041575ddcb85d72420bd2c4a2961 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "libultra_internal.h"
#include "hardware.h"

s32 __osSpRawStartDma(u32 dir, void* sp_ptr, void* dram_ptr, size_t size) {
    if (__osSpDeviceBusy()) {
        return -1;
    }
    HW_REG(SP_MEM_ADDR_REG, void*) = sp_ptr;
    HW_REG(SP_DRAM_ADDR_REG, void*) = (void*) osVirtualToPhysical(dram_ptr);
    if (dir == 0) {
        HW_REG(SP_WR_LEN_REG, u32) = size - 1;
    } else {
        HW_REG(SP_RD_LEN_REG, u32) = size - 1;
    }
    return 0;
}