Files
tp/include/dolphin/dsp.h
T

62 lines
1.5 KiB
C
Raw Normal View History

#ifndef _DOLPHIN_DSP_H_
#define _DOLPHIN_DSP_H_
2021-03-28 22:49:05 +02:00
#ifdef __REVOLUTION_SDK__
#include <revolution/dsp.h>
#else
#include <dolphin/os.h>
2023-01-02 11:20:10 -08:00
#ifdef __cplusplus
extern "C" {
#endif
typedef void (*DSPCallback)(void* task);
typedef struct STRUCT_DSP_TASK DSPTaskInfo;
2023-01-02 11:20:10 -08:00
typedef struct STRUCT_DSP_TASK {
/* 0x00 */ volatile u32 state;
/* 0x04 */ volatile u32 priority;
/* 0x08 */ volatile u32 flags;
2023-01-02 11:20:10 -08:00
/* 0x0C */ u16* iram_mmem_addr;
/* 0x10 */ u32 iram_length;
/* 0x14 */ u32 iram_addr;
/* 0x18 */ u16* dram_mmem_addr;
/* 0x1C */ u32 dram_length;
/* 0x20 */ u32 dram_addr;
/* 0x24 */ u16 dsp_init_vector;
/* 0x26 */ u16 dsp_resume_vector;
/* 0x28 */ DSPCallback init_cb;
/* 0x2C */ DSPCallback res_cb;
/* 0x30 */ DSPCallback done_cb;
/* 0x34 */ DSPCallback req_cb;
/* 0x38 */ DSPTaskInfo* next;
/* 0x3C */ DSPTaskInfo* prev;
2023-01-02 11:20:10 -08:00
/* 0x40 */ OSTime t_context;
/* 0x48 */ OSTime t_task;
} DSPTaskInfo;
u32 DSPCheckMailToDSP(void);
u32 DSPCheckMailFromDSP(void);
u32 DSPReadCPUToDSPMbox(void);
2023-01-02 11:20:10 -08:00
u32 DSPReadMailFromDSP(void);
void DSPSendMailToDSP(u32 mail);
void DSPAssertInt(void);
2023-01-02 11:20:10 -08:00
void DSPInit(void);
BOOL DSPCheckInit(void);
void DSPReset(void);
void DSPHalt(void);
void DSPUnhalt(void);
u32 DSPGetDMAStatus(void);
2025-11-30 14:23:42 -08:00
DECL_WEAK DSPTaskInfo* DSPAddTask(DSPTaskInfo* task);
DSPTaskInfo* DSPCancelTask(DSPTaskInfo* task);
DSPTaskInfo* DSPAssertTask(DSPTaskInfo* task);
2022-12-30 16:19:57 -07:00
DSPTaskInfo* __DSPGetCurrentTask(void);
2024-01-19 16:22:19 -08:00
#ifdef __cplusplus
}
#endif
#endif
#endif