much more stable now but still I/O errors when copying large volumes
This commit is contained in:
@@ -103,7 +103,6 @@ static uint8_t xchg_spi(uint8_t byte)
|
||||
|
||||
fifo = MCF_DSPI_DRFR;
|
||||
|
||||
MCF_DSPI_DSR = 0xffffffff;
|
||||
res = fifo & 0xff;
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -126,20 +126,18 @@ uint32_t xhdi_read_write(uint16_t major, uint16_t minor, uint16_t rwflag,
|
||||
if (major == MY_MAJOR)
|
||||
{
|
||||
do {
|
||||
num_sectors = ((s_count > 127) ? 127 : s_count);
|
||||
num_sectors = ((s_count > 128) ? 128 : s_count);
|
||||
|
||||
retries = 0;
|
||||
do {
|
||||
ret = ((rwflag & 1) ? disk_write(0, buf, recno, num_sectors) : disk_read(0, buf, recno, num_sectors));
|
||||
if (ret != RES_OK && retries > max_retries)
|
||||
{
|
||||
xprintf("error: %d\r\n", ret);
|
||||
return ERROR;
|
||||
}
|
||||
else if (ret != RES_OK)
|
||||
if (ret != RES_OK)
|
||||
{
|
||||
retries++;
|
||||
continue;
|
||||
if (retries < max_retries) continue;
|
||||
|
||||
xprintf("error: %d\r\n", ret);
|
||||
return ERROR;
|
||||
}
|
||||
} while (retries < max_retries && ret != RES_OK);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user