From 322964f598bcb78c3943b7fc1d097ad9845eaffd Mon Sep 17 00:00:00 2001 From: xieyangrun Date: Thu, 31 Mar 2022 18:20:30 +0800 Subject: [PATCH] fixed osal critical section protect adapt 64bits CPU. --- SConscript | 2 +- class/cdc/usbh_cdc_acm.c | 4 ++-- class/hid/usbh_hid.c | 4 ++-- class/hub/usbh_hub.c | 4 ++-- class/msc/usbh_msc.c | 4 ++-- core/usbh_core.c | 8 ++++---- osal/usb_osal.h | 4 ++-- osal/usb_osal_freertos.c | 4 ++-- osal/usb_osal_rtthread.c | 6 +++--- osal/usb_workq.c | 6 +++--- port/ehci/usb_ehci.c | 6 +++--- port/musb/usb_hc_musb.c | 6 +++--- port/synopsys/usb_hc_synopsys.c | 10 +++++----- 13 files changed, 34 insertions(+), 34 deletions(-) diff --git a/SConscript b/SConscript index 83334ff2..435c5adf 100644 --- a/SConscript +++ b/SConscript @@ -45,7 +45,7 @@ if GetDepend(['PKG_CHERRYUSB_USING_DEVICE']): CPPDEFINES += ['USB_BASE=0x40080000UL'] if GetDepend(['CHERRYUSB_USING_MUSB']): src += Glob('port/musb/usb_dc_musb.c') - if GetDepend(['CHERRYUSB_USING_CDC_DEMO']): + if GetDepend(['CHERRYUSB_USING_CDC_DEMO']): src += Glob('demo/cdc_acm_template.c') # USB HOST diff --git a/class/cdc/usbh_cdc_acm.c b/class/cdc/usbh_cdc_acm.c index 65c9e10c..0f7b08ab 100644 --- a/class/cdc/usbh_cdc_acm.c +++ b/class/cdc/usbh_cdc_acm.c @@ -37,7 +37,7 @@ static uint32_t g_devinuse = 0; static int usbh_cdc_acm_devno_alloc(struct usbh_cdc_acm *priv) { - uint32_t flags; + size_t flags; int devno; flags = usb_osal_enter_critical_section(); @@ -68,7 +68,7 @@ static void usbh_cdc_acm_devno_free(struct usbh_cdc_acm *priv) int devno = priv->minor; if (devno >= 0 && devno < 32) { - uint32_t flags = usb_osal_enter_critical_section(); + size_t flags = usb_osal_enter_critical_section(); g_devinuse &= ~(1 << devno); usb_osal_leave_critical_section(flags); } diff --git a/class/hid/usbh_hid.c b/class/hid/usbh_hid.c index 34d9a50c..72d8d60f 100644 --- a/class/hid/usbh_hid.c +++ b/class/hid/usbh_hid.c @@ -37,7 +37,7 @@ static uint32_t g_devinuse = 0; static int usbh_hid_devno_alloc(struct usbh_hid *priv) { - uint32_t flags; + size_t flags; int devno; flags = usb_osal_enter_critical_section(); @@ -68,7 +68,7 @@ static void usbh_hid_devno_free(struct usbh_hid *priv) int devno = priv->minor; if (devno >= 0 && devno < 32) { - uint32_t flags = usb_osal_enter_critical_section(); + size_t size_t = usb_osal_enter_critical_section(); g_devinuse &= ~(1 << devno); usb_osal_leave_critical_section(flags); } diff --git a/class/hub/usbh_hub.c b/class/hub/usbh_hub.c index e6d97cee..1bae241a 100644 --- a/class/hub/usbh_hub.c +++ b/class/hub/usbh_hub.c @@ -57,7 +57,7 @@ static inline void usbh_hub_unregister(struct usbh_hub *hub) static int usbh_hub_devno_alloc(struct usbh_hub *hub) { - uint32_t flags; + size_t flags; int devno; flags = usb_osal_enter_critical_section(); @@ -88,7 +88,7 @@ static void usbh_hub_devno_free(struct usbh_hub *hub) int devno = hub->index; if (devno >= 2 && devno < 32) { - uint32_t flags = usb_osal_enter_critical_section(); + size_t flags = usb_osal_enter_critical_section(); g_devinuse &= ~(1 << devno); usb_osal_leave_critical_section(flags); } diff --git a/class/msc/usbh_msc.c b/class/msc/usbh_msc.c index 1ee722a2..6dfa9355 100644 --- a/class/msc/usbh_msc.c +++ b/class/msc/usbh_msc.c @@ -38,7 +38,7 @@ static uint32_t g_devinuse = 0; static int usbh_msc_devno_alloc(struct usbh_msc *priv) { - uint32_t flags; + size_t flags; int devno; flags = usb_osal_enter_critical_section(); @@ -69,7 +69,7 @@ static void usbh_msc_devno_free(struct usbh_msc *priv) int devno = priv->sdchar - 'a'; if (devno >= 0 && devno < 26) { - uint32_t flags = usb_osal_enter_critical_section(); + size_t flags = usb_osal_enter_critical_section(); g_devinuse &= ~(1 << devno); usb_osal_leave_critical_section(flags); } diff --git a/core/usbh_core.c b/core/usbh_core.c index 01c5f129..001e29cb 100644 --- a/core/usbh_core.c +++ b/core/usbh_core.c @@ -171,7 +171,7 @@ void usbh_hport_activate(struct usbh_hubport *hport) void usbh_hport_deactivate(struct usbh_hubport *hport) { - uint32_t flags; + size_t flags; /* Don't free the control pipe of root hub ports! */ if (hport->parent != NULL && hport->ep0 != NULL) { @@ -674,7 +674,7 @@ static int usbh_portchange_wait(struct usbh_hubport **hport) { struct usbh_hubport *connport = NULL; uint32_t recved_event; - uint32_t flags; + size_t flags; int ret; /* Loop until a change in connection state is detected */ @@ -775,7 +775,7 @@ static void usbh_portchange_detect_thread(void *argument) void usbh_external_hport_connect(struct usbh_hubport *hport) { - uint32_t flags; + size_t flags; usbh_hport_activate(hport); @@ -790,7 +790,7 @@ void usbh_external_hport_connect(struct usbh_hubport *hport) void usbh_external_hport_disconnect(struct usbh_hubport *hport) { - uint32_t flags; + size_t flags; flags = usb_osal_enter_critical_section(); diff --git a/osal/usb_osal.h b/osal/usb_osal.h index 92957c33..55d7e22d 100644 --- a/osal/usb_osal.h +++ b/osal/usb_osal.h @@ -51,8 +51,8 @@ void usb_osal_event_delete(usb_osal_event_t event); int usb_osal_event_recv(usb_osal_event_t event, uint32_t set, uint32_t *recved); int usb_osal_event_send(usb_osal_event_t event, uint32_t set); -uint32_t usb_osal_enter_critical_section(void); -void usb_osal_leave_critical_section(uint32_t flag); +size_t usb_osal_enter_critical_section(void); +void usb_osal_leave_critical_section(size_t flag); void usb_osal_msleep(uint32_t delay); diff --git a/osal/usb_osal_freertos.c b/osal/usb_osal_freertos.c index 4b890ae8..933833b6 100644 --- a/osal/usb_osal_freertos.c +++ b/osal/usb_osal_freertos.c @@ -131,13 +131,13 @@ int usb_osal_event_send(usb_osal_event_t event, uint32_t set) return (ret == pdPASS) ? 0 : -1; } -uint32_t usb_osal_enter_critical_section(void) +size_t usb_osal_enter_critical_section(void) { taskENTER_CRITICAL(); return 1; } -void usb_osal_leave_critical_section(uint32_t flag) +void usb_osal_leave_critical_section(size_t flag) { taskEXIT_CRITICAL(); } diff --git a/osal/usb_osal_rtthread.c b/osal/usb_osal_rtthread.c index f0c1c589..5212f349 100644 --- a/osal/usb_osal_rtthread.c +++ b/osal/usb_osal_rtthread.c @@ -117,17 +117,17 @@ int usb_osal_event_send(usb_osal_event_t event, uint32_t set) return ret; } -uint32_t usb_osal_enter_critical_section(void) +size_t usb_osal_enter_critical_section(void) { return rt_hw_interrupt_disable(); } -void usb_osal_leave_critical_section(uint32_t flag) +void usb_osal_leave_critical_section(size_t flag) { rt_hw_interrupt_enable(flag); } void usb_osal_msleep(uint32_t delay) { - rt_thread_mdelay(rt_tick_from_millisecond(delay)); + rt_thread_mdelay(delay); } diff --git a/osal/usb_workq.c b/osal/usb_workq.c index f8c1feb2..7ec34ffc 100644 --- a/osal/usb_workq.c +++ b/osal/usb_workq.c @@ -27,7 +27,7 @@ void usb_workqueue_submit(struct usb_workqueue *queue, struct usb_work *work, usb_worker_t worker, void *arg, uint32_t ticks) { - uint32_t flags; + size_t flags; flags = usb_osal_enter_critical_section(); usb_dlist_remove(&work->list); work->worker = worker; @@ -47,7 +47,7 @@ struct usb_workqueue g_lpworkq = { NULL }; static void usbh_hpwork_thread(void *argument) { struct usb_work *work; - uint32_t flags; + size_t flags; int ret; struct usb_workqueue *queue = (struct usb_workqueue *)argument; while (1) { @@ -70,7 +70,7 @@ static void usbh_hpwork_thread(void *argument) static void usbh_lpwork_thread(void *argument) { struct usb_work *work; - uint32_t flags; + size_t flags; int ret; struct usb_workqueue *queue = (struct usb_workqueue *)argument; while (1) { diff --git a/port/ehci/usb_ehci.c b/port/ehci/usb_ehci.c index 9a2030d6..29da8d43 100644 --- a/port/ehci/usb_ehci.c +++ b/port/ehci/usb_ehci.c @@ -1299,7 +1299,7 @@ errout_with_qh: static int usb_ehci_ioc_setup(struct usb_ehci_epinfo_s *epinfo) { - uint32_t flags; + size_t flags; int ret = -ENODEV; DEBUGASSERT(rhport && epinfo && !epinfo->iocwait); @@ -1353,7 +1353,7 @@ static int usb_ehci_ioc_setup(struct usb_ehci_epinfo_s *epinfo) #ifdef CONFIG_USBHOST_ASYNCH static int usb_ehci_ioc_async_setup(struct usb_ehci_epinfo_s *epinfo, usbh_asynch_callback_t callback, void *arg) { - uint32_t flags; + size_t flags; int ret = -ENODEV; DEBUGASSERT(rhport && epinfo && !epinfo->iocwait); @@ -2536,7 +2536,7 @@ int usb_ep_cancel(usbh_epinfo_t ep) void *arg; #endif uint32_t *bp; - uint32_t flags; + size_t flags; bool iocwait; int ret; diff --git a/port/musb/usb_hc_musb.c b/port/musb/usb_hc_musb.c index 54fa6ab0..8ceedc37 100644 --- a/port/musb/usb_hc_musb.c +++ b/port/musb/usb_hc_musb.c @@ -302,7 +302,7 @@ static void usb_musb_chan_free(struct usb_musb_chan *chan) static int usb_musb_chan_waitsetup(struct usb_musb_chan *chan) { - uint32_t flags; + size_t flags; int ret = -ENODEV; flags = usb_osal_enter_critical_section(); @@ -346,7 +346,7 @@ static int usb_musb_chan_waitsetup(struct usb_musb_chan *chan) #ifdef CONFIG_USBHOST_ASYNCH static int usb_musb_chan_asynchsetup(struct usb_musb_chan *chan, usbh_asynch_callback_t callback, void *arg) { - uint32_t flags; + size_t flags; int ret = -ENODEV; flags = usb_osal_enter_critical_section(); @@ -890,7 +890,7 @@ int usbh_ep_intr_async_transfer(usbh_epinfo_t ep, uint8_t *buffer, uint32_t bufl int usb_ep_cancel(usbh_epinfo_t ep) { int ret; - uint32_t flags; + size_t flags; struct usb_musb_chan *chan; uint8_t chidx = (uint8_t)ep; #ifdef CONFIG_USBHOST_ASYNCH diff --git a/port/synopsys/usb_hc_synopsys.c b/port/synopsys/usb_hc_synopsys.c index f01a3816..edd69c88 100644 --- a/port/synopsys/usb_hc_synopsys.c +++ b/port/synopsys/usb_hc_synopsys.c @@ -147,7 +147,7 @@ static inline void usb_synopsys_chan_freeall(void) static int usb_synopsys_chan_waitsetup(struct usb_synopsys_chan *chan) { - uint32_t flags; + size_t flags; int ret = -ENODEV; flags = usb_osal_enter_critical_section(); @@ -191,7 +191,7 @@ static int usb_synopsys_chan_waitsetup(struct usb_synopsys_chan *chan) #ifdef CONFIG_USBHOST_ASYNCH static int usb_synopsys_chan_asynchsetup(struct usb_synopsys_chan *chan, usbh_asynch_callback_t callback, void *arg) { - uint32_t flags; + size_t flags; int ret = -ENODEV; flags = usb_osal_enter_critical_section(); @@ -681,7 +681,7 @@ errout_with_mutex: int usbh_ep_intr_transfer(usbh_epinfo_t ep, uint8_t *buffer, uint32_t buflen, uint32_t timeout) { - uint32_t flags; + size_t flags; uint32_t retries; int ret; struct usb_synopsys_chan *chan; @@ -752,7 +752,7 @@ int usbh_ep_bulk_async_transfer(usbh_epinfo_t ep, uint8_t *buffer, uint32_t bufl int usbh_ep_intr_async_transfer(usbh_epinfo_t ep, uint8_t *buffer, uint32_t buflen, usbh_asynch_callback_t callback, void *arg) { int ret; - uint32_t flags; + size_t flags; struct usb_synopsys_chan *chan; struct usb_synopsys_priv *priv = &g_usbhost; uint8_t chidx = (uint8_t)ep; @@ -785,7 +785,7 @@ int usbh_ep_intr_async_transfer(usbh_epinfo_t ep, uint8_t *buffer, uint32_t bufl int usb_ep_cancel(usbh_epinfo_t ep) { int ret; - uint32_t flags; + size_t flags; struct usb_synopsys_chan *chan; struct usb_synopsys_priv *priv = &g_usbhost; #ifdef CONFIG_USBHOST_ASYNCH