From 20d27cd0838dbc4a36e07ac437e7e4e3f021317d Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Fri, 27 Mar 2020 20:00:21 +0000 Subject: [PATCH] Remove commands not supported by magneto-optical drives. --- src/devices/disk/mo.c | 130 ------------------------------------------ 1 file changed, 130 deletions(-) diff --git a/src/devices/disk/mo.c b/src/devices/disk/mo.c index f624a47..51c576e 100644 --- a/src/devices/disk/mo.c +++ b/src/devices/disk/mo.c @@ -1319,20 +1319,6 @@ do_command(void *p, uint8_t *cdb) data_command_finish(dev, len, len, cdb[4], 0); break; - case GPCMD_MECHANISM_STATUS: - set_phase(dev, SCSI_PHASE_DATA_IN); - len = (cdb[7] << 16) | (cdb[8] << 8) | cdb[9]; - - buf_alloc(dev, 8); - - set_buf_len(dev, BufLen, &len); - - memset(dev->buffer, 0, 8); - dev->buffer[5] = 1; - - data_command_finish(dev, 8, 8, len, 0); - break; - case GPCMD_READ_6: case GPCMD_READ_10: case GPCMD_READ_12: @@ -1501,68 +1487,6 @@ do_command(void *p, uint8_t *cdb) ui_sb_icon_update(SB_MO | dev->id, 0); return; - case GPCMD_WRITE_SAME_10: - set_phase(dev, SCSI_PHASE_DATA_OUT); - alloc_length = 512; - - if ((cdb[1] & 6) == 6) { - invalid_field(dev); - return; - } - - if (dev->drv->read_only) { - write_protected(dev); - return; - } - - dev->sector_len = (cdb[7] << 8) | cdb[8]; - dev->sector_pos = (cdb[2] << 24) | (cdb[3] << 16) | (cdb[4] << 8) | cdb[5]; - -#if 0 - if ((dev->sector_pos >= dev->drv->medium_size) || - ((dev->sector_pos + dev->sector_len - 1) >= dev->drv->medium_size)) { -#else - if ((dev->sector_pos >= dev->drv->medium_size)) { -#endif - lba_out_of_range(dev); - return; - } - - if (! dev->sector_len) { - set_phase(dev, SCSI_PHASE_STATUS); - DBGLOG(1, "MO %i: All done - callback set\n", dev->id); - dev->packet_status = PHASE_COMPLETE; - dev->callback = 20LL * MO_TIME; - - set_callback(dev); - break; - } - - /* - * If we are writing all blocks in one go for DMA, why - * not also for PIO, it should NOT matter anyway, this - * step should be identical and only the way the data - * written is transferred to the host should be different. - */ - max_len = dev->sector_len; - dev->requested_blocks = max_len; - - dev->packet_len = max_len * alloc_length; - buf_alloc(dev, dev->packet_len); - - dev->requested_blocks = max_len; - dev->packet_len = alloc_length; - - set_buf_len(dev, BufLen, (int32_t *) &dev->packet_len); - - data_command_finish(dev, dev->packet_len, 512, dev->packet_len, 1); - - if (dev->packet_status != PHASE_COMPLETE) - ui_sb_icon_update(SB_MO | dev->id, 1); - else - ui_sb_icon_update(SB_MO | dev->id, 0); - return; - case GPCMD_MODE_SENSE_6: case GPCMD_MODE_SENSE_10: set_phase(dev, SCSI_PHASE_DATA_IN); @@ -1793,60 +1717,6 @@ atapi_out: data_command_finish(dev, len, len, len, 0); break; - case GPCMD_READ_FORMAT_CAPACITIES: - len = (cdb[7] << 8) | cdb[8]; - - buf_alloc(dev, len); - memset(dev->buffer, 0, len); - - pos = 0; - - /* List header */ - dev->buffer[pos++] = 0; - dev->buffer[pos++] = 0; - dev->buffer[pos++] = 0; - if (dev->drv->f != NULL) - dev->buffer[pos++] = 16; - else - dev->buffer[pos++] = 8; - - if (dev->drv->f != NULL) { - dev->buffer[pos++] = (dev->drv->medium_size >> 24) & 0xff; - dev->buffer[pos++] = (dev->drv->medium_size >> 16) & 0xff; - dev->buffer[pos++] = (dev->drv->medium_size >> 8) & 0xff; - dev->buffer[pos++] = dev->drv->medium_size & 0xff; - dev->buffer[pos++] = 2; /* Current medium capacity */ - dev->buffer[pos++] = 0; - dev->buffer[pos++] = (dev->drv->sector_size >> 8) & 0xff; - dev->buffer[pos++] = dev->drv->sector_size & 0xff; - } else { - dev->buffer[pos++] = (MO_SECTORS_GIGAMO2 >> 24) & 0xff; - dev->buffer[pos++] = (MO_SECTORS_GIGAMO2 >> 16) & 0xff; - dev->buffer[pos++] = (MO_SECTORS_GIGAMO2 >> 8) & 0xff; - dev->buffer[pos++] = MO_SECTORS_GIGAMO2 & 0xff; - dev->buffer[pos++] = 3; /* Maximum medium capacity */ - dev->buffer[pos++] = 0; - dev->buffer[pos++] = (MO_BPS_GIGAMO2 >> 8) & 0xff; - dev->buffer[pos++] = MO_BPS_GIGAMO2 & 0xff; - } - - if (dev->drv->f != NULL) { - /* Formattable capacity descriptor */ - dev->buffer[pos++] = (dev->drv->medium_size >> 24) & 0xff; - dev->buffer[pos++] = (dev->drv->medium_size >> 16) & 0xff; - dev->buffer[pos++] = (dev->drv->medium_size >> 8) & 0xff; - dev->buffer[pos++] = dev->drv->medium_size & 0xff; - dev->buffer[pos++] = 0; - dev->buffer[pos++] = 0; - dev->buffer[pos++] = (dev->drv->sector_size >> 8) & 0xff; - dev->buffer[pos++] = dev->drv->sector_size & 0xff; - } - - set_buf_len(dev, BufLen, &len); - - data_command_finish(dev, len, len, len, 0); - break; - default: illegal_opcode(dev); break;