Skip to content

Commit 0cd23c8

Browse files
committed
[USB] Fix EP allocation
Signed-off-by: Frederic Pillon <[email protected]>
1 parent c3d5ad3 commit 0cd23c8

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

cores/arduino/stm32/usb/usbd_conf.c

+16
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,16 @@
3030
/* Size in words, byte size divided by 2 */
3131
#define PMA_EP0_OUT_ADDR (8 * 4)
3232
#define PMA_EP0_IN_ADDR (PMA_EP0_OUT_ADDR + USB_MAX_EP0_SIZE)
33+
#ifdef USBD_USE_CDC
3334
#define PMA_CDC_OUT_BASE (PMA_EP0_IN_ADDR + USB_MAX_EP0_SIZE)
3435
#define PMA_CDC_OUT_ADDR ((PMA_CDC_OUT_BASE + USB_FS_MAX_PACKET_SIZE) | \
3536
(PMA_CDC_OUT_BASE << 16U))
3637
#define PMA_CDC_IN_ADDR (PMA_CDC_OUT_BASE + USB_FS_MAX_PACKET_SIZE * 2)
3738
#define PMA_CDC_CMD_ADDR (PMA_CDC_IN_ADDR + USB_FS_MAX_PACKET_SIZE)
39+
#elif USBD_USE_HID_COMPOSITE
40+
#define PMA_HID_MOUSE_IN_ADDR (PMA_EP0_IN_ADDR + 4)
41+
#define PMA_HID_KBD_IN_ADDR (PMA_EP0_IN_ADDR + 8)
42+
#endif
3843
/* Private macro -------------------------------------------------------------*/
3944
/* Private variables ---------------------------------------------------------*/
4045
PCD_HandleTypeDef g_hpcd;
@@ -516,19 +521,30 @@ USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev)
516521
HAL_PCDEx_SetTxFiFo(&g_hpcd, 0, 0x80);
517522
HAL_PCDEx_SetTxFiFo(&g_hpcd, 1, 0x40);
518523
HAL_PCDEx_SetTxFiFo(&g_hpcd, 2, 0x160);
524+
#ifdef USBD_USE_CDC
525+
HAL_PCDEx_SetTxFiFo(&g_hpcd, 3, 0x40);
526+
#endif
519527
#else /* USE_USB_FS */
520528
#ifdef USB_OTG_FS
521529
/* configure EPs FIFOs */
522530
HAL_PCDEx_SetRxFiFo(&g_hpcd, 0x80);
523531
HAL_PCDEx_SetTxFiFo(&g_hpcd, 0, 0x40);
524532
HAL_PCDEx_SetTxFiFo(&g_hpcd, 1, 0x40);
525533
HAL_PCDEx_SetTxFiFo(&g_hpcd, 2, 0x40);
534+
#ifdef USBD_USE_CDC
535+
HAL_PCDEx_SetTxFiFo(&g_hpcd, 3, 0x40);
536+
#endif
526537
#else
527538
HAL_PCDEx_PMAConfig(&g_hpcd, 0x00, PCD_SNG_BUF, PMA_EP0_OUT_ADDR);
528539
HAL_PCDEx_PMAConfig(&g_hpcd, 0x80, PCD_SNG_BUF, PMA_EP0_IN_ADDR);
540+
#ifdef USBD_USE_CDC
529541
HAL_PCDEx_PMAConfig(&g_hpcd, 0x01, PCD_DBL_BUF, PMA_CDC_OUT_ADDR);
530542
HAL_PCDEx_PMAConfig(&g_hpcd, 0x82, PCD_SNG_BUF, PMA_CDC_IN_ADDR);
531543
HAL_PCDEx_PMAConfig(&g_hpcd, 0x83, PCD_SNG_BUF, PMA_CDC_CMD_ADDR);
544+
#elif USBD_USE_HID_COMPOSITE
545+
HAL_PCDEx_PMAConfig(&g_hpcd, 0x81, PCD_SNG_BUF, PMA_HID_MOUSE_IN_ADDR);
546+
HAL_PCDEx_PMAConfig(&g_hpcd, 0x81, PCD_SNG_BUF, PMA_HID_KBD_IN_ADDR);
547+
#endif
532548
#endif
533549
#endif /* USE_USB_HS */
534550
return USBD_OK;

0 commit comments

Comments
 (0)