osAiSetFrequency

This commit is contained in:
Alejandro Javier Asenjo Nitti 2023-10-18 10:49:56 -03:00
parent 92644c09aa
commit af69318aa5

View File

@ -1,3 +1,27 @@
#include "common.h"
#include "global.h"
#include "hardware.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/aisetfreq/osAiSetFrequency.s")
extern s32 osViClock;
s32 osAiSetFrequency(u32 freq) {
register u32 a1;
register s32 a2;
register float ftmp;
ftmp = osViClock / (float) freq + .5f;
a1 = ftmp;
if (a1 < 0x84) {
return -1;
}
a2 = (a1 / 66) & 0xff;
if (a2 > 16) {
a2 = 16;
}
HW_REG(AI_DACRATE_REG, u32) = a1 - 1;
HW_REG(AI_BITRATE_REG, u32) = a2 - 1;
HW_REG(AI_CONTROL_REG, u32) = 1; // enable dma
return osViClock / (s32) a1;
}