summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorsos <sos@FreeBSD.org>2003-09-08 08:30:43 +0000
committersos <sos@FreeBSD.org>2003-09-08 08:30:43 +0000
commitf64155d27c46db3e7a29eb774c7feb0a16f2b2df (patch)
treebe717e29cc231b8d06bd06e973b84305bcc30046 /sys
parentdd38dd539886745d07d31321152d8c9e788985d6 (diff)
downloadFreeBSD-src-f64155d27c46db3e7a29eb774c7feb0a16f2b2df.zip
FreeBSD-src-f64155d27c46db3e7a29eb774c7feb0a16f2b2df.tar.gz
Update the PIO mode gathering code.
Reported by: bde
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/ata/ata-all.c16
-rw-r--r--sys/sys/ata.h2
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
OpenPOWER on IntegriCloud