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

📄 off.c

📁 三星2440原版bsp
💻 C
📖 第 1 页 / 共 2 页
字号:
    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 + -