Implement READ(6/10/12) for magneto-optical disks.
This commit is contained in:
@@ -1337,12 +1337,16 @@ do_command(void *p, uint8_t *cdb)
|
||||
case GPCMD_READ_10:
|
||||
case GPCMD_READ_12:
|
||||
set_phase(dev, SCSI_PHASE_DATA_IN);
|
||||
alloc_length = 512;
|
||||
alloc_length = dev->drv->sector_size;
|
||||
|
||||
switch(cdb[0]) {
|
||||
case GPCMD_READ_6:
|
||||
dev->sector_len = cdb[4];
|
||||
dev->sector_pos = ((((uint32_t) cdb[1]) & 0x1f) << 16) | (((uint32_t) cdb[2]) << 8) | ((uint32_t) cdb[3]);
|
||||
|
||||
if(dev->sector_len == 0)
|
||||
dev->sector_len = 256;
|
||||
|
||||
DEBUG("MO %i: Length: %i, LBA: %i\n", dev->id, dev->sector_len, dev->sector_pos);
|
||||
break;
|
||||
|
||||
@@ -1355,6 +1359,7 @@ do_command(void *p, uint8_t *cdb)
|
||||
case GPCMD_READ_12:
|
||||
dev->sector_len = (((uint32_t) cdb[6]) << 24) | (((uint32_t) cdb[7]) << 16) | (((uint32_t) cdb[8]) << 8) | ((uint32_t) cdb[9]);
|
||||
dev->sector_pos = (((uint32_t) cdb[2]) << 24) | (((uint32_t) cdb[3]) << 16) | (((uint32_t) cdb[4]) << 8) | ((uint32_t) cdb[5]);
|
||||
DEBUG("MO %i: Length: %i, LBA: %i\n", dev->id, dev->sector_len, dev->sector_pos);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1391,7 +1396,7 @@ do_command(void *p, uint8_t *cdb)
|
||||
|
||||
set_buf_len(dev, BufLen, (int32_t *) &dev->packet_len);
|
||||
|
||||
data_command_finish(dev, alloc_length, 512, alloc_length, 0);
|
||||
data_command_finish(dev, alloc_length, dev->drv->sector_size, alloc_length, 0);
|
||||
|
||||
if (dev->packet_status != PHASE_COMPLETE)
|
||||
ui_sb_icon_update(SB_MO | dev->id, 1);
|
||||
|
||||
Reference in New Issue
Block a user