Skip to content

Commit 9c495d8

Browse files
stm32cube: u5: patch HAL PCD & LL USB to work w/o Legacy definitions
Replace HAL Legacy definitions used in these drivers with the proper, non-Legacy definitions. Also add a note in the patch list about this modification. Signed-off-by: Mathieu Choplain <[email protected]>
1 parent f0aadc7 commit 9c495d8

File tree

3 files changed

+38
-30
lines changed

3 files changed

+38
-30
lines changed

stm32cube/stm32u5xx/README

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,17 +48,25 @@ Patch List:
4848
Impacted files:
4949
drivers/include/Legacy/stm32_hal_legacy.h
5050

51+
*Update HAL PCD and LL USB which used legacy definitions
52+
This enables compilation of the HAL PCD and the LL USB modules without the
53+
legacy header.
54+
Impacted files:
55+
drivers/src/stm32u5xx_hal_pcd.c
56+
drivers/src/stm32u5xx_ll_usb.c
57+
ST Internal Reference: N/A (TBD)
58+
5159
*Fix SDIO initialization failure when skipping card identification sequence
5260
Fixes an issue in the STM32U5 SDIO driver where HAL_SDIO_Init() fails if
5361
the card identification sequence is skipped.
5462
Impacted files:
5563
stm32cube/stm32u5xx/drivers/src/stm32u5xx_hal_sdio.c
5664

5765
*Fix SDIO polling mode data transfer issues
58-
Fixes two related issues in the STM32U5 SDIO driver: incorrect block count calculation
59-
that caused the card to hang, and improper buffer size handling that led to misaligned FIFO writes.
66+
Fixes two related issues in the STM32U5 SDIO driver: incorrect block count calculation
67+
that caused the card to hang, and improper buffer size handling that led to misaligned FIFO writes.
6068
Together, these changes ensure correct and stable data transfer in polling mode.
61-
Impacted file:
62-
stm32cube/stm32u5xx/drivers/src/stm32u5xx_hal_sdio.c
69+
Impacted file:
70+
stm32cube/stm32u5xx/drivers/src/stm32u5xx_hal_sdio.c
6371

6472
See release_note.html from STM32Cube

stm32cube/stm32u5xx/drivers/src/stm32u5xx_hal_pcd.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1118,7 +1118,7 @@ void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd)
11181118

11191119
RegVal = USBx->GRXSTSP;
11201120

1121-
ep = &hpcd->OUT_ep[RegVal & USB_OTG_GRXSTSP_EPNUM];
1121+
ep = &hpcd->OUT_ep[RegVal & USB_OTG_GRXSTSP_EPNUM_CHNUM];
11221122

11231123
if (((RegVal & USB_OTG_GRXSTSP_PKTSTS) >> 17) == STS_DATA_UPDT)
11241124
{
@@ -1178,7 +1178,7 @@ void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd)
11781178
/* Clear OUT Endpoint disable interrupt */
11791179
if ((epint & USB_OTG_DOEPINT_EPDISD) == USB_OTG_DOEPINT_EPDISD)
11801180
{
1181-
if ((USBx->GINTSTS & USB_OTG_GINTSTS_BOUTNAKEFF) == USB_OTG_GINTSTS_BOUTNAKEFF)
1181+
if ((USBx->GINTSTS & USB_OTG_GINTSTS_GONAKEFF) == USB_OTG_GINTSTS_GONAKEFF)
11821182
{
11831183
USBx_DEVICE->DCTL |= USB_OTG_DCTL_CGONAK;
11841184
}
@@ -1296,7 +1296,7 @@ void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd)
12961296
}
12971297

12981298
/* Handle Resume Interrupt */
1299-
if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_WKUINT))
1299+
if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_WKUPINT))
13001300
{
13011301
/* Clear the Remote Wake-up Signaling */
13021302
USBx_DEVICE->DCTL &= ~USB_OTG_DCTL_RWUSIG;
@@ -1320,7 +1320,7 @@ void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd)
13201320
#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
13211321
}
13221322

1323-
__HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_WKUINT);
1323+
__HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_WKUPINT);
13241324
}
13251325

13261326
/* Handle Suspend Interrupt */

