Add more comments

pull/5834/head
bcostm 2018-01-05 22:04:19 +01:00
parent 84577f9634
commit 0448d64f62
8 changed files with 57 additions and 9 deletions

View File

@ -122,10 +122,13 @@ typedef enum
(__HANDLE__)->Lock = HAL_UNLOCKED; \ (__HANDLE__)->Lock = HAL_UNLOCKED; \
}while (0) }while (0)
#endif /* USE_RTOS */ #endif /* USE_RTOS */
// Added for MBED PR #3062
#if defined (__CC_ARM) #if defined (__CC_ARM)
#pragma diag_suppress 3731 #pragma diag_suppress 3731
#endif #endif
// Added for MBED PR #3062
static inline void atomic_set_u32(volatile uint32_t *ptr, uint32_t mask) static inline void atomic_set_u32(volatile uint32_t *ptr, uint32_t mask)
{ {
uint32_t newValue; uint32_t newValue;
@ -135,7 +138,7 @@ static inline void atomic_set_u32(volatile uint32_t *ptr, uint32_t mask)
} while (__STREXW(newValue, ptr)); } while (__STREXW(newValue, ptr));
} }
// Added for MBED PR #3062
static inline void atomic_clr_u32(volatile uint32_t *ptr, uint32_t mask) static inline void atomic_clr_u32(volatile uint32_t *ptr, uint32_t mask)
{ {
uint32_t newValue; uint32_t newValue;

View File

@ -206,7 +206,9 @@ HAL_StatusTypeDef HAL_HCD_HC_Init(HCD_HandleTypeDef *hhcd,
hhcd->hc[ch_num].ep_num = epnum & 0x7F; hhcd->hc[ch_num].ep_num = epnum & 0x7F;
hhcd->hc[ch_num].ep_is_in = ((epnum & 0x80) == 0x80); hhcd->hc[ch_num].ep_is_in = ((epnum & 0x80) == 0x80);
hhcd->hc[ch_num].speed = speed; hhcd->hc[ch_num].speed = speed;
/* reset to 0 */
// Added for MBED PR #3432
/* reset to 0 */
hhcd->hc[ch_num].toggle_out = 0; hhcd->hc[ch_num].toggle_out = 0;
hhcd->hc[ch_num].toggle_in = 0; hhcd->hc[ch_num].toggle_in = 0;
@ -346,6 +348,7 @@ HAL_StatusTypeDef HAL_HCD_HC_SubmitRequest(HCD_HandleTypeDef *hhcd,
uint16_t length, uint16_t length,
uint8_t do_ping) uint8_t do_ping)
{ {
// Added for MBED PR #3432
if ((hhcd->hc[ch_num].ep_is_in != direction)) { if ((hhcd->hc[ch_num].ep_is_in != direction)) {
if ((hhcd->hc[ch_num].ep_type == EP_TYPE_CTRL)){ if ((hhcd->hc[ch_num].ep_type == EP_TYPE_CTRL)){
/* reconfigure the endpoint !!! from tx -> rx, and rx ->tx */ /* reconfigure the endpoint !!! from tx -> rx, and rx ->tx */
@ -401,6 +404,7 @@ HAL_StatusTypeDef HAL_HCD_HC_SubmitRequest(HCD_HandleTypeDef *hhcd,
hhcd->hc[ch_num].do_ping = do_ping; hhcd->hc[ch_num].do_ping = do_ping;
} }
} }
// Added for MBED PR #3432
else if ((token == 1) && (direction == 1)) else if ((token == 1) && (direction == 1))
{ {
if( hhcd->hc[ch_num].toggle_in == 0) if( hhcd->hc[ch_num].toggle_in == 0)
@ -910,6 +914,7 @@ static void HCD_HC_IN_IRQHandler (HCD_HandleTypeDef *hhcd, uint8_t chnum)
} }
else if ((USBx_HC(chnum)->HCINT) & USB_OTG_HCINT_CHH) else if ((USBx_HC(chnum)->HCINT) & USB_OTG_HCINT_CHH)
{ {
// Added for MBED PR #3432
int reactivate = 0; int reactivate = 0;
__HAL_HCD_MASK_HALT_HC_INT(chnum); __HAL_HCD_MASK_HALT_HC_INT(chnum);
@ -939,6 +944,7 @@ static void HCD_HC_IN_IRQHandler (HCD_HandleTypeDef *hhcd, uint8_t chnum)
/* re-activate the channel */ /* re-activate the channel */
tmpreg = USBx_HC(chnum)->HCCHAR; tmpreg = USBx_HC(chnum)->HCCHAR;
tmpreg &= ~USB_OTG_HCCHAR_CHDIS; tmpreg &= ~USB_OTG_HCCHAR_CHDIS;
// Added for MBED PR #3432 #4231
if ( hhcd->hc[chnum].urb_state != URB_ERROR) { if ( hhcd->hc[chnum].urb_state != URB_ERROR) {
tmpreg |= USB_OTG_HCCHAR_CHENA; tmpreg |= USB_OTG_HCCHAR_CHENA;
reactivate = 1; reactivate = 1;
@ -946,6 +952,7 @@ static void HCD_HC_IN_IRQHandler (HCD_HandleTypeDef *hhcd, uint8_t chnum)
USBx_HC(chnum)->HCCHAR = tmpreg; USBx_HC(chnum)->HCCHAR = tmpreg;
} }
__HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_CHH); __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_CHH);
// Added for MBED PR #3432 #4231
if (hhcd->hc[chnum].state == 0) reactivate = 1; if (hhcd->hc[chnum].state == 0) reactivate = 1;
if (reactivate == 0) HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); if (reactivate == 0) HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state);
} }

View File

@ -2592,6 +2592,7 @@ HAL_StatusTypeDef HAL_I2C_Master_Sequential_Transmit_IT(I2C_HandleTypeDef *hi2c,
/* Prepare transfer parameters */ /* Prepare transfer parameters */
hi2c->pBuffPtr = pData; hi2c->pBuffPtr = pData;
hi2c->XferCount = Size; hi2c->XferCount = Size;
// Added for MBED PR #3324
hi2c->XferOptions = (XferOptions & (~I2C_RELOAD_MODE)); hi2c->XferOptions = (XferOptions & (~I2C_RELOAD_MODE));
hi2c->XferISR = I2C_Master_ISR_IT; hi2c->XferISR = I2C_Master_ISR_IT;
@ -2665,6 +2666,7 @@ HAL_StatusTypeDef HAL_I2C_Master_Sequential_Receive_IT(I2C_HandleTypeDef *hi2c,
/* Prepare transfer parameters */ /* Prepare transfer parameters */
hi2c->pBuffPtr = pData; hi2c->pBuffPtr = pData;
hi2c->XferCount = Size; hi2c->XferCount = Size;
// Added for MBED PR #3324
hi2c->XferOptions = (XferOptions & (~I2C_RELOAD_MODE)); hi2c->XferOptions = (XferOptions & (~I2C_RELOAD_MODE));
hi2c->XferISR = I2C_Master_ISR_IT; hi2c->XferISR = I2C_Master_ISR_IT;

View File

@ -162,8 +162,11 @@ HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd)
{ {
/* Allocate lock resource and initialize it */ /* Allocate lock resource and initialize it */
hpcd->Lock = HAL_UNLOCKED; hpcd->Lock = HAL_UNLOCKED;
for (index = 0; index < hpcd->Init.dev_endpoints ; index++)
hpcd->EPLock[index].Lock = HAL_UNLOCKED; // Added for MBED PR #3062
for (index = 0; index < hpcd->Init.dev_endpoints ; index++)
hpcd->EPLock[index].Lock = HAL_UNLOCKED;
/* Init the low level hardware : GPIO, CLOCK, NVIC... */ /* Init the low level hardware : GPIO, CLOCK, NVIC... */
HAL_PCD_MspInit(hpcd); HAL_PCD_MspInit(hpcd);
} }
@ -469,6 +472,8 @@ void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd)
if(( epint & USB_OTG_DIEPINT_XFRC) == USB_OTG_DIEPINT_XFRC) if(( epint & USB_OTG_DIEPINT_XFRC) == USB_OTG_DIEPINT_XFRC)
{ {
fifoemptymsk = 0x1 << epnum; fifoemptymsk = 0x1 << epnum;
// Added for MBED PR #3062
atomic_clr_u32(&USBx_DEVICE->DIEPEMPMSK, fifoemptymsk); atomic_clr_u32(&USBx_DEVICE->DIEPEMPMSK, fifoemptymsk);
CLEAR_IN_EP_INTR(epnum, USB_OTG_DIEPINT_XFRC); CLEAR_IN_EP_INTR(epnum, USB_OTG_DIEPINT_XFRC);
@ -1188,6 +1193,7 @@ HAL_StatusTypeDef HAL_PCD_EP_Receive(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, u
ep->is_in = 0; ep->is_in = 0;
ep->num = ep_addr & 0x7F; ep->num = ep_addr & 0x7F;
// Added for MBED PR #3062
__HAL_LOCK(&hpcd->EPLock[ep_addr & 0x7F]); __HAL_LOCK(&hpcd->EPLock[ep_addr & 0x7F]);
if ((ep_addr & 0x7F) == 0 ) if ((ep_addr & 0x7F) == 0 )
@ -1198,6 +1204,8 @@ HAL_StatusTypeDef HAL_PCD_EP_Receive(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, u
{ {
USB_EPStartXfer(hpcd->Instance, ep, hpcd->Init.dma_enable); USB_EPStartXfer(hpcd->Instance, ep, hpcd->Init.dma_enable);
} }
// Added for MBED PR #3062
__HAL_UNLOCK(&hpcd->EPLock[ep_addr & 0x7F]); __HAL_UNLOCK(&hpcd->EPLock[ep_addr & 0x7F]);
return HAL_OK; return HAL_OK;
@ -1233,7 +1241,8 @@ HAL_StatusTypeDef HAL_PCD_EP_Transmit(PCD_HandleTypeDef *hpcd, uint8_t ep_addr,
ep->xfer_count = 0; ep->xfer_count = 0;
ep->is_in = 1; ep->is_in = 1;
ep->num = ep_addr & 0x7F; ep->num = ep_addr & 0x7F;
// Added for MBED PR #3062
__HAL_LOCK(&hpcd->EPLock[ep_addr & 0x7F]); __HAL_LOCK(&hpcd->EPLock[ep_addr & 0x7F]);
if ((ep_addr & 0x7F) == 0 ) if ((ep_addr & 0x7F) == 0 )
@ -1244,7 +1253,8 @@ HAL_StatusTypeDef HAL_PCD_EP_Transmit(PCD_HandleTypeDef *hpcd, uint8_t ep_addr,
{ {
USB_EPStartXfer(hpcd->Instance, ep, hpcd->Init.dma_enable); USB_EPStartXfer(hpcd->Instance, ep, hpcd->Init.dma_enable);
} }
// Added for MBED PR #3062
__HAL_UNLOCK(&hpcd->EPLock[ep_addr & 0x7F]); __HAL_UNLOCK(&hpcd->EPLock[ep_addr & 0x7F]);
return HAL_OK; return HAL_OK;
@ -1272,13 +1282,17 @@ HAL_StatusTypeDef HAL_PCD_EP_SetStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr)
ep->is_stall = 1; ep->is_stall = 1;
ep->num = ep_addr & 0x7F; ep->num = ep_addr & 0x7F;
ep->is_in = ((ep_addr & 0x80) == 0x80); ep->is_in = ((ep_addr & 0x80) == 0x80);
// Added for MBED PR #3062
__HAL_LOCK(&hpcd->EPLock[ep_addr & 0x7F]); __HAL_LOCK(&hpcd->EPLock[ep_addr & 0x7F]);
USB_EPSetStall(hpcd->Instance , ep); USB_EPSetStall(hpcd->Instance , ep);
if((ep_addr & 0x7F) == 0) if((ep_addr & 0x7F) == 0)
{ {
USB_EP0_OutStart(hpcd->Instance, hpcd->Init.dma_enable, (uint8_t *)hpcd->Setup); USB_EP0_OutStart(hpcd->Instance, hpcd->Init.dma_enable, (uint8_t *)hpcd->Setup);
} }
// Added for MBED PR #3062
__HAL_UNLOCK(&hpcd->EPLock[ep_addr & 0x7F]); __HAL_UNLOCK(&hpcd->EPLock[ep_addr & 0x7F]);
return HAL_OK; return HAL_OK;
@ -1306,9 +1320,13 @@ HAL_StatusTypeDef HAL_PCD_EP_ClrStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr)
ep->is_stall = 0; ep->is_stall = 0;
ep->num = ep_addr & 0x7F; ep->num = ep_addr & 0x7F;
ep->is_in = ((ep_addr & 0x80) == 0x80); ep->is_in = ((ep_addr & 0x80) == 0x80);
// Added for MBED PR #3062
__HAL_LOCK(&hpcd->EPLock[ep_addr & 0x7F]); __HAL_LOCK(&hpcd->EPLock[ep_addr & 0x7F]);
USB_EPClearStall(hpcd->Instance , ep); USB_EPClearStall(hpcd->Instance , ep);
// Added for MBED PR #3062
__HAL_UNLOCK(&hpcd->EPLock[ep_addr & 0x7F]); __HAL_UNLOCK(&hpcd->EPLock[ep_addr & 0x7F]);
return HAL_OK; return HAL_OK;
@ -1322,7 +1340,9 @@ HAL_StatusTypeDef HAL_PCD_EP_ClrStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr)
*/ */
HAL_StatusTypeDef HAL_PCD_EP_Flush(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) HAL_StatusTypeDef HAL_PCD_EP_Flush(PCD_HandleTypeDef *hpcd, uint8_t ep_addr)
{ {
// Added for MBED PR #3062
__HAL_LOCK(&hpcd->EPLock[ep_addr & 0x7F]); __HAL_LOCK(&hpcd->EPLock[ep_addr & 0x7F]);
if ((ep_addr & 0x80) == 0x80) if ((ep_addr & 0x80) == 0x80)
{ {
USB_FlushTxFifo(hpcd->Instance, ep_addr & 0x7F); USB_FlushTxFifo(hpcd->Instance, ep_addr & 0x7F);
@ -1331,7 +1351,8 @@ HAL_StatusTypeDef HAL_PCD_EP_Flush(PCD_HandleTypeDef *hpcd, uint8_t ep_addr)
{ {
USB_FlushRxFifo(hpcd->Instance); USB_FlushRxFifo(hpcd->Instance);
} }
// Added for MBED PR #3062
__HAL_UNLOCK(&hpcd->EPLock[ep_addr & 0x7F]); __HAL_UNLOCK(&hpcd->EPLock[ep_addr & 0x7F]);
return HAL_OK; return HAL_OK;
@ -1444,6 +1465,7 @@ static HAL_StatusTypeDef PCD_WriteEmptyTxFifo(PCD_HandleTypeDef *hpcd, uint32_t
if(len <= 0) if(len <= 0)
{ {
fifoemptymsk = 0x1 << epnum; fifoemptymsk = 0x1 << epnum;
// Added for MBED PR #3062
atomic_clr_u32(&USBx_DEVICE->DIEPEMPMSK, fifoemptymsk); atomic_clr_u32(&USBx_DEVICE->DIEPEMPMSK, fifoemptymsk);
} }

View File

@ -117,6 +117,8 @@ typedef USB_TypeDef PCD_TypeDef;
typedef USB_CfgTypeDef PCD_InitTypeDef; typedef USB_CfgTypeDef PCD_InitTypeDef;
typedef USB_EPTypeDef PCD_EPTypeDef; typedef USB_EPTypeDef PCD_EPTypeDef;
#endif /* USB */ #endif /* USB */
// Added for MBED PR #3062
typedef struct typedef struct
{ {
HAL_LockTypeDef Lock; HAL_LockTypeDef Lock;
@ -133,6 +135,7 @@ typedef struct
PCD_EPTypeDef IN_ep[15]; /*!< IN endpoint parameters */ PCD_EPTypeDef IN_ep[15]; /*!< IN endpoint parameters */
PCD_EPTypeDef OUT_ep[15]; /*!< OUT endpoint parameters */ PCD_EPTypeDef OUT_ep[15]; /*!< OUT endpoint parameters */
HAL_LockTypeDef Lock; /*!< PCD peripheral status */ HAL_LockTypeDef Lock; /*!< PCD peripheral status */
// Added for MBED PR #3062
PCD_EPLockDef EPLock[15]; PCD_EPLockDef EPLock[15];
__IO PCD_StateTypeDef State; /*!< PCD communication state */ __IO PCD_StateTypeDef State; /*!< PCD communication state */
uint32_t Setup[12]; /*!< Setup packet buffer */ uint32_t Setup[12]; /*!< Setup packet buffer */

View File

@ -650,6 +650,7 @@ HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint
hspi->ErrorCode = HAL_SPI_ERROR_FLAG; hspi->ErrorCode = HAL_SPI_ERROR_FLAG;
} }
// Added for MBED PR #4975
if (hspi->Init.Direction == SPI_DIRECTION_1LINE) { if (hspi->Init.Direction == SPI_DIRECTION_1LINE) {
__HAL_SPI_DISABLE(hspi); __HAL_SPI_DISABLE(hspi);
} }

View File

@ -570,6 +570,7 @@ HAL_StatusTypeDef USB_EPStartXfer(USB_OTG_GlobalTypeDef *USBx , USB_OTG_EPTypeDe
/* Enable the Tx FIFO Empty Interrupt for this EP */ /* Enable the Tx FIFO Empty Interrupt for this EP */
if (ep->xfer_len > 0) if (ep->xfer_len > 0)
{ {
// Added for MBED PR #3062
atomic_set_u32(&USBx_DEVICE->DIEPEMPMSK, 1 << ep->num); atomic_set_u32(&USBx_DEVICE->DIEPEMPMSK, 1 << ep->num);
} }
} }
@ -680,6 +681,7 @@ HAL_StatusTypeDef USB_EP0StartXfer(USB_OTG_GlobalTypeDef *USBx , USB_OTG_EPTypeD
/* Enable the Tx FIFO Empty Interrupt for this EP */ /* Enable the Tx FIFO Empty Interrupt for this EP */
if (ep->xfer_len > 0) if (ep->xfer_len > 0)
{ {
// Added for MBED PR #3062
atomic_set_u32(&USBx_DEVICE->DIEPEMPMSK, 1 << (ep->num)); atomic_set_u32(&USBx_DEVICE->DIEPEMPMSK, 1 << (ep->num));
} }
@ -1406,6 +1408,7 @@ HAL_StatusTypeDef USB_HC_StartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_HCTypeDe
/* Write packet into the Tx FIFO. */ /* Write packet into the Tx FIFO. */
USB_WritePacket(USBx, hc->xfer_buff, hc->ch_num, hc->xfer_len, 0); USB_WritePacket(USBx, hc->xfer_buff, hc->ch_num, hc->xfer_len, 0);
// Added for MBED PR #3432
hc->xfer_count = hc->xfer_len; hc->xfer_count = hc->xfer_len;
} }

View File

@ -38,6 +38,13 @@
#include "stm32l4xx_ll_system.h" #include "stm32l4xx_ll_system.h"
#include "stm32l4xx_ll_pwr.h" #include "stm32l4xx_ll_pwr.h"
// Removed from MBED PR #3410
//#ifdef USE_FULL_ASSERT
//#include "stm32_assert.h"
//#else
//#define assert_param(expr) ((void)0U)
//#endif /* USE_FULL_ASSERT */
/** @addtogroup STM32L4xx_LL_Driver /** @addtogroup STM32L4xx_LL_Driver
* @{ * @{
*/ */