Răsfoiți Sursa

port: hpmicro: update isr processing (#304)

- update isr processing

Signed-off-by: Zhihong Chen <zhihong.chen@hpmicro.com>
chenzhihong007 8 luni în urmă
părinte
comite
4897d6d622
1 a modificat fișierele cu 9 adăugiri și 9 ștergeri
  1. 9 9
      port/hpm/usb_dc_hpm.c

+ 9 - 9
port/hpm/usb_dc_hpm.c

@@ -307,17 +307,10 @@ void USBD_IRQHandler(uint8_t busid)
 
     if (int_status & intr_usb) {
         uint32_t const edpt_complete = usb_device_get_edpt_complete_status(handle);
-        usb_device_clear_edpt_complete_status(handle, edpt_complete);
-        uint32_t edpt_setup_status = usb_device_get_setup_status(handle);
-
-        if (edpt_setup_status) {
-            /*------------- Set up Received -------------*/
-            usb_device_clear_setup_status(handle, edpt_setup_status);
-            dcd_qhd_t *qhd0 = usb_device_qhd_get(handle, 0);
-            usbd_event_ep0_setup_complete_handler(busid, (uint8_t *)&qhd0->setup_request);
-        }
+        uint32_t const edpt_setup_status = usb_device_get_setup_status(handle);
 
         if (edpt_complete) {
+            usb_device_clear_edpt_complete_status(handle, edpt_complete);
             for (uint8_t ep_idx = 0; ep_idx < USB_SOS_DCD_MAX_QHD_COUNT; ep_idx++) {
                 if (edpt_complete & (1 << ep_idx2bit(ep_idx))) {
                     transfer_len = 0;
@@ -355,6 +348,13 @@ void USBD_IRQHandler(uint8_t busid)
                 }
             }
         }
+
+        if (edpt_setup_status) {
+            /*------------- Set up Received -------------*/
+            usb_device_clear_setup_status(handle, edpt_setup_status);
+            dcd_qhd_t *qhd0 = usb_device_qhd_get(handle, 0);
+            usbd_event_ep0_setup_complete_handler(busid, (uint8_t *)&qhd0->setup_request);
+        }
     }
 }