📄 power.cpp
字号:
INIT_CLOCK_INFO_POWER(VGXPowerReduced)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
INIT_CLOCK_INFO_POWER (VGXPowerMinimal)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
// 16 bit per pixel
INIT_CLOCK_INFO_RES(800, 480, 16)
INIT_CLOCK_INFO_POWER(VGXPowerOn)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_72()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_144()
INIT_CLOCK_INFO_POWER(VGXPowerReduced)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
INIT_CLOCK_INFO_POWER (VGXPowerMinimal)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
// 32 bit per pixel
INIT_CLOCK_INFO_RES(800, 480, 32)
INIT_CLOCK_INFO_POWER(VGXPowerOn)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_72()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_144()
INIT_CLOCK_INFO_POWER(VGXPowerReduced)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
INIT_CLOCK_INFO_POWER (VGXPowerMinimal)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
///////////////////////////////////////////////////////////////////////////
// Init 800x600
// 8 bit per pixel
INIT_CLOCK_INFO_RES(800, 600, 8)
INIT_CLOCK_INFO_POWER(VGXPowerOn)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_72()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_144()
INIT_CLOCK_INFO_POWER(VGXPowerReduced)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
INIT_CLOCK_INFO_POWER (VGXPowerMinimal)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
// 16 bit per pixel
INIT_CLOCK_INFO_RES(800, 600, 16)
INIT_CLOCK_INFO_POWER(VGXPowerOn)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_72()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_144()
INIT_CLOCK_INFO_POWER(VGXPowerReduced)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
INIT_CLOCK_INFO_POWER (VGXPowerMinimal)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
// 32 bit per pixel
INIT_CLOCK_INFO_RES(800, 600, 32)
INIT_CLOCK_INFO_POWER(VGXPowerOn)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_72()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_144()
INIT_CLOCK_INFO_POWER(VGXPowerReduced)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
INIT_CLOCK_INFO_POWER (VGXPowerMinimal)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
///////////////////////////////////////////////////////////////////////////
// Init 1024x600
// 8 bit per pixel
INIT_CLOCK_INFO_RES(1024, 600, 8)
INIT_CLOCK_INFO_POWER(VGXPowerOn)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_72()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_144()
INIT_CLOCK_INFO_POWER(VGXPowerReduced)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
INIT_CLOCK_INFO_POWER (VGXPowerMinimal)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
// 16 bit per pixel
INIT_CLOCK_INFO_RES(1024, 600, 16)
INIT_CLOCK_INFO_POWER(VGXPowerOn)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_72()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_144()
INIT_CLOCK_INFO_POWER(VGXPowerReduced)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
INIT_CLOCK_INFO_POWER (VGXPowerMinimal)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
// 32 bit per pixel
INIT_CLOCK_INFO_RES(1024, 600, 32)
INIT_CLOCK_INFO_POWER(VGXPowerOn)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_72()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_144()
INIT_CLOCK_INFO_POWER(VGXPowerReduced)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
INIT_CLOCK_INFO_POWER (VGXPowerMinimal)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
///////////////////////////////////////////////////////////////////////////
// Init 1024x768
// 8 bit per pixel
INIT_CLOCK_INFO_RES(1024, 768, 8)
INIT_CLOCK_INFO_POWER(VGXPowerOn)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_72()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_144()
INIT_CLOCK_INFO_POWER(VGXPowerReduced)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
INIT_CLOCK_INFO_POWER (VGXPowerMinimal)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
// 16 bit per pixel
INIT_CLOCK_INFO_RES(1024, 768, 16)
INIT_CLOCK_INFO_POWER(VGXPowerOn)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_72()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_144()
INIT_CLOCK_INFO_POWER(VGXPowerReduced)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
INIT_CLOCK_INFO_POWER (VGXPowerMinimal)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
// 32 bit per pixel
INIT_CLOCK_INFO_RES(1024, 768, 32)
INIT_CLOCK_INFO_POWER(VGXPowerOn)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_72()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_144()
INIT_CLOCK_INFO_POWER(VGXPowerReduced)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
INIT_CLOCK_INFO_POWER (VGXPowerMinimal)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
///////////////////////////////////////////////////////////////////////////
// Init 1280x960
// 8 bit per pixel
INIT_CLOCK_INFO_RES(1280, 960, 8)
INIT_CLOCK_INFO_POWER(VGXPowerOn)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_72()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_144()
INIT_CLOCK_INFO_POWER(VGXPowerReduced)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
INIT_CLOCK_INFO_POWER (VGXPowerMinimal)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
// 16 bit per pixel
INIT_CLOCK_INFO_RES(1280, 960, 16)
INIT_CLOCK_INFO_POWER(VGXPowerOn)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_72()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_144()
INIT_CLOCK_INFO_POWER(VGXPowerReduced)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
INIT_CLOCK_INFO_POWER (VGXPowerMinimal)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
// 32 bit per pixel
INIT_CLOCK_INFO_RES(1280, 960, 32)
INIT_CLOCK_INFO_POWER(VGXPowerOn)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_72()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_144()
INIT_CLOCK_INFO_POWER(VGXPowerReduced)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
INIT_CLOCK_INFO_POWER (VGXPowerMinimal)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
///////////////////////////////////////////////////////////////////////////
// Init 1280x1200
// 8 bit per pixel
INIT_CLOCK_INFO_RES(1280, 1200, 8)
INIT_CLOCK_INFO_POWER(VGXPowerOn)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_72()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_144()
INIT_CLOCK_INFO_POWER(VGXPowerReduced)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
INIT_CLOCK_INFO_POWER (VGXPowerMinimal)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
// 16 bit per pixel
INIT_CLOCK_INFO_RES(1280, 1200, 16)
INIT_CLOCK_INFO_POWER(VGXPowerOn)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_72()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_144()
INIT_CLOCK_INFO_POWER(VGXPowerReduced)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
INIT_CLOCK_INFO_POWER (VGXPowerMinimal)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
// 32 bit per pixel
INIT_CLOCK_INFO_RES(1280, 1200, 32)
INIT_CLOCK_INFO_POWER(VGXPowerOn)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_72()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_144()
INIT_CLOCK_INFO_POWER(VGXPowerReduced)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
INIT_CLOCK_INFO_POWER (VGXPowerMinimal)
INIT_CLOCK_INFO_PLL2(288)
INIT_CLOCK_INFO_PLL2_288_MCLK_36()
INIT_CLOCK_INFO_PLL2_288_M2XCLK_72()
///////////////////////////////////////////////////////////////////////
// Set default idle counters for the Power Monitor
SetIdle(
MIN2TICKS(2), // 2 minutes before Reduced Mode
MIN2TICKS(4)); // 4 minutes before Minimal Mode
///////////////////////////////////////////////////////////////////////
// Set initial state of the Power Monitor
SetMonitorEnabled(
m_SMISettings.m_bEnablePowerMonitor);
///////////////////////////////////////////////////////////////////////
// Init power info for all monitored modules
INITPOWERINFO(2D, MIN2TICKS(6)) // Power info for 2D Engine.
// INITPOWERINFO(PWM, MIN2TICKS(6)) // Power info for PWM.
// INITPOWERINFO(I2C, MIN2TICKS(6)) // Power info for I2C.
MESSAGE(MESSAGE_ZONE, (TEXT("-SMI::InitPowerManagement\r\n")));
return VGXPM_RET_SUCCESS;
}
///////////////////////////////////////////////////////////////////////////////
// Starts the power thread.
DWORD SMI::StartPowerManagement()
{
MESSAGE(MESSAGE_ZONE, (TEXT("+SMI::StartPowerManagement\r\n")));
DWORD dwResult = VGXPM_RET_SUCCESS;
///////////////////////////////////////////////////////////////////////////
// Set initial power states
DWORD dwPowerMask = 0;
DWORD dwPowerGate = 0;
// Disable 8051
if (!IsAudioDriverPresent())
{
dwPowerMask |=
_F_MASK(CURRENT_POWER_GATE_8051);
dwPowerGate = FIELD_SET(dwPowerGate, CURRENT_POWER_GATE, 8051, DISABLE);
}
// Determine whether USB driver is loaded or not
if (!IsUSBDriverPresent())
{
// USB is not loaded - dsiable the gate
dwPowerMask |=
_F_MASK(CURRENT_POWER_GATE_USB_SLAVE) |
_F_MASK(CURRENT_POWER_GATE_USB_HOST);
dwPowerGate = FIELD_SET(dwPowerGate, CURRENT_POWER_GATE, USB_SLAVE, DISABLE);
dwPowerGate = FIELD_SET(dwPowerGate, CURRENT_POWER_GATE, USB_HOST, DISABLE);
}
setGate(dwPowerMask, dwPowerGate);
///////////////////////////////////////////////////////////////////////
// Turn all managable modules off by default
for (INT i = 0; i < VGXPM_MODULE_COUNT; i++)
{
SetModulePower((VGXPM_MODULES)i, VGXPowerOff);
}
///////////////////////////////////////////////////////////////////////
// Enter full power mode by default
SetVGXPowerManagement(VGXPowerOn);
if (m_SMISettings.m_bEnablePowerMonitor)
{
dwResult = StartPowerThread();
}
MESSAGE(MESSAGE_ZONE, (TEXT("-SMI::StartPowerManagement\r\n")));
return dwResult;
}
///////////////////////////////////////////////////////////////////////////////
// Starts the thread.
DWORD SMI::StartPowerThread()
{
MESSAGE(MESSAGE_ZONE, (TEXT("+SMI::StartPowerThread\r\n")));
DWORD dwResult = VGXPM_RET_NOT_SUPPORTED;
#ifdef USE_WATCHDOG
///////////////////////////////////////////////////////////////////////
// Activity flag.
static BOOL bStarted = FALSE;
if (!bStarted)
{
///////////////////////////////////////////////////////////////////////
// Create a message queue.
if (m_hPMMessageQueue == NULL)
{
MSGQUEUEOPTIONS MsgQueueOptions;
MsgQueueOptions.dwSize = sizeof(MsgQueueOptions);
MsgQueueOptions.dwFlags = 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -