summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMengsk <[email protected]>2022-12-29 12:29:28 +0100
committerMengsk <[email protected]>2022-12-29 12:29:28 +0100
commitb4b619abd6badd664149604c77a0bb05ea579f86 (patch)
tree820f2b7875bf35955668ff9c9ecde7bb5825d740 /src
parent8327090171246d0928195c49f4f15ce8b569a39b (diff)
SHA-1: 5cb3ed518301e2237ee4e468e97e51ece0ba3838
* Correct handling of SOF interrupt
Diffstat (limited to 'src')
-rw-r--r--src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c21
1 files changed, 10 insertions, 11 deletions
diff --git a/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c b/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c
index ee188b65c..ae22bb455 100644
--- a/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c
+++ b/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c
@@ -149,12 +149,6 @@
# define DCD_STM32_BTABLE_LENGTH (PMA_LENGTH - DCD_STM32_BTABLE_BASE)
#endif
-// Since TinyUSB doesn't use SOF for now, and this interrupt too often (1ms interval)
-// We disable SOF for now until needed later on
-#ifndef USE_SOF
-# define USE_SOF 0
-#endif
-
/***************************************************
* Checks, structs, defines, function definitions, etc.
*/
@@ -259,7 +253,7 @@ void dcd_init (uint8_t rhport)
pcd_set_endpoint(USB,i,0u);
}
- USB->CNTR |= USB_CNTR_RESETM | (USE_SOF ? USB_CNTR_SOFM : 0) | USB_CNTR_ESOFM | USB_CNTR_CTRM | USB_CNTR_SUSPM | USB_CNTR_WKUPM;
+ USB->CNTR |= USB_CNTR_RESETM | USB_CNTR_ESOFM | USB_CNTR_CTRM | USB_CNTR_SUSPM | USB_CNTR_WKUPM;
dcd_handle_bus_reset();
// Enable pull-up if supported
@@ -304,7 +298,14 @@ void dcd_sof_enable(uint8_t rhport, bool en)
(void) rhport;
(void) en;
- // TODO implement later
+ if (en)
+ {
+ USB->CNTR |= USB_CNTR_SOFM;
+ }
+ else
+ {
+ USB->CNTR &= (uint16_t) ~USB_CNTR_SOFM;
+ }
}
// Enable device interrupt
@@ -655,12 +656,10 @@ void dcd_int_handler(uint8_t rhport) {
dcd_event_bus_signal(0, DCD_EVENT_SUSPEND, true);
}
-#if USE_SOF
if(int_status & USB_ISTR_SOF) {
clear_istr_bits(USB_ISTR_SOF);
- dcd_event_bus_signal(0, DCD_EVENT_SOF, true);
+ dcd_event_sof(0, USB->FNR & USB_FNR_FN, true);
}
-#endif
if(int_status & USB_ISTR_ESOF) {
if(remoteWakeCountdown == 1u)