summaryrefslogtreecommitdiff
path: root/src/device
diff options
context:
space:
mode:
Diffstat (limited to 'src/device')
-rw-r--r--src/device/usbd.c17
-rw-r--r--src/device/usbd.h15
2 files changed, 24 insertions, 8 deletions
diff --git a/src/device/usbd.c b/src/device/usbd.c
index 6fe7e416e..7e35c976c 100644
--- a/src/device/usbd.c
+++ b/src/device/usbd.c
@@ -448,11 +448,14 @@ bool tud_inited(void) {
return _usbd_rhport != RHPORT_INVALID;
}
-bool tud_init(uint8_t rhport) {
- // skip if already initialized
- if (tud_inited()) return true;
+bool tud_rhport_init(const tusb_rhport_init_t* rh_init) {
+ if (tud_inited()) {
+ return true; // skip if already initialized
+ }
+ TU_ASSERT(rh_init);
- TU_LOG_USBD("USBD init on controller %u, Highspeed = %u\r\n", rhport, TUD_OPT_HIGH_SPEED);
+ TU_LOG_USBD("USBD init on controller %u, speed = %s\r\n", rh_init->rhport,
+ rh_init->speed == TUSB_SPEED_HIGH ? "High" : "Full");
TU_LOG_INT(CFG_TUD_LOG_LEVEL, sizeof(usbd_device_t));
TU_LOG_INT(CFG_TUD_LOG_LEVEL, sizeof(dcd_event_t));
TU_LOG_INT(CFG_TUD_LOG_LEVEL, sizeof(tu_fifo_t));
@@ -484,11 +487,11 @@ bool tud_init(uint8_t rhport) {
driver->init();
}
- _usbd_rhport = rhport;
+ _usbd_rhport = rh_init->rhport;
// Init device controller driver
- dcd_init(rhport);
- dcd_int_enable(rhport);
+ dcd_init(rh_init->rhport);
+ dcd_int_enable(rh_init->rhport);
return true;
}
diff --git a/src/device/usbd.h b/src/device/usbd.h
index 7913096e3..05eb0173f 100644
--- a/src/device/usbd.h
+++ b/src/device/usbd.h
@@ -37,8 +37,21 @@ extern "C" {
// Application API
//--------------------------------------------------------------------+
+// New API to replace tud_init() to init device stack on specific roothub port
+bool tud_rhport_init(const tusb_rhport_init_t* rh_init);
+
// Init device stack on roothub port
-bool tud_init (uint8_t rhport);
+#if TUSB_VERSION_NUMBER > 2000 // 0.20.0
+TU_ATTR_DEPRECATED("Please use tusb_init(tusb_rhport_init_t*) instead")
+#endif
+TU_ATTR_ALWAYS_INLINE static inline bool tud_init (uint8_t rhport) {
+ const tusb_rhport_init_t rh_init = {
+ .rhport = rhport,
+ .role = TUSB_ROLE_DEVICE,
+ .speed = TUD_OPT_HIGH_SPEED ? TUSB_SPEED_HIGH : TUSB_SPEED_FULL
+ };
+ return tud_rhport_init(&rh_init);
+}
// Deinit device stack on roothub port
bool tud_deinit(uint8_t rhport);