sysmodule: change soc type logic

This commit is contained in:
souldbminersmwc
2025-12-03 19:27:52 -05:00
parent b2d3d27f5e
commit c84bb9d7e6
5 changed files with 22 additions and 11 deletions

View File

@@ -35,10 +35,21 @@ typedef enum
{ {
SysClkSocType_Erista = 0, SysClkSocType_Erista = 0,
SysClkSocType_Mariko, SysClkSocType_Mariko,
SysClkSocType_MarikoLite,
SysClkSocType_EnumMax SysClkSocType_EnumMax
} SysClkSocType; } SysClkSocType;
typedef enum
{
HorizonOCConsoleType_Unknown = 0,
HorizonOCConsoleType_V1,
HorizonOCConsoleType_UnreleasedErista,
HorizonOCConsoleType_V2,
HorizonOCConsoleType_Lite,
HorizonOCConsoleType_UnreleasedMariko,
HorizonOCConsoleType_OLED,
SysClkSocType_EnumMax
} HorizonOCConsoleType;
typedef enum typedef enum
{ {
SysClkProfile_Handheld = 0, SysClkProfile_Handheld = 0,

View File

@@ -55,8 +55,8 @@ typedef enum {
HocClkConfigValue_HandheldTDP, HocClkConfigValue_HandheldTDP,
HocClkConfigValue_HandheldTDPLimit, HocClkConfigValue_HandheldTDPLimit,
HocClkConfigValue_LiteTDPLimit, HocClkConfigValue_LiteTDPLimit,
HocClkConfigValue_TDPCycleLimit,
HocClkConfigValue_EnforceBoardLimit, HocClkConfigValue_EnforceBoardLimit,

View File

@@ -33,6 +33,7 @@
#define HOSSVC_HAS_TC (hosversionAtLeast(5,0,0)) #define HOSSVC_HAS_TC (hosversionAtLeast(5,0,0))
static SysClkSocType g_socType = SysClkSocType_Erista; static SysClkSocType g_socType = SysClkSocType_Erista;
static HorizonOCConsoleType g_consoleType = HorizonOCConsoleType_Unknown;
const char* Board::GetModuleName(SysClkModule module, bool pretty) const char* Board::GetModuleName(SysClkModule module, bool pretty)
{ {
@@ -482,6 +483,9 @@ SysClkSocType Board::GetSocType() {
return g_socType; return g_socType;
} }
HorizonOCConsoleType Board::GetConsoleType() {
return g_consoleType;
}
void Board::FetchHardwareInfos() void Board::FetchHardwareInfos()
{ {
@@ -496,15 +500,12 @@ void Board::FetchHardwareInfos()
switch(sku) switch(sku)
{ {
case 2: case 2 .. 5:
case 3:
case 5:
g_socType = SysClkSocType_Mariko; g_socType = SysClkSocType_Mariko;
break; break;
case 4:
g_socType = SysClkSocType_MarikoLite;
break;
default: default:
g_socType = SysClkSocType_Erista; g_socType = SysClkSocType_Erista;
} }
g_consoleType = sku;
} }

View File

@@ -53,6 +53,7 @@ class Board
static std::int32_t GetPowerMw(SysClkPowerSensor sensor); static std::int32_t GetPowerMw(SysClkPowerSensor sensor);
static std::uint32_t GetRamLoad(SysClkRamLoad load); static std::uint32_t GetRamLoad(SysClkRamLoad load);
static SysClkSocType GetSocType(); static SysClkSocType GetSocType();
static HorizonOCConsoleType GetConsoleType();
protected: protected:
static void FetchHardwareInfos(); static void FetchHardwareInfos();

View File

@@ -145,8 +145,6 @@ std::uint32_t ClockManager::GetMaxAllowedHz(SysClkModule module, SysClkProfile p
return 460800000; return 460800000;
case SysClkSocType_Mariko: case SysClkSocType_Mariko:
return 614400000; return 614400000;
case SysClkSocType_MarikoLite:
return 537600000;
default: default:
return 4294967294; return 4294967294;
} }
@@ -230,7 +228,7 @@ void ClockManager::Tick()
{ {
std::scoped_lock lock{this->contextMutex}; std::scoped_lock lock{this->contextMutex};
if(this->config->GetConfigValue(HocClkConfigValue_HandheldTDP) && opMode == AppletOperationMode_Handheld) { 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)) { if(Board::GetPowerMw(SysClkPowerSensor_Now) < -(int)this->config->GetConfigValue(HocClkConfigValue_LiteTDPLimit)) {
ResetToStockClocks(); ResetToStockClocks();
return; return;