diff options
author | sos <sos@FreeBSD.org> | 2003-01-19 13:03:20 +0000 |
---|---|---|
committer | sos <sos@FreeBSD.org> | 2003-01-19 13:03:20 +0000 |
commit | 80b484084f1ab3514accc48ab19213b67631aba0 (patch) | |
tree | 756a4051cdfde6711ab67129058eb16e29b98125 /sys/dev/ata | |
parent | 3152c15fb9a94ff22ad3d2fb141ea990a97f47d8 (diff) | |
download | FreeBSD-src-80b484084f1ab3514accc48ab19213b67631aba0.zip FreeBSD-src-80b484084f1ab3514accc48ab19213b67631aba0.tar.gz |
Add support for the ServerWorks CSB6.
The support for the 3'rd channel is only experimental.
Diffstat (limited to 'sys/dev/ata')
-rw-r--r-- | sys/dev/ata/ata-dma.c | 7 | ||||
-rw-r--r-- | sys/dev/ata/ata-pci.c | 6 |
2 files changed, 12 insertions, 1 deletions
diff --git a/sys/dev/ata/ata-dma.c b/sys/dev/ata/ata-dma.c index 2e149e5..d5a3fc5 100644 --- a/sys/dev/ata/ata-dma.c +++ b/sys/dev/ata/ata-dma.c @@ -963,8 +963,10 @@ ata_dmainit(struct ata_device *atadev, int apiomode, int wdmamode, int udmamode) atadev->mode = ATA_PIO0 + apiomode; return; + case 0x02131166: /* ServerWorks CSB6 ATA 100 controller (chan 0+1) */ case 0x02121166: /* ServerWorks CSB5 ATA66/100 controller */ - if (udmamode >= 5 && chiprev >= 0x92) { + if (udmamode >= 5 && (chiptype == 0x02131166 || + (chiptype == 0x02121166 && chiprev >= 0x92))) { error = ata_command(atadev, ATA_C_SETFEATURES, 0, ATA_UDMA5, ATA_C_F_SETXFER, ATA_WAIT_READY); if (bootverbose) @@ -984,6 +986,9 @@ ata_dmainit(struct ata_device *atadev, int apiomode, int wdmamode, int udmamode) return; } } + /* FALLTHROUGH */ + + case 0x02171166: /* ServerWorks CSB6 ATA 66 controller (chan 2) */ if (udmamode >= 4) { error = ata_command(atadev, ATA_C_SETFEATURES, 0, ATA_UDMA4, ATA_C_F_SETXFER, ATA_WAIT_READY); diff --git a/sys/dev/ata/ata-pci.c b/sys/dev/ata/ata-pci.c index f855c48..d77d65a 100644 --- a/sys/dev/ata/ata-pci.c +++ b/sys/dev/ata/ata-pci.c @@ -248,6 +248,12 @@ ata_pci_match(device_t dev) else return "ServerWorks CSB5 ATA66 controller"; + case 0x02131166: + return "ServerWorks CSB6 ATA100 controller (channel 0+1)"; + + case 0x02171166: + return "ServerWorks CSB6 ATA66 controller (channel 2)"; + case 0x4d33105a: return "Promise ATA33 controller"; |