Browse Source

usbdevice/core: cope with some buggy drivers on USB_MSG_DATA_NOTIFY

Some driver will emit USB_MSG_DATA_NOTIFY before the USB get configured.
Filter out those events.
Grissiom 12 years ago
parent
commit
b02993c989
1 changed files with 4 additions and 0 deletions
  1. 4 0
      components/drivers/usb/usbdevice/core/core.c

+ 4 - 0
components/drivers/usb/usbdevice/core/core.c

@@ -1447,6 +1447,10 @@ static void rt_usbd_thread_entry(void* parameter)
             _sof_notify(device);
             break;
         case USB_MSG_DATA_NOTIFY:
+            /* some buggy drivers will have USB_MSG_DATA_NOTIFY before the core
+             * got configured. */
+            if (device->state != USB_STATE_CONFIGURED)
+                break;
             ep = rt_usbd_find_endpoint(device, &cls, msg.content.ep_msg.ep_addr);
             if(ep != RT_NULL)
                 ep->handler(device, cls, msg.content.ep_msg.size);