summaryrefslogtreecommitdiffstats
path: root/sys/dev/ata/ata-disk.c
diff options
context:
space:
mode:
authorsos <sos@FreeBSD.org>2004-01-08 19:17:16 +0000
committersos <sos@FreeBSD.org>2004-01-08 19:17:16 +0000
commitc87939ff3b0d7321c03632991a1435fd009a8763 (patch)
treece95d9cc1cd61ebab57818278abb926a05ad0ffc /sys/dev/ata/ata-disk.c
parent4dc1839cca3b1b5992930e9b0f9e04394a878746 (diff)
downloadFreeBSD-src-c87939ff3b0d7321c03632991a1435fd009a8763.zip
FreeBSD-src-c87939ff3b0d7321c03632991a1435fd009a8763.tar.gz
Use the saved params for LBA-CHS conversion. Fixes PC98 bug.
Diffstat (limited to 'sys/dev/ata/ata-disk.c')
-rw-r--r--sys/dev/ata/ata-disk.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/sys/dev/ata/ata-disk.c b/sys/dev/ata/ata-disk.c
index 353ee6b..5c056ff 100644
--- a/sys/dev/ata/ata-disk.c
+++ b/sys/dev/ata/ata-disk.c
@@ -250,11 +250,10 @@ ad_start(struct ata_device *atadev)
/* convert LBA contents if this is an old non-LBA device */
if (atadev->flags & ATA_D_USE_CHS) {
- struct ata_params *param = atadev->param;
- int sector = (bp->bio_pblkno % param->sectors) + 1;
- int cylinder = bp->bio_pblkno / (param->sectors * param->heads);
+ int sector = (bp->bio_pblkno % adp->sectors) + 1;
+ int cylinder = bp->bio_pblkno / (adp->sectors * adp->heads);
int head = (bp->bio_pblkno %
- (param->sectors * param->heads)) / param->sectors;
+ (adp->sectors * adp->heads)) / adp->sectors;
request->u.ata.lba =
(sector & 0xff) | (cylinder & 0xffff) << 8 | (head & 0xf) << 24;
OpenPOWER on IntegriCloud