📄 off.c
字号:
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
// NOTE: stubs are being used - this isn't done
#include <windows.h>
#include <oal.h>
#include <s3c2413.h>
#include <pkfuncs.h>
#include <winbase.h>
//extern void Awake_address(void);
extern void ConfigStopGPIO(void);
void InitLDI_LTS222(void);
//------------------------------------------------------------------------------
//
// Function: OEMPowerOff
//
// Description: Called when the system is to transition to it's lowest
// power mode (off)
//
void OEMPowerOff()
{
static UINT32 saveArea[144];
volatile S3C2413_INTR_REG *pIntr = (S3C2413_INTR_REG*)OALPAtoVA(S3C2413_BASE_REG_PA_INTR, FALSE);
volatile S3C2413_IOPORT_REG *pIOPort = (S3C2413_IOPORT_REG*)OALPAtoVA(S3C2413_BASE_REG_PA_IOPORT, FALSE);
volatile S3C2413_LCD_REG *pLCD = (S3C2413_LCD_REG*)OALPAtoVA(S3C2413_BASE_REG_PA_LCD, FALSE);
volatile S3C2413_RTC_REG *pRTC = (S3C2413_RTC_REG*)OALPAtoVA(S3C2413_BASE_REG_PA_RTC,FALSE);
volatile S3C2413_CLKPWR_REG *pCLKPWR = (S3C2413_CLKPWR_REG*)OALPAtoVA(S3C2413_BASE_REG_PA_CLOCK_POWER,FALSE);
volatile S3C2413_MEMCTRL_REG *pMEMCTRL = (S3C2413_MEMCTRL_REG*)OALPAtoVA(S3C2413_BASE_REG_PA_MEMCTRL,FALSE);
volatile S3C2413_PWM_REG *pPWM = (S3C2413_PWM_REG*)OALPAtoVA(S3C2413_BASE_REG_PA_PWM,FALSE);
// First do platform specific actions
BSPPowerOff();
// Then save system registers
saveArea[0] = INPORT32(&pIOPort->GPACON);
saveArea[1] = INPORT32(&pIOPort->GPADAT);
saveArea[2] = INPORT32(&pIOPort->GPBCON);
saveArea[3] = INPORT32(&pIOPort->GPBDAT);
saveArea[4] = INPORT32(&pIOPort->GPBDN);
saveArea[5] = INPORT32(&pIOPort->GPCCON);
saveArea[6] = INPORT32(&pIOPort->GPCDAT);
saveArea[7] = INPORT32(&pIOPort->GPCDN);
saveArea[8] = INPORT32(&pIOPort->GPDCON);
saveArea[9] = INPORT32(&pIOPort->GPDDAT);
saveArea[10] = INPORT32(&pIOPort->GPDDN);
saveArea[11] = INPORT32(&pIOPort->GPECON);
saveArea[12] = INPORT32(&pIOPort->GPEDAT);
saveArea[13] = INPORT32(&pIOPort->GPEDN);
saveArea[14] = INPORT32(&pIOPort->GPFCON);
saveArea[15] = INPORT32(&pIOPort->GPFDAT);
saveArea[16] = INPORT32(&pIOPort->GPFDN);
saveArea[17] = INPORT32(&pIOPort->GPGCON);
saveArea[18] = INPORT32(&pIOPort->GPGDAT);
saveArea[19] = INPORT32(&pIOPort->GPGDN);
saveArea[20] = INPORT32(&pIOPort->GPHCON);
saveArea[21] = INPORT32(&pIOPort->GPHDAT);
saveArea[22] = INPORT32(&pIOPort->GPHDN);
saveArea[23] = INPORT32(&pIOPort->MISCCR);
saveArea[24] = INPORT32(&pIOPort->DCLKCON);
saveArea[25] = INPORT32(&pIOPort->EXTINT0);
saveArea[26] = INPORT32(&pIOPort->EXTINT1);
saveArea[27] = INPORT32(&pIOPort->EXTINT2);
saveArea[28] = INPORT32(&pIOPort->EINTFLT0);
saveArea[29] = INPORT32(&pIOPort->EINTFLT1);
saveArea[30] = INPORT32(&pIOPort->EINTFLT2);
saveArea[31] = INPORT32(&pIOPort->EINTFLT3);
saveArea[32] = INPORT32(&pIOPort->EINTMASK);
saveArea[33] = INPORT32(&pIntr->INTMOD);
saveArea[34] = INPORT32(&pIntr->INTMSK);
saveArea[35] = INPORT32(&pIntr->INTSUBMSK);
saveArea[36] = INPORT32(&pLCD->TCONSEL);
saveArea[37] = INPORT32(&pLCD->REDLUT6);
saveArea[38] = INPORT32(&pLCD->REDLUT5);
saveArea[39] = INPORT32(&pLCD->REDLUT4);
saveArea[40] = INPORT32(&pLCD->REDLUT3);
saveArea[41] = INPORT32(&pLCD->REDLUT2);
saveArea[42] = INPORT32(&pLCD->REDLUT1);
saveArea[43] = INPORT32(&pLCD->REDLUT0);
saveArea[44] = INPORT32(&pLCD->GREENLUT13);
saveArea[45] = INPORT32(&pLCD->GREENLUT12);
saveArea[46] = INPORT32(&pLCD->GREENLUT11);
saveArea[47] = INPORT32(&pLCD->GREENLUT10);
saveArea[48] = INPORT32(&pLCD->GREENLUT9);
saveArea[49] = INPORT32(&pLCD->GREENLUT8);
saveArea[50] = INPORT32(&pLCD->GREENLUT7);
saveArea[51] = INPORT32(&pLCD->GREENLUT6);
saveArea[52] = INPORT32(&pLCD->GREENLUT5);
saveArea[53] = INPORT32(&pLCD->GREENLUT4);
saveArea[54] = INPORT32(&pLCD->GREENLUT3);
saveArea[55] = INPORT32(&pLCD->GREENLUT2);
saveArea[56] = INPORT32(&pLCD->GREENLUT1);
saveArea[57] = INPORT32(&pLCD->GREENLUT0);
saveArea[58] = INPORT32(&pLCD->BLUELUT6);
saveArea[59] = INPORT32(&pLCD->BLUELUT5);
saveArea[60] = INPORT32(&pLCD->BLUELUT4);
saveArea[61] = INPORT32(&pLCD->BLUELUT3);
saveArea[62] = INPORT32(&pLCD->BLUELUT2);
saveArea[63] = INPORT32(&pLCD->BLUELUT1);
saveArea[64] = INPORT32(&pLCD->BLUELUT0);
saveArea[65] = INPORT32(&pLCD->FRCPAT63);
saveArea[66] = INPORT32(&pLCD->FRCPAT62);
saveArea[67] = INPORT32(&pLCD->FRCPAT61);
saveArea[68] = INPORT32(&pLCD->FRCPAT60);
saveArea[69] = INPORT32(&pLCD->FRCPAT59);
saveArea[70] = INPORT32(&pLCD->FRCPAT58);
saveArea[71] = INPORT32(&pLCD->FRCPAT57);
saveArea[72] = INPORT32(&pLCD->FRCPAT56);
saveArea[73] = INPORT32(&pLCD->FRCPAT55);
saveArea[74] = INPORT32(&pLCD->FRCPAT54);
saveArea[75] = INPORT32(&pLCD->FRCPAT53);
saveArea[76] = INPORT32(&pLCD->FRCPAT52);
saveArea[77] = INPORT32(&pLCD->FRCPAT51);
saveArea[78] = INPORT32(&pLCD->FRCPAT50);
saveArea[79] = INPORT32(&pLCD->FRCPAT49);
saveArea[80] = INPORT32(&pLCD->FRCPAT48);
saveArea[81] = INPORT32(&pLCD->FRCPAT47);
saveArea[82] = INPORT32(&pLCD->FRCPAT46);
saveArea[83] = INPORT32(&pLCD->FRCPAT45);
saveArea[84] = INPORT32(&pLCD->FRCPAT44);
saveArea[85] = INPORT32(&pLCD->FRCPAT43);
saveArea[86] = INPORT32(&pLCD->FRCPAT42);
saveArea[87] = INPORT32(&pLCD->FRCPAT41);
saveArea[88] = INPORT32(&pLCD->FRCPAT40);
saveArea[89] = INPORT32(&pLCD->FRCPAT39);
saveArea[90] = INPORT32(&pLCD->FRCPAT38);
saveArea[91] = INPORT32(&pLCD->FRCPAT37);
saveArea[92] = INPORT32(&pLCD->FRCPAT36);
saveArea[93] = INPORT32(&pLCD->FRCPAT35);
saveArea[94] = INPORT32(&pLCD->FRCPAT34);
saveArea[95] = INPORT32(&pLCD->FRCPAT33);
saveArea[96] = INPORT32(&pLCD->FRCPAT32);
saveArea[97] = INPORT32(&pLCD->FRCPAT31);
saveArea[98] = INPORT32(&pLCD->FRCPAT30);
saveArea[99] = INPORT32(&pLCD->FRCPAT29);
saveArea[100] = INPORT32(&pLCD->FRCPAT28);
saveArea[101] = INPORT32(&pLCD->FRCPAT27);
saveArea[102] = INPORT32(&pLCD->FRCPAT26);
saveArea[103] = INPORT32(&pLCD->FRCPAT25);
saveArea[104] = INPORT32(&pLCD->FRCPAT24);
saveArea[105] = INPORT32(&pLCD->FRCPAT23);
saveArea[106] = INPORT32(&pLCD->FRCPAT22);
saveArea[107] = INPORT32(&pLCD->FRCPAT21);
saveArea[108] = INPORT32(&pLCD->FRCPAT20);
saveArea[109] = INPORT32(&pLCD->FRCPAT19);
saveArea[110] = INPORT32(&pLCD->FRCPAT18);
saveArea[111] = INPORT32(&pLCD->FRCPAT17);
saveArea[112] = INPORT32(&pLCD->FRCPAT16);
saveArea[113] = INPORT32(&pLCD->FRCPAT15);
saveArea[114] = INPORT32(&pLCD->FRCPAT14);
saveArea[115] = INPORT32(&pLCD->FRCPAT13);
saveArea[116] = INPORT32(&pLCD->FRCPAT12);
saveArea[117] = INPORT32(&pLCD->FRCPAT11);
saveArea[118] = INPORT32(&pLCD->FRCPAT10);
saveArea[119] = INPORT32(&pLCD->FRCPAT9);
saveArea[120] = INPORT32(&pLCD->FRCPAT8);
saveArea[121] = INPORT32(&pLCD->FRCPAT7);
saveArea[122] = INPORT32(&pLCD->FRCPAT6);
saveArea[123] = INPORT32(&pLCD->FRCPAT5);
saveArea[124] = INPORT32(&pLCD->FRCPAT4);
saveArea[125] = INPORT32(&pLCD->FRCPAT3);
saveArea[126] = INPORT32(&pLCD->FRCPAT2);
saveArea[127] = INPORT32(&pLCD->FRCPAT1);
saveArea[128] = INPORT32(&pLCD->FRCPAT0);
saveArea[129] = INPORT32(&pLCD->LCDTEST);
saveArea[130] = INPORT32(&pLCD->LCDINTMSK);
saveArea[131] = INPORT32(&pLCD->TPAL);
saveArea[132] = INPORT32(&pLCD->LCDSADDR3);
saveArea[133] = INPORT32(&pLCD->LCDSADDR2);
saveArea[134] = INPORT32(&pLCD->LCDSADDR1);
saveArea[135] = INPORT32(&pLCD->LCDCON9);
saveArea[136] = INPORT32(&pLCD->LCDCON8);
saveArea[137] = INPORT32(&pLCD->LCDCON7);
saveArea[138] = INPORT32(&pLCD->LCDCON6);
saveArea[139] = INPORT32(&pLCD->LCDCON5);
saveArea[140] = INPORT32(&pLCD->LCDCON4);
saveArea[141] = INPORT32(&pLCD->LCDCON3);
saveArea[142] = INPORT32(&pLCD->LCDCON2);
saveArea[143] = INPORT32(&pLCD->LCDCON1);
pLCD->LCDCON1 = 0;
pLCD->LCDCON2 = 0;
pLCD->LCDCON3 = 0;
pLCD->LCDCON4 = 0;
pLCD->LCDCON5 = 0;
pLCD->LCDSADDR1 = 0;
pLCD->LCDSADDR2 = 0;
pLCD->LCDSADDR3 = 0;
pLCD->TCONSEL = 0;
pLCD->TPAL = 0;
ConfigStopGPIO();
// Switch off power for KITL device
//OALKitlPowerOff();
pIOPort->GSTATUS2 = 0x12345678; // for wake up. This register is used in Eboot
OALCPUPowerOff();
// Switch on power for KITL device
//OALKitlPowerOn();
pIOPort->GSTATUS2 = 0x0; // clean bits after wakeup
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -