Implement INQUIRY for magneto-optical disks.
This commit is contained in:
@@ -1482,7 +1482,7 @@ do_command(void *p, uint8_t *cdb)
|
|||||||
preamble_len = 4;
|
preamble_len = 4;
|
||||||
size_idx = 3;
|
size_idx = 3;
|
||||||
|
|
||||||
dev->buffer[idx++] = 05;
|
dev->buffer[idx++] = 7; // Optical disk
|
||||||
dev->buffer[idx++] = cdb[2];
|
dev->buffer[idx++] = cdb[2];
|
||||||
dev->buffer[idx++] = 0;
|
dev->buffer[idx++] = 0;
|
||||||
|
|
||||||
@@ -1491,35 +1491,14 @@ do_command(void *p, uint8_t *cdb)
|
|||||||
switch (cdb[2]) {
|
switch (cdb[2]) {
|
||||||
case 0x00:
|
case 0x00:
|
||||||
dev->buffer[idx++] = 0x00;
|
dev->buffer[idx++] = 0x00;
|
||||||
dev->buffer[idx++] = 0x83;
|
dev->buffer[idx++] = 0x80;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x83:
|
// Unit serial number page
|
||||||
if (idx + 24 > max_len) {
|
case 0x80:
|
||||||
data_phase_error(dev);
|
dev->buffer[idx++] = strlen("VCM!10") + 1;
|
||||||
buf_free(dev);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
dev->buffer[idx++] = 0x02;
|
|
||||||
dev->buffer[idx++] = 0x00;
|
|
||||||
dev->buffer[idx++] = 0x00;
|
|
||||||
dev->buffer[idx++] = 20;
|
|
||||||
ide_padstr8(dev->buffer + idx, 20, "VCM!10"); /* Serial */
|
ide_padstr8(dev->buffer + idx, 20, "VCM!10"); /* Serial */
|
||||||
idx += 20;
|
idx += strlen("VCM!10");
|
||||||
|
|
||||||
if (idx + 72 > cdb[4])
|
|
||||||
goto atapi_out;
|
|
||||||
dev->buffer[idx++] = 0x02;
|
|
||||||
dev->buffer[idx++] = 0x01;
|
|
||||||
dev->buffer[idx++] = 0x00;
|
|
||||||
dev->buffer[idx++] = 68;
|
|
||||||
ide_padstr8(dev->buffer + idx, 8, "VARCEM "); /* Vendor */
|
|
||||||
idx += 8;
|
|
||||||
ide_padstr8(dev->buffer + idx, 40, "MAGNETO OPTICAL "); /* Product */
|
|
||||||
idx += 40;
|
|
||||||
ide_padstr8(dev->buffer + idx, 20, "VCM!10"); /* Serial */
|
|
||||||
idx += 20;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -1536,7 +1515,7 @@ do_command(void *p, uint8_t *cdb)
|
|||||||
if (cdb[1] & 0xe0)
|
if (cdb[1] & 0xe0)
|
||||||
dev->buffer[0] = 0x60; /*No physical device on this LUN*/
|
dev->buffer[0] = 0x60; /*No physical device on this LUN*/
|
||||||
else
|
else
|
||||||
dev->buffer[0] = 0x00; /*Hard disk*/
|
dev->buffer[0] = 0x07; /*Optical disk*/
|
||||||
dev->buffer[1] = 0x80; /*Removable*/
|
dev->buffer[1] = 0x80; /*Removable*/
|
||||||
dev->buffer[2] = (dev->drv->bus_type == MO_BUS_SCSI) ? 0x02 : 0x00; /*SCSI-2 compliant*/
|
dev->buffer[2] = (dev->drv->bus_type == MO_BUS_SCSI) ? 0x02 : 0x00; /*SCSI-2 compliant*/
|
||||||
dev->buffer[3] = (dev->drv->bus_type == MO_BUS_SCSI) ? 0x02 : 0x21;
|
dev->buffer[3] = (dev->drv->bus_type == MO_BUS_SCSI) ? 0x02 : 0x21;
|
||||||
|
|||||||
Reference in New Issue
Block a user