diff options
author | sos <sos@FreeBSD.org> | 2003-01-19 20:18:07 +0000 |
---|---|---|
committer | sos <sos@FreeBSD.org> | 2003-01-19 20:18:07 +0000 |
commit | 9a5444fa22590bd7085bf29842d9be2f417a1a0b (patch) | |
tree | 92dacc41eaa62ba09d157864f94fc9376d015999 /sys/dev/ata | |
parent | 31d113863ae808125788db5b230b39a0627961df (diff) | |
download | FreeBSD-src-9a5444fa22590bd7085bf29842d9be2f417a1a0b.zip FreeBSD-src-9a5444fa22590bd7085bf29842d9be2f417a1a0b.tar.gz |
Small change to the previous commit, zero out the 48BIT flag in ata_command
instead of in dmadone.
Diffstat (limited to 'sys/dev/ata')
-rw-r--r-- | sys/dev/ata/ata-all.c | 1 | ||||
-rw-r--r-- | sys/dev/ata/ata-dma.c | 19 |
2 files changed, 10 insertions, 10 deletions
diff --git a/sys/dev/ata/ata-all.c b/sys/dev/ata/ata-all.c index 91b8bb9..83515ab 100644 --- a/sys/dev/ata/ata-all.c +++ b/sys/dev/ata/ata-all.c @@ -1119,6 +1119,7 @@ ata_command(struct ata_device *atadev, u_int8_t command, else ATA_OUTB(atadev->channel->r_io, ATA_DRIVE, ATA_D_IBM | ATA_D_LBA | atadev->unit | ((lba>>24) &0xf)); + atadev->channel->flags &= ~ATA_48BIT_ACTIVE; } switch (flags & ATA_WAIT_MASK) { diff --git a/sys/dev/ata/ata-dma.c b/sys/dev/ata/ata-dma.c index d5a3fc5..c6ab3a5 100644 --- a/sys/dev/ata/ata-dma.c +++ b/sys/dev/ata/ata-dma.c @@ -1534,11 +1534,11 @@ ata_dmastart(struct ata_device *atadev, caddr_t data, int32_t count, int dir) case 0x0d30105a: /* Promise OEM ATA 100 */ case 0x4d30105a: /* Promise Ultra/Fasttrak 100 */ if (ch->flags & ATA_48BIT_ACTIVE) { - ATA_OUTB(ch->r_bmio, (ch->unit ? 0x09 : 0x11), - ATA_INB(ch->r_bmio, (ch->unit ? 0x09 : 0x11)) | - (ch->unit ? 0x08 : 0x02)); - ATA_OUTL(ch->r_bmio, (ch->unit ? 0x1c : 0x20), - (dir ? 0x05000000 : 0x06000000) | (count >> 1)); + ATA_OUTB(ch->r_bmio, (ch->unit ? 0x09 : 0x11), + ATA_INB(ch->r_bmio, (ch->unit ? 0x09 : 0x11)) | + (ch->unit ? 0x08 : 0x02)); + ATA_OUTL(ch->r_bmio, (ch->unit ? 0x1c : 0x20), + (dir ? 0x05000000 : 0x06000000) | (count >> 1)); } } @@ -1578,11 +1578,10 @@ ata_dmadone(struct ata_device *atadev) case 0x0d30105a: /* Promise OEM ATA 100 */ case 0x4d30105a: /* Promise Ultra/Fasttrak 100 */ if (ch->flags & ATA_48BIT_ACTIVE) { - ATA_OUTB(ch->r_bmio, (ch->unit ? 0x09 : 0x11), - ATA_INB(ch->r_bmio, (ch->unit ? 0x09 : 0x11)) & - ~(ch->unit ? 0x08 : 0x02)); - ATA_OUTL(ch->r_bmio, (ch->unit ? 0x1c : 0x20), 0); - ch->flags &= ~ATA_48BIT_ACTIVE; + ATA_OUTB(ch->r_bmio, (ch->unit ? 0x09 : 0x11), + ATA_INB(ch->r_bmio, (ch->unit ? 0x09 : 0x11)) & + ~(ch->unit ? 0x08 : 0x02)); + ATA_OUTL(ch->r_bmio, (ch->unit ? 0x1c : 0x20), 0); } } |