📄 off.c
字号:
volatile S3C2440X_NAND_REG *pNand = (S3C2440X_NAND_REG*)OALPAtoVA(S3C2440X_BASE_REG_PA_NAND, FALSE);
// volatile S3C2440X_PWM_REG *s2440PWM = (S3C2440X_PWM_REG*)OALPAtoVA(S3C2440X_BASE_REG_PA_PWM, FALSE);
// S3C2440X_PWM_REG t2440PWM;
RETAILMSG(1, (TEXT("+OEMPowerOff Called \r\n")));
RETAILMSG(1, (TEXT("pIntr->INTMOD = 0x%x \r\n"), pIntr->INTMOD));
RETAILMSG(1, (TEXT("pIntr->INTMSK = 0x%x \r\n"), pIntr->INTMSK));
RETAILMSG(1, (TEXT("pIntr->INTSUBMSK = 0x%x \r\n"), pIntr->INTSUBMSK));
// 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->GPBUP);
saveArea[5] = INPORT32(&pIOPort->GPCCON);
saveArea[6] = INPORT32(&pIOPort->GPCDAT);
saveArea[7] = INPORT32(&pIOPort->GPCUP);
saveArea[8] = INPORT32(&pIOPort->GPDCON);
saveArea[9] = INPORT32(&pIOPort->GPDDAT);
saveArea[10] = INPORT32(&pIOPort->GPDUP);
saveArea[11] = INPORT32(&pIOPort->GPECON);
saveArea[12] = INPORT32(&pIOPort->GPEDAT);
saveArea[13] = INPORT32(&pIOPort->GPEUP);
saveArea[14] = INPORT32(&pIOPort->GPFCON);
saveArea[15] = INPORT32(&pIOPort->GPFDAT);
saveArea[16] = INPORT32(&pIOPort->GPFUP);
saveArea[17] = INPORT32(&pIOPort->GPGCON);
saveArea[18] = INPORT32(&pIOPort->GPGDAT);
saveArea[19] = INPORT32(&pIOPort->GPGUP);
saveArea[20] = INPORT32(&pIOPort->GPHCON);
saveArea[21] = INPORT32(&pIOPort->GPHDAT);
saveArea[22] = INPORT32(&pIOPort->GPHUP);
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->LPCSEL);
saveArea[37] = INPORT32(&pLCD->LCDINTMSK);
saveArea[38] = INPORT32(&pLCD->TPAL);
saveArea[39] = INPORT32(&pLCD->DITHMODE);
saveArea[40] = INPORT32(&pLCD->BLUELUT);
saveArea[41] = INPORT32(&pLCD->GREENLUT);
saveArea[42] = INPORT32(&pLCD->REDLUT);
saveArea[43] = INPORT32(&pLCD->LCDSADDR3);
saveArea[44] = INPORT32(&pLCD->LCDSADDR2);
saveArea[45] = INPORT32(&pLCD->LCDSADDR1);
saveArea[46] = INPORT32(&pLCD->LCDCON5);
saveArea[47] = INPORT32(&pLCD->LCDCON4);
saveArea[48] = INPORT32(&pLCD->LCDCON3);
saveArea[49] = INPORT32(&pLCD->LCDCON2);
saveArea[50] = INPORT32(&pLCD->LCDCON1);
saveArea[51] = INPORT32(&pNand->NFSBLK);
saveArea[52] = INPORT32(&pNand->NFEBLK);
/* LCD Controller Disable */
CPULCDOff();
// save timer registers
// t2440PWM.TCFG0 = INREG32(&s2440PWM->TCFG0);
// t2440PWM.TCFG1 = INREG32(&s2440PWM->TCFG1);
// t2440PWM.TCNTB4 = INREG32(&s2440PWM->TCNTB4);
// t2440PWM.TCON = INREG32(&s2440PWM->TCON);
// Switch off power for KITL device
OALKitlPowerOff();
/* Stop all GPIO */
ConfigStopGPIO();
/* Set misc register for power off */
ConfigMiscReg();
// Go to power off mode
CPUPowerOff();
// Switch on power for KITL device
OALKitlPowerOn();
// restore timer registers
// OUTREG32(&s2440PWM->TCFG0, t2440PWM.TCFG0);
// OUTREG32(&s2440PWM->TCFG1, t2440PWM.TCFG1);
// OUTREG32(&s2440PWM->TCNTB4, t2440PWM.TCNTB4);
// restart timer in auto reload mode
// t2440PWM.TCON &= ~(0x0F << 20);
// OUTREG32(&s2440PWM->TCON, t2440PWM.TCON | (0x2 << 20) );
// OUTREG32(&s2440PWM->TCON, t2440PWM.TCON | (0x5 << 20) );
/* Recover Process, Load CPU Regs */
OUTPORT32(&pIOPort->GPACON, saveArea[0]);
OUTPORT32(&pIOPort->GPADAT, saveArea[1]);
OUTPORT32(&pIOPort->GPBCON, saveArea[2]);
OUTPORT32(&pIOPort->GPBDAT, saveArea[3]);
OUTPORT32(&pIOPort->GPBUP, saveArea[4]);
OUTPORT32(&pIOPort->GPCCON, saveArea[5]);
OUTPORT32(&pIOPort->GPCDAT, saveArea[6]);
OUTPORT32(&pIOPort->GPCUP, saveArea[7]);
OUTPORT32(&pIOPort->GPDCON, saveArea[8]);
OUTPORT32(&pIOPort->GPDDAT, saveArea[9]);
OUTPORT32(&pIOPort->GPDUP, saveArea[10]);
OUTPORT32(&pIOPort->GPECON, saveArea[11]);
OUTPORT32(&pIOPort->GPEDAT, saveArea[12]);
OUTPORT32(&pIOPort->GPEUP, saveArea[13]);
OUTPORT32(&pIOPort->GPFCON, saveArea[14]);
OUTPORT32(&pIOPort->GPFDAT, saveArea[15]);
OUTPORT32(&pIOPort->GPFUP, saveArea[16]);
OUTPORT32(&pIOPort->GPGCON, saveArea[17]);
OUTPORT32(&pIOPort->GPGDAT, saveArea[18]);
OUTPORT32(&pIOPort->GPGUP, saveArea[19]);
OUTPORT32(&pIOPort->GPHCON, saveArea[20]);
OUTPORT32(&pIOPort->GPHDAT, saveArea[21]);
OUTPORT32(&pIOPort->GPHUP, saveArea[22]);
OUTPORT32(&pIOPort->MISCCR, saveArea[23]);
OUTPORT32(&pIOPort->DCLKCON, saveArea[24]);
OUTPORT32(&pIOPort->EXTINT0, saveArea[25]);
OUTPORT32(&pIOPort->EXTINT1, saveArea[26]);
OUTPORT32(&pIOPort->EXTINT2, saveArea[27]);
OUTPORT32(&pIOPort->EINTFLT0, saveArea[28]);
OUTPORT32(&pIOPort->EINTFLT1, saveArea[29]);
OUTPORT32(&pIOPort->EINTFLT2, saveArea[30]);
OUTPORT32(&pIOPort->EINTFLT3, saveArea[31]);
OUTPORT32(&pIOPort->EINTMASK, saveArea[32]);
OUTPORT32(&pIntr->INTMOD, saveArea[33]);
OUTPORT32(&pIntr->INTMSK, saveArea[34]);
OUTPORT32(&pIntr->INTSUBMSK, saveArea[35]);
pLCD->LPCSEL = saveArea[36];
pLCD->LCDINTMSK = saveArea[37];
pLCD->TPAL = saveArea[38];
pLCD->DITHMODE = saveArea[39];
pLCD->BLUELUT = saveArea[40];
pLCD->GREENLUT = saveArea[41];
pLCD->REDLUT = saveArea[42];
pLCD->LCDSADDR3 = saveArea[43];
pLCD->LCDSADDR2 = saveArea[44];
pLCD->LCDSADDR1 = saveArea[45];
pLCD->LCDCON5 = saveArea[46];
pLCD->LCDCON4 = saveArea[47];
pLCD->LCDCON3 = saveArea[48];
pLCD->LCDCON2 = saveArea[49];
pLCD->LCDCON1 = saveArea[50];
OUTPORT32(&pNand->NFSBLK, saveArea[51]);
OUTPORT32(&pNand->NFEBLK, saveArea[52]);
/* Interrupt Clear */
OUTPORT32(&pIOPort->EINTPEND, INPORT32(&pIOPort->EINTPEND));
OUTPORT32(&pIntr->SUBSRCPND, INPORT32(&pIntr->SUBSRCPND));
// OUTPORT32(&pIntr->SRCPND, INPORT32(&pIntr->SRCPND));
// OUTPORT32(&pIntr->INTPND, INPORT32(&pIntr->INTPND));
pLCD->LCDSRCPND = pLCD->LCDSRCPND;
pLCD->LCDINTPND = pLCD->LCDINTPND;
NANDInit();
OEMInitDebugSerial();
// Initialize system clock
OALTimerInit(RESCHED_PERIOD, OEM_COUNT_1MS, 0);
RETAILMSG(1, (TEXT("\r\n\r\n")));
RETAILMSG(1, (TEXT("pIntr->INTMOD = 0x%x \r\n"), pIntr->INTMOD));
RETAILMSG(1, (TEXT("pIntr->INTMSK = 0x%x \r\n"), pIntr->INTMSK));
RETAILMSG(1, (TEXT("pIntr->INTSUBMSK = 0x%x \r\n"), pIntr->INTSUBMSK));
// Do platform dependent power on actions
// BSPPowerOn();
RETAILMSG(1, (TEXT("-OEMPowerOff Called \r\n")));
}
//------------------------------------------------------------------------------
//
// Function: OALIoCtlHalPresuspend
//
// Description:
//
BOOL OALIoCtlHalPresuspend(
UINT32 code, VOID* pInpBuffer, UINT32 inpSize, VOID* pOutBuffer,
UINT32 outSize, UINT32 *pOutSize
) {
return TRUE;
}
#if 0
//------------------------------------------------------------------------------
//
// Function: OALIoCtlHalEnableWake
//
// Description:
//
BOOL OALIoCtlHalEnableWake(
UINT32 code, VOID* pInpBuffer, UINT32 inpSize, VOID* pOutBuffer,
UINT32 outSize, UINT32 *pOutSize
) {
return TRUE;
}
//------------------------------------------------------------------------------
//
// Function: OALIoCtlHalDisableWake
//
// Description:
//
BOOL OALIoCtlHalDisableWake(
UINT32 code, VOID* pInpBuffer, UINT32 inpSize, VOID* pOutBuffer,
UINT32 outSize, UINT32 *pOutSize
) {
return TRUE;
}
//------------------------------------------------------------------------------
//
// Function: OALIoCtlHalDisableWake
//
// Description:
//
BOOL OALIoCtlHalGetWakeSource(
UINT32 code, VOID* pInpBuffer, UINT32 inpSize, VOID* pOutBuffer,
UINT32 outSize, UINT32 *pOutSize
) {
return TRUE;
}
#endif //0.
//------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -