MEDIA_STATE* mediaState = &(scsiDev.target->device->mediaState);\r
\r
if (unlikely(*mediaState & MEDIA_WP) ||\r
- unlikely(scsiDev.target->cfg->deviceType == CONFIG_OPTICAL))\r
+ unlikely(scsiDev.target->cfg->deviceType == CONFIG_OPTICAL) ||\r
+ (scsiDev.target->cfg->storageDevice != CONFIG_STOREDEVICE_SD))\r
\r
{\r
scsiDev.status = CHECK_CONDITION;\r
(sdSectors == 1) &&\r
!(scsiDev.boardCfg.flags & CONFIG_ENABLE_CACHE)\r
) ||\r
- unlikely(((uint64) lba) + blocks == capacity)\r
+ unlikely(((uint64) lba) + blocks == capacity) ||\r
+ (scsiDev.target->cfg->storageDevice != CONFIG_STOREDEVICE_SD)\r
)\r
{\r
// We get errors on reading the last sector using a multi-sector\r
(prep - i < buffers) &&\r
(prep < totalSDSectors))\r
{\r
- // Start an SD transfer if we have space.\r
- if (transfer.multiBlock)\r
- {\r
- sdReadMultiSectorDMA(&scsiDev.data[SD_SECTOR_SIZE * (prep % buffers)]);\r
- }\r
- else\r
- {\r
- sdReadSingleSectorDMA(sdLBA + prep, &scsiDev.data[SD_SECTOR_SIZE * (prep % buffers)]);\r
- }\r
- sdActive = 1;\r
+ if (scsiDev.target->cfg->storageDevice == CONFIG_STOREDEVICE_SD)\r
+ {\r
+ // Start an SD transfer if we have space.\r
+ if (transfer.multiBlock)\r
+ {\r
+ sdReadMultiSectorDMA(&scsiDev.data[SD_SECTOR_SIZE * (prep % buffers)]);\r
+ }\r
+ else\r
+ {\r
+ sdReadSingleSectorDMA(sdLBA + prep, &scsiDev.data[SD_SECTOR_SIZE * (prep % buffers)]);\r
+ }\r
+ sdActive = 1;\r
+ }\r
+ else\r
+ {\r
+ // Sync Read onboard flash\r
+ S2S_Device* device = scsiDev.target->device;\r
+ device->read(device, sdLBA + prep, 1, &scsiDev.data[SD_SECTOR_SIZE * (prep % buffers)]);\r
+ prep++;\r
+ }\r
}\r
\r
if (scsiActive && !scsiBusy && scsiWriteDMAPoll())\r