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 | |
parent | dd38dd539886745d07d31321152d8c9e788985d6 (diff) | |
download | FreeBSD-src-f64155d27c46db3e7a29eb774c7feb0a16f2b2df.zip FreeBSD-src-f64155d27c46db3e7a29eb774c7feb0a16f2b2df.tar.gz |
Update the PIO mode gathering code.
Reported by: bde
-rw-r--r-- | sys/dev/ata/ata-all.c | 16 | ||||
-rw-r--r-- | sys/sys/ata.h | 2 |
2 files changed, 10 insertions, 8 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; } diff --git a/sys/sys/ata.h b/sys/sys/ata.h index e10b8b4..30f8131 100644 --- a/sys/sys/ata.h +++ b/sys/sys/ata.h @@ -72,7 +72,7 @@ struct ata_params { /*050*/ u_int16_t capabilities2; /*051*/ u_int16_t retired_piomode; /* PIO modes 0-2 */ -#define ATA_RETIRED_PIO_MASK 0x0003 +#define ATA_RETIRED_PIO_MASK 0x0300 /*052*/ u_int16_t retired_dmamode; /* DMA modes */ #define ATA_RETIRED_DMA_MASK 0x0003 |