summaryrefslogtreecommitdiff
path: root/src/device/usbd.c
diff options
context:
space:
mode:
authorhathach <[email protected]>2024-08-19 11:59:41 +0700
committerhathach <[email protected]>2024-08-19 12:04:24 +0700
commit8fdd8d9a7b83bfb79ac9a02142592d7ee4948b83 (patch)
tree0a9b8bba655a23773cfe58e104b33ab02a0514b6 /src/device/usbd.c
parente345380723051ac3342a724660e877d7b2dad2fb (diff)
implement dcd_edpt_iso_alloc/dcd_edpt_iso_activate for musb. video_capture example with iso kind of work but not smoothly. audio example does not seems to work as expected
Diffstat (limited to 'src/device/usbd.c')
-rw-r--r--src/device/usbd.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/device/usbd.c b/src/device/usbd.c
index 7089e9cf1..d6f69fc24 100644
--- a/src/device/usbd.c
+++ b/src/device/usbd.c
@@ -1418,6 +1418,10 @@ bool usbd_edpt_stalled(uint8_t rhport, uint8_t ep_addr) {
* In progress transfers on this EP may be delivered after this call.
*/
void usbd_edpt_close(uint8_t rhport, uint8_t ep_addr) {
+#ifdef TUP_DCD_EDPT_ISO_ALLOC
+ (void) rhport; (void) ep_addr;
+ // ISO alloc/activate Should be used instead
+#else
rhport = _usbd_rhport;
TU_ASSERT(dcd_edpt_close, /**/);
@@ -1430,6 +1434,7 @@ void usbd_edpt_close(uint8_t rhport, uint8_t ep_addr) {
_usbd_dev.ep_status[epnum][dir].stalled = 0;
_usbd_dev.ep_status[epnum][dir].busy = 0;
_usbd_dev.ep_status[epnum][dir].claimed = 0;
+#endif
return;
}
@@ -1452,21 +1457,24 @@ void usbd_sof_enable(uint8_t rhport, sof_consumer_t consumer, bool en) {
}
bool usbd_edpt_iso_alloc(uint8_t rhport, uint8_t ep_addr, uint16_t largest_packet_size) {
+#ifdef TUP_DCD_EDPT_ISO_ALLOC
rhport = _usbd_rhport;
- TU_ASSERT(dcd_edpt_iso_alloc);
TU_ASSERT(tu_edpt_number(ep_addr) < CFG_TUD_ENDPPOINT_MAX);
-
return dcd_edpt_iso_alloc(rhport, ep_addr, largest_packet_size);
+#else
+ (void) rhport; (void) ep_addr; (void) largest_packet_size;
+ return false;
+#endif
}
bool usbd_edpt_iso_activate(uint8_t rhport, tusb_desc_endpoint_t const* desc_ep) {
+#ifdef TUP_DCD_EDPT_ISO_ALLOC
rhport = _usbd_rhport;
uint8_t const epnum = tu_edpt_number(desc_ep->bEndpointAddress);
uint8_t const dir = tu_edpt_dir(desc_ep->bEndpointAddress);
- TU_ASSERT(dcd_edpt_iso_activate);
TU_ASSERT(epnum < CFG_TUD_ENDPPOINT_MAX);
TU_ASSERT(tu_edpt_validate(desc_ep, (tusb_speed_t) _usbd_dev.speed));
@@ -1474,6 +1482,10 @@ bool usbd_edpt_iso_activate(uint8_t rhport, tusb_desc_endpoint_t const* desc_ep)
_usbd_dev.ep_status[epnum][dir].busy = 0;
_usbd_dev.ep_status[epnum][dir].claimed = 0;
return dcd_edpt_iso_activate(rhport, desc_ep);
+#else
+ (void) rhport; (void) desc_ep;
+ return false;
+#endif
}
#endif