|
|
@@ -2019,6 +2019,7 @@ static void doReadSubchannel(bool time, bool subq, uint8_t parameter, uint8_t tr
|
|
|
static bool doReadCapacity(uint32_t lba, uint8_t pmi)
|
|
|
{
|
|
|
image_config_t &img = *(image_config_t*)scsiDev.target->cfg;
|
|
|
+
|
|
|
uint32_t capacity = img.get_capacity_lba();
|
|
|
if (capacity > 0)
|
|
|
{
|
|
|
@@ -2035,15 +2036,15 @@ static bool doReadCapacity(uint32_t lba, uint8_t pmi)
|
|
|
{
|
|
|
logmsg("WARNING: unable to find capacity of device ID ", (int) 7 & img.scsiId);
|
|
|
}
|
|
|
-
|
|
|
+ uint32_t bytes_per_sector = scsiDev.target->liveCfg.bytesPerSector;
|
|
|
scsiDev.data[0] = capacity >> 24;
|
|
|
scsiDev.data[1] = capacity >> 16;
|
|
|
scsiDev.data[2] = capacity >> 8;
|
|
|
scsiDev.data[3] = capacity;
|
|
|
- scsiDev.data[4] = 0;
|
|
|
- scsiDev.data[5] = 0;
|
|
|
- scsiDev.data[6] = 0x08; // rest of code assumes 2048 here
|
|
|
- scsiDev.data[7] = 0x00;
|
|
|
+ scsiDev.data[4] = bytes_per_sector >> 24;
|
|
|
+ scsiDev.data[5] = bytes_per_sector >> 16;
|
|
|
+ scsiDev.data[6] = bytes_per_sector >> 8;
|
|
|
+ scsiDev.data[7] = bytes_per_sector;
|
|
|
scsiDev.dataLen = 8;
|
|
|
scsiDev.phase = DATA_IN;
|
|
|
return true;
|