Moved wakeup logic in LLD.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@10572 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
parent
8204b9ce59
commit
67ac09b2f3
|
@ -245,21 +245,10 @@
|
|||
#define USB_USE_WAIT FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Host wake-up procedure duration.
|
||||
*/
|
||||
#if !defined(USB_HOST_WAKEUP_DURATION) || defined(__DOXYGEN__)
|
||||
#define USB_HOST_WAKEUP_DURATION 2
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Derived constants and error checks. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#if (USB_HOST_WAKEUP_DURATION < 2) || (USB_HOST_WAKEUP_DURATION > 15)
|
||||
#error "invalid USB_HOST_WAKEUP_DURATION setting, it must be between 2 and 15"
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver data structures and types. */
|
||||
/*===========================================================================*/
|
||||
|
|
|
@ -142,6 +142,13 @@
|
|||
#define STM32_USB_OTGFIFO_FILL_BASEPRI 0
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Host wake-up procedure duration.
|
||||
*/
|
||||
#if !defined(USB_HOST_WAKEUP_DURATION) || defined(__DOXYGEN__)
|
||||
#define USB_HOST_WAKEUP_DURATION 2
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Derived constants and error checks. */
|
||||
/*===========================================================================*/
|
||||
|
@ -242,6 +249,10 @@
|
|||
#error "the USB OTG driver requires a 48MHz clock"
|
||||
#endif
|
||||
|
||||
#if (USB_HOST_WAKEUP_DURATION < 2) || (USB_HOST_WAKEUP_DURATION > 15)
|
||||
#error "invalid USB_HOST_WAKEUP_DURATION setting, it must be between 2 and 15"
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver data structures and types. */
|
||||
/*===========================================================================*/
|
||||
|
@ -565,14 +576,12 @@ struct USBDriver {
|
|||
*
|
||||
* @notapi
|
||||
*/
|
||||
#define usb_lld_start_wakeup_host(usbp) ((usbp)->otg->DCTL |= DCTL_RWUSIG)
|
||||
|
||||
/**
|
||||
* @brief Stop of host wake-up procedure.
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
#define usb_lld_stop_wakeup_host(usbp) ((usbp)->otg->DCTL &= ~DCTL_RWUSIG)
|
||||
#define usb_lld_wakeup_host(usbp) \
|
||||
do{ \
|
||||
(usbp)->otg->DCTL |= DCTL_RWUSIG; \
|
||||
osalThreadSleepMilliseconds(USB_HOST_WAKEUP_DURATION); \
|
||||
(usbp)->otg->DCTL &= ~DCTL_RWUSIG; \
|
||||
} while (false)
|
||||
|
||||
/*===========================================================================*/
|
||||
/* External declarations. */
|
||||
|
|
|
@ -105,6 +105,13 @@
|
|||
#define STM32_USB_USE_FAST_COPY FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Host wake-up procedure duration.
|
||||
*/
|
||||
#if !defined(USB_HOST_WAKEUP_DURATION) || defined(__DOXYGEN__)
|
||||
#define USB_HOST_WAKEUP_DURATION 2
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Derived constants and error checks. */
|
||||
/*===========================================================================*/
|
||||
|
@ -148,6 +155,10 @@
|
|||
#error "STM32_USB1_LP_NUMBER not defined"
|
||||
#endif
|
||||
|
||||
#if (USB_HOST_WAKEUP_DURATION < 2) || (USB_HOST_WAKEUP_DURATION > 15)
|
||||
#error "invalid USB_HOST_WAKEUP_DURATION setting, it must be between 2 and 15"
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver data structures and types. */
|
||||
/*===========================================================================*/
|
||||
|
@ -453,14 +464,12 @@ struct USBDriver {
|
|||
*
|
||||
* @notapi
|
||||
*/
|
||||
#define usb_lld_start_wakeup_host(usbp) (STM32_USB->CNTR |= USB_CNTR_RESUME)
|
||||
|
||||
/**
|
||||
* @brief Stop of host wake-up procedure.
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
#define usb_lld_stop_wakeup_host(usbp) (STM32_USB->CNTR &= ~USB_CNTR_RESUME)
|
||||
#define usb_lld_wakeup_host(usbp) \
|
||||
do{ \
|
||||
STM32_USB->CNTR |= USB_CNTR_RESUME; \
|
||||
osalThreadSleepMilliseconds(USB_HOST_WAKEUP_DURATION); \
|
||||
STM32_USB->CNTR &= ~USB_CNTR_RESUME; \
|
||||
} while (false)
|
||||
|
||||
/*===========================================================================*/
|
||||
/* External declarations. */
|
||||
|
|
|
@ -644,13 +644,7 @@ void usbWakeupHost(USBDriver *usbp) {
|
|||
|
||||
if (usbp->state == USB_SUSPENDED) {
|
||||
/* Starting host wakeup procedure.*/
|
||||
usb_lld_start_wakeup_host(usbp);
|
||||
|
||||
/* Holding it for the configured time, it must be 2..15 msecs.*/
|
||||
osalThreadSleepMilliseconds(USB_HOST_WAKEUP_DURATION);
|
||||
|
||||
/* Stopping host wake up procedure.*/
|
||||
usb_lld_stop_wakeup_host(usbp);
|
||||
usb_lld_wakeup_host(usbp);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue