diff --git a/Source/sys-clk/common/include/sysclk/board.h b/Source/sys-clk/common/include/sysclk/board.h index 04dbbe2c..6338cf62 100644 --- a/Source/sys-clk/common/include/sysclk/board.h +++ b/Source/sys-clk/common/include/sysclk/board.h @@ -35,10 +35,21 @@ typedef enum { SysClkSocType_Erista = 0, SysClkSocType_Mariko, - SysClkSocType_MarikoLite, SysClkSocType_EnumMax } SysClkSocType; +typedef enum +{ + HorizonOCConsoleType_Unknown = 0, + HorizonOCConsoleType_V1, + HorizonOCConsoleType_UnreleasedErista, + HorizonOCConsoleType_V2, + HorizonOCConsoleType_Lite, + HorizonOCConsoleType_UnreleasedMariko, + HorizonOCConsoleType_OLED, + SysClkSocType_EnumMax +} HorizonOCConsoleType; + typedef enum { SysClkProfile_Handheld = 0, diff --git a/Source/sys-clk/common/include/sysclk/config.h b/Source/sys-clk/common/include/sysclk/config.h index a29137ec..98e6970e 100644 --- a/Source/sys-clk/common/include/sysclk/config.h +++ b/Source/sys-clk/common/include/sysclk/config.h @@ -55,8 +55,8 @@ typedef enum { HocClkConfigValue_HandheldTDP, HocClkConfigValue_HandheldTDPLimit, + HocClkConfigValue_LiteTDPLimit, - HocClkConfigValue_TDPCycleLimit, HocClkConfigValue_EnforceBoardLimit, diff --git a/Source/sys-clk/sysmodule/src/board.cpp b/Source/sys-clk/sysmodule/src/board.cpp index f7b92991..11500be5 100644 --- a/Source/sys-clk/sysmodule/src/board.cpp +++ b/Source/sys-clk/sysmodule/src/board.cpp @@ -33,6 +33,7 @@ #define HOSSVC_HAS_TC (hosversionAtLeast(5,0,0)) static SysClkSocType g_socType = SysClkSocType_Erista; +static HorizonOCConsoleType g_consoleType = HorizonOCConsoleType_Unknown; const char* Board::GetModuleName(SysClkModule module, bool pretty) { @@ -482,6 +483,9 @@ SysClkSocType Board::GetSocType() { return g_socType; } +HorizonOCConsoleType Board::GetConsoleType() { + return g_consoleType; +} void Board::FetchHardwareInfos() { @@ -496,15 +500,12 @@ void Board::FetchHardwareInfos() switch(sku) { - case 2: - case 3: - case 5: + case 2 .. 5: g_socType = SysClkSocType_Mariko; break; - case 4: - g_socType = SysClkSocType_MarikoLite; - break; default: g_socType = SysClkSocType_Erista; } + + g_consoleType = sku; } \ No newline at end of file diff --git a/Source/sys-clk/sysmodule/src/board.h b/Source/sys-clk/sysmodule/src/board.h index 21b9c227..625786ef 100644 --- a/Source/sys-clk/sysmodule/src/board.h +++ b/Source/sys-clk/sysmodule/src/board.h @@ -53,6 +53,7 @@ class Board static std::int32_t GetPowerMw(SysClkPowerSensor sensor); static std::uint32_t GetRamLoad(SysClkRamLoad load); static SysClkSocType GetSocType(); + static HorizonOCConsoleType GetConsoleType(); protected: static void FetchHardwareInfos(); diff --git a/Source/sys-clk/sysmodule/src/clock_manager.cpp b/Source/sys-clk/sysmodule/src/clock_manager.cpp index 24096f09..b769d75f 100644 --- a/Source/sys-clk/sysmodule/src/clock_manager.cpp +++ b/Source/sys-clk/sysmodule/src/clock_manager.cpp @@ -145,8 +145,6 @@ std::uint32_t ClockManager::GetMaxAllowedHz(SysClkModule module, SysClkProfile p return 460800000; case SysClkSocType_Mariko: return 614400000; - case SysClkSocType_MarikoLite: - return 537600000; default: return 4294967294; } @@ -230,7 +228,7 @@ void ClockManager::Tick() { std::scoped_lock lock{this->contextMutex}; if(this->config->GetConfigValue(HocClkConfigValue_HandheldTDP) && opMode == AppletOperationMode_Handheld) { - if(Board::GetSocType() == SysClkSocType_MarikoLite) { + if(Board::GetConsoleType() == HorizonOCConsoleType_Lite) { if(Board::GetPowerMw(SysClkPowerSensor_Now) < -(int)this->config->GetConfigValue(HocClkConfigValue_LiteTDPLimit)) { ResetToStockClocks(); return;