Răsfoiți Sursa

stm32h7: Fix indentation error where OUT XFER interrupt wasn't handled
in the correct scope.

William D. Jones 6 ani în urmă
părinte
comite
910fd867c7
1 a modificat fișierele cu 20 adăugiri și 19 ștergeri
  1. 20 19
      src/portable/st/stm32h7/dcd_stm32h7.c

+ 20 - 19
src/portable/st/stm32h7/dcd_stm32h7.c

@@ -551,6 +551,7 @@ static void handle_epout_ints(USB_OTG_DeviceTypeDef * dev, USB_OTG_OUTEndpointTy
   // OEPINT will be cleared when DAINT's out bits are cleared.
   for(int n = 0; n < 8; n++) {
     xfer_ctl_t * xfer = XFER_CTL_BASE(n, TUSB_DIR_OUT);
+
     if(dev->DAINT & (1 << (USB_OTG_DAINT_OEPINT_Pos + n))) {
       // SETUP packet Setup Phase done.
       if(out_ep[n].DOEPINT & USB_OTG_DOEPINT_STUP) {
@@ -558,26 +559,26 @@ static void handle_epout_ints(USB_OTG_DeviceTypeDef * dev, USB_OTG_OUTEndpointTy
         dcd_event_setup_received(0, (uint8_t*) &_setup_packet[2*_setup_offs], true);
         _setup_offs = 0;
       }
-    }
 
-    // OUT XFER complete (single packet).
-    if(out_ep[n].DOEPINT & USB_OTG_DOEPINT_XFRC) {
-      out_ep[n].DOEPINT = USB_OTG_DOEPINT_XFRC;
-
-      // TODO: Because of endpoint 0's constrained size, we handle XFRC
-      // on a packet-basis. The core can internally handle multiple OUT
-      // packets; it would be more efficient to only trigger XFRC on a
-      // completed transfer for non-0 endpoints.
-
-      // Transfer complete if short packet or total len is transferred
-      if(xfer->short_packet || (xfer->queued_len == xfer->total_len)) {
-        xfer->short_packet = false;
-        dcd_event_xfer_complete(0, n, xfer->queued_len, XFER_RESULT_SUCCESS, true);
-      } else {
-        // Schedule another packet to be received.
-        out_ep[n].DOEPTSIZ |= (1 << USB_OTG_DOEPTSIZ_PKTCNT_Pos) | \
-            ((xfer->max_size & USB_OTG_DOEPTSIZ_XFRSIZ_Msk) << USB_OTG_DOEPTSIZ_XFRSIZ_Pos);
-        out_ep[n].DOEPCTL |= USB_OTG_DOEPCTL_EPENA | USB_OTG_DOEPCTL_CNAK;
+      // OUT XFER complete (single packet).
+      if(out_ep[n].DOEPINT & USB_OTG_DOEPINT_XFRC) {
+        out_ep[n].DOEPINT = USB_OTG_DOEPINT_XFRC;
+
+        // TODO: Because of endpoint 0's constrained size, we handle XFRC
+        // on a packet-basis. The core can internally handle multiple OUT
+        // packets; it would be more efficient to only trigger XFRC on a
+        // completed transfer for non-0 endpoints.
+
+        // Transfer complete if short packet or total len is transferred
+        if(xfer->short_packet || (xfer->queued_len == xfer->total_len)) {
+          xfer->short_packet = false;
+          dcd_event_xfer_complete(0, n, xfer->queued_len, XFER_RESULT_SUCCESS, true);
+        } else {
+          // Schedule another packet to be received.
+          out_ep[n].DOEPTSIZ |= (1 << USB_OTG_DOEPTSIZ_PKTCNT_Pos) | \
+              ((xfer->max_size & USB_OTG_DOEPTSIZ_XFRSIZ_Msk) << USB_OTG_DOEPTSIZ_XFRSIZ_Pos);
+          out_ep[n].DOEPCTL |= USB_OTG_DOEPCTL_EPENA | USB_OTG_DOEPCTL_CNAK;
+        }
       }
     }
   }