1 /**************************************************************************//**
\r
4 * @brief M2351 series OTG driver header file
\r
6 * @copyright (C) 2016 Nuvoton Technology Corp. All rights reserved.
\r
7 ******************************************************************************/
\r
11 /*---------------------------------------------------------------------------------------------------------*/
\r
12 /* Include related headers */
\r
13 /*---------------------------------------------------------------------------------------------------------*/
\r
22 /** @addtogroup Standard_Driver Standard Driver
\r
26 /** @addtogroup OTG_Driver OTG Driver
\r
31 /** @addtogroup OTG_EXPORTED_CONSTANTS OTG Exported Constants
\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
46 /*@}*/ /* end of group OTG_EXPORTED_CONSTANTS */
\r
49 /** @addtogroup OTG_EXPORTED_FUNCTIONS OTG Exported Functions
\r
53 /*---------------------------------------------------------------------------------------------------------*/
\r
54 /* Define Macros and functions */
\r
55 /*---------------------------------------------------------------------------------------------------------*/
\r
59 * @brief This macro is used to enable OTG function
\r
62 * @details This macro will set OTGEN bit of OTG_CTL register to enable OTG function.
\r
64 #define OTG_ENABLE() (OTG->CTL |= OTG_CTL_OTGEN_Msk)
\r
67 * @brief This macro is used to enable OTG function Macro for Non-Secure
\r
69 #define OTG_ENABLE_NS() (OTG_NS->CTL |= OTG_CTL_OTGEN_Msk)
\r
72 * @brief This macro is used to disable OTG function
\r
75 * @details This macro will clear OTGEN bit of OTG_CTL register to disable OTG function.
\r
77 #define OTG_DISABLE() (OTG->CTL &= ~OTG_CTL_OTGEN_Msk)
\r
80 * @brief This macro is used to disable OTG function Macro for Non-Secure
\r
82 #define OTG_DISABLE_NS() (OTG_NS->CTL &= ~OTG_CTL_OTGEN_Msk)
\r
85 * @brief This macro is used to enable USB PHY
\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
91 #define OTG_ENABLE_PHY() (OTG->PHYCTL |= OTG_PHYCTL_OTGPHYEN_Msk)
\r
94 * @brief This macro is used to enable USB PHY Macro for Non-Secure
\r
96 #define OTG_ENABLE_PHY_NS() (OTG_NS->PHYCTL |= OTG_PHYCTL_OTGPHYEN_Msk)
\r
99 * @brief This macro is used to disable USB PHY
\r
102 * @details This macro will clear OTGPHYEN bit of OTG_PHYCTL register to disable USB PHY.
\r
104 #define OTG_DISABLE_PHY() (OTG->PHYCTL &= ~OTG_PHYCTL_OTGPHYEN_Msk)
\r
107 * @brief This macro is used to disable USB PHY Macro for Non-Secure
\r
109 #define OTG_DISABLE_PHY_NS() (OTG_NS->PHYCTL &= ~OTG_PHYCTL_OTGPHYEN_Msk)
\r
112 * @brief This macro is used to enable ID detection function
\r
115 * @details This macro will set IDDETEN bit of OTG_PHYCTL register to enable ID detection function.
\r
117 #define OTG_ENABLE_ID_DETECT() (OTG->PHYCTL |= OTG_PHYCTL_IDDETEN_Msk)
\r
120 * @brief This macro is used to enable ID detection function Macro for Non-Secure
\r
122 #define OTG_ENABLE_ID_DETECT_NS() (OTG_NS->PHYCTL |= OTG_PHYCTL_IDDETEN_Msk)
\r
125 * @brief This macro is used to disable ID detection function
\r
128 * @details This macro will clear IDDETEN bit of OTG_PHYCTL register to disable ID detection function.
\r
130 #define OTG_DISABLE_ID_DETECT() (OTG->PHYCTL &= ~OTG_PHYCTL_IDDETEN_Msk)
\r
133 * @brief This macro is used to disable ID detection function Macro for Non-Secure
\r
135 #define OTG_DISABLE_ID_DETECT_NS() (OTG_NS->PHYCTL &= ~OTG_PHYCTL_IDDETEN_Msk)
\r
138 * @brief This macro is used to enable OTG wake-up function
\r
141 * @details This macro will set WKEN bit of OTG_CTL register to enable OTG wake-up function.
\r
143 #define OTG_ENABLE_WAKEUP() (OTG->CTL |= OTG_CTL_WKEN_Msk)
\r
146 * @brief This macro is used to enable OTG wake-up function Macro for Non-Secure
\r
148 #define OTG_ENABLE_WAKEUP_NS() (OTG_NS->CTL |= OTG_CTL_WKEN_Msk)
\r
151 * @brief This macro is used to disable OTG wake-up function
\r
154 * @details This macro will clear WKEN bit of OTG_CTL register to disable OTG wake-up function.
\r
156 #define OTG_DISABLE_WAKEUP() (OTG->CTL &= ~OTG_CTL_WKEN_Msk)
\r
159 * @brief This macro is used to disable OTG wake-up function Macro for Non-Secure
\r
161 #define OTG_DISABLE_WAKEUP_NS() (OTG_NS->CTL &= ~OTG_CTL_WKEN_Msk)
\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
169 * @details This macro is used to set the polarity of external USB VBUS power switch enable signal.
\r
171 #define OTG_SET_VBUS_EN_POL(u32Pol) (OTG->PHYCTL = (OTG->PHYCTL & (~OTG_PHYCTL_VBENPOL_Msk)) | ((u32Pol)<<OTG_PHYCTL_VBENPOL_Pos))
\r
174 * @brief This macro is used to set the polarity of USB_VBUS_EN pin Macro for Non-Secure
\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
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
184 * @details This macro is used to set the polarity of external USB VBUS power switch status signal.
\r
186 #define OTG_SET_VBUS_STS_POL(u32Pol) (OTG->PHYCTL = (OTG->PHYCTL & (~OTG_PHYCTL_VBSTSPOL_Msk)) | ((u32Pol)<<OTG_PHYCTL_VBSTSPOL_Pos))
\r
189 * @brief This macro is used to set the polarity of USB_VBUS_ST pin Macro for Non-Secure
\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
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
210 * @details This macro will enable OTG related interrupts specified by u32Mask parameter.
\r
212 #define OTG_ENABLE_INT(u32Mask) (OTG->INTEN |= (u32Mask))
\r
215 * @brief This macro is used to enable OTG related interrupts Macro for Non-Secure
\r
217 #define OTG_ENABLE_INT_NS(u32Mask) (OTG_NS->INTEN |= (u32Mask))
\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
236 * @details This macro will disable OTG related interrupts specified by u32Mask parameter.
\r
238 #define OTG_DISABLE_INT(u32Mask) (OTG->INTEN &= ~(u32Mask))
\r
241 * @brief This macro is used to disable OTG related interrupts Macro for Non-Secure
\r
243 #define OTG_DISABLE_INT_NS(u32Mask) (OTG_NS->INTEN &= ~(u32Mask))
\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
264 #define OTG_GET_INT_FLAG(u32Mask) (OTG->INTSTS & (u32Mask))
\r
267 * @brief This macro is used to get OTG related interrupt flags Macro for Non-Secure
\r
269 #define OTG_GET_INT_FLAG_NS(u32Mask) (OTG_NS->INTSTS & (u32Mask))
\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
288 * @details This macro will clear OTG related interrupt flags specified by u32Mask parameter.
\r
290 #define OTG_CLR_INT_FLAG(u32Mask) (OTG->INTSTS = (u32Mask))
\r
293 * @brief This macro is used to clear OTG related interrupt flags Macro for Non-Secure
\r
295 #define OTG_CLR_INT_FLAG_NS(u32Mask) (OTG_NS->INTSTS = (u32Mask))
\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
309 #define OTG_GET_STATUS(u32Mask) (OTG->STATUS & (u32Mask))
\r
312 * @brief This macro is used to get OTG related status Macro for Non-Secure
\r
314 #define OTG_GET_STATUS_NS(u32Mask) (OTG_NS->STATUS & (u32Mask))
\r
318 /*@}*/ /* end of group OTG_EXPORTED_FUNCTIONS */
\r
320 /*@}*/ /* end of group OTG_Driver */
\r
322 /*@}*/ /* end of group Standard_Driver */
\r
329 #endif /* __OTG_H__ */
\r
331 /*** (C) COPYRIGHT 2016 Nuvoton Technology Corp. ***/
\r