Skip to content

Commit 89fd6b1

Browse files
dlechdpgeorge
authored andcommitted
H7_HAL/usb: Pass USB_OTG_CfgTypeDef by reference.
USB_OTG_CfgTypeDef is a large struct, so passing by reference should be more efficient in terms of stack usage and code size. Signed-off-by: David Lechner <[email protected]>
1 parent 7ba427e commit 89fd6b1

File tree

4 files changed

+25
-25
lines changed

4 files changed

+25
-25
lines changed

STM32H7xx_HAL_Driver/Inc/stm32h7xx_ll_usb.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -476,8 +476,8 @@ typedef USB_HCTypeDef USB_OTG_HCTypeDef;
476476
* @{
477477
*/
478478
#if defined (USB_OTG_FS) || defined (USB_OTG_HS)
479-
HAL_StatusTypeDef USB_CoreInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg);
480-
HAL_StatusTypeDef USB_DevInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg);
479+
HAL_StatusTypeDef USB_CoreInit(USB_OTG_GlobalTypeDef *USBx, const USB_OTG_CfgTypeDef *cfg);
480+
HAL_StatusTypeDef USB_DevInit(USB_OTG_GlobalTypeDef *USBx, const USB_OTG_CfgTypeDef *cfg);
481481
HAL_StatusTypeDef USB_EnableGlobalInt(USB_OTG_GlobalTypeDef *USBx);
482482
HAL_StatusTypeDef USB_DisableGlobalInt(USB_OTG_GlobalTypeDef *USBx);
483483
HAL_StatusTypeDef USB_SetTurnaroundTime(USB_OTG_GlobalTypeDef *USBx, uint32_t hclk, uint8_t speed);
@@ -513,7 +513,7 @@ uint32_t USB_ReadDevAllInEpInterrupt(USB_OTG_GlobalTypeDef *USBx);
513513
uint32_t USB_ReadDevInEPInterrupt(USB_OTG_GlobalTypeDef *USBx, uint8_t epnum);
514514
void USB_ClearInterrupts(USB_OTG_GlobalTypeDef *USBx, uint32_t interrupt);
515515

516-
HAL_StatusTypeDef USB_HostInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg);
516+
HAL_StatusTypeDef USB_HostInit(USB_OTG_GlobalTypeDef *USBx, const USB_OTG_CfgTypeDef *cfg);
517517
HAL_StatusTypeDef USB_InitFSLSPClkSel(USB_OTG_GlobalTypeDef *USBx, uint8_t freq);
518518
HAL_StatusTypeDef USB_ResetPort(USB_OTG_GlobalTypeDef *USBx);
519519
HAL_StatusTypeDef USB_DriveVbus(USB_OTG_GlobalTypeDef *USBx, uint8_t state);

STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_hcd.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,13 +160,13 @@ HAL_StatusTypeDef HAL_HCD_Init(HCD_HandleTypeDef *hhcd)
160160
__HAL_HCD_DISABLE(hhcd);
161161

162162
/* Init the Core (common init.) */
163-
(void)USB_CoreInit(hhcd->Instance, hhcd->Init);
163+
(void)USB_CoreInit(hhcd->Instance, &hhcd->Init);
164164

165165
/* Force Host Mode*/
166166
(void)USB_SetCurrentMode(hhcd->Instance, USB_HOST_MODE);
167167

168168
/* Init Host */
169-
(void)USB_HostInit(hhcd->Instance, hhcd->Init);
169+
(void)USB_HostInit(hhcd->Instance, &hhcd->Init);
170170

171171
hhcd->State = HAL_HCD_STATE_READY;
172172

STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pcd.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd)
181181
__HAL_PCD_DISABLE(hpcd);
182182

183183
/*Init the Core (common init.) */
184-
if (USB_CoreInit(hpcd->Instance, hpcd->Init) != HAL_OK)
184+
if (USB_CoreInit(hpcd->Instance, &hpcd->Init) != HAL_OK)
185185
{
186186
hpcd->State = HAL_PCD_STATE_ERROR;
187187
return HAL_ERROR;
@@ -216,7 +216,7 @@ HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd)
216216
}
217217

