summaryrefslogtreecommitdiff
path: root/src/portable/raspberrypi
diff options
context:
space:
mode:
authorHa Thach <[email protected]>2022-05-31 22:25:14 +0700
committerGitHub <[email protected]>2022-05-31 22:25:14 +0700
commitfdeac8508be5cdd95966422d1e776604efbc9b3f (patch)
treee3e1ddf37ebd5500145ac610239f2d5baeceb6fa /src/portable/raspberrypi
parentab7c23a787a024dcaadb698c9d7533ad85209cd7 (diff)
parente384d16d576089daa3a5c993ead06cffb7a50cbe (diff)
Merge pull request #1381 from hathach/add-sof-isr
Add SOF IRQ Handler
Diffstat (limited to 'src/portable/raspberrypi')
-rw-r--r--src/portable/raspberrypi/rp2040/dcd_rp2040.c23
1 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 2d77ad4f9..48793b0d0 100644
--- a/src/portable/raspberrypi/rp2040/dcd_rp2040.c
+++ b/src/portable/raspberrypi/rp2040/dcd_rp2040.c
@@ -247,6 +247,12 @@ static void dcd_rp2040_irq(void)
uint32_t const status = usb_hw->ints;
uint32_t handled = 0;
+ if (status & USB_INTF_DEV_SOF_BITS)
+ {
+ handled |= USB_INTF_DEV_SOF_BITS;
+ dcd_event_sof(0, usb_hw->sof_rd & USB_SOF_RD_BITS, true);
+ }
+
// xfer events are handled before setup req. So if a transfer completes immediately
// before closing the EP, the events will be delivered in same order.
if (status & USB_INTS_BUFF_STATUS_BITS)
@@ -424,6 +430,23 @@ void dcd_connect(__unused uint8_t rhport)
usb_hw_set->sie_ctrl = USB_SIE_CTRL_PULLUP_EN_BITS;
}
+void dcd_sof_enable(uint8_t rhport, bool en)
+{
+ (void) rhport;
+
+ uint32_t inte = usb_hw->inte;
+
+ if (en)
+ {
+ inte |= USB_INTS_DEV_SOF_BITS;
+ }else
+ {
+ inte &= ~USB_INTS_DEV_SOF_BITS;
+ }
+
+ usb_hw->inte = inte;
+}
+
/*------------------------------------------------------------------*/
/* DCD Endpoint port
*------------------------------------------------------------------*/