From 1adffc6d99d321ee1145c4f424fd46a6bfbe47db Mon Sep 17 00:00:00 2001 From: fair Date: Sat, 25 Jun 2005 05:04:01 +0000 Subject: [PATCH] According to FreeBSD and other references, the cs5530 IDE controller, while capable of UDMA mode 2, is swamped if you actually go that fast, which is not good for the other functions on this multifunction southbridge chip, so limit UDMA to mode 1. --- sys/dev/pci/geodeide.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/sys/dev/pci/geodeide.c b/sys/dev/pci/geodeide.c index a79b48e9240c..9529a7899d04 100644 --- a/sys/dev/pci/geodeide.c +++ b/sys/dev/pci/geodeide.c @@ -1,4 +1,4 @@ -/* $NetBSD: geodeide.c,v 1.8 2005/02/27 00:27:32 perry Exp $ */ +/* $NetBSD: geodeide.c,v 1.9 2005/06/25 05:04:01 fair Exp $ */ /* * Copyright (c) 2004 Manuel Bouyer. @@ -37,7 +37,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: geodeide.c,v 1.8 2005/02/27 00:27:32 perry Exp $"); +__KERNEL_RCSID(0, "$NetBSD: geodeide.c,v 1.9 2005/06/25 05:04:01 fair Exp $"); #include #include @@ -124,6 +124,14 @@ geodeide_chip_map(struct pciide_softc *sc, struct pci_attach_args *pa) sc->sc_wdcdev.sc_atac.atac_pio_cap = 4; sc->sc_wdcdev.sc_atac.atac_dma_cap = 2; sc->sc_wdcdev.sc_atac.atac_udma_cap = 2; + /* + * The 5530 is utterly swamped by UDMA mode 2, so limit to mode 1 + * so that the chip is able to perform the other functions it has + * while IDE UDMA is going on. + */ + if (sc->sc_pp->ide_product == PCI_PRODUCT_CYRIX_CX5530_IDE) { + sc->sc_wdcdev.sc_atac.atac_udma_cap = 1; + } sc->sc_wdcdev.sc_atac.atac_set_modes = geodeide_setup_channel; sc->sc_wdcdev.sc_atac.atac_channels = sc->wdc_chanarray; sc->sc_wdcdev.sc_atac.atac_nchannels = PCIIDE_NUM_CHANNELS;