unsigned int pclkfreq_get (void) { unsigned int clkset = CSC_CLKSET; int pclkdiv = PCLKDIV(clkset); unsigned int pclk; if (pclkdiv == 0x3) pclkdiv = 0x2; pclk = hclkfreq_get () / (1 << pclkdiv); return pclk; }
//---------------------------------------------------------------------------------------------- // // Function: System_GetPCLK // Description: Get PCLK value Using FINCLK and MPS PLL Diver, and Clock Divider Register falue // UINT32 System_GetPCLK() { UINT32 uPCLK; UINT32 uPLLCLK; volatile S3C6410_SYSCON_REG *pSysConReg; pSysConReg = (S3C6410_SYSCON_REG *)OALPAtoVA(S3C6410_BASE_REG_PA_SYSCON, FALSE); if(System_VCheckSyncMode()) { uPLLCLK = System_GetAPLLCLK(); } else { uPLLCLK = System_GetMPLLCLK(); } uPCLK = uPLLCLK/HCLKX2DIV(pSysConReg->CLK_DIV0)/(PCLKDIV(pSysConReg->CLK_DIV0)); return uPCLK; }