From 80b484084f1ab3514accc48ab19213b67631aba0 Mon Sep 17 00:00:00 2001 From: sos Date: Sun, 19 Jan 2003 13:03:20 +0000 Subject: Add support for the ServerWorks CSB6. The support for the 3'rd channel is only experimental. --- sys/dev/ata/ata-dma.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'sys/dev/ata/ata-dma.c') 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); -- cgit v1.1