Browse Source

shared/tinyusb: Wake main task if needed at end of USB ISR.

Signed-off-by: Andrew Leech <andrew@alelec.net>
pull/15108/head
Andrew Leech 3 months ago
committed by Damien George
parent
commit
548f88d2bd
  1. 4
      ports/mimxrt/mphalport.h
  2. 4
      ports/nrf/mphalport.h
  3. 4
      ports/renesas-ra/mphalport.h
  4. 4
      ports/rp2/mphalport.h
  5. 4
      ports/samd/mphalport.h
  6. 3
      shared/tinyusb/mp_usbd.c

4
ports/mimxrt/mphalport.h

@ -109,6 +109,10 @@ __attribute__((always_inline)) static inline uint32_t disable_irq(void) {
void mp_hal_set_interrupt_char(int c);
static inline void mp_hal_wake_main_task_from_isr(void) {
// Defined for tinyusb support, nothing needs to be done here.
}
static inline mp_uint_t mp_hal_ticks_ms(void) {
return ticks_ms32();
}

4
ports/nrf/mphalport.h

@ -53,6 +53,10 @@ void mp_hal_set_interrupt_char(int c); // -1 to disable
int mp_hal_stdin_rx_chr(void);
void mp_hal_stdout_tx_str(const char *str);
static inline void mp_hal_wake_main_task_from_isr(void) {
// Defined for tinyusb support, nothing needs to be done here.
}
void mp_hal_delay_ms(mp_uint_t ms);
void mp_hal_delay_us(mp_uint_t us);

4
ports/renesas-ra/mphalport.h

@ -52,6 +52,10 @@ static inline int mp_hal_status_to_neg_errno(HAL_StatusTypeDef status) {
NORETURN void mp_hal_raise(HAL_StatusTypeDef status);
void mp_hal_set_interrupt_char(int c); // -1 to disable
static inline void mp_hal_wake_main_task_from_isr(void) {
// Defined for tinyusb support, nothing needs to be done here.
}
// timing functions
#include "irq.h"

4
ports/rp2/mphalport.h

@ -77,6 +77,10 @@ void mp_thread_end_atomic_section(uint32_t);
void mp_hal_set_interrupt_char(int c);
void mp_hal_time_ns_set_from_rtc(void);
static inline void mp_hal_wake_main_task_from_isr(void) {
// Defined for tinyusb support, nothing needs to be done here.
}
static inline void mp_hal_delay_us_fast(mp_uint_t us) {
busy_wait_us(us);
}

4
ports/samd/mphalport.h

@ -50,6 +50,10 @@ uint64_t mp_hal_ticks_us_64(void);
void mp_hal_set_interrupt_char(int c);
static inline void mp_hal_wake_main_task_from_isr(void) {
// Defined for tinyusb support, nothing needs to be done here.
}
__attribute__((always_inline)) static inline void enable_irq(uint32_t state) {
__set_PRIMASK(state);
}

3
shared/tinyusb/mp_usbd.c

@ -24,7 +24,7 @@
* THE SOFTWARE.
*/
#include "py/mpconfig.h"
#include "py/mphal.h"
#if MICROPY_HW_ENABLE_USBDEV
@ -55,6 +55,7 @@ extern void __real_dcd_event_handler(dcd_event_t const *event, bool in_isr);
TU_ATTR_FAST_FUNC void __wrap_dcd_event_handler(dcd_event_t const *event, bool in_isr) {
__real_dcd_event_handler(event, in_isr);
mp_usbd_schedule_task();
mp_hal_wake_main_task_from_isr();
}
TU_ATTR_FAST_FUNC void mp_usbd_schedule_task(void) {

Loading…
Cancel
Save