diff --git a/Source/Atmosphere/stratosphere/loader/source/oc/customize.cpp b/Source/Atmosphere/stratosphere/loader/source/oc/customize.cpp
index fcab653f..280a4b4b 100644
--- a/Source/Atmosphere/stratosphere/loader/source/oc/customize.cpp
+++ b/Source/Atmosphere/stratosphere/loader/source/oc/customize.cpp
@@ -31,14 +31,14 @@
namespace ams::ldr::oc {
volatile CustomizeTable C = {
-
+/* Disables RAM powerdown */
.hpMode = DISABLED,
-.commonEmcMemVolt = 1175000, // LPDDR4X JEDEC Specification
-.eristaEmcMaxClock = 1600000, // Maximum HB-MGCH ram rating
+.commonEmcMemVolt = 1175000, /* LPDDR4X JEDEC Specification */
+.eristaEmcMaxClock = 1600000, /* Maximum HB-MGCH ram rating */
-.marikoEmcMaxClock = 1866000, // 1866MHz @ 1866tWRL is guaranteed to work on all Mariko units
-.marikoEmcVddqVolt = 600000,
+.marikoEmcMaxClock = 1866000, /* 1866MHz @ 1866tWRL is guaranteed to work on all Mariko units */
+.marikoEmcVddqVolt = 600000, /* Micron: 600mV, other manafacturers: 640mV */
.emcDvbShift = 0,
// Primary
@@ -52,9 +52,7 @@ volatile CustomizeTable C = {
.t7_tWTR = 0,
.t8_tREFI = 0,
-/* Set to 4 read and 2 write for 1866b tWRL. */
-/* For 2133 tWRL: 8 read and 4 write. */
-
+/* You can mix and match different latencies if needed */
/*
* Read:
* 2133RL = 40
@@ -67,8 +65,9 @@ volatile CustomizeTable C = {
* 1600WL = 14
* 1331WL = 12
*/
-.mem_burst_read_latency = 36,
-.mem_burst_write_latency = 16,
+
+.mem_burst_read_latency = RL_1866,
+.mem_burst_write_latency = WL_1866,
.eristaCpuUV = 0,
.eristaCpuVmin = 800,
@@ -78,9 +77,11 @@ volatile CustomizeTable C = {
.marikoCpuUVLow = 0, // No undervolt
.marikoCpuUVHigh = 0, // No undervolt
+
.tableConf = DEFAULT_TABLE,
.marikoCpuLowVmin = 620,
.marikoCpuHighVmin = 750,
+/* 1120mV is NVIDIA rating */
.marikoCpuMaxVolt = 1120,
/* Supported values: 1963000, 2091000, 2193000, 2295000, 2397000, 2499000, 2601000, 2703000. */
@@ -99,19 +100,22 @@ volatile CustomizeTable C = {
.eristaGpuVmin = 810,
.marikoGpuUV = 0,
+
/* For automatic vmin detection, set this to AUTO. */
-.marikoGpuVmin = AUTO,
+/* vmin past 795mV won't work due to HOS limitation */
+/* Vmin is automatically set to 800mV when SoC temperature is below 20C */
+.marikoGpuVmin = AUTO,
.marikoGpuVmax = 800,
.commonGpuVoltOffset = 0,
+/* Speedo is automatically set by hoc-clk on first boot */
.gpuSpeedo = 1450,
-/* This table is used with a gpu uv mode of 2. */
/* Setting DEACTIVATED_GPU_FREQ on any freq will disable it and all freqs greater than it. (the latter is a bug :/) */
/* AUTO: Voltage is optimally chosen; with commonGpuVoltOffset applied. */
-/* AUTO only works up to 1305 GPU on Mariko and 921 GPU on Erista */
+/* AUTO only works up to 1305 GPU on Mariko and 998 GPU on Erista (it is reccomended to manually set your 998MHz voltage though) */
/* You can overwrite auto with any voltage (in mv) of your choice - offset will not be applied. */
.eristaGpuVoltArray = {
@@ -159,8 +163,8 @@ volatile CustomizeTable C = {
AUTO /* 921 */,
AUTO /* 998 */,
AUTO /* 1075 */,
- DEACTIVATED_GPU_FREQ /* 1152 */,
- DEACTIVATED_GPU_FREQ /* 1228 */,
+ AUTO /* 1152 (SLT / HiOPT Only!) */,
+ AUTO /* 1228 (HiOPT Only!) */,
DEACTIVATED_GPU_FREQ /* 1267 (Disabled by default) */,
DEACTIVATED_GPU_FREQ /* 1305 (Disabled by default) */,
DEACTIVATED_GPU_FREQ /* 1344 (Disabled by default) */,
diff --git a/Source/Atmosphere/stratosphere/loader/source/oc/customize.hpp b/Source/Atmosphere/stratosphere/loader/source/oc/customize.hpp
index b8959a22..e8836b4a 100644
--- a/Source/Atmosphere/stratosphere/loader/source/oc/customize.hpp
+++ b/Source/Atmosphere/stratosphere/loader/source/oc/customize.hpp
@@ -20,7 +20,7 @@
#pragma once
-#define CUST_REV 11
+#define CUST_REV 1
#include "oc_common.hpp"
#include "pcv/pcv_common.hpp"
@@ -29,11 +29,6 @@ namespace ams::ldr::oc {
#include "mtc_timing_table.hpp"
-enum MtcConfig: u32 {
- AUTO_ADJ = 0,
- AUTO_ADJ_BL = 1,
-};
-
enum TableConfig: u32 {
DEFAULT_TABLE = 1,
TBREAK_1581 = 2,
@@ -41,6 +36,33 @@ enum TableConfig: u32 {
EXTREME_TABLE = 4,
};
+/*
+ * Read:
+ * 2133RL = 40
+ * 1866RL = 36
+ * 1600RL = 32
+ * 1331RL = 28
+ * Write:
+ * 2133WL = 18
+ * 1866WL = 16
+ * 1600WL = 14
+ * 1331WL = 12
+ */
+
+enum ReadLatency: u32 {
+ RL_2133 = 40,
+ RL_1866 = 36,
+ RL_1600 = 32,
+ RL_1331 = 28,
+};
+
+enum WriteLatency: u32 {
+ WL_2133 = 18,
+ WL_1866 = 16,
+ WL_1600 = 14,
+ WL_1331 = 12,
+};
+
using CustomizeCpuDvfsTable = pcv::cvb_entry_t[pcv::DvfsTableEntryLimit];
using CustomizeGpuDvfsTable = pcv::cvb_entry_t[pcv::DvfsTableEntryLimit];
static_assert(sizeof(CustomizeCpuDvfsTable) == sizeof(CustomizeGpuDvfsTable));
@@ -53,7 +75,7 @@ typedef struct CustomizeTable {
u8 cust[4] = {'C', 'U', 'S', 'T'};
u32 custRev = CUST_REV;
- u32 mtcConf;
+ u32 placeholder;
u32 hpMode;
u32 commonEmcMemVolt;
diff --git a/Source/sys-clk/bitmap.py b/Source/sys-clk/bitmap.py
index 2b0cdf87..bdf81362 100644
--- a/Source/sys-clk/bitmap.py
+++ b/Source/sys-clk/bitmap.py
@@ -12,7 +12,7 @@ def image_to_rgba8888_array(image_path, output_path):
# Write as C header file
with open(output_path, 'w') as f:
- f.write('// This is a generated automatically generated file, do not edit manually.\n')
+ f.write('// This is a automatically generated file, do not edit manually.\n')
f.write(f'// {os.path.basename(image_path)} - {width}x{height}\n')
f.write(f'const unsigned int IMG_WIDTH = {width};\n')
f.write(f'const unsigned int IMG_HEIGHT = {height};\n')
@@ -32,7 +32,7 @@ def image_to_rgba8888_array(image_path, output_path):
def main():
parser = argparse.ArgumentParser(
- description='PNG -> RGB8888 script'
+ description='PNG to RGB8888 script'
)
parser.add_argument('input', help='Input image file (e.g. cat.png)')
parser.add_argument(
diff --git a/Source/sys-clk/common/include/sysclk/config.h b/Source/sys-clk/common/include/sysclk/config.h
index 3ff832a6..5825940b 100644
--- a/Source/sys-clk/common/include/sysclk/config.h
+++ b/Source/sys-clk/common/include/sysclk/config.h
@@ -60,7 +60,7 @@ typedef enum {
HocClkConfigValue_FixCpuVoltBug,
KipConfigValue_custRev,
- KipConfigValue_mtcConf,
+ // KipConfigValue_mtcConf,
KipConfigValue_hpMode,
KipConfigValue_commonEmcMemVolt,
@@ -226,8 +226,8 @@ static inline const char* sysclkFormatConfigValue(SysClkConfigValue val, bool pr
// KIP config values
case KipConfigValue_custRev:
return pretty ? "Custom Revision" : "kip_cust_rev";
- case KipConfigValue_mtcConf:
- return pretty ? "MTC Config" : "kip_mtc_conf";
+ // case KipConfigValue_mtcConf:
+ // return pretty ? "MTC Config" : "kip_mtc_conf";
case KipConfigValue_hpMode:
return pretty ? "HP Mode" : "kip_hp_mode";
@@ -446,7 +446,7 @@ static inline uint64_t sysclkValidConfigValue(SysClkConfigValue val, uint64_t in
return (input & 0x1) == input;
case KipConfigValue_custRev:
- case KipConfigValue_mtcConf:
+ // case KipConfigValue_mtcConf:
case KipConfigValue_hpMode:
case KipConfigValue_commonEmcMemVolt:
case KipConfigValue_eristaEmcMaxClock:
diff --git a/Source/sys-clk/overlay/src/ui/gui/labels.cpp b/Source/sys-clk/overlay/src/ui/gui/labels.cpp
index c7ab6635..c628cbb5 100644
--- a/Source/sys-clk/overlay/src/ui/gui/labels.cpp
+++ b/Source/sys-clk/overlay/src/ui/gui/labels.cpp
@@ -1,3 +1,20 @@
+/*
+ * Copyright (c) Souldbminer, Lightos_ 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 .
+ *
+ */
+
#include