]> git.sur5r.net Git - freertos/blob
460d45b471b756713a160f2b501dc04059828fc7
[freertos] /
1 /*\r
2  * @brief CGU/CCU registers and control functions\r
3  *\r
4  * @note\r
5  * Copyright(C) NXP Semiconductors, 2012\r
6  * All rights reserved.\r
7  *\r
8  * @par\r
9  * Software that is described herein is for illustrative purposes only\r
10  * which provides customers with programming information regarding the\r
11  * LPC products.  This software is supplied "AS IS" without any warranties of\r
12  * any kind, and NXP Semiconductors and its licensor disclaim any and\r
13  * all warranties, express or implied, including all implied warranties of\r
14  * merchantability, fitness for a particular purpose and non-infringement of\r
15  * intellectual property rights.  NXP Semiconductors assumes no responsibility\r
16  * or liability for the use of the software, conveys no license or rights under any\r
17  * patent, copyright, mask work right, or any other intellectual property rights in\r
18  * or to any products. NXP Semiconductors reserves the right to make changes\r
19  * in the software without notification. NXP Semiconductors also makes no\r
20  * representation or warranty that such application will be suitable for the\r
21  * specified use without further testing or modification.\r
22  *\r
23  * @par\r
24  * Permission to use, copy, modify, and distribute this software and its\r
25  * documentation is hereby granted, under NXP Semiconductors' and its\r
26  * licensor's relevant copyrights in the software, without fee, provided that it\r
27  * is used in conjunction with NXP Semiconductors microcontrollers.  This\r
28  * copyright, permission, and disclaimer notice must appear in all copies of\r
29  * this code.\r
30  */\r
31 \r
32 #ifndef __CGUCCU_18XX_43XX_H_\r
33 #define __CGUCCU_18XX_43XX_H_\r
34 \r
35 #include "cmsis.h"\r
36 #include "chip_clocks.h"\r
37 \r
38 #ifdef __cplusplus\r
39 extern "C" {\r
40 #endif\r
41 \r
42 /** @ingroup CLOCK_18XX_43XX\r
43  * @{\r
44  */\r
45 \r
46 /**\r
47  * Audio or USB PLL selection\r
48  */\r
49 typedef enum CHIP_CGU_USB_AUDIO_PLL {\r
50         CGU_USB_PLL,\r
51         CGU_AUDIO_PLL\r
52 } CHIP_CGU_USB_AUDIO_PLL_T;\r
53 \r
54 /**\r
55  * PLL register block\r
56  */\r
57 typedef struct {\r
58         __I  uint32_t  PLL_STAT;                                /*!< PLL status register */\r
59         __IO uint32_t  PLL_CTRL;                                /*!< PLL control register */\r
60         __IO uint32_t  PLL_MDIV;                                /*!< PLL M-divider register */\r
61         __IO uint32_t  PLL_NP_DIV;                              /*!< PLL N/P-divider register */\r
62 } CGU_PLL_REG_T;\r
63 \r
64 /**\r
65  * @brief LPC18XX/43XX CGU register block structure\r
66  */\r
67 typedef struct {                                                        /*!< (@ 0x40050000) CGU Structure          */\r
68         __I  uint32_t  RESERVED0[5];\r
69         __IO uint32_t  FREQ_MON;                                /*!< (@ 0x40050014) Frequency monitor register */\r
70         __IO uint32_t  XTAL_OSC_CTRL;                   /*!< (@ 0x40050018) Crystal oscillator control register */\r
71         CGU_PLL_REG_T  PLL[CGU_AUDIO_PLL + 1];  /*!< (@ 0x4005001C) USB and audio PLL blocks */\r
72         __IO uint32_t  PLL0AUDIO_FRAC;                  /*!< (@ 0x4005003C) PLL0 (audio)           */\r
73         __I  uint32_t  PLL1_STAT;                               /*!< (@ 0x40050040) PLL1 status register   */\r
74         __IO uint32_t  PLL1_CTRL;                               /*!< (@ 0x40050044) PLL1 control register  */\r
75         __IO uint32_t  IDIV_CTRL[CLK_IDIV_LAST];/*!< (@ 0x40050048) Integer divider A-E control registers */\r
76         __IO uint32_t  BASE_CLK[CLK_BASE_LAST]; /*!< (@ 0x4005005C) Start of base clock registers */\r
77 } LPC_CGU_T;\r
78 \r
79 /**\r
80  * @brief CCU clock config/status register pair\r
81  */\r
82 typedef struct {\r
83         __IO uint32_t  CFG;                                             /*!< CCU clock configuration register */\r
84         __I  uint32_t  STAT;                                    /*!< CCU clock status register */\r
85 } CCU_CFGSTAT_T;\r
86 \r
87 /**\r
88  * @brief CCU1 register block structure\r
89  */\r
90 typedef struct {                                                        /*!< (@ 0x40051000) CCU1 Structure         */\r
91         __IO uint32_t  PM;                                              /*!< (@ 0x40051000) CCU1 power mode register */\r
92         __I  uint32_t  BASE_STAT;                               /*!< (@ 0x40051004) CCU1 base clocks status register */\r
93         __I  uint32_t  RESERVED0[62];\r
94         CCU_CFGSTAT_T  CLKCCU[CLK_CCU1_LAST];   /*!< (@ 0x40051100) Start of CCU1 clock registers */\r
95 } LPC_CCU1_T;\r
96 \r
97 /**\r
98  * @brief CCU2 register block structure\r
99  */\r
100 typedef struct {                                                        /*!< (@ 0x40052000) CCU2 Structure         */\r
101         __IO uint32_t  PM;                                              /*!< (@ 0x40052000) Power mode register    */\r
102         __I  uint32_t  BASE_STAT;                               /*!< (@ 0x40052004) CCU base clocks status register */\r
103         __I  uint32_t  RESERVED0[62];\r
104         CCU_CFGSTAT_T  CLKCCU[CLK_CCU2_LAST - CLK_CCU1_LAST];   /*!< (@ 0x40052100) Start of CCU2 clock registers */\r
105 } LPC_CCU2_T;\r
106 \r
107 /**\r
108  * @}\r
109  */\r
110 \r
111 #ifdef __cplusplus\r
112 }\r
113 #endif\r
114 \r
115 #endif /* __CGUCCU_18XX_43XX_H_ */\r