summaryrefslogtreecommitdiff
path: root/tools/src/usb_dwc3.h
diff options
context:
space:
mode:
Diffstat (limited to 'tools/src/usb_dwc3.h')
-rw-r--r--tools/src/usb_dwc3.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/tools/src/usb_dwc3.h b/tools/src/usb_dwc3.h
new file mode 100644
index 0000000..6b23c7c
--- /dev/null
+++ b/tools/src/usb_dwc3.h
@@ -0,0 +1,33 @@
+/* SPDX-License-Identifier: MIT */
+
+#ifndef USB_DWC3_H
+#define USB_DWC3_H
+
+#include "dart.h"
+#include "types.h"
+
+typedef struct dwc3_dev dwc3_dev_t;
+
+typedef enum _cdc_acm_pipe_id_t {
+ CDC_ACM_PIPE_0,
+ CDC_ACM_PIPE_1,
+ CDC_ACM_PIPE_MAX
+} cdc_acm_pipe_id_t;
+
+dwc3_dev_t *usb_dwc3_init(uintptr_t regs, dart_dev_t *dart);
+void usb_dwc3_shutdown(dwc3_dev_t *dev);
+
+void usb_dwc3_handle_events(dwc3_dev_t *dev);
+
+ssize_t usb_dwc3_can_read(dwc3_dev_t *dev, cdc_acm_pipe_id_t pipe);
+bool usb_dwc3_can_write(dwc3_dev_t *dev, cdc_acm_pipe_id_t pipe);
+
+u8 usb_dwc3_getbyte(dwc3_dev_t *dev, cdc_acm_pipe_id_t pipe);
+void usb_dwc3_putbyte(dwc3_dev_t *dev, cdc_acm_pipe_id_t pipe, u8 byte);
+
+size_t usb_dwc3_read(dwc3_dev_t *dev, cdc_acm_pipe_id_t pipe, void *buf, size_t count);
+size_t usb_dwc3_write(dwc3_dev_t *dev, cdc_acm_pipe_id_t pipe, const void *buf, size_t count);
+size_t usb_dwc3_queue(dwc3_dev_t *dev, cdc_acm_pipe_id_t pipe, const void *buf, size_t count);
+void usb_dwc3_flush(dwc3_dev_t *dev, cdc_acm_pipe_id_t pipe);
+
+#endif