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_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,

View File

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

View File

@@ -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;
}

View File

@@ -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();

View File

@@ -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;