diff --git a/Source/sys-clk-OC/common/include/sysclk/client/ipc.h b/Source/sys-clk-OC/common/include/sysclk/client/ipc.h index 2f821ffe..b1d071bb 100644 --- a/Source/sys-clk-OC/common/include/sysclk/client/ipc.h +++ b/Source/sys-clk-OC/common/include/sysclk/client/ipc.h @@ -32,6 +32,7 @@ Result sysclkIpcGetConfigValues(SysClkConfigValueList* out_configValues); Result sysclkIpcSetConfigValues(SysClkConfigValueList* configValues); Result sysclkIpcSetReverseNXRTMode(ReverseNXMode mode); Result sysclkIpcGetFrequencyTable(SysClkModule module, SysClkProfile profile, size_t max_entry_num, uint32_t* out_table); +Result sysclkIpcGetIsMariko(bool* out_is_mariko); static inline Result sysclkIpcRemoveOverride(SysClkModule module) { diff --git a/Source/sys-clk-OC/common/include/sysclk/ipc.h b/Source/sys-clk-OC/common/include/sysclk/ipc.h index 75da8af8..d4a874f0 100644 --- a/Source/sys-clk-OC/common/include/sysclk/ipc.h +++ b/Source/sys-clk-OC/common/include/sysclk/ipc.h @@ -31,6 +31,7 @@ enum SysClkIpcCmd SysClkIpcCmd_SetConfigValues = 10, SysClkIpcCmd_SetReverseNXRTMode = 11, SysClkIpcCmd_GetFrequencyTable = 12, + SysClkIpcCmd_GetIsMariko = 13, }; typedef struct diff --git a/Source/sys-clk-OC/common/src/client/ipc.c b/Source/sys-clk-OC/common/src/client/ipc.c index 1f5ea94f..3b9e1697 100644 --- a/Source/sys-clk-OC/common/src/client/ipc.c +++ b/Source/sys-clk-OC/common/src/client/ipc.c @@ -146,3 +146,8 @@ Result sysclkIpcGetFrequencyTable(SysClkModule module, SysClkProfile profile, si free(table); return 0; } + +Result sysclkIpcGetIsMariko(bool* out_is_mariko) +{ + return serviceDispatchOut(&g_sysclkSrv, SysClkIpcCmd_GetIsMariko, *out_is_mariko); +} diff --git a/Source/sys-clk-OC/overlay/src/ui/gui/misc_gui.cpp b/Source/sys-clk-OC/overlay/src/ui/gui/misc_gui.cpp index ada9d2ac..bfdd9f13 100644 --- a/Source/sys-clk-OC/overlay/src/ui/gui/misc_gui.cpp +++ b/Source/sys-clk-OC/overlay/src/ui/gui/misc_gui.cpp @@ -18,24 +18,7 @@ MiscGui::MiscGui() this->chargeInfo = new PsmChargeInfo {}; this->i2cInfo = new I2cInfo {}; - u64 hardware_type = 0; - splInitialize(); - splGetConfig(SplConfigItem_HardwareType, &hardware_type); - splExit(); - - switch (hardware_type) { - case 0: // Icosa - case 1: // Copper - case 4: // Calcio - isMariko = false; - break; - default: - // case 2: // Hoag - // case 3: // Iowa - // case 5: // Aula - isMariko = true; - break; - } + sysclkIpcGetIsMariko(&this->isMariko); } MiscGui::~MiscGui() diff --git a/Source/sys-clk-OC/sysmodule/src/clocks.cpp b/Source/sys-clk-OC/sysmodule/src/clocks.cpp index b3f4d866..5e34690d 100644 --- a/Source/sys-clk-OC/sysmodule/src/clocks.cpp +++ b/Source/sys-clk-OC/sysmodule/src/clocks.cpp @@ -80,8 +80,10 @@ void Clocks::Initialize() // Check if it's Mariko u64 hardware_type = 0; - splInitialize(); - splGetConfig(SplConfigItem_HardwareType, &hardware_type); + rc = splInitialize(); + ASSERT_RESULT_OK(rc, "splInitialize"); + rc = splGetConfig(SplConfigItem_HardwareType, &hardware_type); + ASSERT_RESULT_OK(rc, "splGetConfig"); splExit(); switch (hardware_type) { diff --git a/Source/sys-clk-OC/sysmodule/src/ipc_service.cpp b/Source/sys-clk-OC/sysmodule/src/ipc_service.cpp index f684e184..17a2dce7 100644 --- a/Source/sys-clk-OC/sysmodule/src/ipc_service.cpp +++ b/Source/sys-clk-OC/sysmodule/src/ipc_service.cpp @@ -168,6 +168,9 @@ Result IpcService::ServiceHandlerFunc(void* arg, const IpcServerRequest* r, u8* return ipcSrv->GetFrequencyTable(in_args, (uint32_t*)out_data); } break; + case SysClkIpcCmd_GetIsMariko: + *out_dataSize = sizeof(bool); + return ipcSrv->GetIsMariko((bool*)out_data); } return SYSCLK_ERROR(Generic); @@ -313,3 +316,8 @@ Result IpcService::SetReverseNXRTMode(ReverseNXMode mode) { Result IpcService::GetFrequencyTable(SysClkIpc_GetFrequencyTable_Args* args, uint32_t* out_table) { return Clocks::GetTable(args->module, args->profile, args->max_entry_num, out_table); } + +Result IpcService::GetIsMariko(bool* out_is_mariko) { + *out_is_mariko = Clocks::GetIsMariko(); + return 0; +} diff --git a/Source/sys-clk-OC/sysmodule/src/ipc_service.h b/Source/sys-clk-OC/sysmodule/src/ipc_service.h index 69ad73d3..7cca0263 100644 --- a/Source/sys-clk-OC/sysmodule/src/ipc_service.h +++ b/Source/sys-clk-OC/sysmodule/src/ipc_service.h @@ -38,6 +38,7 @@ class IpcService Result SetConfigValues(SysClkConfigValueList* configValues); Result SetReverseNXRTMode(ReverseNXMode mode); Result GetFrequencyTable(SysClkIpc_GetFrequencyTable_Args* args, uint32_t* out_table); + Result GetIsMariko(bool* out_is_mariko); bool running; Thread thread;