summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@gmx.de>2012-12-28 03:39:39 +0100
committercinap_lenrek <cinap_lenrek@gmx.de>2012-12-28 03:39:39 +0100
commitf9b9cab6a17e446b243da154050a9d4b6b4dad15 (patch)
treeb1debeaf6d695daea411565fd4154079796004a9
parent8f3595e05852e17af29c36445cb4939cf9ccb0cd (diff)
downloadplan9front-f9b9cab6a17e446b243da154050a9d4b6b4dad15.tar.xz
sdide: confusion
-rw-r--r--sys/src/9/pc/sdide.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/sys/src/9/pc/sdide.c b/sys/src/9/pc/sdide.c
index 3d94cd77f..583bde63c 100644
--- a/sys/src/9/pc/sdide.c
+++ b/sys/src/9/pc/sdide.c
@@ -1066,7 +1066,7 @@ static int
atapktio0(Drive *drive, SDreq *r)
{
uchar *cmd;
- int as, cmdport, ctlport, rv;
+ int as, len, cmdport, ctlport, rv;
Ctlr *ctlr;
rv = SDok;
@@ -1074,8 +1074,6 @@ atapktio0(Drive *drive, SDreq *r)
drive->command = Cpkt;
memmove(drive->pktcmd, cmd, r->clen);
memset(drive->pktcmd+r->clen, 0, drive->pkt-r->clen);
- if(drive->dlen > 0x8000)
- drive->dlen = 0x8000;
drive->limit = drive->data+drive->dlen;
ctlr = drive->ctlr;
@@ -1092,11 +1090,12 @@ atapktio0(Drive *drive, SDreq *r)
drive->pktdma = Dma;
else
drive->pktdma = 0;
+ len = drive->secsize > 0 ? 16*drive->secsize : 0x8000;
outb(cmdport+Features, drive->pktdma);
outb(cmdport+Count, 0);
outb(cmdport+Sector, 0);
- outb(cmdport+Bytelo, drive->dlen);
- outb(cmdport+Bytehi, drive->dlen>>8);
+ outb(cmdport+Bytelo, len);
+ outb(cmdport+Bytehi, len>>8);
outb(cmdport+Dh, drive->dev);
ctlr->done = 0;
ctlr->curdrive = drive;