فهرست منبع

Fix for RP2040 SCSI DMA

(cherry picked from commit 1e03a8dd1ae90007ca595519815d4bb8e7a13d06)
Petteri Aimonen 3 سال پیش
والد
کامیت
ab09d26d4f
1فایلهای تغییر یافته به همراه9 افزوده شده و 0 حذف شده
  1. 9 0
      lib/ZuluSCSI_platform_RP2040/scsi_accel_rp2040.cpp

+ 9 - 0
lib/ZuluSCSI_platform_RP2040/scsi_accel_rp2040.cpp

@@ -57,6 +57,15 @@ static bool g_channels_claimed = false;
 // Fill DMA buffer and return number of words ready to be transferred
 static uint32_t refill_dmabuf(uint32_t *buf)
 {
+    if (g_scsi_dma.app_bytes == 0 && g_scsi_dma.next_app_bytes > 0)
+    {
+        g_scsi_dma.dma_bytes = 0;
+        g_scsi_dma.app_buf = g_scsi_dma.next_app_buf;
+        g_scsi_dma.app_bytes = g_scsi_dma.next_app_bytes;
+        g_scsi_dma.next_app_buf = 0;
+        g_scsi_dma.next_app_bytes = 0;
+    }
+
     uint32_t count = (g_scsi_dma.app_bytes - g_scsi_dma.dma_bytes) / 2;
     if (count > DMA_BUF_SIZE) count = DMA_BUF_SIZE;