]> git.sesse.net Git - pistorm/blobdiff - gpio/ps_protocol.c
Fix config reload?
[pistorm] / gpio / ps_protocol.c
index 2e8364ee42aaef0040023a8b9542b918289238d1..94e38a41b60481e2f2d5008af6cb862cfa2cd996 100644 (file)
@@ -1,6 +1,8 @@
+// SPDX-License-Identifier: MIT
+
 /*
   Original Copyright 2020 Claude Schwarz
-  Code reorganized and rewritten by 
+  Code reorganized and rewritten by
   Niklas Ekström 2021 (https://github.com/niklasekstrom)
 */
 
@@ -13,7 +15,9 @@
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <unistd.h>
+
 #include "ps_protocol.h"
+#include "m68k.h"
 
 volatile unsigned int *gpio;
 volatile unsigned int *gpclk;
@@ -173,10 +177,9 @@ unsigned int ps_read_16(unsigned int address) {
   *(gpio + 7) = (REG_DATA << PIN_A0);
   *(gpio + 7) = 1 << PIN_RD;
 
-  while (*(gpio + 13) & (1 << PIN_TXN_IN_PROGRESS))
-    ;
-
   unsigned int value = *(gpio + 13);
+  while ((value=*(gpio + 13)) & (1 << PIN_TXN_IN_PROGRESS))
+    ;
 
   *(gpio + 10) = 0xffffec;
 
@@ -205,10 +208,9 @@ unsigned int ps_read_8(unsigned int address) {
   *(gpio + 7) = (REG_DATA << PIN_A0);
   *(gpio + 7) = 1 << PIN_RD;
 
-  while (*(gpio + 13) & (1 << PIN_TXN_IN_PROGRESS))
-    ;
-
   unsigned int value = *(gpio + 13);
+  while ((value=*(gpio + 13)) & (1 << PIN_TXN_IN_PROGRESS))
+    ;
 
   *(gpio + 10) = 0xffffec;