]> git.sur5r.net Git - freertos/blob
b3de14214c48197ec7f35d98f15fb7f4ee9c274b
[freertos] /
1 /*\r
2  * @brief LPC18xx/43xx Reset Generator Unit driver\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 __RGU_18XX_43XX_H_\r
33 #define __RGU_18XX_43XX_H_\r
34 \r
35 #ifdef __cplusplus\r
36 extern "C" {\r
37 #endif\r
38 \r
39 /** @defgroup RGU_18XX_43XX CHIP: LPC18xx/43xx Reset Generator Unit (RGU) driver\r
40  * @ingroup CHIP_18XX_43XX_Drivers\r
41  * @{\r
42  */\r
43 \r
44 /**\r
45  * @brief RGU reset enumerations\r
46  */\r
47 typedef enum CHIP_RGU_RST {\r
48         RGU_CORE_RST,\r
49         RGU_PERIPH_RST,\r
50         RGU_MASTER_RST,\r
51         RGU_WWDT_RST = 4,\r
52         RGU_CREG_RST,\r
53         RGU_BUS_RST = 8,\r
54         RGU_SCU_RST,\r
55         RGU_M3_RST = 13,\r
56         RGU_LCD_RST = 16,\r
57         RGU_USB0_RST,\r
58         RGU_USB1_RST,\r
59         RGU_DMA_RST,\r
60         RGU_SDIO_RST,\r
61         RGU_EMC_RST,\r
62         RGU_ETHERNET_RST,\r
63         RGU_FLASHA_RST = 25,\r
64         RGU_EEPROM_RST = 27,\r
65         RGU_GPIO_RST,\r
66         RGU_FLASHB_RST,\r
67         RGU_TIMER0_RST = 32,\r
68         RGU_TIMER1_RST,\r
69         RGU_TIMER2_RST,\r
70         RGU_TIMER3_RST,\r
71         RGU_RITIMER_RST,\r
72         RGU_SCT_RST,\r
73         RGU_MOTOCONPWM_RST,\r
74         RGU_QEI_RST,\r
75         RGU_ADC0_RST,\r
76         RGU_ADC1_RST,\r
77         RGU_DAC_RST,\r
78         RGU_UART0_RST = 44,\r
79         RGU_UART1_RST,\r
80         RGU_UART2_RST,\r
81         RGU_UART3_RST,\r
82         RGU_I2C0_RST,\r
83         RGU_I2C1_RST,\r
84         RGU_SSP0_RST,\r
85         RGU_SSP1_RST,\r
86         RGU_I2S_RST,\r
87         RGU_SPIFI_RST,\r
88         RGU_CAN1_RST,\r
89         RGU_CAN0_RST,\r
90 #ifdef CHIP_LPC43XX\r
91         RGU_M0APP_RST,\r
92         RGU_SGPIO_RST,\r
93         RGU_SPI_RST,\r
94 #endif\r
95         RGU_LAST_RST = 63,\r
96 } CHIP_RGU_RST_T;\r
97 \r
98 /**\r
99  * @brief RGU register structure\r
100  */\r
101 typedef struct {                                                        /*!< RGU Structure          */\r
102         __I  uint32_t  RESERVED0[64];\r
103         __O  uint32_t  RESET_CTRL0;                             /*!< Reset control register 0 */\r
104         __O  uint32_t  RESET_CTRL1;                             /*!< Reset control register 1 */\r
105         __I  uint32_t  RESERVED1[2];\r
106         __IO uint32_t  RESET_STATUS0;                   /*!< Reset status register 0 */\r
107         __IO uint32_t  RESET_STATUS1;                   /*!< Reset status register 1 */\r
108         __IO uint32_t  RESET_STATUS2;                   /*!< Reset status register 2 */\r
109         __IO uint32_t  RESET_STATUS3;                   /*!< Reset status register 3 */\r
110         __I  uint32_t  RESERVED2[12];\r
111         __I  uint32_t  RESET_ACTIVE_STATUS0;    /*!< Reset active status register 0 */\r
112         __I  uint32_t  RESET_ACTIVE_STATUS1;    /*!< Reset active status register 1 */\r
113         __I  uint32_t  RESERVED3[170];\r
114         __IO uint32_t  RESET_EXT_STAT[RGU_LAST_RST + 1];/*!< Reset external status registers */\r
115 } LPC_RGU_T;\r
116 \r
117 /**\r
118  * @brief       Trigger a peripheral reset for the selected peripheral\r
119  * @param       ResetNumber     : Peripheral reset number to trigger\r
120  * @return      Nothing\r
121  */\r
122 void Chip_RGU_TriggerReset(CHIP_RGU_RST_T ResetNumber);\r
123 \r
124 /**\r
125  * @brief       Checks the reset status of a peripheral\r
126  * @param       ResetNumber     : Peripheral reset number to trigger\r
127  * @return      true if the periperal is still being reset\r
128  */\r
129 bool Chip_RGU_InReset(CHIP_RGU_RST_T ResetNumber);\r
130 \r
131 /**\r
132  * @brief       Clears reset for the selected peripheral\r
133  * @param       ResetNumber     : Peripheral reset number to trigger\r
134  * @return      Nothing\r
135  * Almost all peripherals will auto clear the reset bit. Only a few peripherals\r
136  * like the Cortex M0 Core in LPC43xx will not auto clear the reset and require\r
137  * this function to clear the reset bit.\r
138  */\r
139 void Chip_RGU_ClearReset(CHIP_RGU_RST_T ResetNumber);\r
140 \r
141 /**\r
142  * @}\r
143  */\r
144 \r
145 #ifdef __cplusplus\r
146 }\r
147 #endif\r
148 \r
149 #endif /* __RGU_18XX_43XX_H_ */\r