loader: add more steps in dvb table
This commit is contained in:
@@ -451,6 +451,7 @@ Result MemFreqDvbTable(u32* ptr) {
|
|||||||
if (C.marikoEmcMaxClock <= EmcClkOSLimit)
|
if (C.marikoEmcMaxClock <= EmcClkOSLimit)
|
||||||
R_SKIP();
|
R_SKIP();
|
||||||
|
|
||||||
|
u32 voltAdd = 25*C.marikoEmcDvbShift;
|
||||||
if (C.marikoEmcMaxClock < 1862400) {
|
if (C.marikoEmcMaxClock < 1862400) {
|
||||||
std::memcpy(new_start, default_end, sizeof(emc_dvb_dvfs_table_t));
|
std::memcpy(new_start, default_end, sizeof(emc_dvb_dvfs_table_t));
|
||||||
} else if (C.marikoEmcMaxClock < 2131200){
|
} else if (C.marikoEmcMaxClock < 2131200){
|
||||||
@@ -460,13 +461,22 @@ Result MemFreqDvbTable(u32* ptr) {
|
|||||||
emc_dvb_dvfs_table_t oc_table = { 2131200, { 725, 700, 675, } };
|
emc_dvb_dvfs_table_t oc_table = { 2131200, { 725, 700, 675, } };
|
||||||
std::memcpy(new_start, &oc_table, sizeof(emc_dvb_dvfs_table_t));
|
std::memcpy(new_start, &oc_table, sizeof(emc_dvb_dvfs_table_t));
|
||||||
} else if (C.marikoEmcMaxClock < 2665600){
|
} else if (C.marikoEmcMaxClock < 2665600){
|
||||||
emc_dvb_dvfs_table_t oc_table = { 2400000, { s32(750+25*C.marikoEmcDvbShift), s32(725+25*C.marikoEmcDvbShift), s32(700+25*C.marikoEmcDvbShift), } };
|
emc_dvb_dvfs_table_t oc_table = { 2400000, { s32(750+voltAdd), s32(725+voltAdd), s32(700+voltAdd), } };
|
||||||
|
std::memcpy(new_start, &oc_table, sizeof(emc_dvb_dvfs_table_t));
|
||||||
|
} else if (C.marikoEmcMaxClock < 2931200){
|
||||||
|
emc_dvb_dvfs_table_t oc_table = { 2665600, { s32(775+voltAdd), s32(750+voltAdd), s32(725+voltAdd), } };
|
||||||
|
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, { s32(800+voltAdd), s32(775+voltAdd), s32(750+voltAdd), } };
|
||||||
std::memcpy(new_start, &oc_table, sizeof(emc_dvb_dvfs_table_t));
|
std::memcpy(new_start, &oc_table, sizeof(emc_dvb_dvfs_table_t));
|
||||||
} else {
|
} else {
|
||||||
emc_dvb_dvfs_table_t oc_table = { 2665600, { s32(775+25*C.marikoEmcDvbShift), s32(750+25*C.marikoEmcDvbShift), s32(725+25*C.marikoEmcDvbShift), } };
|
emc_dvb_dvfs_table_t oc_table = { 3200000, { s32(800+voltAdd), s32(800+voltAdd), s32(775+voltAdd), } };
|
||||||
std::memcpy(new_start, &oc_table, sizeof(emc_dvb_dvfs_table_t));
|
std::memcpy(new_start, &oc_table, sizeof(emc_dvb_dvfs_table_t));
|
||||||
}
|
}
|
||||||
new_start->freq = C.marikoEmcMaxClock;
|
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
|
||||||
|
*/
|
||||||
|
|
||||||
R_SUCCEED();
|
R_SUCCEED();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user