mbed library sources. Supersedes mbed-src.
Fork of mbed-dev by
Diff: targets/TARGET_STM/TARGET_STM32L4/device/stm32l4xx_hal_pcd.c
- Revision:
- 153:fa9ff456f731
- Parent:
- 149:156823d33999
- Child:
- 167:e84263d55307
--- a/targets/TARGET_STM/TARGET_STM32L4/device/stm32l4xx_hal_pcd.c Thu Dec 15 11:48:27 2016 +0000 +++ b/targets/TARGET_STM/TARGET_STM32L4/device/stm32l4xx_hal_pcd.c Tue Dec 20 17:27:56 2016 +0000 @@ -157,7 +157,8 @@ { /* Allocate lock resource and initialize it */ hpcd->Lock = HAL_UNLOCKED; - + for (index = 0; index < hpcd->Init.dev_endpoints ; index++) + hpcd->EPLock[index].Lock = HAL_UNLOCKED; /* Init the low level hardware : GPIO, CLOCK, NVIC... */ HAL_PCD_MspInit(hpcd); } @@ -198,7 +199,6 @@ hpcd->OUT_ep[index].xfer_buff = 0; hpcd->OUT_ep[index].xfer_len = 0; } - /* Init Device */ USB_DevInit(hpcd->Instance, hpcd->Init); @@ -426,7 +426,7 @@ if(( epint & USB_OTG_DIEPINT_XFRC) == USB_OTG_DIEPINT_XFRC) { fifoemptymsk = 0x1 << epnum; - USBx_DEVICE->DIEPEMPMSK &= ~fifoemptymsk; + atomic_clr_u32(&USBx_DEVICE->DIEPEMPMSK, fifoemptymsk); CLEAR_IN_EP_INTR(epnum, USB_OTG_DIEPINT_XFRC); @@ -1141,7 +1141,7 @@ ep->is_in = 0; ep->num = ep_addr & 0x7F; - __HAL_LOCK(hpcd); + __HAL_LOCK(&hpcd->EPLock[ep_addr & 0x7F]); if ((ep_addr & 0x7F) == 0 ) { @@ -1151,7 +1151,7 @@ { USB_EPStartXfer(hpcd->Instance, ep, hpcd->Init.dma_enable); } - __HAL_UNLOCK(hpcd); + __HAL_UNLOCK(&hpcd->EPLock[ep_addr & 0x7F]); return HAL_OK; } @@ -1187,7 +1187,7 @@ ep->is_in = 1; ep->num = ep_addr & 0x7F; - __HAL_LOCK(hpcd); + __HAL_LOCK(&hpcd->EPLock[ep_addr & 0x7F]); if ((ep_addr & 0x7F) == 0 ) { @@ -1198,7 +1198,7 @@ USB_EPStartXfer(hpcd->Instance, ep, hpcd->Init.dma_enable); } - __HAL_UNLOCK(hpcd); + __HAL_UNLOCK(&hpcd->EPLock[ep_addr & 0x7F]); return HAL_OK; } @@ -1226,13 +1226,13 @@ ep->num = ep_addr & 0x7F; ep->is_in = ((ep_addr & 0x80) == 0x80); - __HAL_LOCK(hpcd); + __HAL_LOCK(&hpcd->EPLock[ep_addr & 0x7F]); USB_EPSetStall(hpcd->Instance , ep); if((ep_addr & 0x7F) == 0) { USB_EP0_OutStart(hpcd->Instance, hpcd->Init.dma_enable, (uint8_t *)hpcd->Setup); } - __HAL_UNLOCK(hpcd); + __HAL_UNLOCK(&hpcd->EPLock[ep_addr & 0x7F]); return HAL_OK; } @@ -1260,9 +1260,9 @@ ep->num = ep_addr & 0x7F; ep->is_in = ((ep_addr & 0x80) == 0x80); - __HAL_LOCK(hpcd); + __HAL_LOCK(&hpcd->EPLock[ep_addr & 0x7F]); USB_EPClearStall(hpcd->Instance , ep); - __HAL_UNLOCK(hpcd); + __HAL_UNLOCK(&hpcd->EPLock[ep_addr & 0x7F]); return HAL_OK; } @@ -1275,8 +1275,7 @@ */ HAL_StatusTypeDef HAL_PCD_EP_Flush(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) { - __HAL_LOCK(hpcd); - + __HAL_LOCK(&hpcd->EPLock[ep_addr & 0x7F]); if ((ep_addr & 0x80) == 0x80) { USB_FlushTxFifo(hpcd->Instance, ep_addr & 0x7F); @@ -1286,7 +1285,7 @@ USB_FlushRxFifo(hpcd->Instance); } - __HAL_UNLOCK(hpcd); + __HAL_UNLOCK(&hpcd->EPLock[ep_addr & 0x7F]); return HAL_OK; } @@ -1398,7 +1397,7 @@ if(len <= 0) { fifoemptymsk = 0x1 << epnum; - USBx_DEVICE->DIEPEMPMSK &= ~fifoemptymsk; + atomic_clr_u32(&USBx_DEVICE->DIEPEMPMSK, fifoemptymsk); }