218218
/* Init Device */
219-
if (USB_DevInit(hpcd->Instance, hpcd->Init) != HAL_OK)
219+
if (USB_DevInit(hpcd->Instance, &hpcd->Init) != HAL_OK)
220220
{
221221
hpcd->State = HAL_PCD_STATE_ERROR;
222222
return HAL_ERROR;

STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_usb.c

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -87,10 +87,10 @@ static HAL_StatusTypeDef USB_CoreReset(USB_OTG_GlobalTypeDef *USBx);
8787
* the configuration information for the specified USBx peripheral.
8888
* @retval HAL status
8989
*/
90-
HAL_StatusTypeDef USB_CoreInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg)
90+
HAL_StatusTypeDef USB_CoreInit(USB_OTG_GlobalTypeDef *USBx, const USB_OTG_CfgTypeDef *cfg)
9191
{
9292
HAL_StatusTypeDef ret;
93-
if (cfg.phy_itface == USB_OTG_ULPI_PHY)
93+
if (cfg->phy_itface == USB_OTG_ULPI_PHY)
9494
{
9595
USBx->GCCFG &= ~(USB_OTG_GCCFG_PWRDWN);
9696

@@ -99,7 +99,7 @@ HAL_StatusTypeDef USB_CoreInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef c
9999

100100
/* Select vbus source */
101101
USBx->GUSBCFG &= ~(USB_OTG_GUSBCFG_ULPIEVBUSD | USB_OTG_GUSBCFG_ULPIEVBUSI);
102-
if (cfg.use_external_vbus == 1U)
102+
if (cfg->use_external_vbus == 1U)
103103
{
104104
USBx->GUSBCFG |= USB_OTG_GUSBCFG_ULPIEVBUSD;
105105
}
@@ -115,7 +115,7 @@ HAL_StatusTypeDef USB_CoreInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef c
115115
/* Reset after a PHY select */
116116
ret = USB_CoreReset(USBx);
117117

118-
if (cfg.battery_charging_enable == 0U)
118+
if (cfg->battery_charging_enable == 0U)
119119
{
120120
/* Activate the USB Transceiver */
121121
USBx->GCCFG |= USB_OTG_GCCFG_PWRDWN;
@@ -127,7 +127,7 @@ HAL_StatusTypeDef USB_CoreInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef c
127127
}
128128
}
129129

130-
if (cfg.dma_enable == 1U)
130+
if (cfg->dma_enable == 1U)
131131
{
132132
/* make sure to reserve 18 fifo Locations for DMA buffers */
133133
USBx->GDFIFOCFG &= ~(0xFFFFU << 16);
@@ -304,7 +304,7 @@ HAL_StatusTypeDef USB_SetCurrentMode(USB_OTG_GlobalTypeDef *USBx, USB_OTG_ModeTy
304304
* the configuration information for the specified USBx peripheral.
305305
* @retval HAL status
306306
*/
307-
HAL_StatusTypeDef USB_DevInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg)
307+
HAL_StatusTypeDef USB_DevInit(USB_OTG_GlobalTypeDef *USBx, const USB_OTG_CfgTypeDef *cfg)
308308
{
309309
HAL_StatusTypeDef ret = HAL_OK;
310310
uint32_t USBx_BASE = (uint32_t)USBx;
@@ -316,7 +316,7 @@ HAL_StatusTypeDef USB_DevInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cf
316316
}
317317

318318
/* VBUS Sensing setup */
319-
if (cfg.vbus_sensing_enable == 0U)
319+
if (cfg->vbus_sensing_enable == 0U)
320320
{
321321
USBx_DEVICE->DCTL |= USB_OTG_DCTL_SDIS;
322322

@@ -339,9 +339,9 @@ HAL_StatusTypeDef USB_DevInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cf
339339
/* Device mode configuration */
340340
USBx_DEVICE->DCFG |= DCFG_FRAME_INTERVAL_80;
341341

342-
if (cfg.phy_itface == USB_OTG_ULPI_PHY)
342+
if (cfg->phy_itface == USB_OTG_ULPI_PHY)
343343
{
344-
if (cfg.speed == USBD_HS_SPEED)
344+
if (cfg->speed == USBD_HS_SPEED)
345345
{
346346
/* Set Core speed to High speed mode */
347347
(void)USB_SetDevSpeed(USBx, USB_OTG_SPEED_HIGH);
@@ -374,7 +374,7 @@ HAL_StatusTypeDef USB_DevInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cf
374374
USBx_DEVICE->DOEPMSK = 0U;
375375
USBx_DEVICE->DAINTMSK = 0U;
376376

377-
for (i = 0U; i < cfg.dev_endpoints; i++)
377+
for (i = 0U; i < cfg->dev_endpoints; i++)
378378
{
379379
if ((USBx_INEP(i)->DIEPCTL & USB_OTG_DIEPCTL_EPENA) == USB_OTG_DIEPCTL_EPENA)
380380
{
@@ -396,7 +396,7 @@ HAL_StatusTypeDef USB_DevInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cf
396396
USBx_INEP(i)->DIEPINT = 0xFB7FU;
397397
}
398398

399-
for (i = 0U; i < cfg.dev_endpoints; i++)
399+
for (i = 0U; i < cfg->dev_endpoints; i++)
400400
{
401401
if ((USBx_OUTEP(i)->DOEPCTL & USB_OTG_DOEPCTL_EPENA) == USB_OTG_DOEPCTL_EPENA)
402402
{
@@ -427,7 +427,7 @@ HAL_StatusTypeDef USB_DevInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cf
427427
USBx->GINTSTS = 0xBFFFFFFFU;
428428

429429
/* Enable the common interrupts */
430-
if (cfg.dma_enable == 0U)
430+
if (cfg->dma_enable == 0U)
431431
{
432432
USBx->GINTMSK |= USB_OTG_GINTMSK_RXFLVLM;
433433
}
@@ -438,12 +438,12 @@ HAL_StatusTypeDef USB_DevInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cf
438438
USB_OTG_GINTMSK_OEPINT | USB_OTG_GINTMSK_IISOIXFRM |
439439
USB_OTG_GINTMSK_PXFRM_IISOOXFRM | USB_OTG_GINTMSK_WUIM;
440440

441-
if (cfg.Sof_enable != 0U)
441+
if (cfg->Sof_enable != 0U)
442442
{
443443
USBx->GINTMSK |= USB_OTG_GINTMSK_SOFM;
444444
}
445445

446-
if (cfg.vbus_sensing_enable == 1U)
446+
if (cfg->vbus_sensing_enable == 1U)
447447
{
448448
USBx->GINTMSK |= (USB_OTG_GINTMSK_SRQIM | USB_OTG_GINTMSK_OTGINT);
449449
}
@@ -1432,7 +1432,7 @@ static HAL_StatusTypeDef USB_CoreReset(USB_OTG_GlobalTypeDef *USBx)
14321432
* the configuration information for the specified USBx peripheral.
14331433
* @retval HAL status
14341434
*/
1435-
HAL_StatusTypeDef USB_HostInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg)
1435+
HAL_StatusTypeDef USB_HostInit(USB_OTG_GlobalTypeDef *USBx, const USB_OTG_CfgTypeDef *cfg)
14361436
{
14371437
HAL_StatusTypeDef ret = HAL_OK;
14381438
uint32_t USBx_BASE = (uint32_t)USBx;
@@ -1450,7 +1450,7 @@ HAL_StatusTypeDef USB_HostInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef c
14501450

14511451
if ((USBx->CID & (0x1U << 8)) != 0U)
14521452
{
1453-
if (cfg.speed == USBH_FSLS_SPEED)
1453+
if (cfg->speed == USBH_FSLS_SPEED)
14541454
{
14551455
/* Force Device Enumeration to FS/LS mode only */
14561456
USBx_HOST->HCFG |= USB_OTG_HCFG_FSLSS;
@@ -1479,7 +1479,7 @@ HAL_StatusTypeDef USB_HostInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef c
14791479
}
14801480

14811481
/* Clear all pending HC Interrupts */
1482-
for (i = 0U; i < cfg.Host_channels; i++)
1482+
for (i = 0U; i < cfg->Host_channels; i++)
14831483
{
14841484
USBx_HC(i)->HCINT = CLEAR_INTERRUPT_MASK;
14851485
USBx_HC(i)->HCINTMSK = 0U;
@@ -1507,7 +1507,7 @@ HAL_StatusTypeDef USB_HostInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef c
15071507
}
15081508

15091509
/* Enable the common interrupts */
1510-
if (cfg.dma_enable == 0U)
1510+
if (cfg->dma_enable == 0U)
15111511
{
15121512
USBx->GINTMSK |= USB_OTG_GINTMSK_RXFLVLM;
15131513
}

0 commit comments

Comments
 (0)