summaryrefslogtreecommitdiff
path: root/src/portable/raspberrypi
diff options
context:
space:
mode:
authorHiFiPhile <[email protected]>2024-04-08 21:44:14 +0200
committerHiFiPhile <[email protected]>2024-04-08 21:44:14 +0200
commitadc7a78fd6fbdccbe5f586391997052f2becd149 (patch)
tree68108df608468572c43c1e65c578f6954aecf69f /src/portable/raspberrypi
parent9570836cece0beb6c61f1cc97e5de25dac136394 (diff)
parent42decf28f1bf7512a4c3e7402c9daf83ee241191 (diff)
Merge branch 'master' of github.com:HiFiPhile/tinyusb into vendor_fifo
Diffstat (limited to 'src/portable/raspberrypi')
-rw-r--r--src/portable/raspberrypi/rp2040/dcd_rp2040.c13
-rw-r--r--src/portable/raspberrypi/rp2040/hcd_rp2040.c10
2 files changed, 23 insertions, 0 deletions
diff --git a/src/portable/raspberrypi/rp2040/dcd_rp2040.c b/src/portable/raspberrypi/rp2040/dcd_rp2040.c
index 5c564cb1c..bc0deee32 100644
--- a/src/portable/raspberrypi/rp2040/dcd_rp2040.c
+++ b/src/portable/raspberrypi/rp2040/dcd_rp2040.c
@@ -407,6 +407,19 @@ void dcd_init(uint8_t rhport) {
dcd_connect(rhport);
}
+bool dcd_deinit(uint8_t rhport) {
+ (void) rhport;
+
+ reset_non_control_endpoints();
+ irq_remove_handler(USBCTRL_IRQ, dcd_rp2040_irq);
+
+ // reset usb hardware into initial state
+ reset_block(RESETS_RESET_USBCTRL_BITS);
+ unreset_block_wait(RESETS_RESET_USBCTRL_BITS);
+
+ return true;
+}
+
void dcd_int_enable(__unused uint8_t rhport) {
assert(rhport == 0);
irq_set_enabled(USBCTRL_IRQ, true);
diff --git a/src/portable/raspberrypi/rp2040/hcd_rp2040.c b/src/portable/raspberrypi/rp2040/hcd_rp2040.c
index b351a9a07..222dbbbf0 100644
--- a/src/portable/raspberrypi/rp2040/hcd_rp2040.c
+++ b/src/portable/raspberrypi/rp2040/hcd_rp2040.c
@@ -409,6 +409,16 @@ bool hcd_init(uint8_t rhport)
return true;
}
+bool hcd_deinit(uint8_t rhport) {
+ (void) rhport;
+
+ irq_remove_handler(USBCTRL_IRQ, hcd_rp2040_irq);
+ reset_block(RESETS_RESET_USBCTRL_BITS);
+ unreset_block_wait(RESETS_RESET_USBCTRL_BITS);
+
+ return true;
+}
+
void hcd_port_reset(uint8_t rhport)
{
(void) rhport;