diff options
author | sos <sos@FreeBSD.org> | 2003-09-08 08:30:43 +0000 |
---|---|---|
committer | sos <sos@FreeBSD.org> | 2003-09-08 08:30:43 +0000 |
commit | f64155d27c46db3e7a29eb774c7feb0a16f2b2df (patch) | |
tree | be717e29cc231b8d06bd06e973b84305bcc30046 /sys/dev/ata/ata-all.c | |
parent | dd38dd539886745d07d31321152d8c9e788985d6 (diff) | |
download | FreeBSD-src-f64155d27c46db3e7a29eb774c7feb0a16f2b2df.zip FreeBSD-src-f64155d27c46db3e7a29eb774c7feb0a16f2b2df.tar.gz |
Update the PIO mode gathering code.
Reported by: bde
Diffstat (limited to 'sys/dev/ata/ata-all.c')
-rw-r--r-- | sys/dev/ata/ata-all.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/sys/dev/ata/ata-all.c b/sys/dev/ata/ata-all.c index 810e02e..010c2c2 100644 --- a/sys/dev/ata/ata-all.c +++ b/sys/dev/ata/ata-all.c @@ -832,14 +832,18 @@ ata_pmode(struct ata_params *ap) if (ap->apiomodes & 0x01) return ATA_PIO3; } - if ((ap->retired_piomode & ATA_RETIRED_PIO_MASK) == 2) + if (ap->mwdmamodes & 0x04) + return ATA_PIO4; + if (ap->mwdmamodes & 0x02) + return ATA_PIO3; + if (ap->mwdmamodes & 0x01) return ATA_PIO2; - if ((ap->retired_piomode & ATA_RETIRED_PIO_MASK) == 1) + if ((ap->retired_piomode & ATA_RETIRED_PIO_MASK) == 0x200) + return ATA_PIO2; + if ((ap->retired_piomode & ATA_RETIRED_PIO_MASK) == 0x100) return ATA_PIO1; - if ((ap->retired_piomode & ATA_RETIRED_PIO_MASK) == 0) + if ((ap->retired_piomode & ATA_RETIRED_PIO_MASK) == 0x000) return ATA_PIO0; - if (ap->capabilities1 & ATA_SUPPORT_DMA) - return ATA_PIO4; return ATA_PIO0; } @@ -852,8 +856,6 @@ ata_wmode(struct ata_params *ap) return ATA_WDMA1; if (ap->mwdmamodes & 0x01) return ATA_WDMA0; - if (ap->capabilities1 & ATA_SUPPORT_DMA) - return ATA_WDMA2; return -1; } |