From 792a9e24b61f6671d68413e041fac8c1ad9a6d5a Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Mon, 30 Jan 2017 11:11:11 +0000 Subject: [PATCH] Fixed bug #816. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/branches/stable_16.1.x@10070 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/ports/STM32/LLD/OTGv1/usb_lld.c | 32 ++++++++++++++++++++++++-- readme.txt | 4 ++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/os/hal/ports/STM32/LLD/OTGv1/usb_lld.c b/os/hal/ports/STM32/LLD/OTGv1/usb_lld.c index d9e0e73b1..f70f096ec 100644 --- a/os/hal/ports/STM32/LLD/OTGv1/usb_lld.c +++ b/os/hal/ports/STM32/LLD/OTGv1/usb_lld.c @@ -609,11 +609,25 @@ static void usb_lld_serve_interrupt(USBDriver *usbp) { otg_epin_handler(usbp, 2); if (src & (1 << 3)) otg_epin_handler(usbp, 3); -#if STM32_USB_USE_OTG2 +#if USB_MAX_ENDPOINTS >= 4 if (src & (1 << 4)) otg_epin_handler(usbp, 4); +#endif +#if USB_MAX_ENDPOINTS >= 5 if (src & (1 << 5)) otg_epin_handler(usbp, 5); +#endif +#if USB_MAX_ENDPOINTS >= 6 + if (src & (1 << 6)) + otg_epin_handler(usbp, 6); +#endif +#if USB_MAX_ENDPOINTS >= 7 + if (src & (1 << 7)) + otg_epin_handler(usbp, 7); +#endif +#if USB_MAX_ENDPOINTS >= 8 + if (src & (1 << 8)) + otg_epin_handler(usbp, 8); #endif } if (sts & GINTSTS_OEPINT) { @@ -625,11 +639,25 @@ static void usb_lld_serve_interrupt(USBDriver *usbp) { otg_epout_handler(usbp, 2); if (src & (1 << 19)) otg_epout_handler(usbp, 3); -#if STM32_USB_USE_OTG2 +#if USB_MAX_ENDPOINTS >= 4 if (src & (1 << 20)) otg_epout_handler(usbp, 4); +#endif +#if USB_MAX_ENDPOINTS >= 5 if (src & (1 << 21)) otg_epout_handler(usbp, 5); +#endif +#if USB_MAX_ENDPOINTS >= 6 + if (src & (1 << 22)) + otg_epout_handler(usbp, 6); +#endif +#if USB_MAX_ENDPOINTS >= 7 + if (src & (1 << 23)) + otg_epout_handler(usbp, 7); +#endif +#if USB_MAX_ENDPOINTS >= 8 + if (src & (1 << 24)) + otg_epout_handler(usbp, 8); #endif } } diff --git a/readme.txt b/readme.txt index 40f227e88..d9b781007 100644 --- a/readme.txt +++ b/readme.txt @@ -72,6 +72,10 @@ *** Releases and Change Log *** ***************************************************************************** +*** 16.1.8 *** +- HAL: Fixed STM32 OTGv1 driver not serving interrupts for endpoints > 5 + (bug #816). + *** 16.1.7 *** - VAR: Fixed BYTE_ORDER redefined in lwip_bindings/arch/cc.h (bug #814). - HAL: Fixed setting alternate mode in STM32 GPIOv3 and GPIOv3 drivers can fail