⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 off.c

📁 支持三星原产的S3C2413开发板
💻 C
📖 第 1 页 / 共 2 页
字号:
//
// 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 + -