diff --git a/Source/Horizon-OC-Monitor/source/Utils.hpp b/Source/Horizon-OC-Monitor/source/Utils.hpp index 292ddd78..46de32f9 100644 --- a/Source/Horizon-OC-Monitor/source/Utils.hpp +++ b/Source/Horizon-OC-Monitor/source/Utils.hpp @@ -583,7 +583,7 @@ void Misc(void*) { realCPU_mV = sysclkCTX.voltages[HocClkVoltage_CPU]; realGPU_mV = sysclkCTX.voltages[HocClkVoltage_GPU]; realVDD2_mV = sysclkCTX.voltages[HocClkVoltage_EMCVDD2]; - realVDDQ_mV = sysclkCTX.voltages[HocClkVoltage_EMCVDDQ_MarikoOnly]; + realVDDQ_mV = sysclkCTX.voltages[HocClkVoltage_EMCVDDQ]; realSOC_mV = sysclkCTX.voltages[HocClkVoltage_SOC]; } diff --git a/Source/hoc-clk/common/include/sysclk/board.h b/Source/hoc-clk/common/include/sysclk/board.h index f34ed47e..43ecd9f8 100644 --- a/Source/hoc-clk/common/include/sysclk/board.h +++ b/Source/hoc-clk/common/include/sysclk/board.h @@ -54,7 +54,7 @@ typedef enum { HocClkVoltage_EMCVDD2, HocClkVoltage_CPU, HocClkVoltage_GPU, - HocClkVoltage_EMCVDDQ_MarikoOnly, + HocClkVoltage_EMCVDDQ, HocClkVoltage_Display, HocClkVoltage_Battery, HocClkVoltage_EnumMax, @@ -153,9 +153,8 @@ typedef enum { ComponentGovernor_EnumMax, } ComponentGovernorState; typedef enum { - RamDisplayMode_VDD2VDDQ = 0, - RamDisplayMode_VDD2Usage, - RamDisplayMode_VDDQUsage, + RamDisplayMode_VDD2 = 0, + RamDisplayMode_VDDQ, RamDisplayMode_EnumMax, } RamDisplayMode; @@ -268,7 +267,7 @@ static inline const char* hocClkFormatVoltage(HocClkVoltage voltage, bool pretty return pretty ? "GPU" : "gpu"; case HocClkVoltage_EMCVDD2: return pretty ? "VDD2" : "emcvdd2"; - case HocClkVoltage_EMCVDDQ_MarikoOnly: + case HocClkVoltage_EMCVDDQ: return pretty ? "VDDQ" : "vddq"; case HocClkVoltage_SOC: return pretty ? "SOC" : "soc"; diff --git a/Source/hoc-clk/common/include/sysclk/config.h b/Source/hoc-clk/common/include/sysclk/config.h index 9f5da1e9..d4dccb89 100644 --- a/Source/hoc-clk/common/include/sysclk/config.h +++ b/Source/hoc-clk/common/include/sysclk/config.h @@ -64,7 +64,7 @@ typedef enum { HorizonOCConfigValue_GPUScheduling, HorizonOCConfigValue_GPUSchedulingMethod, - HorizonOCConfigValue_RAMVoltUsageDisplayMode, + HorizonOCConfigValue_RAMVoltDisplayMode, HorizonOCConfigValue_CpuGovernorMinimumFreq, KipConfigValue_custRev, @@ -248,7 +248,7 @@ static inline const char* sysclkFormatConfigValue(SysClkConfigValue val, bool pr case HorizonOCConfigValue_EnableExperimentalSettings: return pretty ? "Enable Experimental Settings" : "enable_experimental_settings"; - case HorizonOCConfigValue_RAMVoltUsageDisplayMode: + case HorizonOCConfigValue_RAMVoltDisplayMode: return pretty ? "RAM Voltage / Usage Display Mode" : "ram_volt_usage_display_mode"; case HorizonOCConfigValue_CpuGovernorMinimumFreq: return pretty ? "CPU Governor Minimum Frequency" : "cpu_gov_min_freq"; @@ -583,7 +583,7 @@ static inline uint64_t sysclkValidConfigValue(SysClkConfigValue val, uint64_t in case HorizonOCConfigValue_DVFSMode: case HorizonOCConfigValue_DVFSOffset: case HorizonOCConfigValue_GPUScheduling: - case HorizonOCConfigValue_RAMVoltUsageDisplayMode: + case HorizonOCConfigValue_RAMVoltDisplayMode: case HorizonOCConfigValue_CpuGovernorMinimumFreq: return true; case HorizonOCConfigValue_BatteryChargeCurrent: diff --git a/Source/hoc-clk/overlay/Makefile b/Source/hoc-clk/overlay/Makefile index 1f8312f8..09339ff1 100644 --- a/Source/hoc-clk/overlay/Makefile +++ b/Source/hoc-clk/overlay/Makefile @@ -39,7 +39,7 @@ include ${TOPDIR}/lib/libultrahand/ultrahand.mk # version control constants #--------------------------------------------------------------------------------- #TARGET_VERSION := $(shell git describe --dirty --always --tags) -APP_VERSION := 1.1.0 +APP_VERSION := 1.2.0 TARGET_VERSION := $(APP_VERSION) #--------------------------------------------------------------------------------- diff --git a/Source/hoc-clk/overlay/src/ui/gui/about_gui.cpp b/Source/hoc-clk/overlay/src/ui/gui/about_gui.cpp index f4632ba6..3214de58 100644 --- a/Source/hoc-clk/overlay/src/ui/gui/about_gui.cpp +++ b/Source/hoc-clk/overlay/src/ui/gui/about_gui.cpp @@ -29,6 +29,8 @@ tsl::elm::ListItem* sysdockStatusItem = NULL; tsl::elm::ListItem* saltyNXStatusItem = NULL; tsl::elm::ListItem* RETROStatusItem = NULL; tsl::elm::ListItem* waferCordsItem = NULL; +tsl::elm::ListItem* ramVoltItem = NULL; +tsl::elm::ListItem* eristaPLLXItem = NULL; ImageElement* CatImage = NULL; HideableCategoryHeader* CatHeader = NULL; @@ -50,6 +52,16 @@ void AboutGui::listUI() new tsl::elm::CategoryHeader("Information") ); + ramVoltItem = + new tsl::elm::ListItem("RAM Voltage:"); + this->listElement->addItem(ramVoltItem); + + eristaPLLXItem = + new tsl::elm::ListItem("PLLX Temp:"); + if(IsErista()) { + this->listElement->addItem(eristaPLLXItem); + } + SpeedoItem = new tsl::elm::ListItem("Speedo:"); this->listElement->addItem(SpeedoItem); @@ -306,4 +318,14 @@ void AboutGui::refresh() sprintf(strings[2], "X: %u Y: %u", this->context->waferX, this->context->waferY); waferCordsItem->setValue(strings[2]); + + if(IsErista()) { + u32 millis = context->temps[HorizonOCThermalSensor_PLLX]; + sprintf(strings[3], "%u.%u", millis / 1000U, (millis % 1000U) / 100U); + eristaPLLXItem->setValue(strings[3]); + } + + sprintf(strings[4], "%u.%u / %u mV", context->voltages[HocClkVoltage_EMCVDD2] / 1000U, (context->voltages[HocClkVoltage_EMCVDD2] % 1000U) / 100U, context->voltages[HocClkVoltage_EMCVDDQ] / 1000); + ramVoltItem->setValue(strings[4]); + } diff --git a/Source/hoc-clk/overlay/src/ui/gui/base_menu_gui.cpp b/Source/hoc-clk/overlay/src/ui/gui/base_menu_gui.cpp index fdef64f9..09b43521 100644 --- a/Source/hoc-clk/overlay/src/ui/gui/base_menu_gui.cpp +++ b/Source/hoc-clk/overlay/src/ui/gui/base_menu_gui.cpp @@ -92,38 +92,42 @@ void BaseMenuGui::preDraw(tsl::gfx::Renderer* renderer) { y += 38; // Direct assignment instead of += 38 // === MAIN DATA SECTION === - // renderer->drawRoundedRect(14, 106, 420, 156, 10.0f, renderer->aWithOpacity(tsl::tableBGColor)); - renderer->drawRoundedRect(14, 106, 420, 136, 12.0f, renderer->aWithOpacity(tsl::tableBGColor)); + renderer->drawRoundedRect(14, 106, 420, 156, 10.0f, renderer->aWithOpacity(tsl::tableBGColor)); + // === FREQUENCY SECTION === // Labels first (better cache locality) renderer->drawString(labels[2], false, positions[2], y, SMALL_TEXT_SIZE, tsl::sectionTextColor); renderer->drawString(labels[3], false, positions[3], y, SMALL_TEXT_SIZE, tsl::sectionTextColor); renderer->drawString(labels[4], false, positions[4], y, SMALL_TEXT_SIZE, tsl::sectionTextColor); + // Current frequencies - use pre-formatted strings + renderer->drawString(displayStrings[2], false, dataPositions[0], y, SMALL_TEXT_SIZE, tsl::infoTextColor); // CPU + renderer->drawString(displayStrings[3], false, dataPositions[1], y, SMALL_TEXT_SIZE, tsl::infoTextColor); // GPU + renderer->drawString(displayStrings[4], false, dataPositions[2], y, SMALL_TEXT_SIZE, tsl::infoTextColor); // MEM + + y += 20; // Direct assignment (129 + 20) + renderer->drawString(displayStrings[5], false, dataPositions[0], y, SMALL_TEXT_SIZE, tsl::infoTextColor); // CPU real renderer->drawString(displayStrings[6], false, dataPositions[1], y, SMALL_TEXT_SIZE, tsl::infoTextColor); // GPU real renderer->drawString(displayStrings[7], false, dataPositions[2], y, SMALL_TEXT_SIZE, tsl::infoTextColor); // MEM real - // Current frequencies - use pre-formatted strings - // renderer->drawString(displayStrings[2], false, dataPositions[0], y, SMALL_TEXT_SIZE, tsl::infoTextColor); // CPU - // renderer->drawString(displayStrings[3], false, dataPositions[1], y, SMALL_TEXT_SIZE, tsl::infoTextColor); // GPU - // renderer->drawString(displayStrings[4], false, dataPositions[2], y, SMALL_TEXT_SIZE, tsl::infoTextColor); // MEM + renderer->drawString(displayStrings[28], false, positions[2], y, SMALL_TEXT_SIZE, tempColors[HorizonOCThermalSensor_CPU]); // CPU Real Temp + renderer->drawString(displayStrings[29], false, positions[3], y, SMALL_TEXT_SIZE, tempColors[HorizonOCThermalSensor_GPU]); // GPU Real Temp + renderer->drawString(displayStrings[30], false, positions[4], y, SMALL_TEXT_SIZE, tempColors[HorizonOCThermalSensor_MEM]); // RAM Real Temp - y += 20; // Direct assignment (129 + 20) - - renderer->drawString(displayStrings[19], false, positions[2], y, SMALL_TEXT_SIZE, tsl::infoTextColor); // CPU Usage - renderer->drawString(displayStrings[17], false, positions[3], y, SMALL_TEXT_SIZE, tsl::infoTextColor); // GPU Usage - if(configList.values[HorizonOCConfigValue_RAMVoltUsageDisplayMode] == RamDisplayMode_VDD2Usage || configList.values[HorizonOCConfigValue_RAMVoltUsageDisplayMode] == RamDisplayMode_VDDQUsage) - renderer->drawString(displayStrings[18], false, positions[4], y, SMALL_TEXT_SIZE, tsl::infoTextColor); // RAM Usage // === REAL FREQUENCIES === - // y += 20; // Direct assignment (149 + 20) + y += 20; // Direct assignment (149 + 20) // === VOLTAGES === renderer->drawString(displayStrings[8], false, dataPositions[0], y, SMALL_TEXT_SIZE, tsl::infoTextColor); // CPU voltage renderer->drawString(displayStrings[9], false, dataPositions[1], y, SMALL_TEXT_SIZE, tsl::infoTextColor); // GPU voltage - renderer->drawStringWithColoredSections(displayStrings[10], false, {""}, configList.values[HorizonOCConfigValue_RAMVoltUsageDisplayMode] == RamDisplayMode_VDD2VDDQ ? dataPositions[5]-16 : dataPositions[2], y, SMALL_TEXT_SIZE, tsl::infoTextColor, tsl::separatorColor); + renderer->drawStringWithColoredSections(displayStrings[10], false, {""}, dataPositions[2], y, SMALL_TEXT_SIZE, tsl::infoTextColor, tsl::separatorColor); + + renderer->drawString(displayStrings[19], false, positions[2], y, SMALL_TEXT_SIZE, tsl::infoTextColor); // CPU Usage + renderer->drawString(displayStrings[17], false, positions[3], y, SMALL_TEXT_SIZE, tsl::infoTextColor); // GPU Usage + renderer->drawString(displayStrings[18], false, positions[4], y, SMALL_TEXT_SIZE, tsl::infoTextColor); // RAM Usage y += 22; // Direct assignment (169 + 22) @@ -242,15 +246,12 @@ void BaseMenuGui::refresh() sprintf(displayStrings[8], "%.1f mV", context->voltages[HocClkVoltage_CPU] / 1000.0); sprintf(displayStrings[9], "%.1f mV", context->voltages[HocClkVoltage_GPU] / 1000.0); - switch(configList.values[HorizonOCConfigValue_RAMVoltUsageDisplayMode]) { - case RamDisplayMode_VDD2VDDQ: - sprintf(displayStrings[10], "%u.%u%u mV", context->voltages[HocClkVoltage_EMCVDD2] / 1000U, (context->voltages[HocClkVoltage_EMCVDD2] % 1000U) / 100U, context->voltages[HocClkVoltage_EMCVDDQ_MarikoOnly] / 1000U); - break; - case RamDisplayMode_VDD2Usage: + switch(configList.values[HorizonOCConfigValue_RAMVoltDisplayMode]) { + case RamDisplayMode_VDD2: sprintf(displayStrings[10], "%u.%u mV", context->voltages[HocClkVoltage_EMCVDD2] / 1000U, (context->voltages[HocClkVoltage_EMCVDD2] % 1000U) / 100U); break; - case RamDisplayMode_VDDQUsage: - sprintf(displayStrings[10], "%u.%u mV", context->voltages[HocClkVoltage_EMCVDDQ_MarikoOnly] / 1000U, (context->voltages[HocClkVoltage_EMCVDDQ_MarikoOnly] % 1000U) / 100U); + case RamDisplayMode_VDDQ: + sprintf(displayStrings[10], "%u.%u mV", context->voltages[HocClkVoltage_EMCVDDQ] / 1000U, (context->voltages[HocClkVoltage_EMCVDDQ] % 1000U) / 100U); break; default: strcpy(displayStrings[10], "N/A"); @@ -309,13 +310,25 @@ void BaseMenuGui::refresh() sprintf(displayStrings[27], "%up", context->resolutionHeight); } } - + + millis = context->temps[HorizonOCThermalSensor_CPU]; + sprintf(displayStrings[28], "%u.%u", millis / 1000U, (millis % 1000U) / 100U); + tempColors[HorizonOCThermalSensor_CPU] = tsl::GradientColor(millis * 0.001f); + + millis = context->temps[HorizonOCThermalSensor_GPU]; + sprintf(displayStrings[29], "%u.%u", millis / 1000U, (millis % 1000U) / 100U); + tempColors[HorizonOCThermalSensor_GPU] = tsl::GradientColor(millis * 0.001f); + + millis = context->temps[HorizonOCThermalSensor_MEM]; + sprintf(displayStrings[30], "%u.%u", millis / 1000U, (millis % 1000U) / 100U); + tempColors[HorizonOCThermalSensor_MEM] = tsl::GradientColor(millis * 0.001f); + } tsl::elm::Element* BaseMenuGui::baseUI() { auto* list = new tsl::elm::List(); - list->addItem(new tsl::elm::CustomDrawer([](tsl::gfx::Renderer*, s32, s32, s32, s32) {}), 10); // add a bit of space + list->addItem(new tsl::elm::CustomDrawer([](tsl::gfx::Renderer*, s32, s32, s32, s32) {}), 35); // add a bit of space this->listElement = list; this->listUI(); diff --git a/Source/hoc-clk/overlay/src/ui/gui/base_menu_gui.h b/Source/hoc-clk/overlay/src/ui/gui/base_menu_gui.h index 50650986..d77aa12e 100644 --- a/Source/hoc-clk/overlay/src/ui/gui/base_menu_gui.h +++ b/Source/hoc-clk/overlay/src/ui/gui/base_menu_gui.h @@ -86,6 +86,6 @@ class BaseMenuGui : public BaseGui virtual void listUI() = 0; private: - char displayStrings[32][32]; // Pre-formatted display strings - tsl::Color tempColors[7]; // Pre-computed temperature colors + char displayStrings[48][32]; // Pre-formatted display strings + tsl::Color tempColors[SysClkThermalSensor_EnumMax]; // Pre-computed temperature colors }; diff --git a/Source/hoc-clk/overlay/src/ui/gui/misc_gui.cpp b/Source/hoc-clk/overlay/src/ui/gui/misc_gui.cpp index e52c6eb1..c4462980 100644 --- a/Source/hoc-clk/overlay/src/ui/gui/misc_gui.cpp +++ b/Source/hoc-clk/overlay/src/ui/gui/misc_gui.cpp @@ -563,12 +563,11 @@ protected: this->listElement->addItem(new tsl::elm::CategoryHeader("General Settings")); ValueThresholds thresholdsDisabled(0, 0); std::vector ramVoltDispModes = { - NamedValue("VDD2 + VDDQ", RamDisplayMode_VDD2VDDQ), - NamedValue("VDD2 + Usage", RamDisplayMode_VDD2Usage), - NamedValue("VDDQ + Usage", RamDisplayMode_VDDQUsage), + NamedValue("VDD2", RamDisplayMode_VDD2), + NamedValue("VDDQ", RamDisplayMode_VDDQ), }; - addConfigButton(HorizonOCConfigValue_RAMVoltUsageDisplayMode, "RAM Voltage Display Mode", ValueRange(0, 12, 1, "", 0), "RAM Voltage Display Mode", &thresholdsDisabled, {}, ramVoltDispModes, false); + addConfigButton(HorizonOCConfigValue_RAMVoltDisplayMode, "RAM Voltage Display Mode", ValueRange(0, 12, 1, "", 0), "RAM Voltage Display Mode", &thresholdsDisabled, {}, ramVoltDispModes, false); addConfigButton( SysClkConfigValue_PollingIntervalMs, diff --git a/Source/hoc-clk/sysmodule/src/board/board_sensor.cpp b/Source/hoc-clk/sysmodule/src/board/board_sensor.cpp index 753ba19e..6131191c 100644 --- a/Source/hoc-clk/sysmodule/src/board/board_sensor.cpp +++ b/Source/hoc-clk/sysmodule/src/board/board_sensor.cpp @@ -77,7 +77,7 @@ namespace board { break; } case HorizonOCThermalSensor_MEM: { - millis = temps.mem; + millis = board::GetSocType() == SysClkSocType_Mariko ? temps.pllx : temps.mem; break; } case HorizonOCThermalSensor_PLLX: { diff --git a/Source/hoc-clk/sysmodule/src/board/board_volt.cpp b/Source/hoc-clk/sysmodule/src/board/board_volt.cpp index 3408b1fb..db711165 100644 --- a/Source/hoc-clk/sysmodule/src/board/board_volt.cpp +++ b/Source/hoc-clk/sysmodule/src/board/board_volt.cpp @@ -260,7 +260,7 @@ namespace board { rgltrGetVoltage(&session, &out); rgltrCloseSession(&session); break; - case HocClkVoltage_EMCVDDQ_MarikoOnly: + case HocClkVoltage_EMCVDDQ: if (GetSocType() == SysClkSocType_Mariko) { rc = rgltrOpenSession(&session, PcvPowerDomainId_Max77812_Dram); ASSERT_RESULT_OK(rc, "rgltrOpenSession")