aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorSøren Schmidt <sos@FreeBSD.org>2001-08-28 08:59:17 +0000
committerSøren Schmidt <sos@FreeBSD.org>2001-08-28 08:59:17 +0000
commitb4fa8260b8597dc9b93e5a59a87d7007e845a787 (patch)
treed350f7e1867a7e0f27898a044a317376000458d0 /sys
parent40e285969e098b2d4d5950000dc7afdf03de2fd6 (diff)
downloadsrc-b4fa8260b8597dc9b93e5a59a87d7007e845a787.tar.gz
src-b4fa8260b8597dc9b93e5a59a87d7007e845a787.zip
Add support for yet another VIA '686 combination.
Notes
Notes: svn path=/head/; revision=82458
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/ata/ata-dma.c3
-rw-r--r--sys/dev/ata/ata-pci.c9
2 files changed, 7 insertions, 5 deletions
diff --git a/sys/dev/ata/ata-dma.c b/sys/dev/ata/ata-dma.c
index 22302911f781..d4dc3a57e2d7 100644
--- a/sys/dev/ata/ata-dma.c
+++ b/sys/dev/ata/ata-dma.c
@@ -408,7 +408,8 @@ ata_dmainit(struct ata_softc *scp, int device,
goto via_82c586;
case 0x05711106: /* VIA 82C571, 82C586, 82C596, 82C686 */
- if (ata_find_dev(parent, 0x06861106, 0x40)) { /* 82C686b */
+ if (ata_find_dev(parent, 0x06861106, 0x40) ||
+ ata_find_dev(parent, 0x30741106, 0)) { /* 82C686b */
if (udmamode >= 5) {
error = ata_command(scp, device, ATA_C_SETFEATURES, 0, 0, 0,
ATA_UDMA5, ATA_C_F_SETXFER, ATA_WAIT_READY);
diff --git a/sys/dev/ata/ata-pci.c b/sys/dev/ata/ata-pci.c
index 3a743bd39cd6..0697b9771265 100644
--- a/sys/dev/ata/ata-pci.c
+++ b/sys/dev/ata/ata-pci.c
@@ -129,7 +129,8 @@ ata_pci_match(device_t dev)
return "VIA 82C596 ATA66 controller";
if (ata_find_dev(dev, 0x05961106, 0))
return "VIA 82C596 ATA33 controller";
- if (ata_find_dev(dev, 0x06861106, 0x40))
+ if (ata_find_dev(dev, 0x06861106, 0x40) ||
+ ata_find_dev(dev, 0x30741106, 0))
return "VIA 82C686 ATA100 controller";
if (ata_find_dev(dev, 0x06861106, 0))
return "VIA 82C686 ATA66 controller";
@@ -335,11 +336,11 @@ ata_pci_attach(device_t dev)
pci_write_config(dev, 0x60, DEV_BSIZE, 2);
pci_write_config(dev, 0x68, DEV_BSIZE, 2);
- /* prepare for ATA-66 on the 82C686 and rev 0x12 and newer 82C596's */
- if (ata_find_dev(dev, 0x06861106, 0) ||
+ /* prepare for ATA-66 on the 82C686a and rev 0x12 and newer 82C596's */
+ if ((ata_find_dev(dev, 0x06861106, 0) &&
+ !ata_find_dev(dev, 0x06861106, 0x40)) ||
ata_find_dev(dev, 0x05961106, 0x12))
pci_write_config(dev, 0x50, 0x030b030b, 4);
-
break;
case 0x10001042: /* RZ 100? known bad, no DMA */