Module Name: src
Committed By: msaitoh
Date: Tue May 28 05:55:40 UTC 2013
Modified Files:
src/sys/dev/pci: if_bge.c if_bgereg.h
Log Message:
Fix a bug that the PHY address bits in MI_MODE register is wrongly cleard.
Set the PHY address correctly.
To generate a diff of this commit:
cvs rdiff -u -r1.248 -r1.249 src/sys/dev/pci/if_bge.c
cvs rdiff -u -r1.78 -r1.79 src/sys/dev/pci/if_bgereg.h
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.248 src/sys/dev/pci/if_bge.c:1.249
--- src/sys/dev/pci/if_bge.c:1.248 Fri May 24 11:47:47 2013
+++ src/sys/dev/pci/if_bge.c Tue May 28 05:55:40 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: if_bge.c,v 1.248 2013/05/24 11:47:47 msaitoh Exp $ */
+/* $NetBSD: if_bge.c,v 1.249 2013/05/28 05:55:40 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.248 2013/05/24 11:47:47 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_bge.c,v 1.249 2013/05/28 05:55:40 msaitoh Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -3267,7 +3267,7 @@ bge_attach(device_t parent, device_t sel
uint32_t hwcfg, hwcfg2, hwcfg3, hwcfg4;
uint32_t command;
struct ifnet *ifp;
- uint32_t misccfg;
+ uint32_t misccfg, mimode;
void * kva;
u_char eaddr[ETHER_ADDR_LEN];
pcireg_t memtype, subid, reg;
@@ -3460,10 +3460,13 @@ bge_attach(device_t parent, device_t sel
BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM57780)
sc->bge_flags |= BGE_CPMU_PRESENT;
+ /* Set MI_MODE */
+ mimode = BGE_MIMODE_PHYADDR(sc->bge_phy_addr);
if ((sc->bge_flags & BGE_CPMU_PRESENT) != 0)
- CSR_WRITE_4(sc, BGE_MI_MODE, BGE_MIMODE_500KHZ_CONST);
+ mimode |= BGE_MIMODE_500KHZ_CONST;
else
- CSR_WRITE_4(sc, BGE_MI_MODE, BGE_MIMODE_BASE);
+ mimode |= BGE_MIMODE_BASE;
+ CSR_WRITE_4(sc, BGE_MI_MODE, mimode);
/*
* When using the BCM5701 in PCI-X mode, data corruption has
Index: src/sys/dev/pci/if_bgereg.h
diff -u src/sys/dev/pci/if_bgereg.h:1.78 src/sys/dev/pci/if_bgereg.h:1.79
--- src/sys/dev/pci/if_bgereg.h:1.78 Tue May 14 00:27:39 2013
+++ src/sys/dev/pci/if_bgereg.h Tue May 28 05:55:40 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: if_bgereg.h,v 1.78 2013/05/14 00:27:39 msaitoh Exp $ */
+/* $NetBSD: if_bgereg.h,v 1.79 2013/05/28 05:55:40 msaitoh Exp $ */
/*
* Copyright (c) 2001 Wind River Systems
* Copyright (c) 1997, 1998, 1999, 2001
@@ -855,10 +855,13 @@
#define BGE_MIMODE_SHORTPREAMBLE 0x00000002
#define BGE_MIMODE_AUTOPOLL 0x00000010
+#define BGE_MIMODE_PHYADDR_SHIFT 5
+#define BGE_MIMODE_PHYADDR_MASK 0x000003E0
#define BGE_MIMODE_CLKCNT 0x001F0000
#define BGE_MIMODE_500KHZ_CONST 0x00008000
#define BGE_MIMODE_BASE 0x000C0000
+#define BGE_MIMODE_PHYADDR(x) ((x) << BGE_MIMODE_PHYADDR_SHIFT)
/*
* Send data initiator control registers.