Reduce IRQ delays
authorMichael McMaster <michael@codesrc.com>
Tue, 22 Feb 2022 06:20:36 +0000 (16:20 +1000)
committerMichael McMaster <michael@codesrc.com>
Tue, 22 Feb 2022 06:20:36 +0000 (16:20 +1000)
src/firmware/disk.c
src/firmware/scsiPhy.c

index 7a4cb8a7dd5841e66265ad4d86af1fbbd69386dd..f22bfb1e9b9298c3fff8c148f4c9d618a3ac68f9 100755 (executable)
@@ -874,12 +874,7 @@ static void diskDataIn()
         likely(scsiDev.phase == DATA_IN) &&\r
         likely(!scsiDev.resetFlag))\r
     {\r
-        __disable_irq();\r
-        if (!scsiPhyComplete() && likely(!scsiDev.resetFlag))\r
-        {\r
-            __WFI();\r
-        }\r
-        __enable_irq();\r
+        // spin\r
     }\r
 \r
     if (scsiDev.phase == DATA_IN)\r
@@ -1130,12 +1125,10 @@ void diskDataOut()
 \r
     // Should already be complete here as we've ready the FIFOs\r
     // by now. Check anyway.\r
-    __disable_irq();\r
     while (!scsiPhyComplete() && likely(!scsiDev.resetFlag))\r
     {\r
-        __WFI();\r
+        // spin\r
     }\r
-    __enable_irq();\r
 \r
     if (clearBSY)\r
     {\r
index 124d0edab27b295867cb56fc69326c46f9846fb1..327baba95ea12e8b12e30a7119ee9f9b2d2cb3f0 100755 (executable)
@@ -335,12 +335,7 @@ scsiRead(uint8_t* data, uint32_t count, int* parityError)
 \r
         while (!scsiPhyComplete() && likely(!scsiDev.resetFlag))\r
         {\r
-            __disable_irq();\r
-            if (!scsiPhyComplete() && likely(!scsiDev.resetFlag))\r
-            {\r
-                __WFI();\r
-            }\r
-            __enable_irq();\r
+            // spin\r
         }\r
 \r
         i += chunk;\r
@@ -487,12 +482,10 @@ scsiWrite(const uint8_t* data, uint32_t count)
 \r
         while (!scsiPhyComplete() && likely(!scsiDev.resetFlag))\r
         {\r
-            __disable_irq();\r
             if (!scsiPhyComplete() && likely(!scsiDev.resetFlag))\r
             {\r
-                __WFI();\r
+                // spin\r
             }\r
-            __enable_irq();\r
         }\r
 \r
         i += chunk;\r