/* * Copyright (c) 2016 Linaro Limited. * * SPDX-License-Identifier: Apache-2.0 */ /** * @file SoC configuration macros for the ARM LTD Beetle SoC PLL. * */ #ifndef _ARM_BEETLE_SOC_PLL_H_ #define _ARM_BEETLE_SOC_PLL_H_ /* * This header provides the defines to configure the Beetle PLL. * * BEETLE PLL main register is the PLLCTRL in the System Control * * The PLLCTRL relevant bits are: * - PLL_OUTPUTDIV [9:8] * - PLL_INPUTDIV [20:16] * - PLL_FEEDDIV [30:24] * * The formula to calculate the output frequency of the PLL is: * Fout = Fin * PLL_FEEDDIV / (PLL_INPUTDIV * PLL_OUTPUTDIV) * The Fin = 24Mhz on Beetle * * PLL_OUTPUTDIV | 0 1 2 3 * ----------------------- * | 1 2 4 8 * * PLL_INPUTDIV = R[20:16] + 1 * * PLL_FEEDDIV = 2*(R[30:24] + 1) * * BEETLE PLL has a non bypassable divider by 2 in output * * BEETLE PLL derived clock is prescaled [1-16] */ /* BEETLE PLL Masks */ #define PLL_MAINCLK_ENABLE_Msk 0x1 #define PLL_MAINCLK_DISABLE_Msk 0x1 #define PLL_MAINCLK_PRESCALER_Msk 0xF0 /* BEETLE PLL Configuration */ #define BEETLE_PLL_CONFIGURATION 0x17000200 /* BEETLE PLL Supported Frequencies */ /* BEETLE_PLL_48Mhz */ #define BEETLE_PLL_FREQUENCY_48MHZ 48000000 #define BEETLE_PLL_PRESCALER_48MHZ 0x21 /* BEETLE_PLL_36Mhz */ #define BEETLE_PLL_FREQUENCY_36MHZ 36000000 #define BEETLE_PLL_PRESCALER_36MHZ 0x31 /* BEETLE_PLL_24Mhz */ #define BEETLE_PLL_FREQUENCY_24MHZ 24000000 #define BEETLE_PLL_PRESCALER_24MHZ 0x51 /* BEETLE_PLL_12Mhz */ #define BEETLE_PLL_FREQUENCY_12MHZ 12000000 #define BEETLE_PLL_PRESCALER_12MHZ 0xB1 #endif /* _ARM_BEETLE_SOC_PLL_H_ */