stm32cube/stm32u5xx/drivers/src/stm32u5xx_ll_usb.c

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ HAL_StatusTypeDef USB_SetTurnaroundTime(USB_OTG_GlobalTypeDef *USBx,
220220
*/
221221
HAL_StatusTypeDef USB_EnableGlobalInt(USB_OTG_GlobalTypeDef *USBx)
222222
{
223-
USBx->GAHBCFG |= USB_OTG_GAHBCFG_GINT;
223+
USBx->GAHBCFG |= USB_OTG_GAHBCFG_GINTMSK;
224224
return HAL_OK;
225225
}
226226

@@ -232,7 +232,7 @@ HAL_StatusTypeDef USB_EnableGlobalInt(USB_OTG_GlobalTypeDef *USBx)
232232
*/
233233
HAL_StatusTypeDef USB_DisableGlobalInt(USB_OTG_GlobalTypeDef *USBx)
234234
{
235-
USBx->GAHBCFG &= ~USB_OTG_GAHBCFG_GINT;
235+
USBx->GAHBCFG &= ~USB_OTG_GAHBCFG_GINTMSK;
236236
return HAL_OK;
237237
}
238238

@@ -447,7 +447,7 @@ HAL_StatusTypeDef USB_DevInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cf
447447
USBx->GINTMSK |= USB_OTG_GINTMSK_USBSUSPM | USB_OTG_GINTMSK_USBRST |
448448
USB_OTG_GINTMSK_ENUMDNEM | USB_OTG_GINTMSK_IEPINT |
449449
USB_OTG_GINTMSK_OEPINT | USB_OTG_GINTMSK_IISOIXFRM |
450-
USB_OTG_GINTMSK_PXFRM_IISOOXFRM | USB_OTG_GINTMSK_WUIM;
450+
USB_OTG_GINTMSK_IPXFRM_IISOOXFRM | USB_OTG_GINTMSK_WUIM;
451451

452452
if (cfg.Sof_enable != 0U)
453453
{
@@ -804,8 +804,8 @@ HAL_StatusTypeDef USB_EPStartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef
804804

805805
if (ep->type == EP_TYPE_ISOC)
806806
{
807-
USBx_INEP(epnum)->DIEPTSIZ &= ~(USB_OTG_DIEPTSIZ_MULCNT);
808-
USBx_INEP(epnum)->DIEPTSIZ |= (USB_OTG_DIEPTSIZ_MULCNT & ((uint32_t)pktcnt << 29));
807+
USBx_INEP(epnum)->DIEPTSIZ &= ~(USB_OTG_DIEPTSIZ_MCNT);
808+
USBx_INEP(epnum)->DIEPTSIZ |= (USB_OTG_DIEPTSIZ_MCNT & ((uint32_t)pktcnt << 29));
809809
}
810810
}
811811

@@ -823,7 +823,7 @@ HAL_StatusTypeDef USB_EPStartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef
823823
{
824824
if ((USBx_DEVICE->DSTS & (1UL << 8)) == 0U)
825825
{
826-
USBx_INEP(epnum)->DIEPCTL |= USB_OTG_DIEPCTL_SODDFRM;
826+
USBx_INEP(epnum)->DIEPCTL |= USB_OTG_DIEPCTL_SD1PID_SODDFRM;
827827
}
828828
else
829829
{
@@ -851,7 +851,7 @@ HAL_StatusTypeDef USB_EPStartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef
851851
{
852852
if ((USBx_DEVICE->DSTS & (1UL << 8)) == 0U)
853853
{
854-
USBx_INEP(epnum)->DIEPCTL |= USB_OTG_DIEPCTL_SODDFRM;
854+
USBx_INEP(epnum)->DIEPCTL |= USB_OTG_DIEPCTL_SD1PID_SODDFRM;
855855
}
856856
else
857857
{
@@ -913,7 +913,7 @@ HAL_StatusTypeDef USB_EPStartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef
913913
{
914914
if ((USBx_DEVICE->DSTS & (1UL << 8)) == 0U)
915915
{
916-
USBx_OUTEP(epnum)->DOEPCTL |= USB_OTG_DOEPCTL_SODDFRM;
916+
USBx_OUTEP(epnum)->DOEPCTL |= USB_OTG_DOEPCTL_SD1PID_SODDFRM;
917917
}
918918
else
919919
{
@@ -967,7 +967,7 @@ HAL_StatusTypeDef USB_EPStopXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef
967967
{
968968
USBx->GINTMSK &= ~USB_OTG_GINTMSK_GONAKEFFM;
969969

970-
if ((USBx->GINTSTS & USB_OTG_GINTSTS_BOUTNAKEFF) == 0U)
970+
if ((USBx->GINTSTS & USB_OTG_GINTSTS_GONAKEFF) == 0U)
971971
{
972972
USBx_DEVICE->DCTL |= USB_OTG_DCTL_SGONAK;
973973
}
@@ -1002,8 +1002,8 @@ HAL_StatusTypeDef USB_EPStopXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef
10021002
ret = HAL_ERROR;
10031003
break;
10041004
}
1005-
} while (((USBx->GINTSTS & USB_OTG_GINTSTS_BOUTNAKEFF)
1006-
& USB_OTG_GINTSTS_BOUTNAKEFF) != USB_OTG_GINTSTS_BOUTNAKEFF);
1005+
} while (((USBx->GINTSTS & USB_OTG_GINTSTS_GONAKEFF)
1006+
& USB_OTG_GINTSTS_GONAKEFF) != USB_OTG_GINTSTS_GONAKEFF);
10071007

10081008
USBx_OUTEP(ep->num)->DOEPCTL |= (USB_OTG_DOEPCTL_SNAK);
10091009
USBx_OUTEP(ep->num)->DOEPCTL |= (USB_OTG_DOEPCTL_EPDIS);
@@ -1241,7 +1241,7 @@ HAL_StatusTypeDef USB_DevConnect(const USB_OTG_GlobalTypeDef *USBx)
12411241
uint32_t USBx_BASE = (uint32_t)USBx;
12421242

12431243
/* In case phy is stopped, ensure to ungate and restore the phy CLK */
1244-
USBx_PCGCCTL &= ~(USB_OTG_PCGCCTL_STOPCLK | USB_OTG_PCGCCTL_GATECLK);
1244+
USBx_PCGCCTL &= ~(USB_OTG_PCGCCTL_STPPCLK | USB_OTG_PCGCCTL_GATEHCLK);
12451245

12461246
USBx_DEVICE->DCTL &= ~USB_OTG_DCTL_SDIS;
12471247

@@ -1258,7 +1258,7 @@ HAL_StatusTypeDef USB_DevDisconnect(const USB_OTG_GlobalTypeDef *USBx)
12581258
uint32_t USBx_BASE = (uint32_t)USBx;
12591259

12601260
/* In case phy is stopped, ensure to ungate and restore the phy CLK */
1261-
USBx_PCGCCTL &= ~(USB_OTG_PCGCCTL_STOPCLK | USB_OTG_PCGCCTL_GATECLK);
1261+
USBx_PCGCCTL &= ~(USB_OTG_PCGCCTL_STPPCLK | USB_OTG_PCGCCTL_GATEHCLK);
12621262

12631263
USBx_DEVICE->DCTL |= USB_OTG_DCTL_SDIS;
12641264

@@ -1436,7 +1436,7 @@ HAL_StatusTypeDef USB_EP0_OutStart(const USB_OTG_GlobalTypeDef *USBx, uint8_t dm
14361436
USBx_OUTEP(0U)->DOEPTSIZ = 0U;
14371437
USBx_OUTEP(0U)->DOEPTSIZ |= (USB_OTG_DOEPTSIZ_PKTCNT & (1UL << 19));
14381438
USBx_OUTEP(0U)->DOEPTSIZ |= (3U * 8U);
1439-
USBx_OUTEP(0U)->DOEPTSIZ |= USB_OTG_DOEPTSIZ_STUPCNT;
1439+
USBx_OUTEP(0U)->DOEPTSIZ |= USB_OTG_DOEPTSIZ_RXDPID;
14401440

14411441
if (dma == 1U)
14421442
{
@@ -1582,15 +1582,15 @@ HAL_StatusTypeDef USB_HostInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef c
15821582
/* set Rx FIFO size */
15831583
USBx->GRXFSIZ = 0x200U;
15841584
USBx->DIEPTXF0_HNPTXFSIZ = (uint32_t)(((0x100UL << 16) & USB_OTG_NPTXFD) | 0x200U);
1585-
USBx->HPTXFSIZ = (uint32_t)(((0xE0UL << 16) & USB_OTG_HPTXFSIZ_PTXFD) | 0x300U);
1585+
USBx->HPTXFSIZ = (uint32_t)(((0xE0UL << 16) & USB_OTG_HPTXFSIZ_PTXFSIZ) | 0x300U);
15861586
}
15871587
else
15881588
#endif /* defined (USB_OTG_HS) */
15891589
{
15901590
/* set Rx FIFO size */
15911591
USBx->GRXFSIZ = 0x80U;
15921592
USBx->DIEPTXF0_HNPTXFSIZ = (uint32_t)(((0x60UL << 16) & USB_OTG_NPTXFD) | 0x80U);
1593-
USBx->HPTXFSIZ = (uint32_t)(((0x40UL << 16)& USB_OTG_HPTXFSIZ_PTXFD) | 0xE0U);
1593+
USBx->HPTXFSIZ = (uint32_t)(((0x40UL << 16)& USB_OTG_HPTXFSIZ_PTXFSIZ) | 0xE0U);
15941594
}
15951595

15961596
/* Enable the common interrupts */
@@ -1602,7 +1602,7 @@ HAL_StatusTypeDef USB_HostInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef c
16021602
/* Enable interrupts matching to the Host mode ONLY */
16031603
USBx->GINTMSK |= (USB_OTG_GINTMSK_PRTIM | USB_OTG_GINTMSK_HCIM | \
16041604
USB_OTG_GINTMSK_SOFM | USB_OTG_GINTSTS_DISCINT | \
1605-
USB_OTG_GINTMSK_PXFRM_IISOOXFRM | USB_OTG_GINTMSK_WUIM);
1605+
USB_OTG_GINTMSK_IPXFRM_IISOOXFRM | USB_OTG_GINTMSK_WUIM);
16061606

16071607
return ret;
16081608
}
@@ -1772,7 +1772,7 @@ HAL_StatusTypeDef USB_HC_Init(USB_OTG_GlobalTypeDef *USBx, uint8_t ch_num,
17721772
USB_OTG_HCINTMSK_STALLM |
17731773
USB_OTG_HCINTMSK_TXERRM |
17741774
USB_OTG_HCINTMSK_DTERRM |
1775-
USB_OTG_HCINTMSK_AHBERR |
1775+
USB_OTG_HCINTMSK_AHBERRM |
17761776
USB_OTG_HCINTMSK_NAKM;
17771777

17781778
if ((epnum & 0x80U) == 0x80U)
@@ -1797,7 +1797,7 @@ HAL_StatusTypeDef USB_HC_Init(USB_OTG_GlobalTypeDef *USBx, uint8_t ch_num,
17971797
USB_OTG_HCINTMSK_TXERRM |
17981798
USB_OTG_HCINTMSK_DTERRM |
17991799
USB_OTG_HCINTMSK_NAKM |
1800-
USB_OTG_HCINTMSK_AHBERR |
1800+
USB_OTG_HCINTMSK_AHBERRM |
18011801
USB_OTG_HCINTMSK_FRMORM;
18021802

18031803
if ((epnum & 0x80U) == 0x80U)
@@ -1810,7 +1810,7 @@ HAL_StatusTypeDef USB_HC_Init(USB_OTG_GlobalTypeDef *USBx, uint8_t ch_num,
18101810
case EP_TYPE_ISOC:
18111811
USBx_HC((uint32_t)ch_num)->HCINTMSK = USB_OTG_HCINTMSK_XFRCM |
18121812
USB_OTG_HCINTMSK_ACKM |
1813-
USB_OTG_HCINTMSK_AHBERR |
1813+
USB_OTG_HCINTMSK_AHBERRM |
18141814
USB_OTG_HCINTMSK_FRMORM;
18151815

18161816
if ((epnum & 0x80U) == 0x80U)
@@ -1862,7 +1862,7 @@ HAL_StatusTypeDef USB_HC_Init(USB_OTG_GlobalTypeDef *USBx, uint8_t ch_num,
18621862
((((uint32_t)epnum & 0x7FU) << 11) & USB_OTG_HCCHAR_EPNUM) |
18631863
(((uint32_t)ep_type << 18) & USB_OTG_HCCHAR_EPTYP) |
18641864
((uint32_t)mps & USB_OTG_HCCHAR_MPSIZ) |
1865-
USB_OTG_HCCHAR_MC_0 | HCcharEpDir | HCcharLowSpeed;
1865+
USB_OTG_HCCHAR_MCNT_0 | HCcharEpDir | HCcharLowSpeed;
18661866

18671867
if ((ep_type == EP_TYPE_INTR) || (ep_type == EP_TYPE_ISOC))
18681868
{
@@ -2279,7 +2279,7 @@ HAL_StatusTypeDef USB_DoPing(const USB_OTG_GlobalTypeDef *USBx, uint8_t ch_num)
22792279
uint32_t tmpreg;
22802280

22812281
USBx_HC(chnum)->HCTSIZ = ((num_packets << 19) & USB_OTG_HCTSIZ_PKTCNT) |
2282-
USB_OTG_HCTSIZ_DOPING;
2282+
USB_OTG_HCTSIZ_DOPNG;
22832283

22842284
/* Set host channel enable */
22852285
tmpreg = USBx_HC(chnum)->HCCHAR;

0 commit comments

Comments
 (0)