259 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			259 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * @brief	LPC18xx/43xx chip clock list used by CGU and CCU drivers
 | |
|  *
 | |
|  * @note
 | |
|  * Copyright(C) NXP Semiconductors, 2012
 | |
|  * All rights reserved.
 | |
|  *
 | |
|  * @par
 | |
|  * Software that is described herein is for illustrative purposes only
 | |
|  * which provides customers with programming information regarding the
 | |
|  * LPC products.  This software is supplied "AS IS" without any warranties of
 | |
|  * any kind, and NXP Semiconductors and its licensor disclaim any and
 | |
|  * all warranties, express or implied, including all implied warranties of
 | |
|  * merchantability, fitness for a particular purpose and non-infringement of
 | |
|  * intellectual property rights.  NXP Semiconductors assumes no responsibility
 | |
|  * or liability for the use of the software, conveys no license or rights under any
 | |
|  * patent, copyright, mask work right, or any other intellectual property rights in
 | |
|  * or to any products. NXP Semiconductors reserves the right to make changes
 | |
|  * in the software without notification. NXP Semiconductors also makes no
 | |
|  * representation or warranty that such application will be suitable for the
 | |
|  * specified use without further testing or modification.
 | |
|  *
 | |
|  * @par
 | |
|  * Permission to use, copy, modify, and distribute this software and its
 | |
|  * documentation is hereby granted, under NXP Semiconductors' and its
 | |
|  * licensor's relevant copyrights in the software, without fee, provided that it
 | |
|  * is used in conjunction with NXP Semiconductors microcontrollers.  This
 | |
|  * copyright, permission, and disclaimer notice must appear in all copies of
 | |
|  * this code.
 | |
|  */
 | |
| 
 | |
| #ifndef __CHIP_CLOCKS_H_
 | |
| #define __CHIP_CLOCKS_H_
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| /** @ingroup CLOCK_18XX_43XX
 | |
|  * @{
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * @brief CGU clock input list
 | |
|  * These are possible input clocks for the CGU and can come
 | |
|  * from both external (crystal) and internal (PLL) sources. These
 | |
|  * clock inputs can be routed to the base clocks (@ref CHIP_CGU_BASE_CLK_T).
 | |
|  */
 | |
| typedef enum CHIP_CGU_CLKIN {
 | |
| 	CLKIN_32K,		/*!< External 32KHz input */
 | |
| 	CLKIN_IRC,		/*!< Internal IRC (12MHz) input */
 | |
| 	CLKIN_ENET_RX,	/*!< External ENET_RX pin input */
 | |
| 	CLKIN_ENET_TX,	/*!< External ENET_TX pin input */
 | |
| 	CLKIN_CLKIN,	/*!< External GPCLKIN pin input */
 | |
| 	CLKIN_RESERVED1,
 | |
| 	CLKIN_CRYSTAL,	/*!< External (main) crystal pin input */
 | |
| 	CLKIN_USBPLL,	/*!< Internal USB PLL input */
 | |
| 	CLKIN_AUDIOPLL,	/*!< Internal Audio PLL input */
 | |
| 	CLKIN_MAINPLL,	/*!< Internal Main PLL input */
 | |
| 	CLKIN_RESERVED2,
 | |
| 	CLKIN_RESERVED3,
 | |
| 	CLKIN_IDIVA,	/*!< Internal divider A input */
 | |
| 	CLKIN_IDIVB,	/*!< Internal divider B input */
 | |
| 	CLKIN_IDIVC,	/*!< Internal divider C input */
 | |
| 	CLKIN_IDIVD,	/*!< Internal divider D input */
 | |
| 	CLKIN_IDIVE,	/*!< Internal divider E input */
 | |
| 	CLKINPUT_PD		/*!< External 32KHz input */
 | |
| } CHIP_CGU_CLKIN_T;
 | |
| 
 | |
| /**
 | |
|  * @brief CGU base clocks
 | |
|  * CGU base clocks are clocks that are associated with a single input clock
 | |
|  * and are routed out to 1 or more peripherals. For example, the CLK_BASE_PERIPH
 | |
|  * clock can be configured to use the CLKIN_MAINPLL input clock, which will in
 | |
|  * turn route that clock to the CLK_PERIPH_BUS, CLK_PERIPH_CORE, and
 | |
|  * CLK_PERIPH_SGPIO periphral clocks.
 | |
|  */
 | |
