espressif_tinyusb/hw/mcu/nxp/lpc_chip_18xx/inc/chip_clocks.h

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_ */