瀏覽代碼

Reduce IRQ delays

Michael McMaster 3 年之前
父節點
當前提交
a2a714dc69
共有 2 個文件被更改,包括 4 次插入18 次删除
  1. 2 9
      lib/SCSI2SD/src/firmware/disk.c
  2. 2 9
      lib/SCSI2SD/src/firmware/scsiPhy.c

+ 2 - 9
lib/SCSI2SD/src/firmware/disk.c

@@ -874,12 +874,7 @@ static void diskDataIn()
         likely(scsiDev.phase == DATA_IN) &&
         likely(!scsiDev.resetFlag))
     {
-        __disable_irq();
-        if (!scsiPhyComplete() && likely(!scsiDev.resetFlag))
-        {
-            __WFI();
-        }
-        __enable_irq();
+        // spin
     }
 
     if (scsiDev.phase == DATA_IN)
@@ -1130,12 +1125,10 @@ void diskDataOut()
 
     // Should already be complete here as we've ready the FIFOs
     // by now. Check anyway.
-    __disable_irq();
     while (!scsiPhyComplete() && likely(!scsiDev.resetFlag))
     {
-        __WFI();
+        // spin
     }
-    __enable_irq();
 
     if (clearBSY)
     {

+ 2 - 9
lib/SCSI2SD/src/firmware/scsiPhy.c

@@ -335,12 +335,7 @@ scsiRead(uint8_t* data, uint32_t count, int* parityError)
 
         while (!scsiPhyComplete() && likely(!scsiDev.resetFlag))
         {
-            __disable_irq();
-            if (!scsiPhyComplete() && likely(!scsiDev.resetFlag))
-            {
-                __WFI();
-            }
-            __enable_irq();
+            // spin
         }
 
         i += chunk;
@@ -487,12 +482,10 @@ scsiWrite(const uint8_t* data, uint32_t count)
 
         while (!scsiPhyComplete() && likely(!scsiDev.resetFlag))
         {
-            __disable_irq();
             if (!scsiPhyComplete() && likely(!scsiDev.resetFlag))
             {
-                __WFI();
+                // spin
             }
-            __enable_irq();
         }
 
         i += chunk;