inport from local

Dependents:   Hobbyking_Cheetah_0511

Committer:
NYX
Date:
Mon Mar 16 06:35:48 2020 +0000
Revision:
0:85b3fd62ea1a
reinport to mbed;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
NYX 0:85b3fd62ea1a 1 /**
NYX 0:85b3fd62ea1a 2 ******************************************************************************
NYX 0:85b3fd62ea1a 3 * @file stm32f4xx_hal_pcd_ex.c
NYX 0:85b3fd62ea1a 4 * @author MCD Application Team
NYX 0:85b3fd62ea1a 5 * @version V1.7.1
NYX 0:85b3fd62ea1a 6 * @date 14-April-2017
NYX 0:85b3fd62ea1a 7 * @brief PCD HAL module driver.
NYX 0:85b3fd62ea1a 8 * This file provides firmware functions to manage the following
NYX 0:85b3fd62ea1a 9 * functionalities of the USB Peripheral Controller:
NYX 0:85b3fd62ea1a 10 * + Extended features functions
NYX 0:85b3fd62ea1a 11 *
NYX 0:85b3fd62ea1a 12 ******************************************************************************
NYX 0:85b3fd62ea1a 13 * @attention
NYX 0:85b3fd62ea1a 14 *
NYX 0:85b3fd62ea1a 15 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
NYX 0:85b3fd62ea1a 16 *
NYX 0:85b3fd62ea1a 17 * Redistribution and use in source and binary forms, with or without modification,
NYX 0:85b3fd62ea1a 18 * are permitted provided that the following conditions are met:
NYX 0:85b3fd62ea1a 19 * 1. Redistributions of source code must retain the above copyright notice,
NYX 0:85b3fd62ea1a 20 * this list of conditions and the following disclaimer.
NYX 0:85b3fd62ea1a 21 * 2. Redistributions in binary form must reproduce the above copyright notice,
NYX 0:85b3fd62ea1a 22 * this list of conditions and the following disclaimer in the documentation
NYX 0:85b3fd62ea1a 23 * and/or other materials provided with the distribution.
NYX 0:85b3fd62ea1a 24 * 3. Neither the name of STMicroelectronics nor the names of its contributors
NYX 0:85b3fd62ea1a 25 * may be used to endorse or promote products derived from this software
NYX 0:85b3fd62ea1a 26 * without specific prior written permission.
NYX 0:85b3fd62ea1a 27 *
NYX 0:85b3fd62ea1a 28 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
NYX 0:85b3fd62ea1a 29 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
NYX 0:85b3fd62ea1a 30 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
NYX 0:85b3fd62ea1a 31 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
NYX 0:85b3fd62ea1a 32 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
NYX 0:85b3fd62ea1a 33 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
NYX 0:85b3fd62ea1a 34 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
NYX 0:85b3fd62ea1a 35 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
NYX 0:85b3fd62ea1a 36 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
NYX 0:85b3fd62ea1a 37 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
NYX 0:85b3fd62ea1a 38 *
NYX 0:85b3fd62ea1a 39 ******************************************************************************
NYX 0:85b3fd62ea1a 40 */
NYX 0:85b3fd62ea1a 41
NYX 0:85b3fd62ea1a 42 /* Includes ------------------------------------------------------------------*/
NYX 0:85b3fd62ea1a 43 #include "stm32f4xx_hal.h"
NYX 0:85b3fd62ea1a 44
NYX 0:85b3fd62ea1a 45 /** @addtogroup STM32F4xx_HAL_Driver
NYX 0:85b3fd62ea1a 46 * @{
NYX 0:85b3fd62ea1a 47 */
NYX 0:85b3fd62ea1a 48
NYX 0:85b3fd62ea1a 49 /** @defgroup PCDEx PCDEx
NYX 0:85b3fd62ea1a 50 * @brief PCD Extended HAL module driver
NYX 0:85b3fd62ea1a 51 * @{
NYX 0:85b3fd62ea1a 52 */
NYX 0:85b3fd62ea1a 53 #ifdef HAL_PCD_MODULE_ENABLED
NYX 0:85b3fd62ea1a 54 #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) || \
NYX 0:85b3fd62ea1a 55 defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) || \
NYX 0:85b3fd62ea1a 56 defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx) || \
NYX 0:85b3fd62ea1a 57 defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || \
NYX 0:85b3fd62ea1a 58 defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
NYX 0:85b3fd62ea1a 59 /* Private types -------------------------------------------------------------*/
NYX 0:85b3fd62ea1a 60 /* Private variables ---------------------------------------------------------*/
NYX 0:85b3fd62ea1a 61 /* Private constants ---------------------------------------------------------*/
NYX 0:85b3fd62ea1a 62 /* Private macros ------------------------------------------------------------*/
NYX 0:85b3fd62ea1a 63 /* Private functions ---------------------------------------------------------*/
NYX 0:85b3fd62ea1a 64 /* Exported functions --------------------------------------------------------*/
NYX 0:85b3fd62ea1a 65
NYX 0:85b3fd62ea1a 66 /** @defgroup PCDEx_Exported_Functions PCD Extended Exported Functions
NYX 0:85b3fd62ea1a 67 * @{
NYX 0:85b3fd62ea1a 68 */
NYX 0:85b3fd62ea1a 69
NYX 0:85b3fd62ea1a 70 /** @defgroup PCDEx_Exported_Functions_Group1 Peripheral Control functions
NYX 0:85b3fd62ea1a 71 * @brief PCDEx control functions
NYX 0:85b3fd62ea1a 72 *
NYX 0:85b3fd62ea1a 73 @verbatim
NYX 0:85b3fd62ea1a 74 ===============================================================================
NYX 0:85b3fd62ea1a 75 ##### Extended features functions #####
NYX 0:85b3fd62ea1a 76 ===============================================================================
NYX 0:85b3fd62ea1a 77 [..] This section provides functions allowing to:
NYX 0:85b3fd62ea1a 78 (+) Update FIFO configuration
NYX 0:85b3fd62ea1a 79
NYX 0:85b3fd62ea1a 80 @endverbatim
NYX 0:85b3fd62ea1a 81 * @{
NYX 0:85b3fd62ea1a 82 */
NYX 0:85b3fd62ea1a 83
NYX 0:85b3fd62ea1a 84 /**
NYX 0:85b3fd62ea1a 85 * @brief Set Tx FIFO
NYX 0:85b3fd62ea1a 86 * @param hpcd: PCD handle
NYX 0:85b3fd62ea1a 87 * @param fifo: The number of Tx fifo
NYX 0:85b3fd62ea1a 88 * @param size: Fifo size
NYX 0:85b3fd62ea1a 89 * @retval HAL status
NYX 0:85b3fd62ea1a 90 */
NYX 0:85b3fd62ea1a 91 HAL_StatusTypeDef HAL_PCDEx_SetTxFiFo(PCD_HandleTypeDef *hpcd, uint8_t fifo, uint16_t size)
NYX 0:85b3fd62ea1a 92 {
NYX 0:85b3fd62ea1a 93 uint8_t i = 0;
NYX 0:85b3fd62ea1a 94 uint32_t Tx_Offset = 0U;
NYX 0:85b3fd62ea1a 95
NYX 0:85b3fd62ea1a 96 /* TXn min size = 16 words. (n : Transmit FIFO index)
NYX 0:85b3fd62ea1a 97 When a TxFIFO is not used, the Configuration should be as follows:
NYX 0:85b3fd62ea1a 98 case 1 : n > m and Txn is not used (n,m : Transmit FIFO indexes)
NYX 0:85b3fd62ea1a 99 --> Txm can use the space allocated for Txn.
NYX 0:85b3fd62ea1a 100 case2 : n < m and Txn is not used (n,m : Transmit FIFO indexes)
NYX 0:85b3fd62ea1a 101 --> Txn should be configured with the minimum space of 16 words
NYX 0:85b3fd62ea1a 102 The FIFO is used optimally when used TxFIFOs are allocated in the top
NYX 0:85b3fd62ea1a 103 of the FIFO.Ex: use EP1 and EP2 as IN instead of EP1 and EP3 as IN ones.
NYX 0:85b3fd62ea1a 104 When DMA is used 3n * FIFO locations should be reserved for internal DMA registers */
NYX 0:85b3fd62ea1a 105
NYX 0:85b3fd62ea1a 106 Tx_Offset = hpcd->Instance->GRXFSIZ;
NYX 0:85b3fd62ea1a 107
NYX 0:85b3fd62ea1a 108 if(fifo == 0)
NYX 0:85b3fd62ea1a 109 {
NYX 0:85b3fd62ea1a 110 hpcd->Instance->DIEPTXF0_HNPTXFSIZ = (uint32_t)(((uint32_t)size << 16U) | Tx_Offset);
NYX 0:85b3fd62ea1a 111 }
NYX 0:85b3fd62ea1a 112 else
NYX 0:85b3fd62ea1a 113 {
NYX 0:85b3fd62ea1a 114 Tx_Offset += (hpcd->Instance->DIEPTXF0_HNPTXFSIZ) >> 16U;
NYX 0:85b3fd62ea1a 115 for (i = 0; i < (fifo - 1); i++)
NYX 0:85b3fd62ea1a 116 {
NYX 0:85b3fd62ea1a 117 Tx_Offset += (hpcd->Instance->DIEPTXF[i] >> 16U);
NYX 0:85b3fd62ea1a 118 }
NYX 0:85b3fd62ea1a 119
NYX 0:85b3fd62ea1a 120 /* Multiply Tx_Size by 2 to get higher performance */
NYX 0:85b3fd62ea1a 121 hpcd->Instance->DIEPTXF[fifo - 1] = (uint32_t)(((uint32_t)size << 16U) | Tx_Offset);
NYX 0:85b3fd62ea1a 122 }
NYX 0:85b3fd62ea1a 123
NYX 0:85b3fd62ea1a 124 return HAL_OK;
NYX 0:85b3fd62ea1a 125 }
NYX 0:85b3fd62ea1a 126
NYX 0:85b3fd62ea1a 127 /**
NYX 0:85b3fd62ea1a 128 * @brief Set Rx FIFO
NYX 0:85b3fd62ea1a 129 * @param hpcd: PCD handle
NYX 0:85b3fd62ea1a 130 * @param size: Size of Rx fifo
NYX 0:85b3fd62ea1a 131 * @retval HAL status
NYX 0:85b3fd62ea1a 132 */
NYX 0:85b3fd62ea1a 133 HAL_StatusTypeDef HAL_PCDEx_SetRxFiFo(PCD_HandleTypeDef *hpcd, uint16_t size)
NYX 0:85b3fd62ea1a 134 {
NYX 0:85b3fd62ea1a 135 hpcd->Instance->GRXFSIZ = size;
NYX 0:85b3fd62ea1a 136
NYX 0:85b3fd62ea1a 137 return HAL_OK;
NYX 0:85b3fd62ea1a 138 }
NYX 0:85b3fd62ea1a 139
NYX 0:85b3fd62ea1a 140 #if defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || \
NYX 0:85b3fd62ea1a 141 defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
NYX 0:85b3fd62ea1a 142 /**
NYX 0:85b3fd62ea1a 143 * @brief Activate LPM feature
NYX 0:85b3fd62ea1a 144 * @param hpcd: PCD handle
NYX 0:85b3fd62ea1a 145 * @retval HAL status
NYX 0:85b3fd62ea1a 146 */
NYX 0:85b3fd62ea1a 147 HAL_StatusTypeDef HAL_PCDEx_ActivateLPM(PCD_HandleTypeDef *hpcd)
NYX 0:85b3fd62ea1a 148 {
NYX 0:85b3fd62ea1a 149 USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
NYX 0:85b3fd62ea1a 150
NYX 0:85b3fd62ea1a 151 hpcd->lpm_active = ENABLE;
NYX 0:85b3fd62ea1a 152 hpcd->LPM_State = LPM_L0;
NYX 0:85b3fd62ea1a 153 USBx->GINTMSK |= USB_OTG_GINTMSK_LPMINTM;
NYX 0:85b3fd62ea1a 154 USBx->GLPMCFG |= (USB_OTG_GLPMCFG_LPMEN | USB_OTG_GLPMCFG_LPMACK | USB_OTG_GLPMCFG_ENBESL);
NYX 0:85b3fd62ea1a 155
NYX 0:85b3fd62ea1a 156 return HAL_OK;
NYX 0:85b3fd62ea1a 157 }
NYX 0:85b3fd62ea1a 158
NYX 0:85b3fd62ea1a 159 /**
NYX 0:85b3fd62ea1a 160 * @brief Deactivate LPM feature.
NYX 0:85b3fd62ea1a 161 * @param hpcd: PCD handle
NYX 0:85b3fd62ea1a 162 * @retval HAL status
NYX 0:85b3fd62ea1a 163 */
NYX 0:85b3fd62ea1a 164 HAL_StatusTypeDef HAL_PCDEx_DeActivateLPM(PCD_HandleTypeDef *hpcd)
NYX 0:85b3fd62ea1a 165 {
NYX 0:85b3fd62ea1a 166 USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
NYX 0:85b3fd62ea1a 167
NYX 0:85b3fd62ea1a 168 hpcd->lpm_active = DISABLE;
NYX 0:85b3fd62ea1a 169 USBx->GINTMSK &= ~USB_OTG_GINTMSK_LPMINTM;
NYX 0:85b3fd62ea1a 170 USBx->GLPMCFG &= ~(USB_OTG_GLPMCFG_LPMEN | USB_OTG_GLPMCFG_LPMACK | USB_OTG_GLPMCFG_ENBESL);
NYX 0:85b3fd62ea1a 171
NYX 0:85b3fd62ea1a 172 return HAL_OK;
NYX 0:85b3fd62ea1a 173 }
NYX 0:85b3fd62ea1a 174
NYX 0:85b3fd62ea1a 175 /**
NYX 0:85b3fd62ea1a 176 * @brief Send LPM message to user layer callback.
NYX 0:85b3fd62ea1a 177 * @param hpcd: PCD handle
NYX 0:85b3fd62ea1a 178 * @param msg: LPM message
NYX 0:85b3fd62ea1a 179 * @retval HAL status
NYX 0:85b3fd62ea1a 180 */
NYX 0:85b3fd62ea1a 181 __weak void HAL_PCDEx_LPM_Callback(PCD_HandleTypeDef *hpcd, PCD_LPM_MsgTypeDef msg)
NYX 0:85b3fd62ea1a 182 {
NYX 0:85b3fd62ea1a 183 /* Prevent unused argument(s) compilation warning */
NYX 0:85b3fd62ea1a 184 UNUSED(hpcd);
NYX 0:85b3fd62ea1a 185 UNUSED(msg);
NYX 0:85b3fd62ea1a 186 }
NYX 0:85b3fd62ea1a 187 #endif /* STM32F446xx || STM32F469xx || STM32F479xx || STM32F412Zx || STM32F412Rx || STM32F412Vx || STM32F412Cx || STM32F413xx || STM32F423xx */
NYX 0:85b3fd62ea1a 188
NYX 0:85b3fd62ea1a 189 #if defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
NYX 0:85b3fd62ea1a 190 /**
NYX 0:85b3fd62ea1a 191 * @brief HAL_PCDEx_BCD_VBUSDetect : handle BatteryCharging Process
NYX 0:85b3fd62ea1a 192 * @param hpcd: PCD handle
NYX 0:85b3fd62ea1a 193 * @retval HAL status
NYX 0:85b3fd62ea1a 194 */
NYX 0:85b3fd62ea1a 195 void HAL_PCDEx_BCD_VBUSDetect(PCD_HandleTypeDef *hpcd)
NYX 0:85b3fd62ea1a 196 {
NYX 0:85b3fd62ea1a 197 USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
NYX 0:85b3fd62ea1a 198 uint32_t tickstart = HAL_GetTick();
NYX 0:85b3fd62ea1a 199
NYX 0:85b3fd62ea1a 200 /* Start BCD When device is connected */
NYX 0:85b3fd62ea1a 201 if (USBx_DEVICE->DCTL & USB_OTG_DCTL_SDIS)
NYX 0:85b3fd62ea1a 202 {
NYX 0:85b3fd62ea1a 203 /* Enable DCD : Data Contact Detect */
NYX 0:85b3fd62ea1a 204 USBx->GCCFG |= USB_OTG_GCCFG_DCDEN;
NYX 0:85b3fd62ea1a 205
NYX 0:85b3fd62ea1a 206 /* Wait Detect flag or a timeout is happen*/
NYX 0:85b3fd62ea1a 207 while ((USBx->GCCFG & USB_OTG_GCCFG_DCDET) == 0U)
NYX 0:85b3fd62ea1a 208 {
NYX 0:85b3fd62ea1a 209 /* Check for the Timeout */
NYX 0:85b3fd62ea1a 210 if((HAL_GetTick() - tickstart ) > 1000U)
NYX 0:85b3fd62ea1a 211 {
NYX 0:85b3fd62ea1a 212 HAL_PCDEx_BCD_Callback(hpcd, PCD_BCD_ERROR);
NYX 0:85b3fd62ea1a 213 return;
NYX 0:85b3fd62ea1a 214 }
NYX 0:85b3fd62ea1a 215 }
NYX 0:85b3fd62ea1a 216
NYX 0:85b3fd62ea1a 217 /* Right response got */
NYX 0:85b3fd62ea1a 218 HAL_Delay(100U);
NYX 0:85b3fd62ea1a 219
NYX 0:85b3fd62ea1a 220 /* Check Detect flag*/
NYX 0:85b3fd62ea1a 221 if (USBx->GCCFG & USB_OTG_GCCFG_DCDET)
NYX 0:85b3fd62ea1a 222 {
NYX 0:85b3fd62ea1a 223 HAL_PCDEx_BCD_Callback(hpcd, PCD_BCD_CONTACT_DETECTION);
NYX 0:85b3fd62ea1a 224 }
NYX 0:85b3fd62ea1a 225
NYX 0:85b3fd62ea1a 226 /*Primary detection: checks if connected to Standard Downstream Port
NYX 0:85b3fd62ea1a 227 (without charging capability) */
NYX 0:85b3fd62ea1a 228 USBx->GCCFG &=~ USB_OTG_GCCFG_DCDEN;
NYX 0:85b3fd62ea1a 229 USBx->GCCFG |= USB_OTG_GCCFG_PDEN;
NYX 0:85b3fd62ea1a 230 HAL_Delay(100U);
NYX 0:85b3fd62ea1a 231
NYX 0:85b3fd62ea1a 232 if (!(USBx->GCCFG & USB_OTG_GCCFG_PDET))
NYX 0:85b3fd62ea1a 233 {
NYX 0:85b3fd62ea1a 234 /* Case of Standard Downstream Port */
NYX 0:85b3fd62ea1a 235 HAL_PCDEx_BCD_Callback(hpcd, PCD_BCD_STD_DOWNSTREAM_PORT);
NYX 0:85b3fd62ea1a 236 }
NYX 0:85b3fd62ea1a 237 else
NYX 0:85b3fd62ea1a 238 {
NYX 0:85b3fd62ea1a 239 /* start secondary detection to check connection to Charging Downstream
NYX 0:85b3fd62ea1a 240 Port or Dedicated Charging Port */
NYX 0:85b3fd62ea1a 241 USBx->GCCFG &=~ USB_OTG_GCCFG_PDEN;
NYX 0:85b3fd62ea1a 242 USBx->GCCFG |= USB_OTG_GCCFG_SDEN;
NYX 0:85b3fd62ea1a 243 HAL_Delay(100U);
NYX 0:85b3fd62ea1a 244
NYX 0:85b3fd62ea1a 245 if ((USBx->GCCFG) & USB_OTG_GCCFG_SDET)
NYX 0:85b3fd62ea1a 246 {
NYX 0:85b3fd62ea1a 247 /* case Dedicated Charging Port */
NYX 0:85b3fd62ea1a 248 HAL_PCDEx_BCD_Callback(hpcd, PCD_BCD_DEDICATED_CHARGING_PORT);
NYX 0:85b3fd62ea1a 249 }
NYX 0:85b3fd62ea1a 250 else
NYX 0:85b3fd62ea1a 251 {
NYX 0:85b3fd62ea1a 252 /* case Charging Downstream Port */
NYX 0:85b3fd62ea1a 253 HAL_PCDEx_BCD_Callback(hpcd, PCD_BCD_CHARGING_DOWNSTREAM_PORT);
NYX 0:85b3fd62ea1a 254 }
NYX 0:85b3fd62ea1a 255 }
NYX 0:85b3fd62ea1a 256 /* Battery Charging capability discovery finished */
NYX 0:85b3fd62ea1a 257 HAL_PCDEx_BCD_Callback(hpcd, PCD_BCD_DISCOVERY_COMPLETED);
NYX 0:85b3fd62ea1a 258 }
NYX 0:85b3fd62ea1a 259 }
NYX 0:85b3fd62ea1a 260
NYX 0:85b3fd62ea1a 261 /**
NYX 0:85b3fd62ea1a 262 * @brief HAL_PCDEx_ActivateBCD : active BatteryCharging feature
NYX 0:85b3fd62ea1a 263 * @param hpcd: PCD handle
NYX 0:85b3fd62ea1a 264 * @retval HAL status
NYX 0:85b3fd62ea1a 265 */
NYX 0:85b3fd62ea1a 266 HAL_StatusTypeDef HAL_PCDEx_ActivateBCD(PCD_HandleTypeDef *hpcd)
NYX 0:85b3fd62ea1a 267 {
NYX 0:85b3fd62ea1a 268 USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
NYX 0:85b3fd62ea1a 269
NYX 0:85b3fd62ea1a 270 hpcd->battery_charging_active = ENABLE;
NYX 0:85b3fd62ea1a 271 USBx->GCCFG |= (USB_OTG_GCCFG_BCDEN);
NYX 0:85b3fd62ea1a 272
NYX 0:85b3fd62ea1a 273 return HAL_OK;
NYX 0:85b3fd62ea1a 274 }
NYX 0:85b3fd62ea1a 275
NYX 0:85b3fd62ea1a 276 /**
NYX 0:85b3fd62ea1a 277 * @brief HAL_PCDEx_DeActivateBCD : de-active BatteryCharging feature
NYX 0:85b3fd62ea1a 278 * @param hpcd: PCD handle
NYX 0:85b3fd62ea1a 279 * @retval HAL status
NYX 0:85b3fd62ea1a 280 */
NYX 0:85b3fd62ea1a 281 HAL_StatusTypeDef HAL_PCDEx_DeActivateBCD(PCD_HandleTypeDef *hpcd)
NYX 0:85b3fd62ea1a 282 {
NYX 0:85b3fd62ea1a 283 USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
NYX 0:85b3fd62ea1a 284 hpcd->battery_charging_active = DISABLE;
NYX 0:85b3fd62ea1a 285 USBx->GCCFG &= ~(USB_OTG_GCCFG_BCDEN);
NYX 0:85b3fd62ea1a 286 return HAL_OK;
NYX 0:85b3fd62ea1a 287 }
NYX 0:85b3fd62ea1a 288
NYX 0:85b3fd62ea1a 289 /**
NYX 0:85b3fd62ea1a 290 * @brief HAL_PCDEx_BatteryCharging_Callback : Send BatteryCharging message to user layer
NYX 0:85b3fd62ea1a 291 * @param hpcd: PCD handle
NYX 0:85b3fd62ea1a 292 * @param msg: LPM message
NYX 0:85b3fd62ea1a 293 * @retval HAL status
NYX 0:85b3fd62ea1a 294 */
NYX 0:85b3fd62ea1a 295 __weak void HAL_PCDEx_BCD_Callback(PCD_HandleTypeDef *hpcd, PCD_BCD_MsgTypeDef msg)
NYX 0:85b3fd62ea1a 296 {
NYX 0:85b3fd62ea1a 297 /* Prevent unused argument(s) compilation warning */
NYX 0:85b3fd62ea1a 298 UNUSED(hpcd);
NYX 0:85b3fd62ea1a 299 UNUSED(msg);
NYX 0:85b3fd62ea1a 300 }
NYX 0:85b3fd62ea1a 301
NYX 0:85b3fd62ea1a 302 #endif /* STM32F412Zx || STM32F412Rx || STM32F412Vx || STM32F412Cx || STM32F413xx || STM32F423xx */
NYX 0:85b3fd62ea1a 303
NYX 0:85b3fd62ea1a 304 /**
NYX 0:85b3fd62ea1a 305 * @}
NYX 0:85b3fd62ea1a 306 */
NYX 0:85b3fd62ea1a 307
NYX 0:85b3fd62ea1a 308 /**
NYX 0:85b3fd62ea1a 309 * @}
NYX 0:85b3fd62ea1a 310 */
NYX 0:85b3fd62ea1a 311
NYX 0:85b3fd62ea1a 312 #endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx ||
NYX 0:85b3fd62ea1a 313 STM32F401xC || STM32F401xE || STM32F411xE || STM32F446xx || STM32F469xx || STM32F479xx || STM32F412Zx || STM32F412Rx ||
NYX 0:85b3fd62ea1a 314 STM32F412Vx || STM32F412Cx || STM32F413xx || STM32F423xx */
NYX 0:85b3fd62ea1a 315 #endif /* HAL_PCD_MODULE_ENABLED */
NYX 0:85b3fd62ea1a 316 /**
NYX 0:85b3fd62ea1a 317 * @}
NYX 0:85b3fd62ea1a 318 */
NYX 0:85b3fd62ea1a 319
NYX 0:85b3fd62ea1a 320 /**
NYX 0:85b3fd62ea1a 321 * @}
NYX 0:85b3fd62ea1a 322 */
NYX 0:85b3fd62ea1a 323
NYX 0:85b3fd62ea1a 324 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/