| typedef enum CHIP_CGU_BASE_CLK {
 | |
| 	CLK_BASE_SAFE,		/*!< Base clock for WDT oscillator, IRC input only */
 | |
| 	CLK_BASE_USB0,		/*!< Base USB clock for USB0, USB PLL input only */
 | |
| #if defined(CHIP_LPC43XX)
 | |
| 	CLK_BASE_PERIPH,	/*!< Base clock for SGPIO */
 | |
| #else
 | |
| 	CLK_BASE_RESERVED1,
 | |
| #endif
 | |
| 	CLK_BASE_USB1,		/*!< Base USB clock for USB1 */
 | |
| 	CLK_BASE_MX,		/*!< Base clock for CPU core */
 | |
| 	CLK_BASE_SPIFI,		/*!< Base clock for SPIFI */
 | |
| #if defined(CHIP_LPC43XX)
 | |
| 	CLK_BASE_SPI,		/*!< Base clock for SPI */
 | |
| #else
 | |
| 	CLK_BASE_RESERVED2,
 | |
| #endif
 | |
| 	CLK_BASE_PHY_RX,	/*!< Base clock for PHY RX */
 | |
| 	CLK_BASE_PHY_TX,	/*!< Base clock for PHY TX */
 | |
| 	CLK_BASE_APB1,		/*!< Base clock for APB1 group */
 | |
| 	CLK_BASE_APB3,		/*!< Base clock for APB3 group */
 | |
| 	CLK_BASE_LCD,		/*!< Base clock for LCD pixel clock */
 | |
| #if defined(CHIP_LPC43XX)
 | |
| 	CLK_BASE_ADCHS,		/*!< Base clock for ADCHS */
 | |
| #else
 | |
| 	CLK_BASE_RESERVED3,
 | |
| #endif
 | |
| 	CLK_BASE_SDIO,		/*!< Base clock for SDIO */
 | |
| 	CLK_BASE_SSP0,		/*!< Base clock for SSP0 */
 | |
| 	CLK_BASE_SSP1,		/*!< Base clock for SSP1 */
 | |
| 	CLK_BASE_UART0,		/*!< Base clock for UART0 */
 | |
| 	CLK_BASE_UART1,		/*!< Base clock for UART1 */
 | |
| 	CLK_BASE_UART2,		/*!< Base clock for UART2 */
 | |
| 	CLK_BASE_UART3,		/*!< Base clock for UART3 */
 | |
| 	CLK_BASE_OUT,		/*!< Base clock for CLKOUT pin */
 | |
| 	CLK_BASE_RESERVED4,
 | |
| 	CLK_BASE_RESERVED5,
 | |
| 	CLK_BASE_RESERVED6,
 | |
| 	CLK_BASE_RESERVED7,
 | |
| 	CLK_BASE_APLL,		/*!< Base clock for audio PLL */
 | |
| 	CLK_BASE_CGU_OUT0,	/*!< Base clock for CGUOUT0 pin */
 | |
| 	CLK_BASE_CGU_OUT1,	/*!< Base clock for CGUOUT1 pin */
 | |
| 	CLK_BASE_LAST,
 | |
| 	CLK_BASE_NONE = CLK_BASE_LAST
 | |
| } CHIP_CGU_BASE_CLK_T;
 | |
| 
 | |
| /**
 | |
|  * @brief CGU dividers
 | |
|  * CGU dividers provide an extra clock state where a specific clock can be
 | |
|  * divided before being routed to a peripheral group. A divider accepts an
 | |
|  * input clock and then divides it. To use the divided clock for a base clock
 | |
|  * group, use the divider as the input clock for the base clock (for example,
 | |
|  * use CLKIN_IDIVB, where CLKIN_MAINPLL might be the input into the divider).
 | |
|  */
 | |
| typedef enum CHIP_CGU_IDIV {
 | |
| 	CLK_IDIV_A,		/*!< CGU clock divider A */
 | |
| 	CLK_IDIV_B,		/*!< CGU clock divider B */
 | |
| 	CLK_IDIV_C,		/*!< CGU clock divider A */
 | |
| 	CLK_IDIV_D,		/*!< CGU clock divider D */
 | |
| 	CLK_IDIV_E,		/*!< CGU clock divider E */
 | |
| 	CLK_IDIV_LAST
 | |
| } CHIP_CGU_IDIV_T;
 | |
| 
 | |
| #define CHIP_CGU_IDIV_MASK(x)  ("\x03\x0F\x0F\x0F\xFF"[x])
 | |
| 
 | |
| /**
 | |
|  * @brief Peripheral clocks
 | |
|  * Peripheral clocks are individual clocks routed to peripherals. Although
 | |
|  * multiple peripherals may share a same base clock, each peripheral's clock
 | |
|  * can be enabled or disabled individually. Some peripheral clocks also have
 | |
|  * additional dividers associated with them.
 | |
|  */
 | |
