Module Name: src
Committed By: msaitoh
Date: Sun Mar 22 18:54:59 UTC 2009
Modified Files:
src/sys/dev/pci: if_bge.c
Log Message:
Take some code from FreeBSD and OpenBSD
-Add some known CHIPID entries.
-Add a code for BCM5906 into bge_chipinit(). We have to more work for BCM5906.
-Fix the case of setting a flag in BGE_PCI_DMA_RW_CTL (on conventional PCI).
To generate a diff of this commit:
cvs rdiff -u -r1.158 -r1.159 src/sys/dev/pci/if_bge.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/dev/pci/if_bge.c
diff -u src/sys/dev/pci/if_bge.c:1.158 src/sys/dev/pci/if_bge.c:1.159
--- src/sys/dev/pci/if_bge.c:1.158 Sun Mar 22 18:14:59 2009
+++ src/sys/dev/pci/if_bge.c Sun Mar 22 18:54:59 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: if_bge.c,v 1.158 2009/03/22 18:14:59 msaitoh Exp $ */
+/* $NetBSD: if_bge.c,v 1.159 2009/03/22 18:54:59 msaitoh Exp $ */
/*
* Copyright (c) 2001 Wind River Systems
@@ -79,7 +79,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_bge.c,v 1.158 2009/03/22 18:14:59 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_bge.c,v 1.159 2009/03/22 18:54:59 msaitoh Exp $");
#include "bpfilter.h"
#include "vlan.h"
@@ -522,6 +522,7 @@
{ BGE_CHIPID_BCM5704_A1, "BCM5704 A1" },
{ BGE_CHIPID_BCM5704_A2, "BCM5704 A2" },
{ BGE_CHIPID_BCM5704_A3, "BCM5704 A3" },
+ { BGE_CHIPID_BCM5704_B0, "BCM5704 B0" },
{ BGE_CHIPID_BCM5705_A0, "BCM5705 A0" },
{ BGE_CHIPID_BCM5705_A1, "BCM5705 A1" },
{ BGE_CHIPID_BCM5705_A2, "BCM5705 A2" },
@@ -532,6 +533,12 @@
{ BGE_CHIPID_BCM5752_A0, "BCM5752 A0" },
{ BGE_CHIPID_BCM5752_A1, "BCM5752 A1" },
{ BGE_CHIPID_BCM5752_A2, "BCM5752 A2" },
+ { BGE_CHIPID_BCM5714_A0, "BCM5714 A0" },
+ { BGE_CHIPID_BCM5714_B0, "BCM5714 B0" },
+ { BGE_CHIPID_BCM5714_B3, "BCM5714 B3" },
+ { BGE_CHIPID_BCM5715_A0, "BCM5715 A0" },
+ { BGE_CHIPID_BCM5715_A1, "BCM5715 A1" },
+ { BGE_CHIPID_BCM5715_A3, "BCM5715 A3" },
{ BGE_CHIPID_BCM5755_A0, "BCM5755 A0" },
{ BGE_CHIPID_BCM5755_A1, "BCM5755 A1" },
{ BGE_CHIPID_BCM5755_A2, "BCM5755 A2" },
@@ -1610,7 +1617,8 @@
dma_rw_ctl = (BGE_PCI_READ_CMD | BGE_PCI_WRITE_CMD |
(0x7 << BGE_PCIDMARWCTL_RD_WAT_SHIFT) |
(0x7 << BGE_PCIDMARWCTL_WR_WAT_SHIFT));
- if (!(BGE_IS_5705_OR_BEYOND(sc)))
+ if (BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5703 ||
+ BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5704)
dma_rw_ctl |= 0x0F;
}
@@ -1694,6 +1702,15 @@
/* Set the timer prescaler (always 66MHz) */
CSR_WRITE_4(sc, BGE_MISC_CFG, 65 << 1/*BGE_32BITTIME_66MHZ*/);
+ if (BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5906) {
+ DELAY(40); /* XXX */
+
+ /* Put PHY into ready state */
+ BGE_CLRBIT(sc, BGE_MISC_CFG, BGE_MISCCFG_EPHY_IDDQ);
+ CSR_READ_4(sc, BGE_MISC_CFG); /* Flush */
+ DELAY(40);
+ }
+
return (0);
}