]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_MPU_M23_Nuvoton_NuMaker_PFM_M2351_IAR_GCC/Nuvoton_Code/StdDriver/inc/otg.h
Add Cortex M23 GCC and IAR ports. Add demo projects for Nuvoton NuMaker-PFM-2351.
[freertos] / FreeRTOS / Demo / CORTEX_MPU_M23_Nuvoton_NuMaker_PFM_M2351_IAR_GCC / Nuvoton_Code / StdDriver / inc / otg.h
1 /**************************************************************************//**\r
2  * @file     otg.h\r
3  * @version  V3.00\r
4  * @brief    M2351 series OTG driver header file\r
5  *\r
6  * @copyright (C) 2016 Nuvoton Technology Corp. All rights reserved.\r
7  ******************************************************************************/\r
8 #ifndef __OTG_H__\r
9 #define __OTG_H__\r
10 \r
11 /*---------------------------------------------------------------------------------------------------------*/\r
12 /* Include related headers                                                                                 */\r
13 /*---------------------------------------------------------------------------------------------------------*/\r
14 #include "M2351.h"\r
15 \r
16 #ifdef __cplusplus\r
17 extern "C"\r
18 {\r
19 #endif\r
20 \r
21 \r
22 /** @addtogroup Standard_Driver Standard Driver\r
23   @{\r
24 */\r
25 \r
26 /** @addtogroup OTG_Driver OTG Driver\r
27   @{\r
28 */\r
29 \r
30 \r
31 /** @addtogroup OTG_EXPORTED_CONSTANTS OTG Exported Constants\r
32   @{\r
33 */\r
34 \r
35 \r
36 \r
37 /*---------------------------------------------------------------------------------------------------------*/\r
38 /* OTG constant definitions                                                                                */\r
39 /*---------------------------------------------------------------------------------------------------------*/\r
40 #define OTG_VBUS_EN_ACTIVE_HIGH      (0UL) /*!< USB VBUS power switch enable signal is active high. */\r
41 #define OTG_VBUS_EN_ACTIVE_LOW       (1UL) /*!< USB VBUS power switch enable signal is active low. */\r
42 #define OTG_VBUS_ST_VALID_HIGH       (0UL) /*!< USB VBUS power switch valid status is high. */\r
43 #define OTG_VBUS_ST_VALID_LOW        (1UL) /*!< USB VBUS power switch valid status is low. */\r
44 \r
45 \r
46 /*@}*/ /* end of group OTG_EXPORTED_CONSTANTS */\r
47 \r
48 \r
49 /** @addtogroup OTG_EXPORTED_FUNCTIONS OTG Exported Functions\r
50   @{\r
51 */\r
52 \r
53 /*---------------------------------------------------------------------------------------------------------*/\r
54 /*  Define Macros and functions                                                                            */\r
55 /*---------------------------------------------------------------------------------------------------------*/\r
56 \r
57 \r
58 /**\r
59   * @brief This macro is used to enable OTG function\r
60   * @param None\r
61   * @return None\r
62   * @details This macro will set OTGEN bit of OTG_CTL register to enable OTG function.\r
63   */\r
64 #define OTG_ENABLE()    (OTG->CTL |= OTG_CTL_OTGEN_Msk)\r
65 \r
66 /**\r
67   * @brief This macro is used to enable OTG function Macro for Non-Secure\r
68   */\r
69 #define OTG_ENABLE_NS() (OTG_NS->CTL |= OTG_CTL_OTGEN_Msk)\r
70 \r
71 /**\r
72   * @brief This macro is used to disable OTG function\r
73   * @param None\r
74   * @return None\r
75   * @details This macro will clear OTGEN bit of OTG_CTL register to disable OTG function.\r
76   */\r
77 #define OTG_DISABLE()    (OTG->CTL &= ~OTG_CTL_OTGEN_Msk)\r
78 \r
79 /**\r
80   * @brief This macro is used to disable OTG function Macro for Non-Secure\r
81   */\r
82 #define OTG_DISABLE_NS() (OTG_NS->CTL &= ~OTG_CTL_OTGEN_Msk)\r
83 \r
84 /**\r
85   * @brief This macro is used to enable USB PHY\r
86   * @param None\r
87   * @return None\r
88   * @details When the USB role is selected as OTG device, use this macro to enable USB PHY.\r
89   *          This macro will set OTGPHYEN bit of OTG_PHYCTL register to enable USB PHY.\r
90   */\r
91 #define OTG_ENABLE_PHY()    (OTG->PHYCTL |= OTG_PHYCTL_OTGPHYEN_Msk)\r
92 \r
93 /**\r
94   * @brief This macro is used to enable USB PHY Macro for Non-Secure\r
95   */\r
96 #define OTG_ENABLE_PHY_NS() (OTG_NS->PHYCTL |= OTG_PHYCTL_OTGPHYEN_Msk)\r
97 \r
98 /**\r
99   * @brief This macro is used to disable USB PHY\r
100   * @param None\r
101   * @return None\r
102   * @details This macro will clear OTGPHYEN bit of OTG_PHYCTL register to disable USB PHY.\r
103   */\r
104 #define OTG_DISABLE_PHY()    (OTG->PHYCTL &= ~OTG_PHYCTL_OTGPHYEN_Msk)\r
105 \r
106 /**\r
107   * @brief This macro is used to disable USB PHY Macro for Non-Secure\r
108   */\r
109 #define OTG_DISABLE_PHY_NS() (OTG_NS->PHYCTL &= ~OTG_PHYCTL_OTGPHYEN_Msk)\r
110 \r
111 /**\r
112   * @brief This macro is used to enable ID detection function\r
113   * @param None\r
114   * @return None\r
115   * @details This macro will set IDDETEN bit of OTG_PHYCTL register to enable ID detection function.\r
116   */\r
117 #define OTG_ENABLE_ID_DETECT()    (OTG->PHYCTL |= OTG_PHYCTL_IDDETEN_Msk)\r
118 \r
119 /**\r
120   * @brief This macro is used to enable ID detection function Macro for Non-Secure\r
121   */\r
122 #define OTG_ENABLE_ID_DETECT_NS() (OTG_NS->PHYCTL |= OTG_PHYCTL_IDDETEN_Msk)\r
123 \r
124 /**\r
125   * @brief This macro is used to disable ID detection function\r
126   * @param None\r
127   * @return None\r
128   * @details This macro will clear IDDETEN bit of OTG_PHYCTL register to disable ID detection function.\r
129   */\r
130 #define OTG_DISABLE_ID_DETECT()    (OTG->PHYCTL &= ~OTG_PHYCTL_IDDETEN_Msk)\r
131 \r
132 /**\r
133   * @brief This macro is used to disable ID detection function Macro for Non-Secure\r
134   */\r
135 #define OTG_DISABLE_ID_DETECT_NS() (OTG_NS->PHYCTL &= ~OTG_PHYCTL_IDDETEN_Msk)\r
136 \r
137 /**\r
138   * @brief This macro is used to enable OTG wake-up function\r
139   * @param None\r
140   * @return None\r
141   * @details This macro will set WKEN bit of OTG_CTL register to enable OTG wake-up function.\r
142   */\r
143 #define OTG_ENABLE_WAKEUP()    (OTG->CTL |= OTG_CTL_WKEN_Msk)\r
144 \r
145 /**\r
146   * @brief This macro is used to enable OTG wake-up function Macro for Non-Secure\r
147   */\r
148 #define OTG_ENABLE_WAKEUP_NS() (OTG_NS->CTL |= OTG_CTL_WKEN_Msk)\r
149 \r
150 /**\r
151   * @brief This macro is used to disable OTG wake-up function\r
152   * @param None\r
153   * @return None\r
154   * @details This macro will clear WKEN bit of OTG_CTL register to disable OTG wake-up function.\r
155   */\r
156 #define OTG_DISABLE_WAKEUP()    (OTG->CTL &= ~OTG_CTL_WKEN_Msk)\r
157 \r
158 /**\r
159   * @brief This macro is used to disable OTG wake-up function Macro for Non-Secure\r
160   */\r
161 #define OTG_DISABLE_WAKEUP_NS() (OTG_NS->CTL &= ~OTG_CTL_WKEN_Msk)\r
162 \r
163 /**\r
164   * @brief This macro is used to set the polarity of USB_VBUS_EN pin\r
165   * @param[in] u32Pol The polarity selection. Valid values are listed below.\r
166   *                    - \ref OTG_VBUS_EN_ACTIVE_HIGH\r
167   *                    - \ref OTG_VBUS_EN_ACTIVE_LOW\r
168   * @return None\r
169   * @details This macro is used to set the polarity of external USB VBUS power switch enable signal.\r
170   */\r
171 #define OTG_SET_VBUS_EN_POL(u32Pol)    (OTG->PHYCTL = (OTG->PHYCTL & (~OTG_PHYCTL_VBENPOL_Msk)) | ((u32Pol)<<OTG_PHYCTL_VBENPOL_Pos))\r
172 \r
173 /**\r
174   * @brief This macro is used to set the polarity of USB_VBUS_EN pin Macro for Non-Secure\r
175   */\r
176 #define OTG_SET_VBUS_EN_POL_NS(u32Pol) (OTG_NS->PHYCTL = (OTG_NS->PHYCTL & (~OTG_PHYCTL_VBENPOL_Msk)) | ((u32Pol)<<OTG_PHYCTL_VBENPOL_Pos))\r
177 \r
178 /**\r
179   * @brief This macro is used to set the polarity of USB_VBUS_ST pin\r
180   * @param[in] u32Pol The polarity selection. Valid values are listed below.\r
181   *                    - \ref OTG_VBUS_ST_VALID_HIGH\r
182   *                    - \ref OTG_VBUS_ST_VALID_LOW\r
183   * @return None\r
184   * @details This macro is used to set the polarity of external USB VBUS power switch status signal.\r
185   */\r
186 #define OTG_SET_VBUS_STS_POL(u32Pol)    (OTG->PHYCTL = (OTG->PHYCTL & (~OTG_PHYCTL_VBSTSPOL_Msk)) | ((u32Pol)<<OTG_PHYCTL_VBSTSPOL_Pos))\r
187 \r
188 /**\r
189   * @brief This macro is used to set the polarity of USB_VBUS_ST pin Macro for Non-Secure\r
190   */\r
191 #define OTG_SET_VBUS_STS_POL_NS(u32Pol) (OTG_NS->PHYCTL = (OTG_NS->PHYCTL & (~OTG_PHYCTL_VBSTSPOL_Msk)) | ((u32Pol)<<OTG_PHYCTL_VBSTSPOL_Pos))\r
192 \r
193 /**\r
194   * @brief This macro is used to enable OTG related interrupts\r
195   * @param[in] u32Mask The combination of interrupt source. Each bit corresponds to a interrupt source. Valid values are listed below.\r
196   *                    - \ref OTG_INTEN_ROLECHGIEN_Msk\r
197   *                    - \ref OTG_INTEN_VBEIEN_Msk\r
198   *                    - \ref OTG_INTEN_SRPFIEN_Msk\r
199   *                    - \ref OTG_INTEN_HNPFIEN_Msk\r
200   *                    - \ref OTG_INTEN_GOIDLEIEN_Msk\r
201   *                    - \ref OTG_INTEN_IDCHGIEN_Msk\r
202   *                    - \ref OTG_INTEN_PDEVIEN_Msk\r
203   *                    - \ref OTG_INTEN_HOSTIEN_Msk\r
204   *                    - \ref OTG_INTEN_BVLDCHGIEN_Msk\r
205   *                    - \ref OTG_INTEN_AVLDCHGIEN_Msk\r
206   *                    - \ref OTG_INTEN_VBCHGIEN_Msk\r
207   *                    - \ref OTG_INTEN_SECHGIEN_Msk\r
208   *                    - \ref OTG_INTEN_SRPDETIEN_Msk\r
209   * @return None\r
210   * @details This macro will enable OTG related interrupts specified by u32Mask parameter.\r
211   */\r
212 #define OTG_ENABLE_INT(u32Mask)    (OTG->INTEN |= (u32Mask))\r
213 \r
214 /**\r
215   * @brief This macro is used to enable OTG related interrupts Macro for Non-Secure\r
216   */\r
217 #define OTG_ENABLE_INT_NS(u32Mask) (OTG_NS->INTEN |= (u32Mask))\r
218 \r
219 /**\r
220   * @brief This macro is used to disable OTG related interrupts\r
221   * @param[in] u32Mask The combination of interrupt source. Each bit corresponds to a interrupt source. Valid values are listed below.\r
222   *                    - \ref OTG_INTEN_ROLECHGIEN_Msk\r
223   *                    - \ref OTG_INTEN_VBEIEN_Msk\r
224   *                    - \ref OTG_INTEN_SRPFIEN_Msk\r
225   *                    - \ref OTG_INTEN_HNPFIEN_Msk\r
226   *                    - \ref OTG_INTEN_GOIDLEIEN_Msk\r
227   *                    - \ref OTG_INTEN_IDCHGIEN_Msk\r
228   *                    - \ref OTG_INTEN_PDEVIEN_Msk\r
229   *                    - \ref OTG_INTEN_HOSTIEN_Msk\r
230   *                    - \ref OTG_INTEN_BVLDCHGIEN_Msk\r
231   *                    - \ref OTG_INTEN_AVLDCHGIEN_Msk\r
232   *                    - \ref OTG_INTEN_VBCHGIEN_Msk\r
233   *                    - \ref OTG_INTEN_SECHGIEN_Msk\r
234   *                    - \ref OTG_INTEN_SRPDETIEN_Msk\r
235   * @return None\r
236   * @details This macro will disable OTG related interrupts specified by u32Mask parameter.\r
237   */\r
238 #define OTG_DISABLE_INT(u32Mask)    (OTG->INTEN &= ~(u32Mask))\r
239 \r
240 /**\r
241   * @brief This macro is used to disable OTG related interrupts Macro for Non-Secure\r
242   */\r
243 #define OTG_DISABLE_INT_NS(u32Mask) (OTG_NS->INTEN &= ~(u32Mask))\r
244 \r
245 /**\r
246   * @brief This macro is used to get OTG related interrupt flags\r
247   * @param[in] u32Mask The combination of interrupt source. Each bit corresponds to a interrupt source. Valid values are listed below.\r
248   *                    - \ref OTG_INTSTS_ROLECHGIF_Msk\r
249   *                    - \ref OTG_INTSTS_VBEIF_Msk\r
250   *                    - \ref OTG_INTSTS_SRPFIF_Msk\r
251   *                    - \ref OTG_INTSTS_HNPFIF_Msk\r
252   *                    - \ref OTG_INTSTS_GOIDLEIF_Msk\r
253   *                    - \ref OTG_INTSTS_IDCHGIF_Msk\r
254   *                    - \ref OTG_INTSTS_PDEVIF_Msk\r
255   *                    - \ref OTG_INTSTS_HOSTIF_Msk\r
256   *                    - \ref OTG_INTSTS_BVLDCHGIF_Msk\r
257   *                    - \ref OTG_INTSTS_AVLDCHGIF_Msk\r
258   *                    - \ref OTG_INTSTS_VBCHGIF_Msk\r
259   *                    - \ref OTG_INTSTS_SECHGIF_Msk\r
260   *                    - \ref OTG_INTSTS_SRPDETIF_Msk\r
261   * @return Interrupt flags of selected sources.\r
262   * @details This macro will return OTG related interrupt flags specified by u32Mask parameter.\r
263   */\r
264 #define OTG_GET_INT_FLAG(u32Mask)    (OTG->INTSTS & (u32Mask))\r
265 \r
266 /**\r
267   * @brief This macro is used to get OTG related interrupt flags Macro for Non-Secure\r
268   */\r
269 #define OTG_GET_INT_FLAG_NS(u32Mask) (OTG_NS->INTSTS & (u32Mask))\r
270 \r
271 /**\r
272   * @brief This macro is used to clear OTG related interrupt flags\r
273   * @param[in] u32Mask The combination of interrupt source. Each bit corresponds to a interrupt source. Valid values are listed below.\r
274   *                    - \ref OTG_INTSTS_ROLECHGIF_Msk\r
275   *                    - \ref OTG_INTSTS_VBEIF_Msk\r
276   *                    - \ref OTG_INTSTS_SRPFIF_Msk\r
277   *                    - \ref OTG_INTSTS_HNPFIF_Msk\r
278   *                    - \ref OTG_INTSTS_GOIDLEIF_Msk\r
279   *                    - \ref OTG_INTSTS_IDCHGIF_Msk\r
280   *                    - \ref OTG_INTSTS_PDEVIF_Msk\r
281   *                    - \ref OTG_INTSTS_HOSTIF_Msk\r
282   *                    - \ref OTG_INTSTS_BVLDCHGIF_Msk\r
283   *                    - \ref OTG_INTSTS_AVLDCHGIF_Msk\r
284   *                    - \ref OTG_INTSTS_VBCHGIF_Msk\r
285   *                    - \ref OTG_INTSTS_SECHGIF_Msk\r
286   *                    - \ref OTG_INTSTS_SRPDETIF_Msk\r
287   * @return None\r
288   * @details This macro will clear OTG related interrupt flags specified by u32Mask parameter.\r
289   */\r
290 #define OTG_CLR_INT_FLAG(u32Mask)    (OTG->INTSTS = (u32Mask))\r
291 \r
292 /**\r
293   * @brief This macro is used to clear OTG related interrupt flags Macro for Non-Secure\r
294   */\r
295 #define OTG_CLR_INT_FLAG_NS(u32Mask) (OTG_NS->INTSTS = (u32Mask))\r
296 \r
297 /**\r
298   * @brief This macro is used to get OTG related status\r
299   * @param[in] u32Mask The combination of user specified source. Valid values are listed below.\r
300   *                    - \ref OTG_STATUS_OVERCUR_Msk\r
301   *                    - \ref OTG_STATUS_IDSTS_Msk\r
302   *                    - \ref OTG_STATUS_SESSEND_Msk\r
303   *                    - \ref OTG_STATUS_BVLD_Msk\r
304   *                    - \ref OTG_STATUS_AVLD_Msk\r
305   *                    - \ref OTG_STATUS_VBUSVLD_Msk\r
306   * @return The user specified status.\r
307   * @details This macro will return OTG related status specified by u32Mask parameter.\r
308   */\r
309 #define OTG_GET_STATUS(u32Mask)    (OTG->STATUS & (u32Mask))\r
310 \r
311 /**\r
312   * @brief This macro is used to get OTG related status Macro for Non-Secure\r
313   */\r
314 #define OTG_GET_STATUS_NS(u32Mask) (OTG_NS->STATUS & (u32Mask))\r
315 \r
316 \r
317 \r
318 /*@}*/ /* end of group OTG_EXPORTED_FUNCTIONS */\r
319 \r
320 /*@}*/ /* end of group OTG_Driver */\r
321 \r
322 /*@}*/ /* end of group Standard_Driver */\r
323 \r
324 #ifdef __cplusplus\r
325 }\r
326 #endif\r
327 \r
328 \r
329 #endif /* __OTG_H__ */\r
330 \r
331 /*** (C) COPYRIGHT 2016 Nuvoton Technology Corp. ***/\r