| typedef enum CHIP_CCU_CLK {
 | |
| 	/* CCU1 clocks */
 | |
| 	CLK_APB3_BUS,		/*!< APB3 bus clock from base clock CLK_BASE_APB3 */
 | |
| 	CLK_APB3_I2C1,		/*!< I2C1 register/perigheral clock from base clock CLK_BASE_APB3 */
 | |
| 	CLK_APB3_DAC,		/*!< DAC peripheral clock from base clock CLK_BASE_APB3 */
 | |
| 	CLK_APB3_ADC0,		/*!< ADC0 register/perigheral clock from base clock CLK_BASE_APB3 */
 | |
| 	CLK_APB3_ADC1,		/*!< ADC1 register/perigheral clock from base clock CLK_BASE_APB3 */
 | |
| 	CLK_APB3_CAN0,		/*!< CAN0 register/perigheral clock from base clock CLK_BASE_APB3 */
 | |
| 	CLK_APB1_BUS = 32,	/*!< APB1 bus clock clock from base clock CLK_BASE_APB1 */
 | |
| 	CLK_APB1_MOTOCON,	/*!< Motor controller register/perigheral clock from base clock CLK_BASE_APB1 */
 | |
| 	CLK_APB1_I2C0,		/*!< I2C0 register/perigheral clock from base clock CLK_BASE_APB1 */
 | |
| 	CLK_APB1_I2S,		/*!< I2S register/perigheral clock from base clock CLK_BASE_APB1 */
 | |
| 	CLK_APB1_CAN1,		/*!< CAN1 register/perigheral clock from base clock CLK_BASE_APB1 */
 | |
| 	CLK_SPIFI = 64,		/*!< SPIFI SCKI input clock from base clock CLK_BASE_SPIFI */
 | |
| 	CLK_MX_BUS = 96,	/*!< M3/M4 BUS core clock from base clock CLK_BASE_MX */
 | |
| 	CLK_MX_SPIFI,		/*!< SPIFI register clock from base clock CLK_BASE_MX */
 | |
| 	CLK_MX_GPIO,		/*!< GPIO register clock from base clock CLK_BASE_MX */
 | |
| 	CLK_MX_LCD,			/*!< LCD register clock from base clock CLK_BASE_MX */
 | |
| 	CLK_MX_ETHERNET,	/*!< ETHERNET register clock from base clock CLK_BASE_MX */
 | |
| 	CLK_MX_USB0,		/*!< USB0 register clock from base clock CLK_BASE_MX */
 | |
| 	CLK_MX_EMC,			/*!< EMC clock from base clock CLK_BASE_MX */
 | |
| 	CLK_MX_SDIO,		/*!< SDIO register clock from base clock CLK_BASE_MX */
 | |
| 	CLK_MX_DMA,			/*!< DMA register clock from base clock CLK_BASE_MX */
 | |
| 	CLK_MX_MXCORE,		/*!< M3/M4 CPU core clock from base clock CLK_BASE_MX */
 | |
| 	RESERVED_ALIGN = CLK_MX_MXCORE + 3,
 | |
| 	CLK_MX_SCT,			/*!< SCT register clock from base clock CLK_BASE_MX */
 | |
| 	CLK_MX_USB1,		/*!< USB1 register clock from base clock CLK_BASE_MX */
 | |
| 	CLK_MX_EMC_DIV,		/*!< ENC divider clock from base clock CLK_BASE_MX */
 | |
| 	CLK_MX_FLASHA,		/*!< FLASHA bank clock from base clock CLK_BASE_MX */
 | |
| 	CLK_MX_FLASHB,		/*!< FLASHB bank clock from base clock CLK_BASE_MX */
 | |
| #if defined(CHIP_LPC43XX)
 | |
| 	CLK_M4_M0APP,		/*!< M0 app CPU core clock from base clock CLK_BASE_MX */
 | |
| 	CLK_MX_ADCHS,		/*!< ADCHS clock from base clock CLK_BASE_ADCHS */
 | |
| #else
 | |
| 	CLK_RESERVED1,
 | |
| 	CLK_RESERVED2,
 | |
| #endif
 | |
| 	CLK_MX_EEPROM,		/*!< EEPROM clock from base clock CLK_BASE_MX */
 | |
| 	CLK_MX_WWDT = 128,	/*!< WWDT register clock from base clock CLK_BASE_MX */
 | |
| 	CLK_MX_UART0,		/*!< UART0 register clock from base clock CLK_BASE_MX */
 | |
| 	CLK_MX_UART1,		/*!< UART1 register clock from base clock CLK_BASE_MX */
 | |
| 	CLK_MX_SSP0,		/*!< SSP0 register clock from base clock CLK_BASE_MX */
 | |
| 	CLK_MX_TIMER0,		/*!< TIMER0 register/perigheral clock from base clock CLK_BASE_MX */
 | |
| 	CLK_MX_TIMER1,		/*!< TIMER1 register/perigheral clock from base clock CLK_BASE_MX */
 | |
| 	CLK_MX_SCU,			/*!< SCU register/perigheral clock from base clock CLK_BASE_MX */
 | |
| 	CLK_MX_CREG,		/*!< CREG clock from base clock CLK_BASE_MX */
 | |
| 	CLK_MX_RITIMER = 160,	/*!< RITIMER register/perigheral clock from base clock CLK_BASE_MX */
 | |
| 	CLK_MX_UART2,		/*!< UART3 register clock from base clock CLK_BASE_MX */
 | |
| 	CLK_MX_UART3,		/*!< UART4 register clock from base clock CLK_BASE_MX */
 | |
| 	CLK_MX_TIMER2,		/*!< TIMER2 register/perigheral clock from base clock CLK_BASE_MX */
 | |
| 	CLK_MX_TIMER3,		/*!< TIMER3 register/perigheral clock from base clock CLK_BASE_MX */
 | |
| 	CLK_MX_SSP1,		/*!< SSP1 register clock from base clock CLK_BASE_MX */
 | |
| 	CLK_MX_QEI,			/*!< QEI register/perigheral clock from base clock CLK_BASE_MX */
 | |
| #if defined(CHIP_LPC43XX)
 | |
| 	CLK_PERIPH_BUS = 192,	/*!< Peripheral bus clock from base clock CLK_BASE_PERIPH */
 | |
| 	CLK_RESERVED3,
 | |
| 	CLK_PERIPH_CORE,	/*!< Peripheral core clock from base clock CLK_BASE_PERIPH */
 | |
| 	CLK_PERIPH_SGPIO,	/*!< SGPIO clock from base clock CLK_BASE_PERIPH */
 | |
| #else
 | |
| 	CLK_RESERVED3 = 192,
 | |
| 	CLK_RESERVED3A,
 | |
| 	CLK_RESERVED4,
 | |
| 	CLK_RESERVED5,
 | |
| #endif
 | |
| 	CLK_USB0 = 224,			/*!< USB0 clock from base clock CLK_BASE_USB0 */
 | |
| 	CLK_USB1 = 256,			/*!< USB1 clock from base clock CLK_BASE_USB1 */
 | |
| #if defined(CHIP_LPC43XX)
 | |
| 	CLK_SPI = 288,			/*!< SPI clock from base clock CLK_BASE_SPI */
 | |
| 	CLK_ADCHS = 320,		/*!< ADCHS clock from base clock CLK_BASE_ADCHS */
 | |
| #else
 | |
| 	CLK_RESERVED7 = 320,
 | |
| 	CLK_RESERVED8,
 | |
| #endif
 | |
| 	CLK_CCU1_LAST,
 | |
| 
 | |
| 	/* CCU2 clocks */
 | |
| 	CLK_CCU2_START,
 | |
| 	CLK_APLL = CLK_CCU2_START,	/*!< Audio PLL clock from base clock CLK_BASE_APLL */
 | |
| 	RESERVED_ALIGNB = CLK_CCU2_START + 31,
 | |
| 	CLK_APB2_UART3,			/*!< UART3 clock from base clock CLK_BASE_UART3 */
 | |
| 	RESERVED_ALIGNC = CLK_CCU2_START + 63,
 | |
| 	CLK_APB2_UART2,			/*!< UART2 clock from base clock CLK_BASE_UART2 */
 | |
| 	RESERVED_ALIGND = CLK_CCU2_START + 95,
 | |
| 	CLK_APB0_UART1,			/*!< UART1 clock from base clock CLK_BASE_UART1 */
 | |
| 	RESERVED_ALIGNE = CLK_CCU2_START + 127,
 | |
| 	CLK_APB0_UART0,			/*!< UART0 clock from base clock CLK_BASE_UART0 */
 | |
| 	RESERVED_ALIGNF = CLK_CCU2_START + 159,
 | |
| 	CLK_APB2_SSP1,			/*!< SSP1 clock from base clock CLK_BASE_SSP1 */
 | |
| 	RESERVED_ALIGNG = CLK_CCU2_START + 191,
 | |
| 	CLK_APB0_SSP0,			/*!< SSP0 clock from base clock CLK_BASE_SSP0 */
 | |
| 	RESERVED_ALIGNH = CLK_CCU2_START + 223,
 | |
| 	CLK_APB2_SDIO,			/*!< SDIO clock from base clock CLK_BASE_SDIO */
 | |
| 	CLK_CCU2_LAST
 | |
| } CHIP_CCU_CLK_T;
 | |
| 
 | |
| /**
 | |
|  * @}
 | |
|  */
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif /* __CHIP_CLOCKS_H_ */
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | 
