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

📄 power_test.c

📁 s3c6400 ADS下官方测试程序
💻 C
📖 第 1 页 / 共 5 页
字号:
	{
		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 + -