svn commit: r204975 - head/sys/dev/bge
Pyun YongHyeon
yongari at FreeBSD.org
Wed Mar 10 20:22:58 UTC 2010
Author: yongari
Date: Wed Mar 10 20:22:57 2010
New Revision: 204975
URL: http://svn.freebsd.org/changeset/base/204975
Log:
Enable hardware fixes for BCM5704 B0 as recommended by data sheet.
Modified:
head/sys/dev/bge/if_bge.c
Modified: head/sys/dev/bge/if_bge.c
==============================================================================
--- head/sys/dev/bge/if_bge.c Wed Mar 10 19:55:48 2010 (r204974)
+++ head/sys/dev/bge/if_bge.c Wed Mar 10 20:22:57 2010 (r204975)
@@ -1342,6 +1342,7 @@ static int
bge_chipinit(struct bge_softc *sc)
{
uint32_t dma_rw_ctl;
+ uint16_t val;
int i;
/* Set endianness before we access any non-PCI registers. */
@@ -1362,6 +1363,17 @@ bge_chipinit(struct bge_softc *sc)
i < BGE_STATUS_BLOCK_END + 1; i += sizeof(uint32_t))
BGE_MEMWIN_WRITE(sc, i, 0);
+ if (sc->bge_chiprev == BGE_CHIPREV_5704_BX) {
+ /*
+ * Fix data corruption casued by non-qword write with WB.
+ * Fix master abort in PCI mode.
+ * Fix PCI latency timer.
+ */
+ val = pci_read_config(sc->bge_dev, BGE_PCI_MSI_DATA + 2, 2);
+ val |= (1 << 10) | (1 << 12) | (1 << 13);
+ pci_write_config(sc->bge_dev, BGE_PCI_MSI_DATA + 2, val, 2);
+ }
+
/*
* Set up the PCI DMA control register.
*/
More information about the svn-src-head
mailing list