shared/tinyusb: Add optional port-specific hook on USBD init.

This allows a port to do hardware initialization just before the TinyUSB
stack is brought up.  That means the hardware is only turned on when it's
needed.

Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
Damien George
2025-11-27 15:00:12 +11:00
parent 9b73e344eb
commit 14b5080515
2 changed files with 7 additions and 0 deletions

View File

@@ -45,6 +45,10 @@
#define MICROPY_WRAP_TUD_EVENT_HOOK_CB(name) name
#endif
#ifndef MICROPY_HW_TINYUSB_LL_INIT
#define MICROPY_HW_TINYUSB_LL_INIT()
#endif
#if MICROPY_HW_ENABLE_USBDEV
#include "py/obj.h"
@@ -102,6 +106,7 @@ void mp_usbd_task_callback(mp_sched_node_t *node);
static inline void mp_usbd_init(void) {
// Without runtime USB support, this can be a thin wrapper wrapper around tusb_init()
// which is called in the below helper function.
MICROPY_HW_TINYUSB_LL_INIT();
mp_usbd_init_tud();
}

View File

@@ -430,6 +430,8 @@ void mp_usbd_init(void) {
}
if (need_usb) {
// Call any port-specific initialization code.
MICROPY_HW_TINYUSB_LL_INIT();
// The following will call tusb_init(), which is safe to call redundantly.
mp_usbd_init_tud();
// Reconnect if mp_usbd_deinit() has disconnected.