diff --git a/nx/include/switch/services/clkrst.h b/nx/include/switch/services/clkrst.h index 6bd77eff..7755331f 100644 --- a/nx/include/switch/services/clkrst.h +++ b/nx/include/switch/services/clkrst.h @@ -15,7 +15,9 @@ typedef struct { Result clkrstInitialize(void); void clkrstExit(void); -Result clkrstOpenSession(ClkrstSession* session_out, PcvModule module); + +/// Opens a ClkrstSession for the requested PcvModuleId, unk is set to 3 in official sysmodules. +Result clkrstOpenSession(ClkrstSession* session_out, PcvModuleId module_id, u32 unk); void clkrstCloseSession(ClkrstSession* session); Result clkrstSetClockRate(ClkrstSession* session, u32 hz); Result clkrstGetClockRate(ClkrstSession* session, u32 *out_hz); diff --git a/nx/source/services/clkrst.c b/nx/source/services/clkrst.c index 8857e173..5a0a3576 100644 --- a/nx/source/services/clkrst.c +++ b/nx/source/services/clkrst.c @@ -37,14 +37,14 @@ void clkrstExit(void) { } } -Result clkrstOpenSession(ClkrstSession* session_out, PcvModule module) { +Result clkrstOpenSession(ClkrstSession* session_out, PcvModuleId module_id, u32 unk) { IpcCommand c; ipcInitialize(&c); struct { u64 magic; u64 cmd_id; - u32 module; + u32 module_id; u32 unk; } *raw; @@ -52,8 +52,8 @@ Result clkrstOpenSession(ClkrstSession* session_out, PcvModule module) { raw->magic = SFCI_MAGIC; raw->cmd_id = 0; - raw->module = 0x40000001 + module; - raw->unk = 3; + raw->module_id = module_id; + raw->unk = unk; Result rc = serviceIpcDispatch(&g_clkrstSrv);