loader: improve cpu and gpu undervolt
Thanks Naga and meha! Co-Authored-By: naga <38852591+nagaa95@users.noreply.github.com> Co-Authored-By: hanabbi <38691008+hanai3Bi@users.noreply.github.com>
This commit is contained in:
@@ -218,37 +218,30 @@ volatile CustomizeTable C = {
|
||||
{ 1785000, { 1527196, -36015, 27 }, { 1120000 } },
|
||||
{ 1887000, { 1609246, -37515, 27 }, { 1120000 } },
|
||||
{ 1963500, { 1675751, -38635, 27 }, { 1120000 } },
|
||||
// Appending table
|
||||
{ 2091000, { 1716501, -39395, 27 }, { 1235000 } },
|
||||
{ 2193000, { 1775132, -40505, 27 }, { 1235000 } },
|
||||
{ 2295000, { 1866287, -42005, 27 }, { 1235000 } },
|
||||
//{ 2397000, { 1961107, -43506, 27 }, { 1235000 } },
|
||||
},
|
||||
|
||||
.marikoCpuDvfsTableSLT = {
|
||||
{ 204000, { 732856, -17335, 113 }, {} },
|
||||
{ 306000, { 760024, -18195, 113 }, {} },
|
||||
{ 408000, { 789258, -19055, 113 }, {} },
|
||||
{ 510000, { 789258, -19055, 113 }, {} },
|
||||
{ 612000, { 853926, -20775, 113 }, {} },
|
||||
{ 714000, { 889361, -21625, 113 }, {} },
|
||||
{ 816000, { 926862, -22485, 113 }, {} },
|
||||
{ 918000, { 966431, -23345, 113 }, {} },
|
||||
{ 1020000, { 1008066, -24205, 113 }, { 1120000 } },
|
||||
{ 1122000, { 1051768, -25065, 113 }, { 1120000 } },
|
||||
{ 1224000, { 1097537, -25925, 113 }, { 1120000 } },
|
||||
{ 1326000, { 1145373, -26785, 113 }, { 1120000 } },
|
||||
{ 1428000, { 1195276, -27645, 113 }, { 1120000 } },
|
||||
{ 1581000, { 1274006, -28935, 113 }, { 1120000 } },
|
||||
{ 1683000, { 1329076, -29795, 113 }, { 1120000 } },
|
||||
{ 1785000, { 1386213, -30655, 113 }, { 1120000 } },
|
||||
{ 1887000, { 1445416, -31515, 113 }, { 1120000 } },
|
||||
{ 1963500, { 1490873, -32155, 113 }, { 1120000 } },
|
||||
// Appending table
|
||||
{ 2091000, { 1580725, -33235, 113 }, { 1120000 } },
|
||||
{ 2193000, { 1580725, -33235, 113 }, { 1235000 } },
|
||||
{ 2295000, { 1635431, -34095, 113 }, { 1235000 } },
|
||||
{ 2397000, { 1702903, -34955, 113 }, { 1235000 } },
|
||||
{ 204000, { 732856, -17335, 113 }, { 1120000 } },
|
||||
{ 306000, { 760024, -18195, 113 }, { 1120000 } },
|
||||
{ 408000, { 789258, -19055, 113 }, { 1120000 } },
|
||||
{ 510000, { 789258, -19915, 113 }, { 1120000 } },
|
||||
{ 612000, { 789258, -19055, 113 }, { 1120000 } },
|
||||
{ 714000, { 820558, -19915, 113 }, { 1120000 } },
|
||||
{ 816000, { 853926, -20775, 113 }, { 1120000 } },
|
||||
{ 918000, { 889361, -21625, 113 }, { 1120000 } },
|
||||
{ 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 }, { 1235000 } },
|
||||
{ 2193000, { 1386213, -33235, 113 }, { 1235000 } },
|
||||
{ 2295000, { 1445416, -34095, 113 }, { 1235000 } },
|
||||
},
|
||||
|
||||
/* - Erista GPU DVFS Table:
|
||||
@@ -331,42 +324,43 @@ volatile CustomizeTable C = {
|
||||
},
|
||||
|
||||
.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 } },
|
||||
{ 76800, { }, { 610000, 0, 0, 0, 0, 0 }, },
|
||||
{ 153600, { }, { 610000, 0, 0, 0, 0, 0 }, },
|
||||
{ 230400, { }, { 610000, 0, 0, 0, 0, 0 }, },
|
||||
{ 307200, { }, { 610000, 0, 0, 0, 0, 0 }, },
|
||||
{ 384000, { }, { 610000, 0, 0, 0, 0, 0 }, },
|
||||
{ 460800, { }, { 610000, 0, 0, 0, 0, 0 }, },
|
||||
{ 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 }, },
|
||||
},
|
||||
.marikoGpuDvfsTableHiOPT = {
|
||||
{ 76800, {}, { 590000, } },
|
||||
{ 153600, {}, { 590000, } },
|
||||
{ 230400, {}, { 590000, } },
|
||||
{ 307200, {}, { 590000, } },
|
||||
{ 384000, {}, { 590000, } },
|
||||
{ 460800, {}, { 590000, } },
|
||||
{ 537600, {}, { 590000, } },
|
||||
{ 614400, {}, { 590000, } },
|
||||
{ 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, {}, { 1065665, -16075, -497, -179, 3213, 9 } },
|
||||
{ 1075200, {}, { 1132576, -16093, -648, 0, 1077, 40 } },
|
||||
{ 1152000, {}, { 1180029, -14534, -830, 0, 1469, 110 } },
|
||||
{ 1228800, {}, { 1248293, -16383, -859, 0, 3722, 313 } },
|
||||
// { 1267200, {}, { 1286399, -17475, -867, 0, 3681, 559 } },
|
||||
{ 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 }, },
|
||||
},
|
||||
|
||||
//.eristaMtcTable = const_cast<EristaMtcTable *>(&EristaMtcTablePlaceholder),
|
||||
@@ -424,32 +418,28 @@ volatile CustomizeTable C = {
|
||||
.marikoCpuDvfsTableUnsafeFreqs = {
|
||||
// { 204000, { 732856, -17335, 113 }, {} }, // Unneeded, made to make room for new freqs
|
||||
// { 306000, { 760024, -18195, 113 }, {} },
|
||||
{ 408000, { 789258, -19055, 113 }, {} },
|
||||
{ 510000, { 789258, -19055, 113 }, {} },
|
||||
{ 612000, { 853926, -20775, 113 }, {} },
|
||||
{ 714000, { 889361, -21625, 113 }, {} },
|
||||
{ 816000, { 926862, -22485, 113 }, {} },
|
||||
{ 918000, { 966431, -23345, 113 }, {} },
|
||||
{ 1020000, { 1008066, -24205, 113 }, { 1120000 } },
|
||||
{ 1122000, { 1051768, -25065, 113 }, { 1120000 } },
|
||||
{ 1224000, { 1097537, -25925, 113 }, { 1120000 } },
|
||||
{ 1326000, { 1145373, -26785, 113 }, { 1120000 } },
|
||||
{ 1428000, { 1195276, -27645, 113 }, { 1120000 } },
|
||||
{ 1581000, { 1274006, -28935, 113 }, { 1120000 } },
|
||||
{ 1683000, { 1329076, -29795, 113 }, { 1120000 } },
|
||||
{ 1785000, { 1386213, -30655, 113 }, { 1120000 } },
|
||||
{ 1887000, { 1445416, -31515, 113 }, { 1120000 } },
|
||||
{ 1963500, { 1490873, -32155, 113 }, { 1120000 } },
|
||||
// Appending table
|
||||
{ 2091000, { 1580725, -33235, 113 }, { 1120000 } },
|
||||
{ 2193000, { 1580725, -33235, 113 }, { 1235000 } },
|
||||
{ 2295000, { 1635431, -34095, 113 }, { 1235000 } },
|
||||
{ 2397000, { 1702903, -34955, 113 }, { 1235000 } },
|
||||
{ 2499000, { 1754400, -35643, 113 }, { 1235000 } },
|
||||
{ 2601000, { 1805897, -36331, 113 }, { 1235000 } },
|
||||
{ 2703000, { 1857394, -37019, 113 }, { 1235000 } },
|
||||
{ 2805000, { 1908891, -37707, 113 }, { 1235000 } },
|
||||
{ 2907000, { 1960388, -38395, 113 }, { 1235000 } },
|
||||
{ 408000, { 789258, -19055, 113 }, { 1120000 } },
|
||||
{ 510000, { 789258, -19915, 113 }, { 1120000 } },
|
||||
{ 612000, { 789258, -19055, 113 }, { 1120000 } },
|
||||
{ 714000, { 820558, -19915, 113 }, { 1120000 } },
|
||||
{ 816000, { 853926, -20775, 113 }, { 1120000 } },
|
||||
{ 918000, { 889361, -21625, 113 }, { 1120000 } },
|
||||
{ 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 }, { 1235000 } },
|
||||
{ 2193000, { 1386213, -33235, 113 }, { 1235000 } },
|
||||
{ 2295000, { 1445416, -34095, 113 }, { 1235000 } },
|
||||
{ 2397000, { 1490873, -34955, 113 }, { 1235000 } },
|
||||
{ 2499000, { 1580725, -35815, 113 }, { 1235000 } },
|
||||
{ 2601000, { 1702903, -36675, 113 }, { 1235000 } },
|
||||
},
|
||||
.eristaCpuDvfsTableUnsafeFreqs = {
|
||||
{ 204000, { 721094 }, {} },
|
||||
|
||||
@@ -111,25 +111,25 @@ namespace ams::ldr::oc::pcv::mariko
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
PATCH_OFFSET(&(entry->tune0_low), 0x0000FF88); // process_id 0 // EOS UV1
|
||||
PATCH_OFFSET(&(entry->tune0_low), 0x0000FF90); // process_id 0 // EOS UV1
|
||||
PATCH_OFFSET(&(entry->tune0_high), 0x0000FFFF);
|
||||
PATCH_OFFSET(&(entry->tune1_low), 0x021107FF);
|
||||
PATCH_OFFSET(&(entry->tune1_high), 0x00000000);
|
||||
break;
|
||||
case 2:
|
||||
PATCH_OFFSET(&(entry->tune0_low), 0x0000FF90); /// EOS Uv2
|
||||
PATCH_OFFSET(&(entry->tune0_low), 0x0000FF92); /// EOS Uv2
|
||||
PATCH_OFFSET(&(entry->tune0_high), 0x0000FFFF);
|
||||
PATCH_OFFSET(&(entry->tune1_low), 0x021107FF);
|
||||
PATCH_OFFSET(&(entry->tune1_high), 0x00000000);
|
||||
break;
|
||||
case 3:
|
||||
PATCH_OFFSET(&(entry->tune0_low), 0x0000FF98); // EOS UV3
|
||||
PATCH_OFFSET(&(entry->tune0_low), 0x0000FF9A); // EOS UV3
|
||||
PATCH_OFFSET(&(entry->tune0_high), 0x0000FFFF);
|
||||
PATCH_OFFSET(&(entry->tune1_low), 0x021107FF);
|
||||
PATCH_OFFSET(&(entry->tune1_high), 0x00000000);
|
||||
break;
|
||||
case 4:
|
||||
PATCH_OFFSET(&(entry->tune0_low), 0x0000FFA0); // EOS Uv4
|
||||
PATCH_OFFSET(&(entry->tune0_low), 0x0000FFA2); // EOS Uv4
|
||||
PATCH_OFFSET(&(entry->tune0_high), 0x0000FFFF);
|
||||
PATCH_OFFSET(&(entry->tune1_low), 0x021107FF);
|
||||
PATCH_OFFSET(&(entry->tune1_high), 0x00000000);
|
||||
@@ -433,44 +433,52 @@ namespace ams::ldr::oc::pcv::mariko
|
||||
{
|
||||
std::memcpy(new_start, default_end, sizeof(emc_dvb_dvfs_table_t));
|
||||
}
|
||||
else if (C.marikoEmcMaxClock < 2131200)
|
||||
if (C.marikoEmcMaxClock < 2131200)
|
||||
{
|
||||
emc_dvb_dvfs_table_t oc_table = {1862400, {
|
||||
700,
|
||||
675,
|
||||
650,
|
||||
}};
|
||||
emc_dvb_dvfs_table_t oc_table = {1866000, {700, 675, 637,}};
|
||||
std::memcpy(new_start, &oc_table, sizeof(emc_dvb_dvfs_table_t));
|
||||
}
|
||||
else if (C.marikoEmcMaxClock < 2400000)
|
||||
{
|
||||
emc_dvb_dvfs_table_t oc_table = {2131200, {
|
||||
725,
|
||||
700,
|
||||
675,
|
||||
}};
|
||||
emc_dvb_dvfs_table_t oc_table = {2133000, {725, 700, 650,}};
|
||||
std::memcpy(new_start, &oc_table, sizeof(emc_dvb_dvfs_table_t));
|
||||
}
|
||||
else if (C.marikoEmcMaxClock < 2665600)
|
||||
else if (C.marikoEmcMaxClock < 2533000)
|
||||
{
|
||||
emc_dvb_dvfs_table_t oc_table = {2400000, {DVB_VOLT(750, 725, 700)}};
|
||||
emc_dvb_dvfs_table_t oc_table = {2400000, {DVB_VOLT(750, 725, 675)}};
|
||||
std::memcpy(new_start, &oc_table, sizeof(emc_dvb_dvfs_table_t));
|
||||
}
|
||||
else if (C.marikoEmcMaxClock < 2931200)
|
||||
else if (C.marikoEmcMaxClock < 2666000)
|
||||
{
|
||||
emc_dvb_dvfs_table_t oc_table = {2665600, {DVB_VOLT(775, 750, 725)}};
|
||||
emc_dvb_dvfs_table_t oc_table = {2533000, {DVB_VOLT(800, 775, 725)}};
|
||||
std::memcpy(new_start, &oc_table, sizeof(emc_dvb_dvfs_table_t));
|
||||
}
|
||||
else if (C.marikoEmcMaxClock < 2800000)
|
||||
{
|
||||
emc_dvb_dvfs_table_t oc_table = {2666000, {DVB_VOLT(850, 825, 775)}};
|
||||
std::memcpy(new_start, &oc_table, sizeof(emc_dvb_dvfs_table_t));
|
||||
}
|
||||
else if (C.marikoEmcMaxClock < 2933000)
|
||||
{
|
||||
emc_dvb_dvfs_table_t oc_table = {2800000, {DVB_VOLT(925, 850, 800)}};
|
||||
std::memcpy(new_start, &oc_table, sizeof(emc_dvb_dvfs_table_t));
|
||||
}
|
||||
else if (C.marikoEmcMaxClock < 3066000)
|
||||
{
|
||||
emc_dvb_dvfs_table_t oc_table = {2933000, {DVB_VOLT(1000, 900, 875)}};
|
||||
std::memcpy(new_start, &oc_table, sizeof(emc_dvb_dvfs_table_t));
|
||||
}
|
||||
else if (C.marikoEmcMaxClock < 3200000)
|
||||
{
|
||||
emc_dvb_dvfs_table_t oc_table = {2931200, {DVB_VOLT(800, 775, 750)}};
|
||||
emc_dvb_dvfs_table_t oc_table = {3066000, {DVB_VOLT(1025, 950, 925)}};
|
||||
std::memcpy(new_start, &oc_table, sizeof(emc_dvb_dvfs_table_t));
|
||||
}
|
||||
else
|
||||
{
|
||||
emc_dvb_dvfs_table_t oc_table = {3200000, {DVB_VOLT(800, 800, 775)}};
|
||||
emc_dvb_dvfs_table_t oc_table = {3200000, {DVB_VOLT(1050, 1025, 1000)}};
|
||||
std::memcpy(new_start, &oc_table, sizeof(emc_dvb_dvfs_table_t));
|
||||
}
|
||||
|
||||
new_start->freq = C.marikoEmcMaxClock;
|
||||
/* Max dvfs entry is 32, but HOS doesn't seem to boot if exact freq doesn't exist in dvb table,
|
||||
reason why it's like this
|
||||
|
||||
Reference in New Issue
Block a user