Add Mariko DRAM regulator references; fix typo
This commit is contained in:
@@ -3,7 +3,8 @@
|
|||||||
#include <stratosphere.hpp>
|
#include <stratosphere.hpp>
|
||||||
|
|
||||||
#define EMC_OVERCLOCK 1
|
#define EMC_OVERCLOCK 1
|
||||||
#define EMC_OVERVOLT 1
|
//#define EMC_OVERVOLT 1
|
||||||
|
|
||||||
//I'm dropping support for Erista on >= HOS 13.0.0, you may port these offsets by yourself.
|
//I'm dropping support for Erista on >= HOS 13.0.0, you may port these offsets by yourself.
|
||||||
//#define ERISTA_SUPPORT
|
//#define ERISTA_SUPPORT
|
||||||
|
|
||||||
@@ -73,7 +74,7 @@ namespace ams::ldr {
|
|||||||
static_assert(sizeof(NewGpuTables) <= sizeof(gpu_clock_table_t)*20);
|
static_assert(sizeof(NewGpuTables) <= sizeof(gpu_clock_table_t)*20);
|
||||||
|
|
||||||
/* EMC */
|
/* EMC */
|
||||||
constexpr u32 EmcVolatageOffsets[VERS][2] = {
|
constexpr u32 EmcVoltageOffsets[VERS][2] = {
|
||||||
{ 0x143998, 0x14399C },
|
{ 0x143998, 0x14399C },
|
||||||
{ 0x142878, 0x14287C },
|
{ 0x142878, 0x14287C },
|
||||||
{ 0x1428B8, 0x1428BC },
|
{ 0x1428B8, 0x1428BC },
|
||||||
@@ -189,16 +190,35 @@ namespace ams::ldr {
|
|||||||
{ 0x0B, 0x00, 0x8E, 0x52, 0xEB, 0x02, 0xA0, 0x72, },
|
{ 0x0B, 0x00, 0x8E, 0x52, 0xEB, 0x02, 0xA0, 0x72, },
|
||||||
};
|
};
|
||||||
|
|
||||||
/* EMC */
|
#ifdef EMC_OVERVOLT
|
||||||
/* Changing EMC volt parameters in mtc table will not make any difference to real voltage
|
/*
|
||||||
constexpr u32 EmcVolatageOffsets[VERS][2] = {
|
* EMC: Work in progress
|
||||||
|
*
|
||||||
|
* References:
|
||||||
|
* [1] https://nv-tegra.nvidia.com/gitweb/?p=linux-4.9.git;a=blob;f=drivers/regulator/max77812-regulator.c;h=015f90b297b5f58bac6ac3c92c72be878542c667
|
||||||
|
* [2] https://github.com/CTCaer/hekate/blob/master/bdk/power/max77812.h
|
||||||
|
* [3] https://github.com/CTCaer/hekate/blob/master/bdk/power/max7762x.c
|
||||||
|
*/
|
||||||
|
|
||||||
|
constexpr u32 EmcVoltageMax = 1525000;
|
||||||
|
|
||||||
|
constexpr u32 EmcVoltageMinOffsets[VERS][2] = {
|
||||||
|
{ 0x145FD8, 0x144B98, },
|
||||||
|
{ 0x143A78, 0x144EB8, },
|
||||||
|
{ 0x143AB8, 0x144EF8, },
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr u32 EmcVoltageDefOffsets[VERS][2] = {
|
||||||
{ 0x145FE4, 0x144BA4, },
|
{ 0x145FE4, 0x144BA4, },
|
||||||
{ 0x143A84, 0x144EC4, },
|
{ 0x143A84, 0x144EC4, },
|
||||||
{ 0x143AC4, 0x144F04, },
|
{ 0x143AC4, 0x144F04, },
|
||||||
};
|
};
|
||||||
constexpr u32 NewEmcVoltage = 650000;
|
|
||||||
static_assert(NewEmcVoltage <= 750000);
|
constexpr u32 EmcVoltageMin = 300000; // 250000mV
|
||||||
*/
|
constexpr u32 EmcVoltageDef = 650000; // 600000mV
|
||||||
|
static_assert(sizeof(EmcVoltageMinOffsets) == sizeof(EmcVoltageDefOffsets));
|
||||||
|
static_assert(EmcVoltageMin <= EmcVoltageDef && NewEmcVoltageDef <= EmcVoltageMax);
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -248,19 +268,19 @@ namespace ams::ldr {
|
|||||||
if constexpr(EMC_OVERVOLT) {
|
if constexpr(EMC_OVERVOLT) {
|
||||||
#ifdef ERISTA_SUPPORT
|
#ifdef ERISTA_SUPPORT
|
||||||
if(spl::GetSocType() == spl::SocType_Erista) {
|
if(spl::GetSocType() == spl::SocType_Erista) {
|
||||||
for(u32 j = 0; j < sizeof(Erista::EmcVolatageOffsets[i])/sizeof(u32); j++) {
|
for(u32 j = 0; j < sizeof(Erista::EmcVoltageOffsets[i])/sizeof(u32); j++) {
|
||||||
AMS_ABORT_UNLESS(Erista::EmcVolatageOffsets[i][j] <= mapped_size);
|
AMS_ABORT_UNLESS(Erista::EmcVoltageOffsets[i][j] <= mapped_size);
|
||||||
std::memcpy(mapped_module + Erista::EmcVolatageOffsets[i][j], &Erista::NewEmcVoltage, sizeof(Erista::NewEmcVoltage));
|
std::memcpy(mapped_module + Erista::EmcVoltageOffsets[i][j], &Erista::NewEmcVoltage, sizeof(Erista::NewEmcVoltage));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
// Not available on Mariko
|
else if(spl::GetSocType() == spl::SocType_Mariko) {
|
||||||
/*else if(spl::GetSocType() == spl::SocType_Mariko) {
|
for(u32 j = 0; j < sizeof(Mariko::EmcVoltageMinOffsets[i])/sizeof(u32); j++) {
|
||||||
for(u32 j = 0; j < sizeof(Mariko::EmcVolatageOffsets[i])/sizeof(u32); j++) {
|
AMS_ABORT_UNLESS(Mariko::EmcVoltageMinOffsets[i][j] <= mapped_size);
|
||||||
AMS_ABORT_UNLESS(Mariko::EmcVolatageOffsets[i][j] <= mapped_size);
|
std::memcpy(mapped_module + Mariko::EmcVoltageMinOffsets[i][j], &Mariko::EmcVoltageMin, sizeof(Mariko::EmcVoltageMin));
|
||||||
std::memcpy(mapped_module + Mariko::EmcVolatageOffsets[i][j], &Mariko::NewEmcVoltage, sizeof(Mariko::NewEmcVoltage));
|
std::memcpy(mapped_module + Mariko::EmcVoltageDefOffsets[i][j], &Mariko::EmcVoltageDef, sizeof(Mariko::EmcVoltageDef));
|
||||||
}
|
}
|
||||||
}*/
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user