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.
This commit is contained in:
parent
f3574e6c00
commit
1adffc6d99
|
@ -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 <sys/cdefs.h>
|
||||
__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 <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue