|
@@ -433,6 +433,9 @@ extern "C" bool scsiIsWriteFinished(const uint8_t *data)
|
|
|
if (max_count % bytesPerSector != 0) max_count -= (max_count % bytesPerSector);
|
|
if (max_count % bytesPerSector != 0) max_count -= (max_count % bytesPerSector);
|
|
|
if (max_count < bytesPerSector) max_count = bytesPerSector;
|
|
if (max_count < bytesPerSector) max_count = bytesPerSector;
|
|
|
|
|
|
|
|
|
|
+ // Avoid SysTick interrupt pauses during the transfer
|
|
|
|
|
+ SysTick_Handle_PreEmptively();
|
|
|
|
|
+
|
|
|
processPollingWrite(max_count);
|
|
processPollingWrite(max_count);
|
|
|
return isPollingWriteFinished(data);
|
|
return isPollingWriteFinished(data);
|
|
|
}
|
|
}
|
|
@@ -491,6 +494,8 @@ extern "C" void scsiRead(uint8_t* data, uint32_t count, int* parityError)
|
|
|
uint32_t count_words = count / 4;
|
|
uint32_t count_words = count / 4;
|
|
|
bool use_greenpak = (g_scsi_phy_mode == PHY_MODE_GREENPAK_DMA || g_scsi_phy_mode == PHY_MODE_GREENPAK_PIO);
|
|
bool use_greenpak = (g_scsi_phy_mode == PHY_MODE_GREENPAK_DMA || g_scsi_phy_mode == PHY_MODE_GREENPAK_PIO);
|
|
|
|
|
|
|
|
|
|
+ SysTick_Handle_PreEmptively();
|
|
|
|
|
+
|
|
|
if (g_scsi_phase == DATA_OUT && scsiDev.target->syncOffset > 0)
|
|
if (g_scsi_phase == DATA_OUT && scsiDev.target->syncOffset > 0)
|
|
|
{
|
|
{
|
|
|
// Synchronous data transfer
|
|
// Synchronous data transfer
|