CD-ROM, ATAPI HDD, MO, and ZIP: correct bus speed arithmetic, makes especially MO and ZIP much faster.
This commit is contained in:
@@ -567,19 +567,16 @@ zip_bus_speed(zip_t *dev)
|
||||
{
|
||||
double ret = -1.0;
|
||||
|
||||
if (dev && dev->drv && (dev->drv->bus_type == ZIP_BUS_SCSI)) {
|
||||
dev->callback = -1.0; /* Speed depends on SCSI controller */
|
||||
return 0.0;
|
||||
} else {
|
||||
if (dev && dev->drv)
|
||||
ret = ide_atapi_get_period(dev->drv->ide_channel);
|
||||
if (ret == -1.0) {
|
||||
if (dev)
|
||||
dev->callback = -1.0;
|
||||
return 0.0;
|
||||
} else
|
||||
return ret * 1000000.0;
|
||||
if (dev && dev->drv)
|
||||
ret = ide_atapi_get_period(dev->drv->ide_channel);
|
||||
|
||||
if (ret == -1.0) {
|
||||
if (dev)
|
||||
dev->callback = -1.0;
|
||||
ret = 0.0;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -590,18 +587,10 @@ zip_command_common(zip_t *dev)
|
||||
dev->tf->pos = 0;
|
||||
if (dev->packet_status == PHASE_COMPLETE)
|
||||
dev->callback = 0.0;
|
||||
else {
|
||||
double bytes_per_second;
|
||||
|
||||
if (dev->drv->bus_type == ZIP_BUS_SCSI) {
|
||||
dev->callback = -1.0; /* Speed depends on SCSI controller */
|
||||
return;
|
||||
} else
|
||||
bytes_per_second = zip_bus_speed(dev);
|
||||
|
||||
double period = 1000000.0 / bytes_per_second;
|
||||
dev->callback = period * (double) (dev->packet_len);
|
||||
}
|
||||
else if (dev->drv->bus_type == ZIP_BUS_SCSI)
|
||||
dev->callback = -1.0; /* Speed depends on SCSI controller */
|
||||
else
|
||||
dev->callback = zip_bus_speed(dev) * (double) (dev->packet_len);
|
||||
|
||||
zip_set_callback(dev);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user