From d832e5d17362212c0eaadb830fdfd8239ce08c54 Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Thu, 31 Dec 2015 15:54:56 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@8664 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/ports/STM32/LLD/USBv1/usb_lld.c | 70 ---------------------------------- os/hal/ports/STM32/LLD/USBv1/usb_lld.h | 48 ----------------------- 2 files changed, 118 deletions(-) (limited to 'os/hal/ports') diff --git a/os/hal/ports/STM32/LLD/USBv1/usb_lld.c b/os/hal/ports/STM32/LLD/USBv1/usb_lld.c index 76e5f8665..488f6e81a 100644 --- a/os/hal/ports/STM32/LLD/USBv1/usb_lld.c +++ b/os/hal/ports/STM32/LLD/USBv1/usb_lld.c @@ -493,17 +493,6 @@ void usb_lld_start(USBDriver *usbp) { /* Reset procedure enforced on driver start.*/ _usb_reset(usbp); } - -#if STM32_USB_USE_PUMP_THREAD && defined(_CHIBIOS_RT_) - /* Creates the data pump thread. Note, it is created only once.*/ - if (usbp->tr == NULL) { - usbp->tr = chThdCreateI(usbp->wa_pump, sizeof usbp->wa_pump, - STM32_USB_PUMP_THREAD_PRIO, - usb_lld_pump, usbp); - chThdStartI(usbp->tr); - chSchRescheduleS(); - } -#endif } /** @@ -869,65 +858,6 @@ void usb_lld_clear_in(USBDriver *usbp, usbep_t ep) { EPR_SET_STAT_TX(ep, EPR_STAT_TX_NAK); } -#if STM32_USB_USE_PUMP_THREAD || defined(__DOXYGEN__) -/** - * @brief USB data transfer loop. - * @details This function must be executed by a system thread in order to - * make the USB driver work. - * @note The data copy part of the driver is implemented in this thread - * in order to not perform heavy tasks within interrupt handlers. - * - * @param[in] p pointer to the @p USBDriver object - * - * @special - */ -void usb_lld_pump(void *p) { - USBDriver *usbp = (USBDriver *)p; - -#if defined(_CHIBIOS_RT_) - chRegSetThreadName("usb_lld_pump"); -#endif - while (true) { - usbep_t ep; - - /* Checking if to go to sleep.*/ - osalSysLock(); - if ((usbp->state == USB_STOP) && (usbp->pending == 0U)) { - osalThreadSuspendS(&usbp->wait); - } - osalSysUnlock(); - - /* Scanning endpoints.*/ - for (ep = 0; ep <= USB_ENDOPOINTS_NUMBER; ep++) { - uint32_t epmask; - - /* Checking of active endpoints.*/ - const USBEndpointConfig *epcp = usbp->epc[ep]; - if (epcp != NULL) { - if (epcp->in_state != NULL) { - epmask = (1U << 16U) << ep; - if ((usbp->pending & epmask) != 0U) { - /* Handling transfer of this IN endpoint.*/ - - osalSysLock(); - usbp->pending &= ~epmask; - osalSysUnlock(); - } - epmask = 1U << ep; - if ((usbp->pending & epmask) != 0U) { - /* Handling transfer of this OUT endpoint.*/ - - osalSysLock(); - usbp->pending &= ~epmask; - osalSysUnlock(); - } - } - } - } - } -} -#endif /* STM32_USB_USE_PUMP_THREAD */ - #endif /* HAL_USE_USB */ /** @} */ diff --git a/os/hal/ports/STM32/LLD/USBv1/usb_lld.h b/os/hal/ports/STM32/LLD/USBv1/usb_lld.h index 6214e5ff4..2013480dc 100644 --- a/os/hal/ports/STM32/LLD/USBv1/usb_lld.h +++ b/os/hal/ports/STM32/LLD/USBv1/usb_lld.h @@ -105,30 +105,6 @@ #define STM32_USB_USE_FAST_COPY FALSE #endif -/** - * @brief Enables the use of a thread for data moving. - * @details This option improves IRQ handling by performing data moving - * from a dedicated internal thread at the cost of increased - * footprint. - */ -#if !defined(STM32_USB_USE_PUMP_THREAD) || defined(__DOXYGEN__) -#define STM32_USB_USE_PUMP_THREAD FALSE -#endif - -/** - * @brief Dedicated data pump threads priority. - */ -#if !defined(STM32_USB_PUMP_THREAD_PRIO) || defined(__DOXYGEN__) -#define STM32_USB_PUMP_THREAD_PRIO LOWPRIO -#endif - -/** - * @brief Dedicated data pump threads stack size. - */ -#if !defined(STM32_USB_PUMP_THREAD_STACK_SIZE) || defined(__DOXYGEN__) -#define STM32_USB_PUMP_THREAD_STACK_SIZE 128 -#endif - /*===========================================================================*/ /* Derived constants and error checks. */ /*===========================================================================*/ @@ -405,27 +381,6 @@ struct USBDriver { * @brief Pointer to the next address in the packet memory. */ uint32_t pmnext; -#if STM32_USB_USE_PUMP_THREAD || defined(__DOXYGEN__) - /** - * @brief Mask of endpoints to be served by the pump thread. - * @note 0..15 for OUT endpoints, 16..31 for IN endpoints. - */ - uint32_t pending; - /** - * @brief Pointer to the thread when it is sleeping or @p NULL. - */ - thread_reference_t wait; -#if defined(_CHIBIOS_RT_) || defined(__DOXYGEN__) - /** - * @brief Pointer to the thread once created. - */ - thread_reference_t tr; - /** - * @brief Working area for the dedicated data pump thread; - */ - THD_WORKING_AREA(wa_pump, STM32_USB_PUMP_THREAD_STACK_SIZE); -#endif /* _CHIBIOS_RT_ */ -#endif /* STM32_USB_USE_PUMP_THREAD */ }; /*===========================================================================*/ @@ -516,9 +471,6 @@ extern "C" { void usb_lld_stall_in(USBDriver *usbp, usbep_t ep); void usb_lld_clear_out(USBDriver *usbp, usbep_t ep); void usb_lld_clear_in(USBDriver *usbp, usbep_t ep); -#if STM32_USB_USE_PUMP_THREAD - void usb_lld_pump(void *p); -#endif #ifdef __cplusplus } #endif -- cgit v1.2.3