Return ATA register values in the request struct when ATAREQUEST returns.

This commit is contained in:
Søren Schmidt 2004-11-24 10:47:26 +00:00
parent f89336da41
commit 39c7a710c6
2 changed files with 10 additions and 5 deletions

View File

@ -546,10 +546,10 @@ ata_ioctl(struct cdev *dev, u_long cmd, caddr_t addr,
bcopy(iocmd->u.request.u.atapi.ccb, request->u.atapi.ccb, 16);
}
else {
request->u.ata.command = iocmd->u.request.u.ata.command;
request->u.ata.feature = iocmd->u.request.u.ata.feature;
request->u.ata.lba = iocmd->u.request.u.ata.lba;
request->u.ata.count = iocmd->u.request.u.ata.count;
request->u.ata.command = iocmd->u.request.u.ata.command;
request->u.ata.feature = iocmd->u.request.u.ata.feature;
request->u.ata.lba = iocmd->u.request.u.ata.lba;
request->u.ata.count = iocmd->u.request.u.ata.count;
}
request->timeout = iocmd->u.request.timeout;
@ -566,6 +566,10 @@ ata_ioctl(struct cdev *dev, u_long cmd, caddr_t addr,
ata_queue_request(request);
iocmd->u.request.u.ata.command = request->u.ata.command;
iocmd->u.request.u.ata.feature = request->u.ata.feature;
iocmd->u.request.u.ata.lba = request->u.ata.lba;
iocmd->u.request.u.ata.count = request->u.ata.count;
if (request->result)
iocmd->u.request.error = request->result;
else {

View File

@ -303,7 +303,8 @@ ata_end_transaction(struct ata_request *request)
request->u.ata.count = ATA_IDX_INB(ch, ATA_COUNT);
request->u.ata.lba = ATA_IDX_INB(ch, ATA_SECTOR) |
(ATA_IDX_INB(ch, ATA_CYL_LSB) << 8) |
(ATA_IDX_INB(ch, ATA_CYL_MSB) << 16);
(ATA_IDX_INB(ch, ATA_CYL_MSB) << 16) |
((ATA_IDX_INB(ch, ATA_DRIVE) & 0x0f) << 24);
}
/* if we got an error we are done with the HW */