libnx/nx/include/switch/services/mm.h
2021-03-07 19:59:46 +01:00

31 lines
775 B
C

/**
* @file mmu.h
* @brief Multimedia (mm) IPC wrapper.
* @author averne
* @copyright libnx Authors
*/
#pragma once
#include "../types.h"
#include "../sf/service.h"
typedef enum {
MmuModuleId_Ram = 2,
MmuModuleId_Nvenc = 5,
MmuModuleId_Nvdec = 6,
MmuModuleId_Nvjpg = 7,
} MmuModuleId;
typedef struct {
MmuModuleId module;
u32 id;
} MmuRequest;
Result mmuInitialize(void);
void mmuExit(void);
Result mmuRequestInitialize(MmuRequest *request, MmuModuleId module, u32 unk, bool autoclear); ///< unk is ignored by official software
Result mmuRequestFinalize(const MmuRequest *request);
Result mmuRequestGet(const MmuRequest *request, u32 *out_freq_hz);
Result mmuRequestSetAndWait(const MmuRequest *request, u32 freq_hz, s32 timeout);