diff options
| author | Søren Schmidt <sos@FreeBSD.org> | 2004-01-14 14:24:36 +0000 |
|---|---|---|
| committer | Søren Schmidt <sos@FreeBSD.org> | 2004-01-14 14:24:36 +0000 |
| commit | ee242ddc36770d40977fecbb9ded4865d6922fe8 (patch) | |
| tree | 83064151268d1ebceadf159cd8431c810e949b86 | |
| parent | a16f34fd2176db3197b588864af86e1cd23baa1e (diff) | |
Notes
| -rw-r--r-- | sys/dev/ata/ata-chipset.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/sys/dev/ata/ata-chipset.c b/sys/dev/ata/ata-chipset.c index 2aae069d6116..5e420850d75e 100644 --- a/sys/dev/ata/ata-chipset.c +++ b/sys/dev/ata/ata-chipset.c @@ -1816,14 +1816,16 @@ ata_sii_setmode(struct ata_device *atadev, int mode) mode = ata_limit_mode(atadev, mode, ctlr->chip->max_dma); - if (ctlr->chip->max_dma < ATA_UDMA2) { - mode = ata_check_80pin(atadev, mode); - } - else if (mode > ATA_UDMA2 && (pci_read_config(parent, 0x79, 1) & - (atadev->channel->unit ? 0x02 : 0x01))) { - ata_prtdev(atadev,"DMA limited to UDMA33, non-ATA66 cable or device\n"); - mode = ATA_UDMA2; + if (ctlr->chip->cfg2 & SIISETCLK) { + if (mode > ATA_UDMA2 && (pci_read_config(parent, 0x79, 1) & + (atadev->channel->unit ? 0x02 : 0x01))) { + ata_prtdev(atadev, + "DMA limited to UDMA33, non-ATA66 cable or device\n"); + mode = ATA_UDMA2; + } } + else + mode = ata_check_80pin(atadev, mode); error = ata_controlcmd(atadev, ATA_SETFEATURES, ATA_SF_SETXFER, 0, mode); |
