?? power_test.c
字號:
{
g_OnTest=0;
printf("[SLEEP Mode Test]\n");
printf("S3C6400 will wake-up by EINT9~11 or Other wake-up sources\n");
//Lcd_EnvidOnOff(0); //Before entering SLEEP mode, LCD must be off.
ADC_SelectStandbyMode(1); //ADC Stand-by
RTC_SetCON(0,0,0,0,0,0); //RTC SFR R/W Disable.
// Save the port configurations
printf(" I/O Port is stored! \n");
/*
for (i=0;i<32;i++)
{
uPortStatus[i] = *( (volatile u32 *)0x7F008000 + i );
}
*/
printf("Test pattern for SDRAM Self-Refresh is filled!\n");
InitData_SDRAM(_DRAM_BaseAddress+0x1000000, 0x10000);
// Fill Information Register - for test
uInform0 = 0xABCD6400;
uInform7 = 0x6400ABCD;
Outp32Inform(0,uInform0);
Outp32Inform(0,uInform7);
// ADCCON Standby
//Outp32(0x7E00B008,0x100FF);
//Outp32(0x7E00B000, 0x3FC4);
printf("Wake-up source is set!\n");
SetAlarmWakeup();
SetEintWakeup();
//SetKeypadWakeup();
//SetAlarmTick();
//SetBatteryFaultEvent(eFLT_INT);
//SetADCTSWakeup();
//Outp32(0x7E00B000, 0x3FC4); //ADC Clock Disable
//Outp32(0x7E00B004, 0x58);
//Outp32(0x7E00B008, 5 ); //ADC Clock Disable
//printf(" I/O Port is set for Sleep Mode \n");
//ConfigSleepGPIO();
#if 0 // OK
Outp32(0x7F008880, 0x1000);
printf("rSPCONSLP, SPLEN: 0x%x, 0x%x\n", Inp32(0x7F008880),Inp32(0x7F008930));
#endif
printf("System stablilization counter register!\n");
SYSC_OSCSTAB(0x1);
SYSC_PWRSTAB(0x1);
SYSC_FPCSTAB(0x1);
//Test Case - Normal CFG OFF
//SYSC_CtrlNORCFG(eNOR_DOMAINV, 0);
//SYSC_CtrlNORCFG(eNOR_DOMAINI, 0);
//SYSC_CtrlNORCFG(eNOR_DOMAINP, 0);
//SYSC_CtrlNORCFG(eNOR_DOMAINF, 0);
//SYSC_CtrlNORCFG(eNOR_DOMAINS, 0);
//SYSC_CtrlNORCFG(eNOR_DOMAINETM, 0); // OFF矯 Sleep Wake-up Fail...
//SYSC_CtrlNORCFG(eNOR_IROM, 0);
Delay(100);
SYSC_RdBLKPWR();
#if 0
//Outp32(0x7F008880, 0x1000);
printf("rSPCONSLP, SPLEN: 0x%x, 0x%x\n", Inp32(0x7F008880),Inp32(0x7F008930));
#endif
SYSC_OSCSTAB(0x8);
SYSC_PWRSTAB(0x8);
SYSC_FPCSTAB(0x8);
#if 0 // OK
Outp32(0x7F008880, 0x1010);
Outp32(0x7F008930, 0x2);
printf("rSPCONSLP, SPLEN: 0x%x, 0x%x\n", Inp32(0x7F008880),Inp32(0x7F008930));
#endif
//Add Clock Gating
// Outp32SYSC(0x30, 0xFFFFFFFE); // MFC, MFC Block OFF矯 OK
// Outp32SYSC(0x30, 0xFDFFFFFF); // IROM OK
//Outp32SYSC(0x30, 0xFFDFFFFF); // MEM0
//printf("HCLKGATE: 0x%x\n", Inp32(0x7E00F030));
//UART_Getc();
//printf("EINTPend:0x%x\n", Inp32(0x7F008924));
//UART_Getc();
//test
//Check_AliveSFR(0);
//USB_OTG_POWER_OFF
printf("PHY OFF\n");
uTTT1 = Inp32SYSC(0x900);
uTTT1 = uTTT1|(1<<14);
//uTTT1 = uTTT1&~(1<<16)|(1<<14);
Outp32SYSC(0x900, uTTT1); // USB_PWR_DN_EN
Outp32(0x7C100000, 0xF); // USB_Power Down
uTTT1 = Inp32(0x7C100004);
uTTT1 = uTTT1 |(1<<3);
Outp32(0x7C100004,uTTT1 );
#if 0
uRegValue =Inp32(0x7E00F90C);
printf("Block Power Status Register 0x%x\n\n\n", uRegValue);
printf("Block Top Power %d\n", uRegValue&(0x1<<0));
printf("Block V Power %d\n", (uRegValue&(0x1<<1))>>1);
printf("Block I Power %d\n", (uRegValue&(0x1<<2))>>2);
printf("Block P Power %d\n", (uRegValue&(0x1<<3))>>3);
printf("Block F Power %d\n", (uRegValue&(0x1<<4))>>4);
printf("Block S Power %d\n", (uRegValue&(0x1<<5))>>5);
printf("Block ETM Power %d\n", (uRegValue&(0x1<<6))>>6);
#endif
SYSC_RdBLKPWR();
printf("\nCPU will goes to SLEEP Mode!\n\n");
UART_TxEmpty(); //
INTC_Disable(NUM_RTC_TIC);
INTC_Disable(NUM_RTC_ALARM);
INTC_Disable(NUM_EINT1);
//Outp32SYSC(0x808, 0xFFFFFDFF ); // EINT MASK
//Outp32SYSC(0x804, 0x61);
//Outp32SYSC(0x818,1);
//while(1);
//Outp32SYSC(0x804,0x1FF80); // WAKE_UP MASK ? or DisMASK
// Normal CFG
#if 0
// Reset Out
Outp32(0x7F008880, 0x1000);
//Outp32(0x7F008880, 0x1010); //OK
printf("rSPCONSLP, SPLEN: 0x%x, 0x%x\n", Inp32(0x7F008880),Inp32(0x7F008930));
//Outp32(0x7F008820, 0x200000);
Outp32Inform(7, Inp32SYSC(0x90c));
//UART_Getc(); //Outp32(0x7F008880, 0x1000);
#endif
SYSC_SetCFGWFI(eSLEEP, 0);
MMU_WaitForInterrupt();
printf("CPU doesn't go to Sleep Mode\n");
}
}
//////////
// Function Name : NORCFG_Test - ing
// Function Description : Block Power Off Test in the Normal Mode
// Input : None
// Output : None
// Version : v0.1
void NORCFG_Test (void)
{
u32 uTemp;
//Block Power Stablilzation counter
//[27:24] ETM, [23:20] DOMAIN_S, [19:16] DOMAIN_F, [15:12] DOMAIN_P
//[11:8] DOMAIN_I, [7:4] DOMAIN_V, [3:0] DOMAIN_TOP
uTemp = (0xF<<24)|(0xF<<20)|(0xF<<16)|(0xF<<12)|(0xF<<8)|(0xF<<4)|(0xF<<0);
SYSC_MTCSTAB(uTemp);
printf("DOMAIN_V Block Power Off- MFC(?)- Press any key \n");
while(!UART_GetKey());
SYSC_CtrlNORCFG(eNOR_DOMAINV, 0);
Delay(100);
SYSC_RdBLKPWR();
// Test
printf("\nDOMAIN_ETM Block Power Off- ETM - Press any key \n");
while(!UART_GetKey());
SYSC_CtrlNORCFG(eNOR_DOMAINETM, 0);
Delay(100);
SYSC_RdBLKPWR();
printf("\nDOMAIN_ETM Block Power ON- ETM - Press any key \n");
// while(!UART_GetKey());
SYSC_CtrlNORCFG(eNOR_DOMAINETM, 1);
Delay(100);
SYSC_RdBLKPWR();
//
printf("\nDOMAIN_I Block Power Off- JPEG/CamIF- Press any key \n");
while(!UART_GetKey());
SYSC_CtrlNORCFG(eNOR_DOMAINI, 0);
Delay(100);
SYSC_RdBLKPWR();
printf("\nDOMAIN_P Block Power Off- 2D/TV/Scaler- Press any key \n");
while(!UART_GetKey());
SYSC_CtrlNORCFG(eNOR_DOMAINP, 0);
Delay(100);
SYSC_RdBLKPWR();
printf("\nDOMAIN_F Block Power Off- LCD/ROT/Post- Press any key \n");
while(!UART_GetKey());
SYSC_CtrlNORCFG(eNOR_DOMAINF, 0);
Delay(100);
SYSC_RdBLKPWR();
printf("\nDOMAIN_S Block Power Off- SDMA/Security- Press any key \n");
while(!UART_GetKey());
SYSC_CtrlNORCFG(eNOR_DOMAINS, 0);
Delay(100);
SYSC_RdBLKPWR();
printf("\nDOMAIN_ETM Block Power Off- ETM - Press any key \n");
while(!UART_GetKey());
SYSC_CtrlNORCFG(eNOR_DOMAINETM, 0);
Delay(100);
SYSC_RdBLKPWR();
printf("\nIROM Block Power Off- Press any key \n");
while(!UART_GetKey());
SYSC_CtrlNORCFG(eNOR_IROM, 0);
Delay(100);
SYSC_RdBLKPWR();
printf("========================================== \n");
printf("============= Block Power ON =============== \n");
printf("========================================== \n");
printf("DOMAIN_V Block Power ON- MFC(?)- Press any key \n");
while(!UART_GetKey());
SYSC_CtrlNORCFG(eNOR_DOMAINV, 1);
Delay(100);
SYSC_RdBLKPWR();
printf("\nDOMAIN_I Block Power ON- JPEG/CamIF- Press any key \n");
while(!UART_GetKey());
SYSC_CtrlNORCFG(eNOR_DOMAINI, 1);
Delay(100);
SYSC_RdBLKPWR();
printf("\nDOMAIN_P Block Power ON- 2D/TV/Scaler- Press any key \n");
while(!UART_GetKey());
SYSC_CtrlNORCFG(eNOR_DOMAINP, 1);
Delay(100);
SYSC_RdBLKPWR();
printf("\nDOMAIN_F Block Power ON- LCD/ROT/Post- Press any key \n");
while(!UART_GetKey());
SYSC_CtrlNORCFG(eNOR_DOMAINF, 1);
Delay(100);
SYSC_RdBLKPWR();
printf("\nDOMAIN_S Block Power ON- SDMA/Security- Press any key \n");
while(!UART_GetKey());
SYSC_CtrlNORCFG(eNOR_DOMAINS, 1);
Delay(100);
SYSC_RdBLKPWR();
printf("\nDOMAIN_ETM Block Power ON- ETM - Press any key \n");
while(!UART_GetKey());
SYSC_CtrlNORCFG(eNOR_DOMAINETM, 1);
Delay(100);
SYSC_RdBLKPWR();
printf("\nIROM Block Power ON- Press any key \n");
while(!UART_GetKey());
SYSC_CtrlNORCFG(eNOR_IROM, 1);
Delay(100);
SYSC_RdBLKPWR();
}
//////////
// Function Name : CLKGate_Test
// Function Description : CLKGate_Test in the Normal Mode
// Input : None
// Output : None
// Version : v0.1
void CLKGate_Test(void)
{
printf("HCLK/PCLK/SCLK_Gating Register Test\n");
printf("Check the current cunsumption. Type any key to proceed.\n");
//Except GPIO,UART0, DMC1, VIC, BUS
printf("rHCLK_GATE: 0x%x, rPCLK_GATE: 0x%x, rSCLK_GATE: 0x%x \n", Inp32SYSC(0x30), Inp32SYSC(0x34), Inp32SYSC(0x38));
while(!UART_GetKey());
printf("No.1 : Security off (HCLK[29], SCLK[7]) \n");
SYSC_CtrlHCLKGate(eHCLK_SECUR, 0);
SYSC_CtrlSCLKGate(eSCLK_SECUR, 0);
printf("rHCLK_GATE: 0x%x, rPCLK_GATE: 0x%x, rSCLK_GATE: 0x%x \n", Inp32SYSC(0x30), Inp32SYSC(0x34), Inp32SYSC(0x38));
while(!UART_GetKey());
printf("No.2 : SDMA1 off (HCLK[28]\n");
SYSC_CtrlHCLKGate(eHCLK_SDMA1, 0);
printf("rHCLK_GATE: 0x%x, rPCLK_GATE: 0x%x, rSCLK_GATE: 0x%x \n", Inp32SYSC(0x30), Inp32SYSC(0x34), Inp32SYSC(0x38));
while(!UART_GetKey());
printf("No.3 : SDMA0 off (HCLK[27])\n");
SYSC_CtrlHCLKGate(eHCLK_SDMA0, 0);
printf("rHCLK_GATE: 0x%x, rPCLK_GATE: 0x%x, rSCLK_GATE: 0x%x \n", Inp32SYSC(0x30), Inp32SYSC(0x34), Inp32SYSC(0x38));
while(!UART_GetKey());
printf("No.4 : DMA1 off (HCLK[13])\n");
SYSC_CtrlHCLKGate(eHCLK_DMA1, 0);
printf("rHCLK_GATE: 0x%x, rPCLK_GATE: 0x%x, rSCLK_GATE: 0x%x \n", Inp32SYSC(0x30), Inp32SYSC(0x34), Inp32SYSC(0x38));
while(!UART_GetKey());
printf("No.5 : DMA0 off (HCLK[12])\n");
SYSC_CtrlHCLKGate(eHCLK_DMA0, 0 );
printf("rHCLK_GATE: 0x%x, rPCLK_GATE: 0x%x, rSCLK_GATE: 0x%x \n", Inp32SYSC(0x30), Inp32SYSC(0x34), Inp32SYSC(0x38));
while(!UART_GetKey());
printf("No.6 : USB Host off (HCLK[26], SCLK[30])\n");
SYSC_CtrlHCLKGate(eHCLK_UHOST, 0);
SYSC_CtrlSCLKGate(eSCLK_UHOST, 0);
printf("rHCLK_GATE: 0x%x, rPCLK_GATE: 0x%x, rSCLK_GATE: 0x%x \n", Inp32SYSC(0x30), Inp32SYSC(0x34), Inp32SYSC(0x38));
while(!UART_GetKey());
printf("No.7 : Internal ROM off (HCLK[25])\n");
SYSC_CtrlHCLKGate(eHCLK_IROM, 0);
printf("rHCLK_GATE: 0x%x, rPCLK_GATE: 0x%x, rSCLK_GATE: 0x%x \n", Inp32SYSC(0x30), Inp32SYSC(0x34), Inp32SYSC(0x38));
while(!UART_GetKey());
printf("No.8 : DMC0 off (HCLK[23], HCLK[21] )\n");
SYSC_CtrlHCLKGate(eHCLK_DDR0, 0);
SYSC_CtrlHCLKGate(eHCLK_DMC0, 0);
printf("rHCLK_GATE: 0x%x, rPCLK_GATE: 0x%x, rSCLK_GATE: 0x%x \n", Inp32SYSC(0x30), Inp32SYSC(0x34), Inp32SYSC(0x38));
while(!UART_GetKey());
printf("No.9 : USB OTG off (HCLK[20])\n");
SYSC_CtrlHCLKGate(eHCLK_OTG, 0);
printf("rHCLK_GATE: 0x%x, rPCLK_GATE: 0x%x, rSCLK_GATE: 0x%x \n", Inp32SYSC(0x30), Inp32SYSC(0x34), Inp32SYSC(0x38));
while(!UART_GetKey());
printf("No.10 : HSMMC2 off (HCLK[19], SCLK[29],[26])\n");
SYSC_CtrlHCLKGate(eHCLK_MMC2, 0);
SYSC_CtrlSCLKGate(eSCLK_MMC2_48,0);
SYSC_CtrlSCLKGate(eSCLK_MMC2,0);
printf("rHCLK_GATE: 0x%x, rPCLK_GATE: 0x%x, rSCLK_GATE: 0x%x \n", Inp32SYSC(0x30), Inp32SYSC(0x34), Inp32SYSC(0x38));
while(!UART_GetKey());
printf("No.11 : HSMMC1 off (HCLK[18], SCLK[28], [25])\n");
SYSC_CtrlHCLKGate(eHCLK_MMC1,0);
SYSC_CtrlSCLKGate(eSCLK_MMC2_48,0);
SYSC_CtrlSCLKGate(eSCLK_MMC2,0);
printf("rHCLK_GATE: 0x%x, rPCLK_GATE: 0x%x, rSCLK_GATE: 0x%x \n", Inp32SYSC(0x30), Inp32SYSC(0x34), Inp32SYSC(0x38));
while(!UART_GetKey());
printf("No.12 : HSMMC0 off (HCLK[17], SCLK[27],[24])\n");
SYSC_CtrlHCLKGate(eHCLK_MMC0,0);
SYSC_CtrlSCLKGate(eSCLK_MMC0_48,0);
SYSC_CtrlSCLKGate(eSCLK_MMC0,0);
printf("rHCLK_GATE: 0x%x, rPCLK_GATE: 0x%x, rSCLK_GATE: 0x%x \n", Inp32SYSC(0x30), Inp32SYSC(0x34), Inp32SYSC(0x38));
while(!UART_GetKey());
printf("No.13: MDP off (HCLK[16],)\n");
SYSC_CtrlHCLKGate(eHCLK_MDP,0);
printf("rHCLK_GATE: 0x%x, rPCLK_GATE: 0x%x, rSCLK_GATE: 0x%x \n", Inp32SYSC(0x30), Inp32SYSC(0x34), Inp32SYSC(0x38));
while(!UART_GetKey());
printf("No.14 : Direct Host I/F off (HCLK[15])\n");
SYSC_CtrlHCLKGate(eHCLK_Modem, 0);
printf("rHCLK_GATE: 0x%x, rPCLK_GATE: 0x%x, rSCLK_GATE: 0x%x \n", Inp32SYSC(0x30), Inp32SYSC(0x34), Inp32SYSC(0x38));
while(!UART_GetKey());
printf("No.15 : Indirect Host I/F off (PCLK[14])\n");
SYSC_CtrlHCLKGate(eHCLK_HOSTIF,0);
printf("rHCLK_GATE: 0x%x, rPCLK_GATE: 0x%x, rSCLK_GATE: 0x%x \n", Inp32SYSC(0x30), Inp32SYSC(0x34), Inp32SYSC(0x38));
while(!UART_GetKey());
printf("No.16 : JPEG off (HCLK[11], SCLK[1])\n");
SYSC_CtrlHCLKGate(eHCLK_JPEG,0);
SYSC_CtrlSCLKGate(eSCLK_JPEG,0);
printf("rHCLK_GATE: 0x%x, rPCLK_GATE: 0x%x, rSCLK_GATE: 0x%x \n", Inp32SYSC(0x30), Inp32SYSC(0x34), Inp32SYSC(0x38));
while(!UART_GetKey());
printf("No.17 : CAMIF off (HCLK[10], SCLK[2])\n");
SYSC_CtrlHCLKGate(eHCLK_CAM,0);
SYSC_CtrlSCLKGate(eSCLK_CAM,0);
printf("rHCLK_GATE: 0x%x, rPCLK_GATE: 0x%x, rSCLK_GATE: 0x%x \n", Inp32SYSC(0x30), Inp32SYSC(0x34), Inp32SYSC(0x38));
while(!UART_GetKey());
printf("No.18 : SCALER off (HCLK[9], SCLK[17:16])\n");
SYSC_CtrlHCLKGate(eHCLK_SCALER,0);
SYSC_CtrlSCLKGate(eSCLK_SCALER27,0);
SYSC_CtrlSCLKGate(eSCLK_SCALER,0);
printf("rHCLK_GATE: 0x%x, rPCLK_GATE: 0x%x, rSCLK_GATE: 0x%x \n", Inp32SYSC(0x30), Inp32SYSC(0x34), Inp32SYSC(0x38));
while(!UART_GetKey());
printf("No.19 : 2D off (HCLK[8])\n");
SYSC_CtrlHCLKGate(eHCLK_2D,0);
printf("rHCLK_GATE: 0x%x, r
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -