Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
24eb3b1208 | ||
|
|
9a6282af9c | ||
|
|
5de030c4e9 | ||
|
|
dc63dfdca2 | ||
|
|
803a838b35 | ||
|
|
5b284db5ae | ||
|
|
861ee85289 | ||
|
|
521e3c22dd | ||
|
|
78798a1cce | ||
|
|
44d417fb89 | ||
|
|
8faaaa58d9 | ||
|
|
df0969ba6f | ||
|
|
646f8b8d69 | ||
|
|
456684152a | ||
|
|
a606a878ee |
@@ -114,7 +114,7 @@ Refer to COMPILATION.md
|
|||||||
* 816
|
* 816
|
||||||
* 714
|
* 714
|
||||||
* 612 → sleep mode
|
* 612 → sleep mode
|
||||||
|
|
||||||
### GPU clocks
|
### GPU clocks
|
||||||
* 1536 → absolute max clock on mariko. very dangerous
|
* 1536 → absolute max clock on mariko. very dangerous
|
||||||
* 1459
|
* 1459
|
||||||
@@ -158,7 +158,7 @@ Refer to COMPILATION.md
|
|||||||
* **CTCaer** - L4T, Hekate, proper RAM timings
|
* **CTCaer** - L4T, Hekate, proper RAM timings
|
||||||
* **KazushiMe** - Switch OC Suite
|
* **KazushiMe** - Switch OC Suite
|
||||||
* **Hanai3bi (Meha)** - Switch OC Suite, EOS, sys-clk-eos
|
* **Hanai3bi (Meha)** - Switch OC Suite, EOS, sys-clk-eos
|
||||||
* **NaGaa95** - L4T-OC kernel, Status Monitor fork
|
* **NaGaa95** - L4T-OC kernel, Status Monitor fork
|
||||||
* **B3711 (halop)** - EOS
|
* **B3711 (halop)** - EOS
|
||||||
* **sys-clk team (m4xw, p-sam, natinusala)** - sys-clk
|
* **sys-clk team (m4xw, p-sam, natinusala)** - sys-clk
|
||||||
* **Dominatorul** - Soctherm driver, guides, general help
|
* **Dominatorul** - Soctherm driver, guides, general help
|
||||||
@@ -166,5 +166,7 @@ Refer to COMPILATION.md
|
|||||||
* **MasaGratoR and ZachyCatGames** - General help
|
* **MasaGratoR and ZachyCatGames** - General help
|
||||||
* **MasaGratoR** - Status Monitor & Display Refresh Rate driver
|
* **MasaGratoR** - Status Monitor & Display Refresh Rate driver
|
||||||
* **Dominatorul, Samybigio, Arcdelta, Miki, Happy, Flopsider, Winnerboi77, Blaise, Alvise, TDRR, agjeococh, frost, letum00, and Xenshen** - Testing
|
* **Dominatorul, Samybigio, Arcdelta, Miki, Happy, Flopsider, Winnerboi77, Blaise, Alvise, TDRR, agjeococh, frost, letum00, and Xenshen** - Testing
|
||||||
* **Samybigio2011** - Italian translations
|
* **Samybigio2011, Miki** - Italian translations
|
||||||
|
* **angelblaster** - Korean translations
|
||||||
|
* **q1332348216-glitch** - Chinese translations
|
||||||
* **Nvidia** - [Tegra X1 Technical Reference Manual](https://developer.nvidia.com/embedded/dlc/tegra-x1-technical-reference-manual), soctherm driver, L4T
|
* **Nvidia** - [Tegra X1 Technical Reference Manual](https://developer.nvidia.com/embedded/dlc/tegra-x1-technical-reference-manual), soctherm driver, L4T
|
||||||
|
|||||||
@@ -86,17 +86,17 @@ volatile CustomizeTable C = {
|
|||||||
/* 1120mV is NVIDIA rating */
|
/* 1120mV is NVIDIA rating */
|
||||||
.marikoCpuMaxVolt = 1120,
|
.marikoCpuMaxVolt = 1120,
|
||||||
|
|
||||||
/* Supported values: 1963000, 2091000, 2193000, 2295000, 2397000, 2499000, 2601000, 2703000. */
|
/* Supported values: 1963500, 2091000, 2193000, 2295000, 2397000, 2499000, 2601000, 2703000. */
|
||||||
/* 1963000 is official rating of T214/Mariko, fully safe. */
|
/* 1963500 is official rating of T214/Mariko, fully safe. */
|
||||||
/* 2091000-2295000 is a slight OC which should work on all units, but no guarantees. */
|
/* 2091000-2295000 is a slight OC which should work on all units, but no guarantees. */
|
||||||
/* 2397000 is the max safe OC for most average units with tuned undervolt. */
|
/* 2397000 is the max safe OC for most average units with tuned undervolt. */
|
||||||
/* 2499000 should be used with caution. */
|
/* 2499000 should be used with caution. */
|
||||||
/* 2601000 exceeds pmic limit on most consoles. */
|
/* 2601000 exceeds pmic limit on most consoles. */
|
||||||
/* 2703000 is potentially dangerous and not advised. */
|
/* 2703000 is potentially dangerous and not advised. */
|
||||||
.marikoCpuMaxClock = 1963000,
|
.marikoCpuMaxClock = 1963500,
|
||||||
|
|
||||||
.eristaCpuBoostClock = 1785000, // Default boost clock
|
.eristaCpuBoostClock = 1785000, // Default boost clock
|
||||||
.marikoCpuBoostClock = 1963000, // Default boost clock
|
.marikoCpuBoostClock = 1963500, // Default boost clock
|
||||||
|
|
||||||
.eristaGpuUV = 0,
|
.eristaGpuUV = 0,
|
||||||
.eristaGpuVmin = 810,
|
.eristaGpuVmin = 810,
|
||||||
@@ -220,7 +220,7 @@ volatile CustomizeTable C = {
|
|||||||
{ 1683000, { 1168000, }, { 5100873, -279186, 4747, } },
|
{ 1683000, { 1168000, }, { 5100873, -279186, 4747, } },
|
||||||
{ 1785000, { 1225000, }, { 5100873, -279186, 4747, } },
|
{ 1785000, { 1225000, }, { 5100873, -279186, 4747, } },
|
||||||
{ 1887000, { 1225000, }, { 5100873, -279186, 4747, } },
|
{ 1887000, { 1225000, }, { 5100873, -279186, 4747, } },
|
||||||
{ 1963500, { 1227500, }, { 5100873, -279186, 4747, } },
|
{ 1989000, { 1227500, }, { 5100873, -279186, 4747, } },
|
||||||
{ 2091000, { 1227500, }, { 5100873, -279186, 4747, } },
|
{ 2091000, { 1227500, }, { 5100873, -279186, 4747, } },
|
||||||
{ 2193000, { 1227500, }, { 5100873, -279186, 4747, } },
|
{ 2193000, { 1227500, }, { 5100873, -279186, 4747, } },
|
||||||
{ 2295000, { 1256250, }, { 5100873, -279186, 4747, } },
|
{ 2295000, { 1256250, }, { 5100873, -279186, 4747, } },
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ namespace ams::ldr::hoc::pcv {
|
|||||||
|
|
||||||
static const u32 cpuVoltThermalData[] = { 620, 1120, 20000, 620, 1120, 70000, 950, 1132, 0, 950, 1227, 0 };
|
static const u32 cpuVoltThermalData[] = { 620, 1120, 20000, 620, 1120, 70000, 950, 1132, 0, 950, 1227, 0 };
|
||||||
|
|
||||||
static const u32 allowedCpuMaxFrequencies[] = { 1'963'000, 2'091'000, 2'193'000, 2'295'000, 2'397'000, 2'499'000, 2'601'000, 2'703'000, };
|
static const u32 allowedCpuMaxFrequencies[] = { 1'963'500, 2'091'000, 2'193'000, 2'295'000, 2'397'000, 2'499'000, 2'601'000, 2'703'000, };
|
||||||
|
|
||||||
constexpr cvb_entry_t GpuCvbTableDefault[] = {
|
constexpr cvb_entry_t GpuCvbTableDefault[] = {
|
||||||
// GPUB01_NA_CVB_TABLE
|
// GPUB01_NA_CVB_TABLE
|
||||||
|
|||||||
@@ -1718,8 +1718,8 @@ ALWAYS_INLINE void GetConfigSettings(MicroSettings* settings) {
|
|||||||
settings->useDTCSymbol = true;
|
settings->useDTCSymbol = true;
|
||||||
settings->dtcFormat = "%H:%M:%S";//"%Y-%m-%d %I:%M:%S %p";
|
settings->dtcFormat = "%H:%M:%S";//"%Y-%m-%d %I:%M:%S %p";
|
||||||
settings->invertBatteryDisplay = false;
|
settings->invertBatteryDisplay = false;
|
||||||
settings->handheldFontSize = 15;
|
settings->handheldFontSize = 14;
|
||||||
settings->dockedFontSize = 15;
|
settings->dockedFontSize = 14;
|
||||||
settings->alignTo = 1; // CENTER
|
settings->alignTo = 1; // CENTER
|
||||||
convertStrToRGBA4444("#0009", &(settings->backgroundColor));
|
convertStrToRGBA4444("#0009", &(settings->backgroundColor));
|
||||||
convertStrToRGBA4444("#888F", &(settings->separatorColor));
|
convertStrToRGBA4444("#888F", &(settings->separatorColor));
|
||||||
|
|||||||
@@ -39,6 +39,10 @@ private:
|
|||||||
std::atomic<bool> touchPollRunning{false};
|
std::atomic<bool> touchPollRunning{false};
|
||||||
public:
|
public:
|
||||||
MiniOverlay() {
|
MiniOverlay() {
|
||||||
|
CPU_temp_c[0] = '\0';
|
||||||
|
GPU_temp_c[0] = '\0';
|
||||||
|
RAM_temp_c[0] = '\0';
|
||||||
|
|
||||||
tsl::hlp::requestForeground(false);
|
tsl::hlp::requestForeground(false);
|
||||||
disableJumpTo = true;
|
disableJumpTo = true;
|
||||||
//tsl::initializeUltrahandSettings();
|
//tsl::initializeUltrahandSettings();
|
||||||
@@ -1070,7 +1074,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (settings.realTemps && realCPU_Temp != 0) {
|
if (settings.realTemps && realCPU_Temp != 0 && CPU_temp_c[0] != '\0') {
|
||||||
char temp_buffer[48];
|
char temp_buffer[48];
|
||||||
snprintf(temp_buffer, sizeof(temp_buffer), " %s", CPU_temp_c);
|
snprintf(temp_buffer, sizeof(temp_buffer), " %s", CPU_temp_c);
|
||||||
strncat(MINI_CPU_compressed_c, temp_buffer, sizeof(MINI_CPU_compressed_c) - strlen(MINI_CPU_compressed_c) - 1);
|
strncat(MINI_CPU_compressed_c, temp_buffer, sizeof(MINI_CPU_compressed_c) - strlen(MINI_CPU_compressed_c) - 1);
|
||||||
@@ -1110,11 +1114,11 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (settings.realTemps && realGPU_Temp != 0) {
|
if (settings.realTemps && realGPU_Temp != 0 && GPU_temp_c[0] != '\0') {
|
||||||
char temp_buffer[48];
|
char temp_buffer[48];
|
||||||
snprintf(temp_buffer, sizeof(temp_buffer), " %s", GPU_temp_c);
|
snprintf(temp_buffer, sizeof(temp_buffer), " %s", GPU_temp_c);
|
||||||
strncat(MINI_GPU_Load_c, temp_buffer, sizeof(MINI_GPU_Load_c) - strlen(MINI_GPU_Load_c) - 1);
|
strncat(MINI_GPU_Load_c, temp_buffer, sizeof(MINI_GPU_Load_c) - strlen(MINI_GPU_Load_c) - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only process RAM if needed
|
// Only process RAM if needed
|
||||||
if (isActive("RAM")) {
|
if (isActive("RAM")) {
|
||||||
@@ -1218,11 +1222,12 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (settings.realTemps && realRAM_Temp != 0) {
|
|
||||||
char temp_buffer[48];
|
if (settings.realTemps && realRAM_Temp != 0 && RAM_temp_c[0] != '\0') {
|
||||||
snprintf(temp_buffer, sizeof(temp_buffer), " %s", RAM_temp_c);
|
char temp_buffer[48];
|
||||||
strncat(MINI_RAM_var_compressed_c, temp_buffer, sizeof(MINI_RAM_var_compressed_c) - strlen(MINI_RAM_var_compressed_c) - 1);
|
snprintf(temp_buffer, sizeof(temp_buffer), " %s", RAM_temp_c);
|
||||||
}
|
strncat(MINI_RAM_var_compressed_c, temp_buffer, sizeof(MINI_RAM_var_compressed_c) - strlen(MINI_RAM_var_compressed_c) - 1);
|
||||||
|
}
|
||||||
|
|
||||||
// Only process MEM if needed
|
// Only process MEM if needed
|
||||||
if (isActive("MEM")) {
|
if (isActive("MEM")) {
|
||||||
|
|||||||
@@ -66,6 +66,7 @@ typedef enum {
|
|||||||
|
|
||||||
HocClkConfigValue_RAMVoltDisplayMode,
|
HocClkConfigValue_RAMVoltDisplayMode,
|
||||||
HocClkConfigValue_CpuGovernorMinimumFreq,
|
HocClkConfigValue_CpuGovernorMinimumFreq,
|
||||||
|
HocClkConfigValue_DisplayVoltage,
|
||||||
|
|
||||||
KipConfigValue_custRev,
|
KipConfigValue_custRev,
|
||||||
// KipConfigValue_mtcConf,
|
// KipConfigValue_mtcConf,
|
||||||
@@ -252,6 +253,10 @@ static inline const char* hocclkFormatConfigValue(HocClkConfigValue val, bool pr
|
|||||||
return pretty ? "RAM Voltage / Usage Display Mode" : "ram_volt_usage_display_mode";
|
return pretty ? "RAM Voltage / Usage Display Mode" : "ram_volt_usage_display_mode";
|
||||||
case HocClkConfigValue_CpuGovernorMinimumFreq:
|
case HocClkConfigValue_CpuGovernorMinimumFreq:
|
||||||
return pretty ? "CPU Governor Minimum Frequency" : "cpu_gov_min_freq";
|
return pretty ? "CPU Governor Minimum Frequency" : "cpu_gov_min_freq";
|
||||||
|
|
||||||
|
case HocClkConfigValue_DisplayVoltage:
|
||||||
|
return pretty ? "Display Voltage" : "display_voltage";
|
||||||
|
|
||||||
// KIP config values
|
// KIP config values
|
||||||
case KipConfigValue_custRev:
|
case KipConfigValue_custRev:
|
||||||
return pretty ? "Custom Revision" : "kip_cust_rev";
|
return pretty ? "Custom Revision" : "kip_cust_rev";
|
||||||
@@ -453,6 +458,8 @@ static inline uint64_t hocclkDefaultConfigValue(HocClkConfigValue val)
|
|||||||
return 612000000ULL; // 612MHz
|
return 612000000ULL; // 612MHz
|
||||||
case HocClkConfigValue_MaxDisplayClockH:
|
case HocClkConfigValue_MaxDisplayClockH:
|
||||||
return 60ULL;
|
return 60ULL;
|
||||||
|
case HocClkConfigValue_DisplayVoltage:
|
||||||
|
return 1200ULL; // Auto
|
||||||
default:
|
default:
|
||||||
return 0ULL;
|
return 0ULL;
|
||||||
}
|
}
|
||||||
@@ -588,6 +595,9 @@ static inline uint64_t hocclkValidConfigValue(HocClkConfigValue val, uint64_t in
|
|||||||
return true;
|
return true;
|
||||||
case HocClkConfigValue_BatteryChargeCurrent:
|
case HocClkConfigValue_BatteryChargeCurrent:
|
||||||
return ((input >= 1024) && (input <= 3072)) || !input;
|
return ((input >= 1024) && (input <= 3072)) || !input;
|
||||||
|
case HocClkConfigValue_DisplayVoltage:
|
||||||
|
return ((input >= 900) && (input <= 1325));
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ const u8 MAX17050_CURRENT_REG = 0x0A;
|
|||||||
// Buck Converter
|
// Buck Converter
|
||||||
typedef enum I2c_BuckConverter_Reg {
|
typedef enum I2c_BuckConverter_Reg {
|
||||||
I2c_Max77620_SD1VOLT_REG = 0x17, // Used for Erista DDR VDDQ+VDD2 / Mariko VDD2
|
I2c_Max77620_SD1VOLT_REG = 0x17, // Used for Erista DDR VDDQ+VDD2 / Mariko VDD2
|
||||||
|
I2c_Max77620_LDO0VOLT_REG = 0x23, // Used for Erista DDR VDDQ+VDD2 / Mariko VDD2
|
||||||
I2c_Max77621_VOLT_REG = 0x00,
|
I2c_Max77621_VOLT_REG = 0x00,
|
||||||
I2c_Max77812_CPUVOLT_REG = 0x26,
|
I2c_Max77812_CPUVOLT_REG = 0x26,
|
||||||
I2c_Max77812_GPUVOLT_REG = 0x23,
|
I2c_Max77812_GPUVOLT_REG = 0x23,
|
||||||
@@ -40,7 +41,8 @@ typedef struct I2c_BuckConverter_Domain {
|
|||||||
|
|
||||||
const I2c_BuckConverter_Domain I2c_Erista_CPU = { I2cDevice_Max77621Cpu, I2c_Max77621_VOLT_REG, 0x7F, 6250, 606250, 1400000, };
|
const I2c_BuckConverter_Domain I2c_Erista_CPU = { I2cDevice_Max77621Cpu, I2c_Max77621_VOLT_REG, 0x7F, 6250, 606250, 1400000, };
|
||||||
const I2c_BuckConverter_Domain I2c_Erista_GPU = { I2cDevice_Max77621Gpu, I2c_Max77621_VOLT_REG, 0x7F, 6250, 606250, 1400000, };
|
const I2c_BuckConverter_Domain I2c_Erista_GPU = { I2cDevice_Max77621Gpu, I2c_Max77621_VOLT_REG, 0x7F, 6250, 606250, 1400000, };
|
||||||
const I2c_BuckConverter_Domain I2c_Erista_DRAM = { I2cDevice_Max77620Pmic, I2c_Max77620_SD1VOLT_REG, 0x7F, 12500, 600000, 1250000, };
|
const I2c_BuckConverter_Domain I2c_Erista_DRAM = { I2cDevice_Max77620Pmic, I2c_Max77620_SD1VOLT_REG, 0x3F, 12500, 600000, 1250000, };
|
||||||
|
const I2c_BuckConverter_Domain I2c_Display = { I2cDevice_Max77620Pmic, I2c_Max77620_LDO0VOLT_REG, 0x7F, 25000, 800000, 1325000, };
|
||||||
const I2c_BuckConverter_Domain I2c_Mariko_CPU = { I2cDevice_Max77812_2, I2c_Max77812_CPUVOLT_REG, 0xFF, 5000, 250000, 1525000, 0x78 };
|
const I2c_BuckConverter_Domain I2c_Mariko_CPU = { I2cDevice_Max77812_2, I2c_Max77812_CPUVOLT_REG, 0xFF, 5000, 250000, 1525000, 0x78 };
|
||||||
const I2c_BuckConverter_Domain I2c_Mariko_GPU = { I2cDevice_Max77812_2, I2c_Max77812_GPUVOLT_REG, 0xFF, 5000, 250000, 1525000, 0x78 };
|
const I2c_BuckConverter_Domain I2c_Mariko_GPU = { I2cDevice_Max77812_2, I2c_Max77812_GPUVOLT_REG, 0xFF, 5000, 250000, 1525000, 0x78 };
|
||||||
const I2c_BuckConverter_Domain I2c_Mariko_DRAM_VDDQ = { I2cDevice_Max77812_2, I2c_Max77812_MEMVOLT_REG, 0xFF, 5000, 250000, 700000, 0x78 };
|
const I2c_BuckConverter_Domain I2c_Mariko_DRAM_VDDQ = { I2cDevice_Max77812_2, I2c_Max77812_MEMVOLT_REG, 0xFF, 5000, 250000, 700000, 0x78 };
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ include ${TOPDIR}/lib/libultrahand/ultrahand.mk
|
|||||||
# version control constants
|
# version control constants
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
#TARGET_VERSION := $(shell git describe --dirty --always --tags)
|
#TARGET_VERSION := $(shell git describe --dirty --always --tags)
|
||||||
APP_VERSION := 1.2.0
|
APP_VERSION := 1.2.1
|
||||||
TARGET_VERSION := $(APP_VERSION)
|
TARGET_VERSION := $(APP_VERSION)
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -2,140 +2,140 @@
|
|||||||
"Information": "Informazioni",
|
"Information": "Informazioni",
|
||||||
"IDDQ:": "IDDQ:",
|
"IDDQ:": "IDDQ:",
|
||||||
"Module: ": "Modulo:",
|
"Module: ": "Modulo:",
|
||||||
"sys-dock status:": "stato del dock di sistema:",
|
"sys-dock status:": "stato di sys-dock",
|
||||||
"SaltyNX status:": "Stato di SaltyNX:",
|
"SaltyNX status:": "Stato di SaltyNX:",
|
||||||
"RR Display status:": "Stato di visualizzazione RR:",
|
"RR Display status:": "Stato del RR:",
|
||||||
"Wafer Position:": "Posizione del wafer:",
|
"Wafer Position:": "Posizione nel Wafer:",
|
||||||
"Credits": "Crediti",
|
"Credits": "Crediti",
|
||||||
"Developers": "Sviluppatori",
|
"Developers": "Sviluppatori",
|
||||||
"Contributors": "Collaboratori",
|
"Contributors": "Collaboratori",
|
||||||
"Testers": "Tester",
|
"Testers": "Tester",
|
||||||
"Special Thanks": "Un ringraziamento speciale",
|
"Special Thanks": "Un Ringraziamento Speciale",
|
||||||
"Unknown": "Sconosciuto",
|
"Unknown": "Sconosciuto",
|
||||||
"Installed": "Installato",
|
"Installed": "Installato",
|
||||||
"Not Installed": "Non installato",
|
"Not Installed": "Non installato",
|
||||||
"X: %u Y: %u": "X: %u Y: %u",
|
"X: %u Y: %u": "X: %u Y: %u",
|
||||||
"THE BEER-WARE LICENSE": "LA LICENZA PER GLI ARTICOLI DI BIRRA",
|
"THE BEER-WARE LICENSE": "THE BEER-WARE LICENSE",
|
||||||
"Default": "Predefinito",
|
"Default": "Predefinito",
|
||||||
"Do Not Override": "Non sovrascrivere",
|
"Do Not Override": "Non Sovrascrivere",
|
||||||
"Disabled": "Disabilitato",
|
"Disabled": "Disabilitato",
|
||||||
"Enabled": "Abilitato",
|
"Enabled": "Abilitato",
|
||||||
" \\ue0e3 Reset": "\\ue0e3 Ripristina",
|
" \\ue0e3 Reset": "\\ue0e3 Ripristina",
|
||||||
"Display": "Visualizzazione",
|
"Display": "Schermo",
|
||||||
"Application changed\\n\\n": "Applicazione modificata\\n\\n",
|
"Application changed\\n\\n": "Applicazione modificata\\n\\n",
|
||||||
"The running application changed\\n\\n": "L'applicazione in esecuzione è cambiata\\n\\n",
|
"The running application changed\\n\\n": "L'applicazione in esecuzione è cambiata\\n\\n",
|
||||||
"while editing was going on.": "mentre era in corso la modifica.",
|
"while editing was going on.": "mentre era in corso la modifica.",
|
||||||
"Board": "Consiglio",
|
"Board": "Scheda",
|
||||||
"%u.%u%u mV": "%u.%u%u mV",
|
"%u.%u%u mV": "%u.%u%u mV",
|
||||||
"Could not connect to hoc-clk sysmodule.\\n\\n": "Impossibile connettersi al modulo di sistema hoc-clk.\\n\\n",
|
"Could not connect to hoc-clk sysmodule.\\n\\n": "Impossibile connettersi al sysmodule hoc-clk.\\n\\n",
|
||||||
"Please make sure everything is\\n\\n": "Assicurati che tutto sia\\n\\n",
|
"Please make sure everything is\\n\\n": "Assicurati che tutto sia\\n\\n",
|
||||||
"correctly installed and enabled.": "correttamente installato e abilitato.",
|
"correctly installed and enabled.": "correttamente installato e abilitato.",
|
||||||
"Fatal error": "Errore fatale",
|
"Fatal error": "Errore fatale",
|
||||||
"Temporary Overrides ": "Sostituzioni temporanee",
|
"Temporary Overrides ": "Sostituzioni Temporanee",
|
||||||
"Sleep Mode": "Modalità di sospensione",
|
"Sleep Mode": "Modalità di Sospensione",
|
||||||
"Stock": "Magazzino",
|
"Stock": "Originale",
|
||||||
"Dev OC": "OC di sviluppo",
|
"Dev OC": "OC dev",
|
||||||
"Boost Mode": "Modalità potenziamento",
|
"Boost Mode": "Modalità Boost",
|
||||||
"Safe Max": "Sicuro massimo",
|
"Safe Max": "Massimo Sicuro",
|
||||||
"Unsafe Max": "Non sicuro Max",
|
"Unsafe Max": "Massimo Non Sicuro",
|
||||||
"Absolute Max": "Massimo assoluto",
|
"Absolute Max": "Massimo Assoluto",
|
||||||
"Handheld Safe Max": "Cassaforte portatile max",
|
"Handheld Safe Max": "Massimo Sicuro Modalità Portatile",
|
||||||
"Enable": "Abilita",
|
"Enable": "Abilita",
|
||||||
"Edit App Profile": "Modifica profilo dell'app",
|
"Edit App Profile": "Modifica Profilo Dell'App",
|
||||||
"Edit Global Profile": "Modifica profilo globale",
|
"Edit Global Profile": "Modifica Profilo Globale",
|
||||||
"Temporary Overrides": "Sostituzioni temporanee",
|
"Temporary Overrides": "Sostituzioni Temporanee",
|
||||||
"Settings": "Impostazioni",
|
"Settings": "Impostazioni",
|
||||||
"About": "Circa",
|
"About": "A Riguardo Di",
|
||||||
"Compiling with minimal features": "Compilazione con funzionalità minime",
|
"Compiling with minimal features": "Compilazione con funzionalità minime",
|
||||||
"General Settings": "Impostazioni generali",
|
"General Settings": "Impostazioni Generali",
|
||||||
"Governor Settings": "Impostazioni del governatore",
|
"Governor Settings": "Impostazioni Del Governor",
|
||||||
"Safety Settings": "Impostazioni di sicurezza",
|
"Safety Settings": "Impostazioni Di Sicurezza",
|
||||||
"Save KIP Settings": "Salva le impostazioni KIP",
|
"Save KIP Settings": "Salva le impostazioni del KIP",
|
||||||
"RAM Settings": "Impostazioni della RAM",
|
"RAM Settings": "Impostazioni della RAM",
|
||||||
"CPU Settings": "Impostazioni della CPU",
|
"CPU Settings": "Impostazioni della CPU",
|
||||||
"GPU Settings": "Impostazioni della GPU",
|
"GPU Settings": "Impostazioni della GPU",
|
||||||
"Display Settings": "Impostazioni di visualizzazione",
|
"Display Settings": "Impostazioni dello Schermo",
|
||||||
"Experimental": "Sperimentale",
|
"Experimental": "Sperimentale",
|
||||||
"GPU Scheduling Override Method": "Metodo di override della pianificazione GPU",
|
"GPU Scheduling Override Method": "Metodo di override dello scheduling GPU",
|
||||||
"can be dangerous and may cause": "può essere pericoloso e può causare",
|
"can be dangerous and may cause": "può essere pericoloso e può causare",
|
||||||
"damage to your battery or charger!": "danni alla batteria o al caricabatterie!",
|
"damage to your battery or charger!": "danni alla batteria o al caricabatterie!",
|
||||||
"Charge Current Override": "Override della corrente di carica",
|
"Charge Current Override": "Override della Corrente di Carica",
|
||||||
"RAM Voltage Display Mode": "Modalità di visualizzazione della tensione RAM",
|
"RAM Voltage Display Mode": "Modalità di Visualizzazione della Tensione RAM",
|
||||||
"Polling Interval": "Intervallo di polling",
|
"Polling Interval": "Intervallo di polling",
|
||||||
"CPU Governor Minimum Frequency": "Frequenza minima del governatore della CPU",
|
"CPU Governor Minimum Frequency": "Frequenza minima del Governor della CPU",
|
||||||
"refresh rates may cause stress": "le frequenze di aggiornamento possono causare stress",
|
"refresh rates may cause stress": "le frequenze di aggiornamento possono causare stress",
|
||||||
"or damage to your display! ": "o danni al display!",
|
"or damage to your display! ": "o danni al display!",
|
||||||
"Proceed at your own risk!": "Procedi a tuo rischio e pericolo!",
|
"Proceed at your own risk!": "Procedi a tuo rischio e pericolo!",
|
||||||
"Max Handheld Display": "Display portatile massimo",
|
"Max Handheld Display": "Display Massimo in Modalità Portatile",
|
||||||
"Display Clock": "Visualizza orologio",
|
"Display Clock": "Frequenza del Display",
|
||||||
"Official Rating": "Valutazione ufficiale",
|
"Official Rating": "Rating Ufficiale",
|
||||||
"TDP Threshold": "Soglia TDP",
|
"TDP Threshold": "Soglia TDP",
|
||||||
"Power": "Potenza",
|
"Power": "Potenza",
|
||||||
"Thermal Throttle Limit": "Limite della valvola termica",
|
"Thermal Throttle Limit": "Limite Termico",
|
||||||
"HP Mode": "Modalità HP",
|
"HP Mode": "Modalità HP",
|
||||||
"Default (Mariko)": "Predefinito (Mariko)",
|
"Default (Mariko)": "Predefinito (Mariko)",
|
||||||
"Default (Erista)": "Predefinito (Erista)",
|
"Default (Erista)": "Predefinito (Erista)",
|
||||||
"Rating": "Valutazione",
|
"Rating": "Valutazione",
|
||||||
"Safe Max (Mariko)": "Safe Max (Mariko)",
|
"Safe Max (Mariko)": "Massimo Sicuro (Mariko)",
|
||||||
"Safe Max (Erista)": "Safe Max (Erista)",
|
"Safe Max (Erista)": "Massimo Sicuro (Erista)",
|
||||||
"RAM VDD2 Voltage": "Tensione RAM VDD2",
|
"RAM VDD2 Voltage": "Tensione RAM VDD2",
|
||||||
"Voltage": "Voltaggio",
|
"Voltage": "Voltaggio",
|
||||||
"RAM VDDQ Voltage": "Voltaggio VDDQ della RAM",
|
"RAM VDDQ Voltage": "Voltaggio VDDQ della RAM",
|
||||||
"RAM Frequency Editor": "Editor della frequenza RAM",
|
"RAM Frequency Editor": "Editor della frequenza RAM",
|
||||||
"JEDEC.": "JEDEC.",
|
"JEDEC.": "JEDEC.",
|
||||||
"High speedo needed!": "È necessaria l'alta velocità!",
|
"High speedo needed!": "Alto Valore Speedo Necessario!",
|
||||||
"3333MHz (Needs extreme Speedo/PLL)": "3333 MHz (richiede Speedo/PLL estremo)",
|
"3333MHz (Needs extreme Speedo/PLL)": "3333 MHz (richiede Speedo/PLL altissimo)",
|
||||||
"3366MHz (Needs extreme Speedo/PLL)": "3366 MHz (richiede Speedo/PLL estremo)",
|
"3366MHz (Needs extreme Speedo/PLL)": "3366 MHz (richiede Speedo/PLL altissimo)",
|
||||||
"3400MHz (Needs extreme Speedo/PLL)": "3400 MHz (richiede Speedo/PLL estremo)",
|
"3400MHz (Needs extreme Speedo/PLL)": "3400 MHz (richiede Speedo/PLL altissimo)",
|
||||||
"3433MHz (Needs ridiculous Speedo/PLL)": "3433 MHz (è necessario un ridicolo Speedo/PLL)",
|
"3433MHz (Needs ridiculous Speedo/PLL)": "3433 MHz (richiede Speedo/PLL estremo)",
|
||||||
"3466MHz (Needs ridiculous Speedo/PLL)": "3466 MHz (è necessario un ridicolo Speedo/PLL)",
|
"3466MHz (Needs ridiculous Speedo/PLL)": "3466 MHz (richiede Speedo/PLL estremo)",
|
||||||
"3500MHz (Needs ridiculous Speedo/PLL)": "3500 MHz (è necessario un ridicolo Speedo/PLL)",
|
"3500MHz (Needs ridiculous Speedo/PLL)": "3500 MHz (richiede Speedo/PLL estremo)",
|
||||||
"Ram Max Clock": "Orologio Ram Max",
|
"Ram Max Clock": "Frequenza Massima Ram",
|
||||||
"RAM Latency Editor": "Editor della latenza RAM",
|
"RAM Latency Editor": "Editor della Latenza RAM",
|
||||||
"RAM Timing Reductions": "Riduzioni della temporizzazione della RAM",
|
"RAM Timing Reductions": "Riduzioni dei Timing della RAM",
|
||||||
"Memory Timings": "Tempi di memoria",
|
"Memory Timings": "Timing di Memoria",
|
||||||
"Advanced": "Avanzato",
|
"Advanced": "Avanzato",
|
||||||
"t6 tRTW Fine Tune": "t6 tRTW Sintonia fine",
|
"t6 tRTW Fine Tune": "Regolazione Fine t6 tRTW",
|
||||||
"tRTW Fine Tune": "tRTW Sintonia fine",
|
"tRTW Fine Tune": "Regolazione Fine tRTW",
|
||||||
"t7 tWTR Fine Tune": "t7 tWTR Sintonia fine",
|
"t7 tWTR Fine Tune": "Regolazione Fine t7 tWTR",
|
||||||
"tWTR Fine Tune": "tWTR Sintonia fine",
|
"tWTR Fine Tune": "Regolazione Fine tWTR",
|
||||||
"Memory Latencies": "Latenza della memoria",
|
"Memory Latencies": "Latenza della Memoria",
|
||||||
"Read Latency": "Leggi latenza",
|
"Read Latency": "Latenza di Lettura",
|
||||||
"Write Latency": "Scrivi latenza",
|
"Write Latency": "Latenza di Scrittura",
|
||||||
"CPU Boost Clock": "Orologio di potenziamento della CPU",
|
"CPU Boost Clock": "Frequenza CPU in Boost",
|
||||||
"CPU UV": "UV della CPU",
|
"CPU UV": "Undervolt CPU",
|
||||||
"CPU Unlock": "Sblocco della CPU",
|
"CPU Unlock": "Sblocco della CPU",
|
||||||
"CPU VMIN": "CPUVMIN",
|
"CPU VMIN": "CPU VMIN",
|
||||||
"CPU Max Voltage": "Voltaggio massimo della CPU",
|
"CPU Max Voltage": "Voltaggio massimo della CPU",
|
||||||
"CPU Max Clock": "Orologio massimo della CPU",
|
"CPU Max Clock": "Frequenza massima della CPU",
|
||||||
"Extreme UV Table": "Tavolo UV estremo",
|
"Extreme UV Table": "Tabella UV estremo",
|
||||||
"CPU UV Table": "Tabella UV della CPU",
|
"CPU UV Table": "Tabella UV della CPU",
|
||||||
"CPU Low UV": "CPU con raggi UV bassi",
|
"CPU Low UV": "CPU UV Bassa Frequenza",
|
||||||
"CPU High UV": "UV elevato della CPU",
|
"CPU High UV": "CPU UV Alta Frequenza",
|
||||||
"CPU Low VMIN": "VMIN CPU basso",
|
"CPU Low VMIN": "CPU VMIN Bassa Frequenza",
|
||||||
"CPU High VMIN": "CPU alta VMIN",
|
"CPU High VMIN": "CPU VMIN Alta Frequenza",
|
||||||
"No Undervolt": "Nessuna sottotensione",
|
"No Undervolt": "Nessun Undervolt",
|
||||||
"SLT Table": "Tabella SLT",
|
"SLT Table": "Tabella SLT",
|
||||||
"HiOPT Table": "Tabella HiOPT",
|
"HiOPT Table": "Tabella HiOPT",
|
||||||
"GPU Undervolt Table": "Tabella di sottotensione GPU",
|
"GPU Undervolt Table": "Tabella di Undervolt GPU",
|
||||||
"GPU Minimum Voltage": "Voltaggio minimo della GPU",
|
"GPU Minimum Voltage": "Voltaggio Minimo della GPU",
|
||||||
"Calculate GPU Vmin": "Calcola GPU Vmin",
|
"Calculate GPU Vmin": "Calcola GPU Vmin",
|
||||||
"GPU VMIN": "GPUVMIN",
|
"GPU VMIN": "GPU VMIN",
|
||||||
"GPU Maximum Voltage": "Voltaggio massimo della GPU",
|
"GPU Maximum Voltage": "Voltaggio massimo della GPU",
|
||||||
"GPU Voltage Offset": "Offset di tensione della GPU",
|
"GPU Voltage Offset": "Offset di Voltaggio della GPU",
|
||||||
"Do not override": "Non sovrascrivere",
|
"Do not override": "Non sovrascrivere",
|
||||||
"Enabled (Default)": "Abilitato (impostazione predefinita)",
|
"Enabled (Default)": "Abilitato (impostazione predefinita)",
|
||||||
"96.6% limit": "Limite del 96,6%.",
|
"96.6% limit": "Limite del 96,6%.",
|
||||||
"99.7% limit": "Limite del 99,7%.",
|
"99.7% limit": "Limite del 99,7%.",
|
||||||
"GPU Scheduling Override": "Override della pianificazione GPU",
|
"GPU Scheduling Override": "Override dello Scheduling GPU",
|
||||||
"Official Service": "Servizio ufficiale",
|
"Official Service": "Servizio ufficiale",
|
||||||
"GPU DVFS Mode": "Modalità DVFS GPU",
|
"GPU DVFS Mode": "Modalità DVFS GPU",
|
||||||
"GPU DVFS Offset": "Offset DVFS della GPU",
|
"GPU DVFS Offset": "Offset DVFS della GPU",
|
||||||
"GPU Voltage Table": "Tabella delle tensioni della GPU",
|
"GPU Voltage Table": "Tabella delle Tensioni della GPU",
|
||||||
"GPU Custom Table (mV)": "Tabella personalizzata GPU (mV)",
|
"GPU Custom Table (mV)": "Tabella GPU Personalizzata (mV)",
|
||||||
"1075MHz without UV, 1152MHz on SLT": "1075 MHz senza UV, 1152 MHz su SLT",
|
"1075MHz without UV, 1152MHz on SLT": "1075 MHz senza UV, 1152 MHz su SLT",
|
||||||
"or 1228MHz on HiOPT can cause ": "o 1228 MHz su HiOPT possono causare",
|
"or 1228MHz on HiOPT can cause ": "o 1228 MHz su HiOPT possono causare",
|
||||||
"permanent damage to your Switch!": "danni permanenti al tuo Switch!",
|
"permanent damage to your Switch!": "danni permanenti alla tua Switch!",
|
||||||
"921MHz without UV and 960MHz on": "921 MHz senza UV e 960 MHz attivi",
|
"921MHz without UV and 960MHz on": "921 MHz senza UV e 960 MHz su",
|
||||||
"SLT or HiOPT can cause ": "SLT o HiOPT possono causare"
|
"SLT or HiOPT can cause ": "SLT o HiOPT possono causare"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ tsl::elm::ListItem* RETROStatusItem = NULL;
|
|||||||
tsl::elm::ListItem* waferCordsItem = NULL;
|
tsl::elm::ListItem* waferCordsItem = NULL;
|
||||||
tsl::elm::ListItem* ramVoltItem = NULL;
|
tsl::elm::ListItem* ramVoltItem = NULL;
|
||||||
tsl::elm::ListItem* eristaPLLXItem = NULL;
|
tsl::elm::ListItem* eristaPLLXItem = NULL;
|
||||||
|
tsl::elm::ListItem* dispVoltItem = NULL;
|
||||||
|
|
||||||
ImageElement* CatImage = NULL;
|
ImageElement* CatImage = NULL;
|
||||||
HideableCategoryHeader* CatHeader = NULL;
|
HideableCategoryHeader* CatHeader = NULL;
|
||||||
@@ -56,6 +57,10 @@ void AboutGui::listUI()
|
|||||||
new tsl::elm::ListItem("RAM Voltage:");
|
new tsl::elm::ListItem("RAM Voltage:");
|
||||||
this->listElement->addItem(ramVoltItem);
|
this->listElement->addItem(ramVoltItem);
|
||||||
|
|
||||||
|
dispVoltItem =
|
||||||
|
new tsl::elm::ListItem("Display Voltage:");
|
||||||
|
this->listElement->addItem(dispVoltItem);
|
||||||
|
|
||||||
eristaPLLXItem =
|
eristaPLLXItem =
|
||||||
new tsl::elm::ListItem("PLLX Temp:");
|
new tsl::elm::ListItem("PLLX Temp:");
|
||||||
if(IsErista()) {
|
if(IsErista()) {
|
||||||
@@ -327,5 +332,8 @@ void AboutGui::refresh()
|
|||||||
|
|
||||||
sprintf(strings[4], "%u.%u / %u mV", context->voltages[HocClkVoltage_EMCVDD2] / 1000U, (context->voltages[HocClkVoltage_EMCVDD2] % 1000U) / 100U, context->voltages[HocClkVoltage_EMCVDDQ] / 1000);
|
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]);
|
ramVoltItem->setValue(strings[4]);
|
||||||
|
|
||||||
|
sprintf(strings[5], "%u.%u mV", context->voltages[HocClkVoltage_Display] / 1000U, (context->voltages[HocClkVoltage_Display] % 1000U) / 100U);
|
||||||
|
dispVoltItem->setValue(strings[5]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ void BaseMenuGui::preDraw(tsl::gfx::Renderer* renderer) {
|
|||||||
|
|
||||||
// === VOLTAGES ===
|
// === VOLTAGES ===
|
||||||
renderer->drawString(displayStrings[8], false, dataPositions[0], y, SMALL_TEXT_SIZE, tsl::infoTextColor); // CPU voltage
|
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->drawString(displayStrings[9], false, dataPositions[1] + 9, y, SMALL_TEXT_SIZE, tsl::infoTextColor); // GPU voltage
|
||||||
|
|
||||||
renderer->drawStringWithColoredSections(displayStrings[10], false, {""}, 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);
|
||||||
|
|
||||||
@@ -134,17 +134,17 @@ void BaseMenuGui::preDraw(tsl::gfx::Renderer* renderer) {
|
|||||||
// === TEMPERATURE SECTION ===
|
// === TEMPERATURE SECTION ===
|
||||||
// Labels
|
// Labels
|
||||||
renderer->drawString(labels[5], false, positions[5], y, SMALL_TEXT_SIZE, tsl::sectionTextColor);
|
renderer->drawString(labels[5], false, positions[5], y, SMALL_TEXT_SIZE, tsl::sectionTextColor);
|
||||||
renderer->drawString(labels[6], false, positions[6]-1, y, SMALL_TEXT_SIZE, tsl::sectionTextColor);
|
renderer->drawString(labels[6], false, positions[6], y, SMALL_TEXT_SIZE, tsl::sectionTextColor);
|
||||||
renderer->drawString(labels[7], false, positions[7], y, SMALL_TEXT_SIZE, tsl::sectionTextColor);
|
renderer->drawString(labels[7], false, positions[7], y, SMALL_TEXT_SIZE, tsl::sectionTextColor);
|
||||||
|
|
||||||
// Temperatures with color - use pre-computed colors
|
// Temperatures with color - use pre-computed colors
|
||||||
renderer->drawString(displayStrings[11], false, dataPositions[0], y, SMALL_TEXT_SIZE, tempColors[HocClkThermalSensor_SOC]); // SOC
|
renderer->drawString(displayStrings[11], false, dataPositions[0] - 1, y, SMALL_TEXT_SIZE, tempColors[HocClkThermalSensor_SOC]); // SOC
|
||||||
renderer->drawString(displayStrings[12], false, dataPositions[1], y, SMALL_TEXT_SIZE, tempColors[HocClkThermalSensor_PCB]); // PCB
|
renderer->drawString(displayStrings[12], false, dataPositions[1] + 5, y, SMALL_TEXT_SIZE, tempColors[HocClkThermalSensor_PCB]); // PCB
|
||||||
renderer->drawString(displayStrings[13], false, dataPositions[2], y, SMALL_TEXT_SIZE, tempColors[HocClkThermalSensor_Skin]); // Skin
|
renderer->drawString(displayStrings[13], false, dataPositions[2] + 6, y, SMALL_TEXT_SIZE, tempColors[HocClkThermalSensor_Skin]); // Skin
|
||||||
|
|
||||||
y += 20; // Direct assignment (191 + 20)
|
y += 20; // Direct assignment (191 + 20)
|
||||||
|
|
||||||
renderer->drawString(displayStrings[14], false, dataPositions[0], y, SMALL_TEXT_SIZE, tsl::infoTextColor);
|
renderer->drawString(displayStrings[14], false, dataPositions[0], y, SMALL_TEXT_SIZE, tsl::infoTextColor); // SOC voltage
|
||||||
|
|
||||||
// Power labels and values
|
// Power labels and values
|
||||||
renderer->drawString(labels[8], false, positions[8]-1, y, SMALL_TEXT_SIZE, tsl::sectionTextColor);
|
renderer->drawString(labels[8], false, positions[8]-1, y, SMALL_TEXT_SIZE, tsl::sectionTextColor);
|
||||||
@@ -159,13 +159,13 @@ void BaseMenuGui::preDraw(tsl::gfx::Renderer* renderer) {
|
|||||||
|
|
||||||
renderer->drawString(displayStrings[20], false, dataPositions[0], y, SMALL_TEXT_SIZE, tempColors[HocClkThermalSensor_Battery]); // Battery
|
renderer->drawString(displayStrings[20], false, dataPositions[0], y, SMALL_TEXT_SIZE, tempColors[HocClkThermalSensor_Battery]); // Battery
|
||||||
|
|
||||||
renderer->drawString(labels[13], false, positions[4], y, SMALL_TEXT_SIZE, tsl::sectionTextColor); // disp label
|
|
||||||
|
|
||||||
renderer->drawString(displayStrings[25], false, dataPositions[2], y, SMALL_TEXT_SIZE, tsl::infoTextColor); // disp freq
|
|
||||||
|
|
||||||
renderer->drawString(labels[12], false, positions[3], y, SMALL_TEXT_SIZE, tsl::sectionTextColor); // fan label
|
renderer->drawString(labels[12], false, positions[3], y, SMALL_TEXT_SIZE, tsl::sectionTextColor); // fan label
|
||||||
|
|
||||||
renderer->drawString(displayStrings[24], false, dataPositions[1], y, SMALL_TEXT_SIZE, tsl::infoTextColor); // fan speed
|
renderer->drawString(displayStrings[24], false, dataPositions[1] + 5, y, SMALL_TEXT_SIZE, tsl::infoTextColor); // fan speed
|
||||||
|
|
||||||
|
renderer->drawString(labels[13], false, positions[4] + 4, y, SMALL_TEXT_SIZE, tsl::sectionTextColor); // disp label
|
||||||
|
|
||||||
|
renderer->drawString(displayStrings[25], false, dataPositions[2] + 6, y, SMALL_TEXT_SIZE, tsl::infoTextColor); // disp freq
|
||||||
|
|
||||||
y+=20;
|
y+=20;
|
||||||
|
|
||||||
@@ -174,11 +174,11 @@ void BaseMenuGui::preDraw(tsl::gfx::Renderer* renderer) {
|
|||||||
|
|
||||||
if(this->context->isSaltyNXInstalled) {
|
if(this->context->isSaltyNXInstalled) {
|
||||||
|
|
||||||
renderer->drawString(labels[15], false, positions[3], y, SMALL_TEXT_SIZE, tsl::sectionTextColor); // RES label
|
renderer->drawString(labels[15], false, positions[3] + 7, y, SMALL_TEXT_SIZE, tsl::sectionTextColor); // RES label
|
||||||
renderer->drawString(displayStrings[27], false, dataPositions[1], y, SMALL_TEXT_SIZE, tsl::infoTextColor); // RES
|
renderer->drawString(displayStrings[27], false, dataPositions[1] + 5, y, SMALL_TEXT_SIZE, tsl::infoTextColor); // RES
|
||||||
|
|
||||||
renderer->drawString(labels[14], false, positions[4], y, SMALL_TEXT_SIZE, tsl::sectionTextColor); // FPS label
|
renderer->drawString(labels[14], false, positions[4] + 9, y, SMALL_TEXT_SIZE, tsl::sectionTextColor); // FPS label
|
||||||
renderer->drawString(displayStrings[26], false, dataPositions[2], y, SMALL_TEXT_SIZE, tsl::infoTextColor); // FPS
|
renderer->drawString(displayStrings[26], false, dataPositions[2] + 6, y, SMALL_TEXT_SIZE, tsl::infoTextColor); // FPS
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -201,7 +201,6 @@ void BaseMenuGui::refresh()
|
|||||||
this->context = new HocClkContext;
|
this->context = new HocClkContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
// === HOCCLK CONTEXT UPDATE ===
|
|
||||||
Result rc = hocclkIpcGetCurrentContext(this->context);
|
Result rc = hocclkIpcGetCurrentContext(this->context);
|
||||||
if (R_FAILED(rc)) [[unlikely]] {
|
if (R_FAILED(rc)) [[unlikely]] {
|
||||||
FatalGui::openWithResultCode("hocclkIpcGetCurrentContext", rc);
|
FatalGui::openWithResultCode("hocclkIpcGetCurrentContext", rc);
|
||||||
|
|||||||
@@ -621,6 +621,8 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
void listUI() override {
|
void listUI() override {
|
||||||
|
ValueThresholds thresholdsDisabled(0, 0);
|
||||||
|
|
||||||
BaseMenuGui::refresh(); // get latest context
|
BaseMenuGui::refresh(); // get latest context
|
||||||
if(!this->context)
|
if(!this->context)
|
||||||
return;
|
return;
|
||||||
@@ -649,6 +651,16 @@ protected:
|
|||||||
false
|
false
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
addConfigButton(
|
||||||
|
HocClkConfigValue_DisplayVoltage,
|
||||||
|
"Display Voltage",
|
||||||
|
ValueRange(900, 1200, 25, " mV", 1),
|
||||||
|
"Display Voltage",
|
||||||
|
&thresholdsDisabled,
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
false
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1053,7 +1065,7 @@ protected:
|
|||||||
std::vector<NamedValue> maxClkOptions = {
|
std::vector<NamedValue> maxClkOptions = {
|
||||||
NamedValue("1785 MHz", 1785),
|
NamedValue("1785 MHz", 1785),
|
||||||
NamedValue("1887 MHz", 1887),
|
NamedValue("1887 MHz", 1887),
|
||||||
NamedValue("1963 MHz", 1963),
|
NamedValue("1989 MHz", 1989),
|
||||||
NamedValue("2091 MHz", 2091),
|
NamedValue("2091 MHz", 2091),
|
||||||
NamedValue("2193 MHz", 2193),
|
NamedValue("2193 MHz", 2193),
|
||||||
NamedValue("2295 MHz", 2295),
|
NamedValue("2295 MHz", 2295),
|
||||||
@@ -1111,9 +1123,7 @@ protected:
|
|||||||
);
|
);
|
||||||
|
|
||||||
std::vector<NamedValue> maxClkOptions = {
|
std::vector<NamedValue> maxClkOptions = {
|
||||||
NamedValue("1785 MHz", 1785000),
|
NamedValue("1963 MHz", 1963500),
|
||||||
NamedValue("1887 MHz", 1887000),
|
|
||||||
NamedValue("1963 MHz", 1963000),
|
|
||||||
NamedValue("2091 MHz", 2091000),
|
NamedValue("2091 MHz", 2091000),
|
||||||
NamedValue("2193 MHz", 2193000),
|
NamedValue("2193 MHz", 2193000),
|
||||||
NamedValue("2295 MHz", 2295000),
|
NamedValue("2295 MHz", 2295000),
|
||||||
@@ -1349,7 +1359,7 @@ protected:
|
|||||||
false
|
false
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<NamedValue> gpuOffset = {
|
std::vector<NamedValue> gpuOffset = {
|
||||||
NamedValue("-50 mV", 50),
|
NamedValue("-50 mV", 50),
|
||||||
NamedValue("-45 mV", 45),
|
NamedValue("-45 mV", 45),
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ DEFINES := -DDISABLE_IPC -DTARGET="\"$(TARGET)\"" -DTARGET_VERSION="\"$(TARGET_V
|
|||||||
ARCH := -march=armv8-a+crc+crypto -mtune=cortex-a57 -mtp=soft -fPIE
|
ARCH := -march=armv8-a+crc+crypto -mtune=cortex-a57 -mtp=soft -fPIE
|
||||||
|
|
||||||
CFLAGS := -g -Wall -Os -ffunction-sections \
|
CFLAGS := -g -Wall -Os -ffunction-sections \
|
||||||
$(ARCH) $(DEFINES)
|
$(ARCH) $(DEFINES) -ffast-math
|
||||||
|
|
||||||
CFLAGS += $(INCLUDE) -D__SWITCH__
|
CFLAGS += $(INCLUDE) -D__SWITCH__
|
||||||
|
|
||||||
|
|||||||
@@ -3,13 +3,14 @@
|
|||||||
"title_id": "0x00FF0000636C6BFF",
|
"title_id": "0x00FF0000636C6BFF",
|
||||||
"title_id_range_min": "0x00FF0000636C6BFF",
|
"title_id_range_min": "0x00FF0000636C6BFF",
|
||||||
"title_id_range_max": "0x00FF0000636C6BFF",
|
"title_id_range_max": "0x00FF0000636C6BFF",
|
||||||
"main_thread_stack_size": "0x0000C000",
|
"main_thread_stack_size": "0x0000D000",
|
||||||
"main_thread_priority": 16,
|
"main_thread_priority": 16,
|
||||||
"default_cpu_id": 3,
|
"default_cpu_id": 3,
|
||||||
"process_category": 1,
|
"process_category": 1,
|
||||||
"is_retail": true,
|
"is_retail": true,
|
||||||
"pool_partition": 2,
|
"pool_partition": 2,
|
||||||
"is_64_bit": true,
|
"is_64_bit": true,
|
||||||
|
"optimize_memory_allocation": true,
|
||||||
"address_space_type": 3,
|
"address_space_type": 3,
|
||||||
"filesystem_access": {
|
"filesystem_access": {
|
||||||
"permissions": "0xFFFFFFFFFFFFFFFF"
|
"permissions": "0xFFFFFFFFFFFFFFFF"
|
||||||
|
|||||||
@@ -145,13 +145,13 @@ namespace board {
|
|||||||
|
|
||||||
StartMiscThread(pwmCheck, &iCon);
|
StartMiscThread(pwmCheck, &iCon);
|
||||||
|
|
||||||
u64 clkVirtAddr, dsiVirtAddr, outsize;
|
u64 clkVirtAddr, dsiVirtAddr;
|
||||||
|
|
||||||
rc = svcQueryMemoryMapping(&clkVirtAddr, &outsize, 0x60006000, 0x1000);
|
rc = QueryMemoryMapping(&clkVirtAddr, 0x60006000, 0x1000);
|
||||||
ASSERT_RESULT_OK(rc, "svcQueryMemoryMapping (clk)");
|
ASSERT_RESULT_OK(rc, "QueryMemoryMapping (clk)");
|
||||||
|
|
||||||
rc = svcQueryMemoryMapping(&dsiVirtAddr, &outsize, 0x54300000, 0x40000);
|
rc = QueryMemoryMapping(&dsiVirtAddr, 0x54300000, 0x40000);
|
||||||
ASSERT_RESULT_OK(rc, "svcQueryMemoryMapping (dsi)");
|
ASSERT_RESULT_OK(rc, "QueryMemoryMapping (dsi)");
|
||||||
|
|
||||||
display::DisplayRefreshConfig cfg = {.clkVirtAddr = clkVirtAddr, .dsiVirtAddr = dsiVirtAddr, .isLite = (GetConsoleType() == HocClkConsoleType_Hoag), .isRetroSUPER = integrations::GetRETROSuperStatus()};
|
display::DisplayRefreshConfig cfg = {.clkVirtAddr = clkVirtAddr, .dsiVirtAddr = dsiVirtAddr, .isLite = (GetConsoleType() == HocClkConsoleType_Hoag), .isRetroSUPER = integrations::GetRETROSuperStatus()};
|
||||||
display::Initialize(&cfg);
|
display::Initialize(&cfg);
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
#include "board_sensor.hpp"
|
#include "board_sensor.hpp"
|
||||||
#include "board_volt.hpp"
|
#include "board_volt.hpp"
|
||||||
#include "board_profile.hpp"
|
#include "board_profile.hpp"
|
||||||
|
#include "../mem_map.hpp"
|
||||||
#define HOSSVC_HAS_CLKRST (hosversionAtLeast(8,0,0))
|
#define HOSSVC_HAS_CLKRST (hosversionAtLeast(8,0,0))
|
||||||
#define HOSSVC_HAS_TC (hosversionAtLeast(5,0,0))
|
#define HOSSVC_HAS_TC (hosversionAtLeast(5,0,0))
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
namespace board {
|
namespace board {
|
||||||
|
|
||||||
void SetGpuBracket(u8 speedo, u8 &gpuBracket) {
|
void SetGpuBracket(u16 speedo, u8 &gpuBracket) {
|
||||||
if (speedo <= 1624) {
|
if (speedo <= 1624) {
|
||||||
gpuBracket = 0;
|
gpuBracket = 0;
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -35,6 +35,6 @@ namespace board {
|
|||||||
};
|
};
|
||||||
|
|
||||||
void ReadFuses(FuseData &speedo);
|
void ReadFuses(FuseData &speedo);
|
||||||
void SetGpuBracket(u8 gpuSpeedo, u8 &gpuBracket);
|
void SetGpuBracket(u16 gpuSpeedo, u8 &gpuBracket);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -87,9 +87,8 @@ namespace board {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void CacheDfllData() {
|
void CacheDfllData() {
|
||||||
u64 temp;
|
Result rc = QueryMemoryMapping(&cldvfs, CLDVFS_REGION_BASE, CLDVFS_REGION_SIZE);
|
||||||
Result rc = svcQueryMemoryMapping(&cldvfs, &temp, CLDVFS_REGION_BASE, CLDVFS_REGION_SIZE);
|
ASSERT_RESULT_OK(rc, "QueryMemoryMapping (cldvfs)");
|
||||||
ASSERT_RESULT_OK(rc, "svcQueryMemoryMapping (cldvfs)");
|
|
||||||
|
|
||||||
if (GetSocType() == HocClkSocType_Erista) {
|
if (GetSocType() == HocClkSocType_Erista) {
|
||||||
cachedTune.tune0Low = *reinterpret_cast<u32 *>(cldvfs + CL_DVFS_TUNE0_0);
|
cachedTune.tune0Low = *reinterpret_cast<u32 *>(cldvfs + CL_DVFS_TUNE0_0);
|
||||||
|
|||||||
@@ -217,8 +217,13 @@ namespace clockManager {
|
|||||||
|
|
||||||
void HandleMiscFeatures()
|
void HandleMiscFeatures()
|
||||||
{
|
{
|
||||||
if (config::GetConfigValue(HocClkConfigValue_BatteryChargeCurrent)) {
|
static u32 tick = 0;
|
||||||
I2c_Bq24193_SetFastChargeCurrentLimit(config::GetConfigValue(HocClkConfigValue_BatteryChargeCurrent));
|
if(++tick > 10) {
|
||||||
|
if (config::GetConfigValue(HocClkConfigValue_BatteryChargeCurrent)) {
|
||||||
|
I2c_Bq24193_SetFastChargeCurrentLimit(config::GetConfigValue(HocClkConfigValue_BatteryChargeCurrent));
|
||||||
|
}
|
||||||
|
tick = 0;
|
||||||
|
I2c_BuckConverter_SetMvOut(&I2c_Display, config::GetConfigValue(HocClkConfigValue_DisplayVoltage));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -560,12 +565,12 @@ namespace clockManager {
|
|||||||
|
|
||||||
board::FuseData *fuse = board::GetFuseData();
|
board::FuseData *fuse = board::GetFuseData();
|
||||||
|
|
||||||
gContext.speedos[0] = fuse->cpuSpeedo;
|
gContext.speedos[HocClkSpeedo_CPU] = fuse->cpuSpeedo;
|
||||||
gContext.speedos[1] = fuse->gpuSpeedo;
|
gContext.speedos[HocClkSpeedo_GPU] = fuse->gpuSpeedo;
|
||||||
gContext.speedos[2] = fuse->socSpeedo;
|
gContext.speedos[HocClkSpeedo_SOC] = fuse->socSpeedo;
|
||||||
gContext.iddq[0] = fuse->cpuIDDQ;
|
gContext.iddq[HocClkSpeedo_CPU] = fuse->cpuIDDQ;
|
||||||
gContext.iddq[1] = fuse->gpuIDDQ;
|
gContext.iddq[HocClkSpeedo_GPU] = fuse->gpuIDDQ;
|
||||||
gContext.iddq[2] = fuse->socIDDQ;
|
gContext.iddq[HocClkSpeedo_SOC] = fuse->socIDDQ;
|
||||||
gContext.waferX = fuse->waferX;
|
gContext.waferX = fuse->waferX;
|
||||||
gContext.waferY = fuse->waferY;
|
gContext.waferY = fuse->waferY;
|
||||||
|
|
||||||
@@ -625,9 +630,9 @@ namespace clockManager {
|
|||||||
bool isBoost = apmExtIsBoostMode(mode);
|
bool isBoost = apmExtIsBoostMode(mode);
|
||||||
|
|
||||||
HandleSafetyFeatures();
|
HandleSafetyFeatures();
|
||||||
|
HandleMiscFeatures();
|
||||||
|
|
||||||
if (RefreshContext() || config::Refresh()) {
|
if (RefreshContext() || config::Refresh()) {
|
||||||
HandleMiscFeatures();
|
|
||||||
SetClocks(isBoost);
|
SetClocks(isBoost);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,28 +30,12 @@
|
|||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
|
||||||
namespace errors {
|
namespace errors {
|
||||||
|
|
||||||
namespace {
|
|
||||||
|
|
||||||
const char* FormatMessage(const char* format, va_list args) {
|
|
||||||
size_t len = vsnprintf(NULL, 0, format, args) * sizeof(char);
|
|
||||||
char* buf = (char*)malloc(len + 1);
|
|
||||||
if (buf == NULL) {
|
|
||||||
return format;
|
|
||||||
}
|
|
||||||
vsnprintf(buf, len + 1, format, args);
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void ThrowException(const char* format, ...) {
|
void ThrowException(const char* format, ...) {
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, format);
|
va_start(args, format);
|
||||||
const char* msg = FormatMessage(format, args);
|
|
||||||
va_end(args);
|
|
||||||
fileUtils::LogLine(format, args);
|
fileUtils::LogLine(format, args);
|
||||||
throw std::runtime_error(msg);
|
va_end(args);
|
||||||
|
diagAbortWithResult(MAKERESULT(Module_Libnx, LibnxError_ShouldNotHappen));
|
||||||
|
// throw std::runtime_error(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -84,9 +84,8 @@ namespace fileUtils {
|
|||||||
if (file) {
|
if (file) {
|
||||||
struct timespec now;
|
struct timespec now;
|
||||||
clock_gettime(CLOCK_REALTIME, &now);
|
clock_gettime(CLOCK_REALTIME, &now);
|
||||||
struct tm* nowTm = localtime(&now.tv_sec);
|
|
||||||
|
|
||||||
fprintf(file, "[%04d-%02d-%02d %02d:%02d:%02d.%03ld] ", nowTm->tm_year+1900, nowTm->tm_mon+1, nowTm->tm_mday, nowTm->tm_hour, nowTm->tm_min, nowTm->tm_sec, now.tv_nsec / 1000000UL);
|
fprintf(file, "[%lu] ", armGetSystemTick());
|
||||||
vfprintf(file, format, args);
|
vfprintf(file, format, args);
|
||||||
fprintf(file, "\n");
|
fprintf(file, "\n");
|
||||||
fclose(file);
|
fclose(file);
|
||||||
|
|||||||
@@ -38,7 +38,5 @@ namespace governor {
|
|||||||
void startThreads();
|
void startThreads();
|
||||||
void exitThreads();
|
void exitThreads();
|
||||||
void HandleGovernor(uint32_t targetHz);
|
void HandleGovernor(uint32_t targetHz);
|
||||||
void CpuGovernorThread(void* arg);
|
|
||||||
void GovernorThread(void* arg);
|
void GovernorThread(void* arg);
|
||||||
void VRRThread(void* arg);
|
|
||||||
}
|
}
|
||||||
@@ -37,8 +37,8 @@
|
|||||||
#include "clock_manager.hpp"
|
#include "clock_manager.hpp"
|
||||||
#include "ipc_service.hpp"
|
#include "ipc_service.hpp"
|
||||||
#include "config.hpp"
|
#include "config.hpp"
|
||||||
#define INNER_HEAP_SIZE 0x45000
|
|
||||||
|
|
||||||
|
#define INNER_HEAP_SIZE 0x45000
|
||||||
|
|
||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
@@ -54,6 +54,23 @@ extern "C"
|
|||||||
char nx_inner_heap[INNER_HEAP_SIZE];
|
char nx_inner_heap[INNER_HEAP_SIZE];
|
||||||
NvServiceType __nx_nv_service_type = NvServiceType_Factory;
|
NvServiceType __nx_nv_service_type = NvServiceType_Factory;
|
||||||
|
|
||||||
|
// Ty to MasaGratoR for this!
|
||||||
|
//This is done to save some space as they have no practical use in our case
|
||||||
|
void* __real___cxa_throw(void *thrown_exception, void *pvar, void (*dest)(void *));
|
||||||
|
void* __real__Unwind_Resume();
|
||||||
|
void* __real___gxx_personality_v0();
|
||||||
|
|
||||||
|
void __wrap___cxa_throw(void *thrown_exception, void *pvar, void (*dest)(void *)) {
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
|
||||||
|
void __wrap__Unwind_Resume() {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void __wrap___gxx_personality_v0() {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
void __libnx_initheap(void)
|
void __libnx_initheap(void)
|
||||||
{
|
{
|
||||||
@@ -94,20 +111,19 @@ extern "C"
|
|||||||
rc = i2cInitialize();
|
rc = i2cInitialize();
|
||||||
if (R_FAILED(rc))
|
if (R_FAILED(rc))
|
||||||
diagAbortWithResult(MAKERESULT(Module_Libnx, LibnxError_ShouldNotHappen));
|
diagAbortWithResult(MAKERESULT(Module_Libnx, LibnxError_ShouldNotHappen));
|
||||||
rc = appletInitialize();
|
|
||||||
if (R_FAILED(rc))
|
}
|
||||||
diagAbortWithResult(MAKERESULT(Module_Libnx, LibnxError_ShouldNotHappen));
|
|
||||||
}
|
|
||||||
|
|
||||||
void __appExit(void)
|
void __appExit(void)
|
||||||
{
|
{
|
||||||
// CloseFanControllerThread();
|
// CloseFanControllerThread();
|
||||||
// fanExit();
|
// fanExit();
|
||||||
i2cExit();
|
i2cExit();
|
||||||
fsExit();
|
setsysExit();
|
||||||
fsdevUnmountAll();
|
fsdevUnmountAll();
|
||||||
appletExit();
|
fsExit();
|
||||||
}
|
smExit();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char** argv)
|
int main(int argc, char** argv)
|
||||||
@@ -119,48 +135,36 @@ int main(int argc, char** argv)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
board::Initialize();
|
||||||
|
processManagement::Initialize();
|
||||||
|
|
||||||
|
processManagement::WaitForQLaunch();
|
||||||
|
|
||||||
|
clockManager::Initialize();
|
||||||
|
ipcService::Initialize();
|
||||||
|
|
||||||
|
fileUtils::LogLine("Ready");
|
||||||
|
|
||||||
|
clockManager::SetRunning(true);
|
||||||
|
config::SetEnabled(true);
|
||||||
|
ipcService::SetRunning(true);
|
||||||
|
// TemperaturePoint *table;
|
||||||
|
// ReadConfigFile(&table);
|
||||||
|
// InitFanController(table);
|
||||||
|
// StartFanControllerThread();
|
||||||
|
|
||||||
|
while (clockManager::Running())
|
||||||
{
|
{
|
||||||
board::Initialize();
|
clockManager::Tick();
|
||||||
processManagement::Initialize();
|
clockManager::WaitForNextTick();
|
||||||
|
|
||||||
processManagement::WaitForQLaunch();
|
|
||||||
|
|
||||||
clockManager::Initialize();
|
|
||||||
ipcService::Initialize();
|
|
||||||
|
|
||||||
fileUtils::LogLine("Ready");
|
|
||||||
|
|
||||||
clockManager::SetRunning(true);
|
|
||||||
config::SetEnabled(true);
|
|
||||||
ipcService::SetRunning(true);
|
|
||||||
// TemperaturePoint *table;
|
|
||||||
// ReadConfigFile(&table);
|
|
||||||
// InitFanController(table);
|
|
||||||
// StartFanControllerThread();
|
|
||||||
|
|
||||||
while (clockManager::Running())
|
|
||||||
{
|
|
||||||
clockManager::Tick();
|
|
||||||
clockManager::WaitForNextTick();
|
|
||||||
}
|
|
||||||
|
|
||||||
ipcService::SetRunning(false);
|
|
||||||
ipcService::Exit();
|
|
||||||
clockManager::Exit();
|
|
||||||
processManagement::Exit();
|
|
||||||
board::Exit();
|
|
||||||
}
|
|
||||||
catch (const std::exception &ex)
|
|
||||||
{
|
|
||||||
fileUtils::LogLine("[!] %s", ex.what());
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{
|
|
||||||
std::exception_ptr p = std::current_exception();
|
|
||||||
fileUtils::LogLine("[!?] %s", p ? p.__cxa_exception_type()->name() : "...");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ipcService::SetRunning(false);
|
||||||
|
ipcService::Exit();
|
||||||
|
clockManager::Exit();
|
||||||
|
processManagement::Exit();
|
||||||
|
board::Exit();
|
||||||
|
|
||||||
fileUtils::LogLine("Exit");
|
fileUtils::LogLine("Exit");
|
||||||
svcSleepThread(1000000ULL);
|
svcSleepThread(1000000ULL);
|
||||||
fileUtils::Exit();
|
fileUtils::Exit();
|
||||||
|
|||||||
30
Source/hoc-clk/sysmodule/src/mem_map.cpp
Normal file
30
Source/hoc-clk/sysmodule/src/mem_map.cpp
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Souldbminer and Horizon OC Contributors
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms and conditions of the GNU General Public License,
|
||||||
|
* version 2, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||||
|
* more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <switch.h>
|
||||||
|
|
||||||
|
Result QueryMemoryMapping(u64* virtaddr, u64 physaddr, u64 size) {
|
||||||
|
if(hosversionAtLeast(10,0,0))
|
||||||
|
{
|
||||||
|
u64 out_size;
|
||||||
|
return svcQueryMemoryMapping(virtaddr, &out_size, physaddr, size);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return svcLegacyQueryIoMapping(virtaddr, physaddr, size);
|
||||||
|
}
|
||||||
|
}
|
||||||
21
Source/hoc-clk/sysmodule/src/mem_map.hpp
Normal file
21
Source/hoc-clk/sysmodule/src/mem_map.hpp
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Souldbminer and Horizon OC Contributors
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms and conditions of the GNU General Public License,
|
||||||
|
* version 2, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||||
|
* more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
#include <switch.h>
|
||||||
|
|
||||||
|
Result QueryMemoryMapping(u64* virtaddr, u64 physaddr, u64 size);
|
||||||
@@ -25,6 +25,7 @@
|
|||||||
#include "soctherm.hpp"
|
#include "soctherm.hpp"
|
||||||
#include "board/board.hpp"
|
#include "board/board.hpp"
|
||||||
#include "file_utils.hpp"
|
#include "file_utils.hpp"
|
||||||
|
#include "mem_map.hpp"
|
||||||
|
|
||||||
namespace soctherm {
|
namespace soctherm {
|
||||||
|
|
||||||
@@ -440,8 +441,7 @@ namespace soctherm {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Result MapAddress(u64 &va, const u64 &physAddr, const char *name) {
|
Result MapAddress(u64 &va, const u64 &physAddr, const char *name) {
|
||||||
u64 outSize;
|
Result mapResult = QueryMemoryMapping(&va, physAddr, 0x1000);
|
||||||
Result mapResult = svcQueryMemoryMapping(&va, &outSize, physAddr, 0x1000);
|
|
||||||
if (R_FAILED(mapResult)) {
|
if (R_FAILED(mapResult)) {
|
||||||
fileUtils::LogLine("[Soctherm] Failed to map %s! %u", name, R_DESCRIPTION(mapResult));
|
fileUtils::LogLine("[Soctherm] Failed to map %s! %u", name, R_DESCRIPTION(mapResult));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user