1 /**************************************************************************//** 2 * @file hsotg.h 3 * @version V0.10 4 * @brief M480 Series HSOTG Driver Header File 5 * 6 * SPDX-License-Identifier: Apache-2.0 7 * @copyright (C) 2016-2020 Nuvoton Technology Corp. All rights reserved. 8 ******************************************************************************/ 9 #ifndef __HSOTG_H__ 10 #define __HSOTG_H__ 11 12 #ifdef __cplusplus 13 extern "C" 14 { 15 #endif 16 17 18 /** @addtogroup Standard_Driver Standard Driver 19 @{ 20 */ 21 22 /** @addtogroup HSOTG_Driver HSOTG Driver 23 @{ 24 */ 25 26 27 /** @addtogroup HSOTG_EXPORTED_CONSTANTS HSOTG Exported Constants 28 @{ 29 */ 30 31 32 33 /*---------------------------------------------------------------------------------------------------------*/ 34 /* HSOTG constant definitions */ 35 /*---------------------------------------------------------------------------------------------------------*/ 36 #define HSOTG_VBUS_EN_ACTIVE_HIGH (0UL) /*!< USB VBUS power switch enable signal is active high. \hideinitializer */ 37 #define HSOTG_VBUS_EN_ACTIVE_LOW (1UL) /*!< USB VBUS power switch enable signal is active low. \hideinitializer */ 38 #define HSOTG_VBUS_ST_VALID_HIGH (0UL) /*!< USB VBUS power switch valid status is high. \hideinitializer */ 39 #define HSOTG_VBUS_ST_VALID_LOW (1UL) /*!< USB VBUS power switch valid status is low. \hideinitializer */ 40 41 42 /*@}*/ /* end of group HSOTG_EXPORTED_CONSTANTS */ 43 44 45 /** @addtogroup HSOTG_EXPORTED_FUNCTIONS HSOTG Exported Functions 46 @{ 47 */ 48 49 /*---------------------------------------------------------------------------------------------------------*/ 50 /* Define Macros and functions */ 51 /*---------------------------------------------------------------------------------------------------------*/ 52 53 54 /** 55 * @brief This macro is used to enable HSOTG function 56 * @param None 57 * @return None 58 * @details This macro will set OTGEN bit of HSOTG_CTL register to enable HSOTG function. 59 * \hideinitializer 60 */ 61 #define HSOTG_ENABLE() (HSOTG->CTL |= HSOTG_CTL_OTGEN_Msk) 62 63 /** 64 * @brief This macro is used to disable HSOTG function 65 * @param None 66 * @return None 67 * @details This macro will clear OTGEN bit of HSOTG_CTL register to disable HSOTG function. 68 * \hideinitializer 69 */ 70 #define HSOTG_DISABLE() (HSOTG->CTL &= ~HSOTG_CTL_OTGEN_Msk) 71 72 /** 73 * @brief This macro is used to enable USB PHY 74 * @param None 75 * @return None 76 * @details When the USB role is selected as HSOTG device, use this macro to enable USB PHY. 77 * This macro will set OTGPHYEN bit of HSOTG_PHYCTL register to enable USB PHY. 78 * \hideinitializer 79 */ 80 #define HSOTG_ENABLE_PHY() (HSOTG->PHYCTL |= HSOTG_PHYCTL_OTGPHYEN_Msk) 81 82 /** 83 * @brief This macro is used to disable USB PHY 84 * @param None 85 * @return None 86 * @details This macro will clear OTGPHYEN bit of HSOTG_PHYCTL register to disable USB PHY. 87 * \hideinitializer 88 */ 89 #define HSOTG_DISABLE_PHY() (HSOTG->PHYCTL &= ~HSOTG_PHYCTL_OTGPHYEN_Msk) 90 91 /** 92 * @brief This macro is used to enable ID detection function 93 * @param None 94 * @return None 95 * @details This macro will set IDDETEN bit of HSOTG_PHYCTL register to enable ID detection function. 96 * \hideinitializer 97 */ 98 #define HSOTG_ENABLE_ID_DETECT() (HSOTG->PHYCTL |= HSOTG_PHYCTL_IDDETEN_Msk) 99 100 /** 101 * @brief This macro is used to disable ID detection function 102 * @param None 103 * @return None 104 * @details This macro will clear IDDETEN bit of HSOTG_PHYCTL register to disable ID detection function. 105 * \hideinitializer 106 */ 107 #define HSOTG_DISABLE_ID_DETECT() (HSOTG->PHYCTL &= ~HSOTG_PHYCTL_IDDETEN_Msk) 108 109 /** 110 * @brief This macro is used to enable HSOTG wake-up function 111 * @param None 112 * @return None 113 * @details This macro will set WKEN bit of HSOTG_CTL register to enable HSOTG wake-up function. 114 * \hideinitializer 115 */ 116 #define HSOTG_ENABLE_WAKEUP() (HSOTG->CTL |= HSOTG_CTL_WKEN_Msk) 117 118 /** 119 * @brief This macro is used to disable HSOTG wake-up function 120 * @param None 121 * @return None 122 * @details This macro will clear WKEN bit of HSOTG_CTL register to disable HSOTG wake-up function. 123 * \hideinitializer 124 */ 125 #define HSOTG_DISABLE_WAKEUP() (HSOTG->CTL &= ~HSOTG_CTL_WKEN_Msk) 126 127 /** 128 * @brief This macro is used to set the polarity of USB_VBUS_EN pin 129 * @param[in] u32Pol The polarity selection. Valid values are listed below. 130 * - \ref HSOTG_VBUS_EN_ACTIVE_HIGH 131 * - \ref HSOTG_VBUS_EN_ACTIVE_LOW 132 * @return None 133 * @details This macro is used to set the polarity of external USB VBUS power switch enable signal. 134 * \hideinitializer 135 */ 136 #define HSOTG_SET_VBUS_EN_POL(u32Pol) (HSOTG->PHYCTL = (HSOTG->PHYCTL & (~HSOTG_PHYCTL_VBENPOL_Msk)) | ((u32Pol)<<HSOTG_PHYCTL_VBENPOL_Pos)) 137 138 /** 139 * @brief This macro is used to set the polarity of USB_VBUS_ST pin 140 * @param[in] u32Pol The polarity selection. Valid values are listed below. 141 * - \ref HSOTG_VBUS_ST_VALID_HIGH 142 * - \ref HSOTG_VBUS_ST_VALID_LOW 143 * @return None 144 * @details This macro is used to set the polarity of external USB VBUS power switch status signal. 145 * \hideinitializer 146 */ 147 #define HSOTG_SET_VBUS_STS_POL(u32Pol) (HSOTG->PHYCTL = (HSOTG->PHYCTL & (~HSOTG_PHYCTL_VBSTSPOL_Msk)) | ((u32Pol)<<HSOTG_PHYCTL_VBSTSPOL_Pos)) 148 149 /** 150 * @brief This macro is used to enable HSOTG related interrupts 151 * @param[in] u32Mask The combination of interrupt source. Each bit corresponds to a interrupt source. Valid values are listed below. 152 * - \ref HSOTG_INTEN_ROLECHGIEN_Msk 153 * - \ref HSOTG_INTEN_VBEIEN_Msk 154 * - \ref HSOTG_INTEN_SRPFIEN_Msk 155 * - \ref HSOTG_INTEN_HNPFIEN_Msk 156 * - \ref HSOTG_INTEN_GOIDLEIEN_Msk 157 * - \ref HSOTG_INTEN_IDCHGIEN_Msk 158 * - \ref HSOTG_INTEN_PDEVIEN_Msk 159 * - \ref HSOTG_INTEN_HOSTIEN_Msk 160 * - \ref HSOTG_INTEN_BVLDCHGIEN_Msk 161 * - \ref HSOTG_INTEN_AVLDCHGIEN_Msk 162 * - \ref HSOTG_INTEN_VBCHGIEN_Msk 163 * - \ref HSOTG_INTEN_SECHGIEN_Msk 164 * - \ref HSOTG_INTEN_SRPDETIEN_Msk 165 * @return None 166 * @details This macro will enable HSOTG related interrupts specified by u32Mask parameter. 167 * \hideinitializer 168 */ 169 #define HSOTG_ENABLE_INT(u32Mask) (HSOTG->INTEN |= (u32Mask)) 170 171 /** 172 * @brief This macro is used to disable HSOTG related interrupts 173 * @param[in] u32Mask The combination of interrupt source. Each bit corresponds to a interrupt source. Valid values are listed below. 174 * - \ref HSOTG_INTEN_ROLECHGIEN_Msk 175 * - \ref HSOTG_INTEN_VBEIEN_Msk 176 * - \ref HSOTG_INTEN_SRPFIEN_Msk 177 * - \ref HSOTG_INTEN_HNPFIEN_Msk 178 * - \ref HSOTG_INTEN_GOIDLEIEN_Msk 179 * - \ref HSOTG_INTEN_IDCHGIEN_Msk 180 * - \ref HSOTG_INTEN_PDEVIEN_Msk 181 * - \ref HSOTG_INTEN_HOSTIEN_Msk 182 * - \ref HSOTG_INTEN_BVLDCHGIEN_Msk 183 * - \ref HSOTG_INTEN_AVLDCHGIEN_Msk 184 * - \ref HSOTG_INTEN_VBCHGIEN_Msk 185 * - \ref HSOTG_INTEN_SECHGIEN_Msk 186 * - \ref HSOTG_INTEN_SRPDETIEN_Msk 187 * @return None 188 * @details This macro will disable HSOTG related interrupts specified by u32Mask parameter. 189 * \hideinitializer 190 */ 191 #define HSOTG_DISABLE_INT(u32Mask) (HSOTG->INTEN &= ~(u32Mask)) 192 193 /** 194 * @brief This macro is used to get HSOTG related interrupt flags 195 * @param[in] u32Mask The combination of interrupt source. Each bit corresponds to a interrupt source. Valid values are listed below. 196 * - \ref HSOTG_INTSTS_ROLECHGIF_Msk 197 * - \ref HSOTG_INTSTS_VBEIF_Msk 198 * - \ref HSOTG_INTSTS_SRPFIF_Msk 199 * - \ref HSOTG_INTSTS_HNPFIF_Msk 200 * - \ref HSOTG_INTSTS_GOIDLEIF_Msk 201 * - \ref HSOTG_INTSTS_IDCHGIF_Msk 202 * - \ref HSOTG_INTSTS_PDEVIF_Msk 203 * - \ref HSOTG_INTSTS_HOSTIF_Msk 204 * - \ref HSOTG_INTSTS_BVLDCHGIF_Msk 205 * - \ref HSOTG_INTSTS_AVLDCHGIF_Msk 206 * - \ref HSOTG_INTSTS_VBCHGIF_Msk 207 * - \ref HSOTG_INTSTS_SECHGIF_Msk 208 * - \ref HSOTG_INTSTS_SRPDETIF_Msk 209 * @return Interrupt flags of selected sources. 210 * @details This macro will return HSOTG related interrupt flags specified by u32Mask parameter. 211 * \hideinitializer 212 */ 213 #define HSOTG_GET_INT_FLAG(u32Mask) (HSOTG->INTSTS & (u32Mask)) 214 215 /** 216 * @brief This macro is used to clear HSOTG related interrupt flags 217 * @param[in] u32Mask The combination of interrupt source. Each bit corresponds to a interrupt source. Valid values are listed below. 218 * - \ref HSOTG_INTSTS_ROLECHGIF_Msk 219 * - \ref HSOTG_INTSTS_VBEIF_Msk 220 * - \ref HSOTG_INTSTS_SRPFIF_Msk 221 * - \ref HSOTG_INTSTS_HNPFIF_Msk 222 * - \ref HSOTG_INTSTS_GOIDLEIF_Msk 223 * - \ref HSOTG_INTSTS_IDCHGIF_Msk 224 * - \ref HSOTG_INTSTS_PDEVIF_Msk 225 * - \ref HSOTG_INTSTS_HOSTIF_Msk 226 * - \ref HSOTG_INTSTS_BVLDCHGIF_Msk 227 * - \ref HSOTG_INTSTS_AVLDCHGIF_Msk 228 * - \ref HSOTG_INTSTS_VBCHGIF_Msk 229 * - \ref HSOTG_INTSTS_SECHGIF_Msk 230 * - \ref HSOTG_INTSTS_SRPDETIF_Msk 231 * @return None 232 * @details This macro will clear HSOTG related interrupt flags specified by u32Mask parameter. 233 * \hideinitializer 234 */ 235 #define HSOTG_CLR_INT_FLAG(u32Mask) (HSOTG->INTSTS = (u32Mask)) 236 237 /** 238 * @brief This macro is used to get HSOTG related status 239 * @param[in] u32Mask The combination of user specified source. Valid values are listed below. 240 * - \ref HSOTG_STATUS_OVERCUR_Msk 241 * - \ref HSOTG_STATUS_IDSTS_Msk 242 * - \ref HSOTG_STATUS_SESSEND_Msk 243 * - \ref HSOTG_STATUS_BVLD_Msk 244 * - \ref HSOTG_STATUS_AVLD_Msk 245 * - \ref HSOTG_STATUS_VBUSVLD_Msk 246 * @return The user specified status. 247 * @details This macro will return HSOTG related status specified by u32Mask parameter. 248 * \hideinitializer 249 */ 250 #define HSOTG_GET_STATUS(u32Mask) (HSOTG->STATUS & (u32Mask)) 251 252 253 254 /*@}*/ /* end of group HSOTG_EXPORTED_FUNCTIONS */ 255 256 /*@}*/ /* end of group HSOTG_Driver */ 257 258 /*@}*/ /* end of group Standard_Driver */ 259 260 261 #ifdef __cplusplus 262 } 263 #endif 264 265 266 #endif /* __HSOTG_H__ */ 267 268 /*** (C) COPYRIGHT 2017 Nuvoton Technology Corp. ***/ 269