Module Name:    src
Committed By:   jdc
Date:           Thu Feb 14 22:08:28 UTC 2013

Modified Files:
        src/sys/dev/pci [netbsd-6]: if_wm.c if_wmvar.h

Log Message:
Pull up revisions:
  src/sys/dev/pci/if_wm.c revision 1.243
  src/sys/dev/pci/if_wmvar.h revision 1.14
(requested by msaitoh in ticket #820).

Use 82580(and I350) specific PHY read/write functions.
Fixes PR#47542.


To generate a diff of this commit:
cvs rdiff -u -r1.227.2.5 -r1.227.2.6 src/sys/dev/pci/if_wm.c
cvs rdiff -u -r1.12.10.1 -r1.12.10.2 src/sys/dev/pci/if_wmvar.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_wm.c
diff -u src/sys/dev/pci/if_wm.c:1.227.2.5 src/sys/dev/pci/if_wm.c:1.227.2.6
--- src/sys/dev/pci/if_wm.c:1.227.2.5	Mon Dec 17 00:30:05 2012
+++ src/sys/dev/pci/if_wm.c	Thu Feb 14 22:08:28 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_wm.c,v 1.227.2.5 2012/12/17 00:30:05 riz Exp $	*/
+/*	$NetBSD: if_wm.c,v 1.227.2.6 2013/02/14 22:08:28 jdc Exp $	*/
 
 /*
  * Copyright (c) 2001, 2002, 2003, 2004 Wasabi Systems, Inc.
@@ -76,7 +76,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.227.2.5 2012/12/17 00:30:05 riz Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.227.2.6 2013/02/14 22:08:28 jdc Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -542,6 +542,8 @@ static int	wm_gmii_bm_readreg(device_t, 
 static void	wm_gmii_bm_writereg(device_t, int, int, int);
 static int	wm_gmii_hv_readreg(device_t, int, int);
 static void	wm_gmii_hv_writereg(device_t, int, int, int);
+static int	wm_gmii_82580_readreg(device_t, int, int);
+static void	wm_gmii_82580_writereg(device_t, int, int, int);
 static int	wm_sgmii_readreg(device_t, int, int);
 static void	wm_sgmii_writereg(device_t, int, int, int);
 
@@ -6277,6 +6279,10 @@ wm_gmii_mediainit(struct wm_softc *sc, p
 		} else if (sc->sc_type >= WM_T_80003) {
 			sc->sc_mii.mii_readreg = wm_gmii_i80003_readreg;
 			sc->sc_mii.mii_writereg = wm_gmii_i80003_writereg;
+		} else if (sc->sc_type >= WM_T_82580) {
+			sc->sc_phytype = WMPHY_82580;
+			sc->sc_mii.mii_readreg = wm_gmii_82580_readreg;
+			sc->sc_mii.mii_writereg = wm_gmii_82580_writereg;
 		} else if (sc->sc_type >= WM_T_82544) {
 			sc->sc_mii.mii_readreg = wm_gmii_i82544_readreg;
 			sc->sc_mii.mii_writereg = wm_gmii_i82544_writereg;
@@ -6980,6 +6986,58 @@ wm_sgmii_writereg(device_t self, int phy
 }
 
 /*
+ * wm_gmii_82580_readreg:	[mii interface function]
+ *
+ *	Read a PHY register on the 82580 and I350.
+ * This could be handled by the PHY layer if we didn't have to lock the
+ * ressource ...
+ */
+static int
+wm_gmii_82580_readreg(device_t self, int phy, int reg)
+{
+	struct wm_softc *sc = device_private(self);
+	int sem;
+	int rv;
+
+	sem = swfwphysem[sc->sc_funcid];
+	if (wm_get_swfw_semaphore(sc, sem)) {
+		aprint_error_dev(sc->sc_dev, "%s: failed to get semaphore\n",
+		    __func__);
+		return 0;
+	}
+
+	rv = wm_gmii_i82544_readreg(self, phy, reg);
+
+	wm_put_swfw_semaphore(sc, sem);
+	return rv;
+}
+
+/*
+ * wm_gmii_82580_writereg:	[mii interface function]
+ *
+ *	Write a PHY register on the 82580 and I350.
+ * This could be handled by the PHY layer if we didn't have to lock the
+ * ressource ...
+ */
+static void
+wm_gmii_82580_writereg(device_t self, int phy, int reg, int val)
+{
+	struct wm_softc *sc = device_private(self);
+	int sem;
+
+	sem = swfwphysem[sc->sc_funcid];
+	if (wm_get_swfw_semaphore(sc, sem)) {
+		aprint_error_dev(sc->sc_dev, "%s: failed to get semaphore\n",
+		    __func__);
+		return;
+	}
+
+	wm_gmii_i82544_writereg(self, phy, reg, val);
+
+	wm_put_swfw_semaphore(sc, sem);
+}
+
+/*
  * wm_gmii_statchg:	[mii interface function]
  *
  *	Callback from MII layer when media changes.

Index: src/sys/dev/pci/if_wmvar.h
diff -u src/sys/dev/pci/if_wmvar.h:1.12.10.1 src/sys/dev/pci/if_wmvar.h:1.12.10.2
--- src/sys/dev/pci/if_wmvar.h:1.12.10.1	Thu Jun 28 16:06:36 2012
+++ src/sys/dev/pci/if_wmvar.h	Thu Feb 14 22:08:28 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_wmvar.h,v 1.12.10.1 2012/06/28 16:06:36 riz Exp $	*/
+/*	$NetBSD: if_wmvar.h,v 1.12.10.2 2013/02/14 22:08:28 jdc Exp $	*/
 
 /*
  * Copyright (c) 2001, 2002, 2003, 2004 Wasabi Systems, Inc.
@@ -140,7 +140,8 @@ typedef enum {
 	WMPHY_BM,
 	WMPHY_82577,
 	WMPHY_82578,
-	WMPHY_82579
+	WMPHY_82579,
+	WMPHY_82580
 } wm_phy_type;
 
 

Reply via email to