345 lines
14 KiB
C++
345 lines
14 KiB
C++
/*
|
|
* Copyright (C) Switch-OC-Suite
|
|
*
|
|
* Copyright (c) 2023 hanai3Bi
|
|
*
|
|
* 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 "customize.hpp"
|
|
|
|
#define ENABLED 1
|
|
#define DISABLED 0
|
|
|
|
namespace ams::ldr::oc {
|
|
|
|
//volatile EristaMtcTable EristaMtcTablePlaceholder = { .rev = ERISTA_MTC_MAGIC, };
|
|
//volatile MarikoMtcTable MarikoMtcTablePlaceholder = { .rev = MARIKO_MTC_MAGIC, };
|
|
|
|
volatile CustomizeTable C = {
|
|
|
|
.commonCpuBoostClock = 1785000, // Default boost clock
|
|
|
|
.commonEmcMemVolt = 1175000, // LPDDR4X JEDEC Specification
|
|
|
|
.eristaCpuMaxVolt = 1235,
|
|
|
|
.eristaEmcMaxClock = 1600000, // Maximum HB-MGCH ram rating
|
|
|
|
.marikoCpuMaxVolt = 1120,
|
|
|
|
.marikoEmcMaxClock = 1862400, // Hynix NME and Samsung AM-MGCJ Rating (others are 4766MT, 2133MHz)
|
|
|
|
.marikoEmcVddqVolt = 600000,
|
|
|
|
.marikoCpuUV = 0, // No undervolt
|
|
|
|
.marikoGpuUV = 0,
|
|
|
|
.eristaCpuUV = 0,
|
|
|
|
.eristaGpuUV = 0,
|
|
|
|
.commonGpuVoltOffset = 0,
|
|
|
|
.EmcDvbShift = 0,
|
|
|
|
// Defaults - (3-3-2) 0-1-4-3-6
|
|
|
|
// Primary
|
|
.t1_tRCD = 3,
|
|
.t2_tRP = 3,
|
|
.t3_tRAS = 2,
|
|
// Secondary
|
|
.t4_tRRD = 0,
|
|
.t5_tRFC = 1,
|
|
.t6_tRTW = 4,
|
|
.t7_tWTR = 3,
|
|
.t8_tREFI= 6,
|
|
|
|
.mem_burst_latency = 0, // 0 - 1600l, 1 = 1866bl, 2 = 2133bl
|
|
|
|
.marikoCpuVmin = 600,
|
|
|
|
.eristaGpuVmin = 775,
|
|
|
|
.marikoGpuVmin = 610,
|
|
|
|
.marikoGpuVmax = 800,
|
|
// NOTE: These tables should NOT BE USED and are only here as placeholders. Always try and find your own optimal tables.
|
|
// Ensure the voltages actually increase or stay the sameot
|
|
|
|
.marikoGpuVoltArray = {
|
|
610 /* 76 */,
|
|
610 /* 153 */,
|
|
610 /* 230 */,
|
|
610 /* 307 */,
|
|
610 /* 384 */,
|
|
610 /* 460 */,
|
|
610 /* 537 */,
|
|
610 /* 614 */,
|
|
610 /* 691 */,
|
|
610 /* 768 */,
|
|
620 /* 844 */,
|
|
640 /* 921 */,
|
|
675 /* 998 */,
|
|
710 /* 1075 */,
|
|
735 /* 1152 */,
|
|
785 /* 1228 */,
|
|
0 /* 1267 (Disabled by default) */,
|
|
0 /* 1305 (Disabled by default) */,
|
|
0 /* 1344 (Disabled by default) */,
|
|
0 /* 1382 (Disabled by default) */,
|
|
0 /* 1420 (Disabled by default) */,
|
|
0 /* 1459 (Disabled by default) */,
|
|
0 /* 1497 (Disabled by default) */,
|
|
0 /* 1536 (Disabled by default) */,
|
|
|
|
},
|
|
|
|
.eristaGpuVoltArray = {
|
|
750 /* 76 */,
|
|
750 /* 153 */,
|
|
750 /* 230 */,
|
|
750 /* 307 */,
|
|
775 /* 384 */,
|
|
800 /* 460 */,
|
|
825 /* 537 */,
|
|
850 /* 614 */,
|
|
875 /* 691 */,
|
|
900 /* 768 */,
|
|
950 /* 844 */,
|
|
975 /* 921 */,
|
|
0 /* 998 (Disabled by default) */,
|
|
0 /* 1075 (Disabled by default) */,
|
|
},
|
|
|
|
|
|
|
|
/* Advanced Settings:
|
|
* - Erista CPU DVFS Table:
|
|
*/
|
|
.eristaCpuDvfsTable = {
|
|
{ 204000, { 721094 }, {} },
|
|
{ 306000, { 754040 }, {} },
|
|
{ 408000, { 786986 }, {} },
|
|
{ 510000, { 819932 }, {} },
|
|
{ 612000, { 852878 }, {} },
|
|
{ 714000, { 885824 }, {} },
|
|
{ 816000, { 918770 }, {} },
|
|
{ 918000, { 951716 }, {} },
|
|
{ 1020000, { 984662 }, { -2875621, 358099, -8585 } },
|
|
{ 1122000, { 1017608 }, { -52225, 104159, -2816 } },
|
|
{ 1224000, { 1050554 }, { 1076868, 8356, -727 } },
|
|
{ 1326000, { 1083500 }, { 2208191, -84659, 1240 } },
|
|
{ 1428000, { 1116446 }, { 2519460, -105063, 1611 } },
|
|
{ 1581000, { 1130000 }, { 2889664, -122173, 1834 } },
|
|
{ 1683000, { 1168000 }, { 5100873, -279186, 4747 } },
|
|
{ 1785000, { 1227500 }, { 5100873, -279186, 4747 } },
|
|
{ 1887000, { 1375000 }, { 5100873, -279186, 4747 } },
|
|
{ 1963500, { 1375000 }, { 5100873, -279186, 4747 } },
|
|
{ 2091000, { 1375000 }, { 5100873, -279186, 4747 } },
|
|
{ 2193000, { 1375000 }, { 5100873, -279186, 4747 } },
|
|
{ 2295000, { 1375000 }, { 5100873, -279186, 4747 } },
|
|
},
|
|
|
|
/* - Mariko CPU DVFS Table:
|
|
* 2397000 might not work for some SoCs.
|
|
*/
|
|
.marikoCpuDvfsTable = {
|
|
{ 204000, { 721589, -12695, 27 }, {} },
|
|
{ 306000, { 747134, -14195, 27 }, {} },
|
|
{ 408000, { 776324, -15705, 27 }, {} },
|
|
{ 510000, { 809160, -17205, 27 }, {} },
|
|
{ 612000, { 845641, -18715, 27 }, {} },
|
|
{ 714000, { 885768, -20215, 27 }, {} },
|
|
{ 816000, { 929540, -21725, 27 }, {} },
|
|
{ 918000, { 976958, -23225, 27 }, {} },
|
|
{ 1020000, { 1028021, -24725, 27 }, { 1120000 } },
|
|
{ 1122000, { 1082730, -26235, 27 }, { 1120000 } },
|
|
{ 1224000, { 1141084, -27735, 27 }, { 1120000 } },
|
|
{ 1326000, { 1203084, -29245, 27 }, { 1120000 } },
|
|
{ 1428000, { 1268729, -30745, 27 }, { 1120000 } },
|
|
{ 1581000, { 1374032, -33005, 27 }, { 1120000 } },
|
|
{ 1683000, { 1448791, -34505, 27 }, { 1120000 } },
|
|
{ 1785000, { 1527196, -36015, 27 }, { 1120000 } },
|
|
{ 1887000, { 1609246, -37515, 27 }, { 1120000 } },
|
|
{ 1963500, { 1675751, -38635, 27 }, { 1120000 } },
|
|
},
|
|
|
|
.marikoCpuDvfsTableSLT = {
|
|
// { 204000, { 732856, -17335, 113 }, { } },
|
|
// { 306000, { 760024, -18195, 113 }, { } },
|
|
// { 408000, { 789258, -19055, 113 }, { } },
|
|
// { 510000, { 789258, -19915, 113 }, { } },
|
|
{ 612000, { 789258, -19055, 113 }, { } },
|
|
{ 714000, { 820558, -19915, 113 }, { } },
|
|
{ 816000, { 853926, -20775, 113 }, { } },
|
|
{ 918000, { 889361, -21625, 113 }, { } },
|
|
{ 1020000, { 926862, -22485, 113 }, { 1120000 } },
|
|
{ 1122000, { 926862, -22485, 113 }, { 1120000 } },
|
|
{ 1224000, { 926862, -22485, 113 }, { 1120000 } },
|
|
{ 1326000, { 966431, -23345, 113 }, { 1120000 } },
|
|
{ 1428000, { 1008066, -24205, 113 }, { 1120000 } },
|
|
{ 1581000, { 1051768, -25065, 113 }, { 1120000 } },
|
|
{ 1683000, { 1097537, -25925, 113 }, { 1120000 } },
|
|
{ 1785000, { 1145373, -26785, 113 }, { 1120000 } },
|
|
{ 1887000, { 1195276, -27645, 113 }, { 1120000 } },
|
|
{ 1963500, { 1274006, -29795, 113 }, { 1120000 } },
|
|
{ 2091000, { 1349076, -33235, 113 }, { 1375000 } },
|
|
{ 2193000, { 1386213, -33235, 113 }, { 1375000 } },
|
|
{ 2295000, { 1445416, -34095, 113 }, { 1375000 } },
|
|
{ 2397000, { 1490873, -34955, 113 }, { 1375000 } },
|
|
{ 2499000, { 1580725, -35815, 113 }, { 1375000 } },
|
|
{ 2601000, { 1702903, -36675, 113 }, { 1375000 } },
|
|
{ 2703000, { 1748360, -37535, 113 }, { 1375000 } },
|
|
{ 2805000, { 1793817, -38395, 113 }, { 1375000 } },
|
|
{ 2907000, { 1839274, -39255, 113 }, { 1375000 } },
|
|
{ 3009000, { 1884731, -40115, 113 }, { 1375000 } },
|
|
},
|
|
|
|
/* - Erista GPU DVFS Table:
|
|
*/
|
|
.eristaGpuDvfsTable = {
|
|
{ 76800, { }, { 814294, 8144, -940, 808, -21583, 226 } },
|
|
{ 153600, { }, { 856185, 8144, -940, 808, -21583, 226 } },
|
|
{ 230400, { }, { 898077, 8144, -940, 808, -21583, 226 } },
|
|
{ 307200, { }, { 939968, 8144, -940, 808, -21583, 226 } },
|
|
{ 384000, { }, { 981860, 8144, -940, 808, -21583, 226 } },
|
|
{ 460800, { }, { 1023751, 8144, -940, 808, -21583, 226 } },
|
|
{ 537600, { }, { 1065642, 8144, -940, 808, -21583, 226 } },
|
|
{ 614400, { }, { 1107534, 8144, -940, 808, -21583, 226 } },
|
|
{ 691200, { }, { 1149425, 8144, -940, 808, -21583, 226 } },
|
|
{ 768000, { }, { 1191317, 8144, -940, 808, -21583, 226 } },
|
|
{ 844800, { }, { 1233208, 8144, -940, 808, -21583, 226 } },
|
|
{ 921600, { }, { 1275100, 8144, -940, 808, -21583, 226 } },
|
|
// { 998400, { }, { 1316991, 8144, -940, 808, -21583, 226 } },
|
|
// { 1075200, { }, { 1358882, 8144, -940, 808, -21583, 226 } },
|
|
|
|
},
|
|
|
|
.eristaGpuDvfsTableSLT = {
|
|
{ 76800, { }, { 730512, 8144, -940, 808, -21583, 226 } },
|
|
{ 153600, { }, { 772403, 8144, -940, 808, -21583, 226 } },
|
|
{ 230400, { }, { 814294, 8144, -940, 808, -21583, 226 } },
|
|
{ 307200, { }, { 856186, 8144, -940, 808, -21583, 226 } },
|
|
{ 384000, { }, { 898077, 8144, -940, 808, -21583, 226 } },
|
|
{ 460800, { }, { 939969, 8144, -940, 808, -21583, 226 } },
|
|
{ 537600, { }, { 981860, 8144, -940, 808, -21583, 226 } },
|
|
{ 614400, { }, { 1023751, 8144, -940, 808, -21583, 226 } },
|
|
{ 691200, { }, { 1065643, 8144, -940, 808, -21583, 226 } },
|
|
{ 768000, { }, { 1107534, 8144, -940, 808, -21583, 226 } },
|
|
{ 844800, { }, { 1149426, 8144, -940, 808, -21583, 226 } },
|
|
{ 921600, { }, { 1191317, 8144, -940, 808, -21583, 226 } },
|
|
{ 998400, { }, { 1275100, 8144, -940, 808, -21583, 226 } },
|
|
// { 1075200, { }, { 1316991, 8144, -940, 808, -21583, 226 } },
|
|
},
|
|
|
|
.eristaGpuDvfsTableHigh = {
|
|
{ 76800, { }, { 646730, 8144, -940, 808, -21583, 226 } },
|
|
{ 153600, { }, { 688621, 8144, -940, 808, -21583, 226 } },
|
|
{ 230400, { }, { 730512, 8144, -940, 808, -21583, 226 } },
|
|
{ 307200, { }, { 772403, 8144, -940, 808, -21583, 226 } },
|
|
{ 384000, { }, { 814295, 8144, -940, 808, -21583, 226 } },
|
|
{ 460800, { }, { 856186, 8144, -940, 808, -21583, 226 } },
|
|
{ 537600, { }, { 898078, 8144, -940, 808, -21583, 226 } },
|
|
{ 614400, { }, { 939969, 8144, -940, 808, -21583, 226 } },
|
|
{ 691200, { }, { 981860, 8144, -940, 808, -21583, 226 } },
|
|
{ 768000, { }, { 1023752, 8144, -940, 808, -21583, 226 } },
|
|
{ 844800, { }, { 1065643, 8144, -940, 808, -21583, 226 } },
|
|
{ 921600, { }, { 1107535, 8144, -940, 808, -21583, 226 } },
|
|
{ 998400, { }, { 1149426, 8144, -940, 808, -21583, 226 } },
|
|
{ 1075200, { }, { 1275100, 8144, -940, 808, -21583, 226 } },
|
|
},
|
|
|
|
/* - Mariko GPU DVFS Table:
|
|
* 1305600 might not work for some SoCs.
|
|
*/
|
|
.marikoGpuDvfsTable = {
|
|
{ 76800, {}, { 610000, } },
|
|
{ 153600, {}, { 610000, } },
|
|
{ 230400, {}, { 610000, } },
|
|
{ 307200, {}, { 610000, } },
|
|
{ 384000, {}, { 610000, } },
|
|
{ 460800, {}, { 610000, } },
|
|
{ 537600, {}, { 801688, -10900, -163, 298, -10599, 162 } },
|
|
{ 614400, {}, { 824214, -5743, -452, 238, -6325, 81 } },
|
|
{ 691200, {}, { 848830, -3903, -552, 119, -4030, -2 } },
|
|
{ 768000, {}, { 891575, -4409, -584, 0, -2849, 39 } },
|
|
{ 844800, {}, { 940071, -5367, -602, -60, -63, -93 } },
|
|
{ 921600, {}, { 986765, -6637, -614, -179, 1905, -13 } },
|
|
{ 998400, {}, { 1098475, -13529, -497, -179, 3626, 9 } },
|
|
{ 1075200, {}, { 1163644, -12688, -648, 0, 1077, 40 } },
|
|
{ 1152000, {}, { 1204812, -9908, -830, 0, 1469, 110 } },
|
|
{ 1228800, {}, { 1277303, -11675, -859, 0, 3722, 313 } },
|
|
{ 1267200, {}, { 1335531, -12567, -867, 0, 3681, 559 } },
|
|
// Appending table
|
|
//{ 1305600, {}, { 1374130, -13725, -859, 0, 4442, 576 } },
|
|
},
|
|
|
|
.marikoGpuDvfsTableSLT = {
|
|
{ 76800, {}, { 590000, } },
|
|
{ 153600, {}, { 590000, } },
|
|
{ 230400, {}, { 590000, } },
|
|
{ 307200, {}, { 590000, } },
|
|
{ 384000, {}, { 590000, } },
|
|
{ 460800, {}, { 795089, -11096, -163, 298, -10421, 162 } },
|
|
{ 537600, {}, { 795089, -11096, -163, 298, -10421, 162 } },
|
|
{ 614400, {}, { 820606, -6285, -452, 238, -6182, 81 } },
|
|
{ 691200, {}, { 846289, -4565, -552, 119, -3958, -2 } },
|
|
{ 768000, {}, { 888720, -5110, -584, 0, -2849, 39 } },
|
|
{ 844800, {}, { 936634, -6089, -602, -60, -99, -93 } },
|
|
{ 921600, {}, { 982562, -7373, -614, -179, 1797, -13 } },
|
|
{ 998400, {}, { 1090179, -14125, -497, -179, 3518, 9 } },
|
|
{ 1075200, {}, { 1155798, -13465, -648, 0, 1077, 40 } },
|
|
{ 1152000, {}, { 1198568, -10904, -830, 0, 1469, 110 } },
|
|
{ 1228800, {}, { 1269988, -12707, -859, 0, 3722, 313 } },
|
|
{ 1267200, {}, { 1308155, -13694, -867, 0, 3681, 559 } },
|
|
},
|
|
|
|
.marikoGpuDvfsTableHiOPT = {
|
|
{ 76800, { }, { 590000, 0, 0, 0, 0, 0 }, },
|
|
{ 153600, { }, { 590000, 0, 0, 0, 0, 0 }, },
|
|
{ 230400, { }, { 590000, 0, 0, 0, 0, 0 }, },
|
|
{ 307200, { }, { 590000, 0, 0, 0, 0, 0 }, },
|
|
{ 384000, { }, { 590000, 0, 0, 0, 0, 0 }, },
|
|
{ 460800, { }, { 590000, 0, 0, 0, 0, 0 }, },
|
|
{ 537600, { }, { 590000, 0, 0, 0, 0, 0 }, },
|
|
{ 614400, { }, { 590000, 0, 0, 0, 0, 0 }, },
|
|
{ 691200, { }, { 838712, -7304, -552, 119, -3750, -2 }, },
|
|
{ 768000, { }, { 880210, -7955, -584, 0, -2849, 39 }, },
|
|
{ 844800, { }, { 926398, -8892, -602, -60, -384, -93 }, },
|
|
{ 921600, { }, { 970060, -10108, -614, -179, 1508, -13 }, },
|
|
{ 998400, { }, { 1060665, -16075, -497, -179, 3213, 9 }, },
|
|
{ 1075200, { }, { 1117576, -16093, -648, 0, 1077, 40 }, },
|
|
{ 1152000, { }, { 1094475, -12688, -648, 0, 1077, 40 }, },
|
|
{ 1228800, { }, { 1124475, -12688, -648, 0, 1077, 40 }, },
|
|
{ 1267200, { }, { 1145060, -12688, -648, 0, 1077, 40 }, },
|
|
{ 1305600, { }, { 1163644, -12688, -648, 0, 1077, 40 }, },
|
|
{ 1344000, { }, { 1182228, -12688, -648, 0, 1077, 40 }, },
|
|
{ 1382400, { }, { 1200812, -12688, -648, 0, 1077, 40 }, },
|
|
{ 1420800, { }, { 1219396, -12688, -648, 0, 1077, 40 }, },
|
|
{ 1459200, { }, { 1237980, -12688, -648, 0, 1077, 40 }, },
|
|
{ 1497600, { }, { 1256564, -10688, -648, 0, 1077, 40 }, },
|
|
{ 1536000, { }, { 1275148, -12688, -648, 0, 1077, 40 }, },
|
|
},
|
|
|
|
//.eristaMtcTable = const_cast<EristaMtcTable *>(&EristaMtcTablePlaceholder),
|
|
//.marikoMtcTable = const_cast<MarikoMtcTable *>(&MarikoMtcTablePlaceholder),
|
|
|
|
};
|
|
|
|
}
|