Module Name:    src
Committed By:   msaitoh
Date:           Sat Jun  6 03:37:02 UTC 2015

Modified Files:
        src/sys/dev/pci: if_wm.c if_wmreg.h if_wmvar.h

Log Message:
 Revert previos. Sorry, I committed in another working directory...


To generate a diff of this commit:
cvs rdiff -u -r1.326 -r1.327 src/sys/dev/pci/if_wm.c
cvs rdiff -u -r1.74 -r1.75 src/sys/dev/pci/if_wmreg.h
cvs rdiff -u -r1.26 -r1.27 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.326 src/sys/dev/pci/if_wm.c:1.327
--- src/sys/dev/pci/if_wm.c:1.326	Sat Jun  6 03:33:37 2015
+++ src/sys/dev/pci/if_wm.c	Sat Jun  6 03:37:01 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_wm.c,v 1.326 2015/06/06 03:33:37 msaitoh Exp $	*/
+/*	$NetBSD: if_wm.c,v 1.327 2015/06/06 03:37:01 msaitoh Exp $	*/
 
 /*
  * Copyright (c) 2001, 2002, 2003, 2004 Wasabi Systems, Inc.
@@ -81,7 +81,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.326 2015/06/06 03:33:37 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.327 2015/06/06 03:37:01 msaitoh Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_net_mpsafe.h"
@@ -135,8 +135,6 @@ __KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.
 #include <dev/pci/if_wmreg.h>
 #include <dev/pci/if_wmvar.h>
 
-// #define WM_DEBUG 1
-
 #ifdef WM_DEBUG
 #define	WM_DEBUG_LINK		0x01
 #define	WM_DEBUG_TX		0x02
@@ -144,12 +142,8 @@ __KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.
 #define	WM_DEBUG_GMII		0x08
 #define	WM_DEBUG_MANAGE		0x10
 #define	WM_DEBUG_NVM		0x20
-#if 0
 int	wm_debug = WM_DEBUG_TX | WM_DEBUG_RX | WM_DEBUG_LINK | WM_DEBUG_GMII
     | WM_DEBUG_MANAGE | WM_DEBUG_NVM;
-#else
-int	wm_debug = WM_DEBUG_LINK;
-#endif
 
 #define	DPRINTF(x, y)	if (wm_debug & (x)) printf y
 #else
@@ -305,10 +299,8 @@ struct wm_softc {
 	callout_t sc_tick_ch;		/* tick callout */
 	bool sc_stopping;
 
-	int sc_nvm_ver_major;
-	int sc_nvm_ver_minor;
 	int sc_nvm_addrbits;		/* NVM address bits */
-	unsigned int sc_nvm_wordsize;	/* NVM word size */
+	unsigned int sc_nvm_wordsize;		/* NVM word size */
 	int sc_ich8_flash_base;
 	int sc_ich8_flash_bank_size;
 	int sc_nvm_k1_enabled;
@@ -634,8 +626,6 @@ static int	wm_gmii_hv_readreg(device_t, 
 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_gmii_gs40g_readreg(device_t, int, int);
-static void	wm_gmii_gs40g_writereg(device_t, int, int, int);
 static void	wm_gmii_statchg(struct ifnet *);
 static int	wm_kmrn_readreg(struct wm_softc *, int);
 static void	wm_kmrn_writereg(struct wm_softc *, int, int);
@@ -687,13 +677,12 @@ static int	wm_nvm_read_ich8(struct wm_so
 /* iNVM */
 static int	wm_nvm_read_word_invm(struct wm_softc *, uint16_t, uint16_t *);
 static int	wm_nvm_read_invm(struct wm_softc *, int, int, uint16_t *);
-/* Lock, detecting NVM type, validate checksum, version and read */
+/* Lock, detecting NVM type, validate checksum and read */
 static int	wm_nvm_acquire(struct wm_softc *);
 static void	wm_nvm_release(struct wm_softc *);
 static int	wm_nvm_is_onboard_eeprom(struct wm_softc *);
 static int	wm_nvm_get_flash_presence_i210(struct wm_softc *);
 static int	wm_nvm_validate_checksum(struct wm_softc *);
-static void	wm_nvm_version(struct wm_softc *);
 static int	wm_nvm_read(struct wm_softc *, int, int, uint16_t *);
 
 /*
@@ -747,10 +736,6 @@ static void	wm_set_mdio_slow_mode_hv(str
 static void	wm_configure_k1_ich8lan(struct wm_softc *, int);
 static void	wm_reset_init_script_82575(struct wm_softc *);
 static void	wm_reset_mdicnfg_82580(struct wm_softc *);
-static void	wm_pll_workaround_i210(struct wm_softc *);
-#ifdef WM_DEBUG
-static void	wm_regdump(struct wm_softc *);
-#endif
 
 CFATTACH_DECL3_NEW(wm, sizeof(struct wm_softc),
     wm_match, wm_attach, wm_detach, NULL, NULL, NULL, DVF_DETACH_SHUTDOWN);
@@ -1756,15 +1741,6 @@ wm_attach(device_t parent, device_t self
 	    || (sc->sc_type == WM_T_PCH_LPT))
 		wm_smbustopci(sc);
 
-#ifdef WM_DEBUG
-	wm_regdump(sc);
-#endif
-
-	printf("%s: SC_CTRL(0) = %08x (%s)\n", device_xname(sc->sc_dev),
-	    sc->sc_ctrl, __func__);
-	sc->sc_ctrl = CSR_READ(sc, WMREG_CTRL);
-	printf("%s: SC_CTRL(1) = %08x (%s)\n", device_xname(sc->sc_dev),
-	    sc->sc_ctrl, __func__);
 	/* Reset the chip to a known state. */
 	wm_reset(sc);
 
@@ -1941,45 +1917,25 @@ wm_attach(device_t parent, device_t self
 	prop_dictionary_set_uint32(dict, "macflags", sc->sc_flags);
 
 	if (sc->sc_flags & WM_F_EEPROM_INVALID)
-		aprint_verbose_dev(sc->sc_dev, "No EEPROM");
+		aprint_verbose_dev(sc->sc_dev, "No EEPROM\n");
 	else {
 		aprint_verbose_dev(sc->sc_dev, "%u words ",
 		    sc->sc_nvm_wordsize);
 		if (sc->sc_flags & WM_F_EEPROM_INVM)
-			aprint_verbose("iNVM");
+			aprint_verbose("iNVM\n");
 		else if (sc->sc_flags & WM_F_EEPROM_FLASH_HW)
-			aprint_verbose("FLASH(HW)");
+			aprint_verbose("FLASH(HW)\n");
 		else if (sc->sc_flags & WM_F_EEPROM_FLASH)
-			aprint_verbose("FLASH");
+			aprint_verbose("FLASH\n");
 		else {
 			if (sc->sc_flags & WM_F_EEPROM_SPI)
 				eetype = "SPI";
 			else
 				eetype = "MicroWire";
-			aprint_verbose("(%d address bits) %s EEPROM",
+			aprint_verbose("(%d address bits) %s EEPROM\n",
 			    sc->sc_nvm_addrbits, eetype);
 		}
 	}
-	wm_nvm_version(sc);
-	aprint_verbose("\n");
-
-	if (sc->sc_type == WM_T_I210)
-		sc->sc_flags |= WM_F_PLL_WA_I210;
-	if ((sc->sc_type == WM_T_I210) && wm_nvm_get_flash_presence_i210(sc)) {
-		/* NVM image release 3.25 has a workaround */
-		if ((sc->sc_nvm_ver_major > 3)
-		    || ((sc->sc_nvm_ver_major == 3)
-			&& (sc->sc_nvm_ver_minor >= 25)))
-			return;
-		else {
-			aprint_verbose_dev(sc->sc_dev,
-			    "ROM image version %d.%d is older than 3.25\n",
-			    sc->sc_nvm_ver_major, sc->sc_nvm_ver_minor);
-			sc->sc_flags |= WM_F_PLL_WA_I210;
-		}
-	}
-	if ((sc->sc_flags & WM_F_PLL_WA_I210) != 0)
-		wm_pll_workaround_i210(sc);
 
 	switch (sc->sc_type) {
 	case WM_T_82571:
@@ -2495,9 +2451,6 @@ wm_attach(device_t parent, device_t self
 		aprint_error_dev(self, "couldn't establish power handler\n");
 
 	sc->sc_flags |= WM_F_ATTACHED;
-#ifdef WM_DEBUG
-	wm_regdump(sc);
-#endif
 	return;
 
 	/*
@@ -2525,9 +2478,6 @@ wm_attach(device_t parent, device_t self
  fail_1:
 	bus_dmamem_free(sc->sc_dmat, &sc->sc_cd_seg, sc->sc_cd_rseg);
  fail_0:
-#ifdef WM_DEBUG
-	wm_regdump(sc);
-#endif
 	return;
 }
 
@@ -2807,11 +2757,8 @@ wm_ioctl(struct ifnet *ifp, u_long cmd, 
 	case SIOCSIFMEDIA:
 	case SIOCGIFMEDIA:
 		WM_BOTH_LOCK(sc);
-		if (cmd == SIOCSIFMEDIA)
-			printf("%s: %s: ifr_media = %08x\n",
-			    device_xname(sc->sc_dev), __func__, ifr->ifr_media);
 		/* Flow control requires full-duplex mode. */
-		if (IFM_SUBTYPE(ifr->ifr_media) != IFM_AUTO &&
+		if (IFM_SUBTYPE(ifr->ifr_media) == IFM_AUTO ||
 		    (ifr->ifr_media & IFM_FDX) == 0)
 			ifr->ifr_media &= ~IFM_ETH_FMASK;
 		if (IFM_SUBTYPE(ifr->ifr_media) != IFM_AUTO) {
@@ -2827,8 +2774,6 @@ wm_ioctl(struct ifnet *ifp, u_long cmd, 
 		s = splnet();
 #endif
 		error = ifmedia_ioctl(ifp, ifr, &sc->sc_mii.mii_media, cmd);
-		printf("%s: %s: rv = %d\n", device_xname(sc->sc_dev), __func__,
-		    error);
 #ifdef WM_MPSAFE
 		splx(s);
 #endif
@@ -3893,11 +3838,7 @@ wm_reset(struct wm_softc *sc)
 	reg = CSR_READ(sc, WMREG_ICR);
 
 	/* reload sc_ctrl */
-	printf("%s: SC_CTRL(2) = %08x (%s)\n", device_xname(sc->sc_dev),
-	    sc->sc_ctrl, __func__);
 	sc->sc_ctrl = CSR_READ(sc, WMREG_CTRL);
-	printf("%s: SC_CTRL(3) = %08x (%s)\n", device_xname(sc->sc_dev),
-	    sc->sc_ctrl, __func__);
 
 	if ((sc->sc_type >= WM_T_I350) && (sc->sc_type <= WM_T_I211))
 		wm_set_eee_i350(sc);
@@ -3917,9 +3858,6 @@ wm_reset(struct wm_softc *sc)
 		CSR_WRITE(sc, WMREG_WUC, 0);
 
 	wm_reset_mdicnfg_82580(sc);
-
-	if ((sc->sc_flags & WM_F_PLL_WA_I210) != 0)
-		wm_pll_workaround_i210(sc);
 }
 
 /*
@@ -6089,11 +6027,7 @@ wm_linkintr_tbi(struct wm_softc *sc, uin
 			 * so we should update sc->sc_ctrl
 			 */
 
-			printf("%s: SC_CTRL(8) = %08x (%s)\n",
-			    device_xname(sc->sc_dev), sc->sc_ctrl, __func__);
 			sc->sc_ctrl = CSR_READ(sc, WMREG_CTRL);
-			printf("%s: SC_CTRL(9) = %08x (%s)\n",
-			    device_xname(sc->sc_dev), sc->sc_ctrl, __func__);
 			sc->sc_tctl &= ~TCTL_COLD(0x3ff);
 			sc->sc_fcrtl &= ~FCRTL_XONE;
 			if (status & STATUS_FD)
@@ -6697,24 +6631,19 @@ wm_gmii_mediainit(struct wm_softc *sc, p
 	default:
 		if (((sc->sc_flags & WM_F_SGMII) != 0)
 		    && !wm_sgmii_uses_mdio(sc)){
-			/* SGMII */
 			mii->mii_readreg = wm_sgmii_readreg;
 			mii->mii_writereg = wm_sgmii_writereg;
 		} else if (sc->sc_type >= WM_T_80003) {
-			/* 80003 */
 			mii->mii_readreg = wm_gmii_i80003_readreg;
 			mii->mii_writereg = wm_gmii_i80003_writereg;
 		} else if (sc->sc_type >= WM_T_I210) {
-			/* I210 and I211 */
-			mii->mii_readreg = wm_gmii_gs40g_readreg;
-			mii->mii_writereg = wm_gmii_gs40g_writereg;
+			mii->mii_readreg = wm_gmii_i82544_readreg;
+			mii->mii_writereg = wm_gmii_i82544_writereg;
 		} else if (sc->sc_type >= WM_T_82580) {
-			/* 82580, I350 and I354 */
 			sc->sc_phytype = WMPHY_82580;
 			mii->mii_readreg = wm_gmii_82580_readreg;
 			mii->mii_writereg = wm_gmii_82580_writereg;
 		} else if (sc->sc_type >= WM_T_82544) {
-			/* 82544, 0, [56], [17], 8257[1234] and 82583 */
 			mii->mii_readreg = wm_gmii_i82544_readreg;
 			mii->mii_writereg = wm_gmii_i82544_writereg;
 		} else {
@@ -6733,8 +6662,8 @@ wm_gmii_mediainit(struct wm_softc *sc, p
 	wm_gmii_reset(sc);
 
 	sc->sc_ethercom.ec_mii = &sc->sc_mii;
-	ifmedia_init(&mii->mii_media, IFM_IMASK|IFM_ETH_FMASK,
-	    wm_gmii_mediachange, wm_gmii_mediastatus);
+	ifmedia_init(&mii->mii_media, IFM_IMASK, wm_gmii_mediachange,
+	    wm_gmii_mediastatus);
 
 	if ((sc->sc_type == WM_T_82575) || (sc->sc_type == WM_T_82576)
 	    || (sc->sc_type == WM_T_82580)
@@ -7021,10 +6950,10 @@ wm_gmii_i82544_readreg(device_t self, in
 	    MDIC_REGADD(reg));
 
 	for (i = 0; i < WM_GEN_POLL_TIMEOUT * 3; i++) {
-		delay(50);
 		mdic = CSR_READ(sc, WMREG_MDIC);
 		if (mdic & MDIC_READY)
 			break;
+		delay(50);
 	}
 
 	if ((mdic & MDIC_READY) == 0) {
@@ -7062,10 +6991,10 @@ wm_gmii_i82544_writereg(device_t self, i
 	    MDIC_REGADD(reg) | MDIC_DATA(val));
 
 	for (i = 0; i < WM_GEN_POLL_TIMEOUT * 3; i++) {
-		delay(50);
 		mdic = CSR_READ(sc, WMREG_MDIC);
 		if (mdic & MDIC_READY)
 			break;
+		delay(50);
 	}
 
 	if ((mdic & MDIC_READY) == 0)
@@ -7424,75 +7353,6 @@ wm_gmii_82580_writereg(device_t self, in
 }
 
 /*
- * wm_gmii_gs40g_readreg:	[mii interface function]
- *
- *	Read a PHY register on the I2100 and I211.
- * This could be handled by the PHY layer if we didn't have to lock the
- * ressource ...
- */
-static int
-wm_gmii_gs40g_readreg(device_t self, int phy, int reg)
-{
-	struct wm_softc *sc = device_private(self);
-	int sem;
-	int page, offset;
-	int rv;
-
-	/* Acquire semaphore */
-	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;
-	}
-
-	/* Page select */
-	page = reg >> GS40G_PAGE_SHIFT;
-	wm_gmii_i82544_writereg(self, phy, GS40G_PAGE_SELECT, page);
-
-	/* Read reg */
-	offset = reg & GS40G_OFFSET_MASK;
-	rv = wm_gmii_i82544_readreg(self, phy, offset);
-
-	wm_put_swfw_semaphore(sc, sem);
-	return rv;
-}
-
-/*
- * wm_gmii_gs40g_writereg:	[mii interface function]
- *
- *	Write a PHY register on the I210 and I211.
- * This could be handled by the PHY layer if we didn't have to lock the
- * ressource ...
- */
-static void
-wm_gmii_gs40g_writereg(device_t self, int phy, int reg, int val)
-{
-	struct wm_softc *sc = device_private(self);
-	int sem;
-	int page, offset;
-
-	/* Acquire semaphore */
-	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;
-	}
-
-	/* Page select */
-	page = reg >> GS40G_PAGE_SHIFT;
-	wm_gmii_i82544_writereg(self, phy, GS40G_PAGE_SELECT, page);
-
-	/* Write reg */
-	offset = reg & GS40G_OFFSET_MASK;
-	wm_gmii_i82544_writereg(self, phy, offset, val);
-
-	/* Release semaphore */
-	wm_put_swfw_semaphore(sc, sem);
-}
-
-/*
  * wm_gmii_statchg:	[mii interface function]
  *
  *	Callback from MII layer when media changes.
@@ -7775,10 +7635,10 @@ wm_tbi_mediainit(struct wm_softc *sc)
 
 	if ((sc->sc_type >= WM_T_82575)
 	    && (sc->sc_mediatype == WM_MEDIATYPE_SERDES))
-		ifmedia_init(&sc->sc_mii.mii_media, IFM_IMASK | IFM_ETH_FMASK,
+		ifmedia_init(&sc->sc_mii.mii_media, IFM_IMASK,
 		    wm_serdes_mediachange, wm_serdes_mediastatus);
 	else
-		ifmedia_init(&sc->sc_mii.mii_media, IFM_IMASK | IFM_ETH_FMASK,
+		ifmedia_init(&sc->sc_mii.mii_media, IFM_IMASK,
 		    wm_tbi_mediachange, wm_tbi_mediastatus);
 
 	/*
@@ -7855,9 +7715,7 @@ wm_tbi_mediachange(struct ifnet *ifp)
 	else
 		sc->sc_txcw |= TXCW_HD;
 
-	printf("%s: %s: ifr_media = %08x\n",
-	    device_xname(sc->sc_dev), __func__, ife->ifm_media);
-	if ((ife->ifm_media & IFM_FLOW) != 0)
+	if ((sc->sc_mii.mii_media.ifm_media & IFM_FLOW) != 0)
 		sc->sc_txcw |= TXCW_SYM_PAUSE | TXCW_ASYM_PAUSE;
 
 	DPRINTF(WM_DEBUG_LINK,("%s: sc_txcw = 0x%x after autoneg check\n",
@@ -7900,11 +7758,7 @@ wm_tbi_mediachange(struct ifnet *ifp)
 			 * NOTE: CTRL will update TFCE and RFCE automatically,
 			 * so we should update sc->sc_ctrl
 			 */
-			printf("%s: SC_CTRL(6) = %08x (%s)\n",
-			    device_xname(sc->sc_dev), sc->sc_ctrl, __func__);
 			sc->sc_ctrl = CSR_READ(sc, WMREG_CTRL);
-			printf("%s: SC_CTRL(7) = %08x (%s)\n",
-			    device_xname(sc->sc_dev), sc->sc_ctrl, __func__);
 			sc->sc_tctl &= ~TCTL_COLD(0x3ff);
 			sc->sc_fcrtl &= ~FCRTL_XONE;
 			if (status & STATUS_FD)
@@ -8035,11 +7889,7 @@ wm_check_for_link(struct wm_softc *sc)
 		 * NOTE: CTRL was updated TFCE and RFCE automatically,
 		 * so we should update sc->sc_ctrl
 		 */
-		printf("%s: SC_CTRL(4) = %08x (%s)\n",
-		    device_xname(sc->sc_dev), sc->sc_ctrl, __func__);
 		sc->sc_ctrl = ctrl | CTRL_SLU | CTRL_FD;
-		printf("%s: SC_CTRL(5) = %08x (%s)\n",
-		    device_xname(sc->sc_dev), sc->sc_ctrl, __func__);
 		CSR_WRITE(sc, WMREG_CTRL, sc->sc_ctrl);
 	} else if (((status & STATUS_LU) != 0)
 	    && ((rxcw & RXCW_C) != 0)
@@ -8153,7 +8003,6 @@ static int
 wm_serdes_mediachange(struct ifnet *ifp)
 {
 	struct wm_softc *sc = ifp->if_softc;
-	struct ifmedia_entry *ife = sc->sc_mii.mii_media.ifm_cur;
 	bool pcs_autoneg = true; /* XXX */
 	uint32_t ctrl_ext, pcs_lctl, reg;
 
@@ -8196,10 +8045,7 @@ wm_serdes_mediachange(struct ifnet *ifp)
 
 		reg = CSR_READ(sc, WMREG_PCS_ANADV);
 		reg &= ~(TXCW_ASYM_PAUSE | TXCW_SYM_PAUSE);
-		printf("%s: %s: ifr_media = %08x\n",
-		    device_xname(sc->sc_dev), __func__, ife->ifm_media);
-		if ((sc->sc_mii.mii_media.ifm_media & IFM_FLOW) != 0)
-			reg |= TXCW_ASYM_PAUSE | TXCW_SYM_PAUSE;
+		reg |= TXCW_ASYM_PAUSE | TXCW_SYM_PAUSE;
 		CSR_WRITE(sc, WMREG_PCS_ANADV, reg);
 	} else
 		pcs_lctl |= PCS_LCTL_FSD | PCS_LCTL_FORCE_FC;
@@ -9053,7 +8899,7 @@ wm_nvm_read_word_invm(struct wm_softc *s
 	uint8_t record_type, word_address;
 
 	for (i = 0; i < INVM_SIZE; i++) {
-		invm_dword = CSR_READ(sc, WM_INVM_DATA_REG(i));
+		invm_dword = CSR_READ(sc, E1000_INVM_DATA_REG(i));
 		/* Get record type */
 		record_type = INVM_DWORD_TO_RECORD_TYPE(invm_dword);
 		if (record_type == INVM_UNINITIALIZED_STRUCTURE)
@@ -9138,7 +8984,7 @@ wm_nvm_read_invm(struct wm_softc *sc, in
 	return rv;
 }
 
-/* Lock, detecting NVM type, validate checksum, version and read */
+/* Lock, detecting NVM type, validate checksum and read */
 
 /*
  * wm_nvm_acquire:
@@ -9335,79 +9181,6 @@ wm_nvm_validate_checksum(struct wm_softc
 	return 0;
 }
 
-static void
-wm_nvm_version(struct wm_softc *sc)
-{
-	int major, minor;
-	int build = -1;
-	uint16_t uid0, uid1;
-	uint16_t nvm_data;
-	uint16_t off;
-
-	wm_nvm_read(sc, NVM_OFF_IMAGE_UID1, 1, &uid1);
-	switch (sc->sc_type) {
-	case WM_T_82575:
-	case WM_T_82576:
-	case WM_T_82580:
-		if ((uid1 & NVM_MAJOR_MASK) != NVM_UID_VALID) {
-			/* Major, Minor and build in UID words */
-			wm_nvm_read(sc, NVM_OFF_VERSION, 1, &nvm_data);
-			major = (nvm_data & NVM_MAJOR_MASK) >> NVM_MAJOR_SHIFT;
-			minor = (nvm_data & NVM_MINOR_MASK) >> NVM_MINOR_SHIFT;
-			build = nvm_data & NVM_BUILD_MASK;
-			goto printver;
-		}
-		break;
-	case WM_T_I211:
-		/* XXX wm_nvm_version_invm(sc); */
-		return;
-	case WM_T_I210:
-		if (!wm_nvm_get_flash_presence_i210(sc)) {
-			/* XXX wm_nvm_version_invm(sc); */
-			return;
-		}
-		/* FALLTHROUGH */
-	case WM_T_I350:
-	case WM_T_I354:
-		wm_nvm_read(sc, NVM_OFF_COMB_VER_PTR, 1, &off);
-		/* Option ROM Version */
-		if ((off != 0x0000) && (off != 0xffff)) {
-			off += NVM_COMBO_VER_OFF;
-			wm_nvm_read(sc, off + 1, 1, &uid1);
-			wm_nvm_read(sc, off, 1, &uid0);
-			if ((uid0 != 0) && (uid0 != 0xffff)
-			    && (uid1 != 0) && (uid1 != 0xffff)) {
-				aprint_verbose(" option ROM Version %d.%d.%d",
-				    uid0 >> 8,
-				    (uid0 << 8) | (uid1 >> 8),
-				    uid1 & 0x00ff);
-			}
-		}
-		break;
-	default:
-		/* XXX Should we print PXE boot agent's version? */
-		return;
-	}
-	wm_nvm_read(sc, NVM_OFF_VERSION, 1, &nvm_data);
-	major = (nvm_data & NVM_MAJOR_MASK) >> NVM_MAJOR_SHIFT;
-	if ((nvm_data & 0x0f00) == 0x0000)
-		minor = nvm_data & 0x00ff;
-	else 
-		minor = (nvm_data & NVM_MINOR_MASK) >> NVM_MINOR_SHIFT;
-	/* Decimal */
-	minor = (minor / 16) * 10 + (minor % 16);
-
-printver:
-	aprint_verbose(", version %d.%d", major, minor);
-	if (build != -1)
-		aprint_verbose(" build %d", build);
-	sc->sc_nvm_ver_major = major;
-	sc->sc_nvm_ver_minor = minor;
-
-	wm_nvm_read(sc, NVM_OFF_IMAGE_UID0, 1, &uid0);
-	aprint_verbose(", Image Unique ID %08x", (uid1 << 16) | uid0);
-}
-
 /*
  * wm_nvm_read:
  *
@@ -9564,11 +9337,11 @@ wm_get_swfwhw_semaphore(struct wm_softc 
 
 	for (timeout = 0; timeout < 200; timeout++) {
 		ext_ctrl = CSR_READ(sc, WMREG_EXTCNFCTR);
-		ext_ctrl |= EXTCNFCTR_MDIO_SW_OWNERSHIP;
+		ext_ctrl |= E1000_EXTCNF_CTRL_SWFLAG;
 		CSR_WRITE(sc, WMREG_EXTCNFCTR, ext_ctrl);
 
 		ext_ctrl = CSR_READ(sc, WMREG_EXTCNFCTR);
-		if (ext_ctrl & EXTCNFCTR_MDIO_SW_OWNERSHIP)
+		if (ext_ctrl & E1000_EXTCNF_CTRL_SWFLAG)
 			return 0;
 		delay(5000);
 	}
@@ -9582,7 +9355,7 @@ wm_put_swfwhw_semaphore(struct wm_softc 
 {
 	uint32_t ext_ctrl;
 	ext_ctrl = CSR_READ(sc, WMREG_EXTCNFCTR);
-	ext_ctrl &= ~EXTCNFCTR_MDIO_SW_OWNERSHIP;
+	ext_ctrl &= ~E1000_EXTCNF_CTRL_SWFLAG;
 	CSR_WRITE(sc, WMREG_EXTCNFCTR, ext_ctrl);
 }
 
@@ -10375,323 +10148,3 @@ wm_reset_mdicnfg_82580(struct wm_softc *
 		reg |= MDICNFG_COM_MDIO;
 	CSR_WRITE(sc, WMREG_MDICNFG, reg);
 }
-
-/*
- * I210 Errata 25 and I211 Errata 10
- * Slow System Clock.
- */
-static void
-wm_pll_workaround_i210(struct wm_softc *sc)
-{
-	uint32_t mdicnfg, wuc;
-	uint32_t reg;
-	pcireg_t pcireg;
-	uint32_t pmreg;
-	uint16_t nvmword, tmp_nvmword;
-	int phyval;
-	bool wa_done = false;
-	int i;
-
-	/* Save WUC and MDICNFG registers */
-	wuc = CSR_READ(sc, WMREG_WUC);
-	mdicnfg = CSR_READ(sc, WMREG_MDICNFG);
-
-	reg = mdicnfg & ~MDICNFG_DEST;
-	CSR_WRITE(sc, WMREG_MDICNFG, reg);
-
-	if (wm_nvm_read(sc, INVM_AUTOLOAD, 1, &nvmword) != 0)
-		nvmword = INVM_DEFAULT_AL;
-	tmp_nvmword = nvmword | INVM_PLL_WO_VAL;
-
-	/* Get Power Management cap offset */
-	if (pci_get_capability(sc->sc_pc, sc->sc_pcitag, PCI_CAP_PWRMGMT,
-		&pmreg, NULL) == 0)
-		return;
-	for (i = 0; i < WM_MAX_PLL_TRIES; i++) {
-		phyval = wm_gmii_gs40g_readreg(sc->sc_dev, 1,
-		    GS40G_PHY_PLL_FREQ_PAGE | GS40G_PHY_PLL_FREQ_REG);
-		
-		if ((phyval & GS40G_PHY_PLL_UNCONF) != GS40G_PHY_PLL_UNCONF) {
-			break; /* OK */
-		}
-
-		wa_done = true;
-		/* Directly reset the internal PHY */
-		reg = CSR_READ(sc, WMREG_CTRL);
-		CSR_WRITE(sc, WMREG_CTRL, reg | CTRL_PHY_RESET);
-
-		reg = CSR_READ(sc, WMREG_CTRL_EXT);
-		reg |= CTRL_EXT_PHYPDEN | CTRL_EXT_SDLPE;
-		CSR_WRITE(sc, WMREG_CTRL_EXT, reg);
-
-		CSR_WRITE(sc, WMREG_WUC, 0);
-		reg = (INVM_AUTOLOAD << 4) | (tmp_nvmword << 16);
-		CSR_WRITE(sc, WMREG_EEARBC_I210, reg);
-		
-		pcireg = pci_conf_read(sc->sc_pc, sc->sc_pcitag,
-		    pmreg + PCI_PMCSR);
-		pcireg |= PCI_PMCSR_STATE_D3;
-		pci_conf_write(sc->sc_pc, sc->sc_pcitag,
-		    pmreg + PCI_PMCSR, pcireg);
-		delay(1000);
-		pcireg &= ~PCI_PMCSR_STATE_D3;
-		pci_conf_write(sc->sc_pc, sc->sc_pcitag,
-		    pmreg + PCI_PMCSR, pcireg);
-
-		reg = (INVM_AUTOLOAD << 4) | (nvmword << 16);
-		CSR_WRITE(sc, WMREG_EEARBC_I210, reg);
-		
-		/* Restore WUC register */
-		CSR_WRITE(sc, WMREG_WUC, wuc);
-	}
-	
-	/* Restore MDICNFG setting */
-	CSR_WRITE(sc, WMREG_MDICNFG, mdicnfg);
-	if (wa_done)
-		aprint_verbose_dev(sc->sc_dev, "I210 workaround done\n");
-}
-
-#ifdef WM_DEBUG
-static uint32_t wmregs[] = {
-	0x0000,
-	0x0004,
-	0x0008,
-	0x0010,
-	0x0014,
-	0x0018,
-	0x0020,
-	0x0024,
-	0x0028,
-	0x002c,
-	0x0030,
-	0x0034,
-	0x0038,
-	0x003c,
-	0x00c0,
-	0x00c4,
-	0x00c8,
-	0x00d0,
-	0x00d8,
-	0x00e4,
-	0x00f0,
-	0x00f4,
-	0x0100,
-	0x0170,
-	0x0178,
-	0x0180,
-	0x0400,
-	0x0404,
-	0x0410,
-	0x0800,
-	0x08d8,
-	0x08f0,
-	0x0c00,
-	0x0c40,
-	0x0c80,
-	0x0c88,
-	0x0e00,
-	0x0e04,
-	0x0e10,
-	0x0e30,
-	0x0e34,
-	0x0e38,
-	0x0f00,
-	0x0f08,
-	0x0f10,
-	0x0f14,
-	0x0f18,
-	0x0f34,
-	0x0f3c,
-	0x1000,
-	0x1008,
-	0x100c,
-	0x1010,
-	0x1028,
-	0x102c,
-	0x103c,
-	0x1100,
-	0x1500,
-	0x1514,
-	0x1520,
-	0x1524,
-	0x1528,
-	0x152c,
-	0x1530,
-	0x1600,
-	0x1680,
-	0x1700,
-	0x1740,
-	0x2160,
-	0x2168,
-	0x2170,
-	0x2404,
-	0x2508,
-	0x2514,
-	0x2800,
-	0x2804,
-	0x2808,
-	0x280c,
-	0x2810,
-	0x2818,
-	0x2820,
-	0x2828,
-	0x282c,
-	0x3004,
-	0x3410,
-	0x3418,
-	0x3420,
-	0x3428,
-	0x3430,
-	0x3500,
-	0x3550,
-	0x3800,
-	0x3804,
-	0x3808,
-	0x3810,
-	0x3818,
-	0x3820,
-	0x3828,
-	0x382c,
-	0x3840,
-	0x3928,
-	0x3940,
-	0x3f24,
-	0x4000,
-	0x4004,
-	0x4008,
-	0x400c,
-	0x4010,
-	0x4014,
-	0x4018,
-	0x401c,
-	0x4020,
-	0x4028,
-	0x402c,
-	0x4034,
-	0x4038,
-	0x403c,
-	0x4040,
-	0x4044,
-	0x4048,
-	0x404c,
-	0x4050,
-	0x4054,
-	0x4058,
-	0x405c,
-	0x4060,
-	0x4064,
-	0x4068,
-	0x406c,
-	0x4070,
-	0x4074,
-	0x4078,
-	0x407c,
-	0x4080,
-	0x4088,
-	0x408c,
-	0x4090,
-	0x4094,
-	0x40a0,
-	0x40a4,
-	0x40a8,
-	0x40ac,
-	0x40b0,
-	0x40b4,
-	0x40b8,
-	0x40bc,
-	0x40c0,
-	0x40c4,
-	0x40c8,
-	0x40cc,
-	0x40d8,
-	0x40dc,
-	0x40e0,
-	0x40e4,
-	0x40e8,
-	0x40ec,
-	0x40f0,
-	0x40f4,
-	0x40f8,
-	0x40fc,
-	0x4100,
-	0x4104,
-	0x4108,
-	0x410c,
-	0x4110,
-	0x4118,
-	0x411c,
-	0x4120,
-	0x4124,
-	0x4128,
-	0x412c,
-	0x4130,
-	0x4134,
-	0x4138,
-	0x4200,
-	0x4208,
-	0x420c,
-	0x4218,
-	0x421c,
-	0x4224,
-	0x4228,
-	0x5000,
-	0x5004,
-	0x5008,
-	0x5200,
-	0x5400,
-	0x5404,
-	0x5438,
-	0x543c,
-	0x5600,
-	0x5800,
-	0x5808,
-	0x5818,
-	0x581c,
-	0x5820,
-	0x5860,
-	0x5acc,
-	0x5b00,
-	0x5b30,
-//	0x5b50,
-	0x5b54,
-	0x5b58,
-	0x5b5c,
-	0x5b64,
-	0x5bb8,
-	0x5c00,
-	0x5dd0,
-	0x5f00,
-	0x5f04,
-	0x5f40,
-	0x5f50,
-	0x8110,
-	0x8800,
-	0x8f00,
-	0x8f40,
-	0xa000,
-	0xa018,
-	0x10010,
-	0x10014,
-	0x10018,
-	0x10034,
-	0x10038,
-	0x12018,
-	0x12024,
-	0x12120,
-};
-
-static void
-wm_regdump(struct wm_softc *sc)
-{
-	int i;
-	int last = 100;
-
-	printf("%s:\n", device_xname(sc->sc_dev));
-	for (i = 0; i < __arraycount(wmregs); i++) {
-		if (wmregs[i] == last)
-			printf("same %05x\n", wmregs[i]);
-		printf("%05x: %08x\n", wmregs[i], CSR_READ(sc, wmregs[i]));
-		last = wmregs[i];
-	}
-}
-#endif

Index: src/sys/dev/pci/if_wmreg.h
diff -u src/sys/dev/pci/if_wmreg.h:1.74 src/sys/dev/pci/if_wmreg.h:1.75
--- src/sys/dev/pci/if_wmreg.h:1.74	Sat Jun  6 03:33:37 2015
+++ src/sys/dev/pci/if_wmreg.h	Sat Jun  6 03:37:01 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_wmreg.h,v 1.74 2015/06/06 03:33:37 msaitoh Exp $	*/
+/*	$NetBSD: if_wmreg.h,v 1.75 2015/06/06 03:37:01 msaitoh Exp $	*/
 
 /*
  * Copyright (c) 2001 Wasabi Systems, Inc.
@@ -315,7 +315,6 @@ struct livengood_tcpip_ctxdesc {
 #define	CTRL_EXT_SPD_BYPS	(1U << 15) /* speed select bypass */
 #define	CTRL_EXT_IPS1		(1U << 16) /* invert power state bit 1 */
 #define	CTRL_EXT_RO_DIS		(1U << 17) /* relaxed ordering disabled */
-#define	CTRL_EXT_SDLPE		(1U << 18) /* SerDes Low Power Enable */
 #define	CTRL_EXT_DMA_DYN_CLK	(1U << 19) /* DMA Dynamic Gating Enable */
 #define	CTRL_EXT_LINK_MODE_MASK		0x00C00000
 #define	CTRL_EXT_LINK_MODE_GMII		0x00000000
@@ -326,7 +325,6 @@ struct livengood_tcpip_ctxdesc {
 #define	CTRL_EXT_LINK_MODE_TBI		0x00C00000
 #define	CTRL_EXT_LINK_MODE_PCIE_SERDES	0x00C00000
 #define	CTRL_EXT_PHYPDEN	0x00100000
-#define	CTRL_EXT_EIAME		__BIT(24)
 #define CTRL_EXT_I2C_ENA	0x02000000  /* I2C enable */
 #define	CTRL_EXT_DRV_LOAD	0x10000000
 
@@ -446,9 +444,6 @@ struct livengood_tcpip_ctxdesc {
 #define	WMREG_IMC	0x00d8	/* Interrupt Mask Clear Register */
 	/* See ICR bits. */
 
-#define	WMREG_82574_EIAC 0x00dc	/* Interrupt Auto Clear Register */
-	/* See ICR bits. */
-
 #define	WMREG_RCTL	0x0100	/* Receive Control */
 #define	RCTL_EN		(1U << 1)	/* receiver enable */
 #define	RCTL_SBP	(1U << 2)	/* store bad packets */
@@ -658,6 +653,7 @@ struct livengood_tcpip_ctxdesc {
 #define EXTCNFCTR_MDIO_HW_OWNERSHIP	0x00000040
 #define EXTCNFCTR_GATE_PHY_CFG		0x00000080
 #define EXTCNFCTR_EXT_CNF_POINTER	0x0FFF0000
+#define E1000_EXTCNF_CTRL_SWFLAG	EXTCNFCTR_MDIO_SW_OWNERSHIP
 
 #define	WMREG_PHY_CTRL	0x0f10	/* PHY control */
 #define	PHY_CTRL_SPD_EN		(1 << 0)
@@ -922,7 +918,6 @@ struct livengood_tcpip_ctxdesc {
 #define EEC_FLASH_DETECTED (1U << 19)	/* FLASH */
 #define EEC_FLUPD	(1U << 23)	/* Update FLASH */
 
-#define WMREG_EEARBC_I210 0x12024
 
 /*
  * NVM related values.
@@ -956,7 +951,6 @@ struct livengood_tcpip_ctxdesc {
 #define	NVM_OFF_MACADDR2	0x0002	/* MAC address offset 2 */
 #define NVM_OFF_COMPAT		0x0003
 #define NVM_OFF_ID_LED_SETTINGS	0x0004
-#define NVM_OFF_VERSION		0x0005
 #define	NVM_OFF_CFG1		0x000a	/* config word 1 */
 #define	NVM_OFF_CFG2		0x000f	/* config word 2 */
 #define	NVM_OFF_EEPROM_SIZE	0x0012	/* NVM SIZE */
@@ -970,9 +964,6 @@ struct livengood_tcpip_ctxdesc {
 #define	NVM_OFF_SWDPIN		0x0020	/* SWD Pins (Cordova) */
 #define	NVM_OFF_CFG3_PORTA	0x0024	/* config word 3 */
 #define NVM_OFF_ALT_MAC_ADDR_PTR 0x0037	/* to the alternative MAC addresses */
-#define NVM_OFF_COMB_VER_PTR	0x003d
-#define NVM_OFF_IMAGE_UID0	0x0042
-#define NVM_OFF_IMAGE_UID1	0x0043
 
 #define NVM_COMPAT_VALID_CHECKSUM	0x0001
 
@@ -1036,17 +1027,8 @@ struct livengood_tcpip_ctxdesc {
  */
 #define NVM_OFF_LAN_FUNC_82580(x)	((x) ? (0x40 + (0x40 * (x))) : 0)
 
-#define NVM_COMBO_VER_OFF	0x0083
-
-#define NVM_MAJOR_MASK		0xf000
-#define NVM_MAJOR_SHIFT		12
-#define NVM_MINOR_MASK		0x0ff0
-#define NVM_MINOR_SHIFT		4
-#define NVM_BUILD_MASK		0x000f
-#define NVM_UID_VALID		0x8000
-
 /* iNVM Registers for i21[01] */
-#define WM_INVM_DATA_REG(reg)	(0x12120 + 4*(reg))
+#define E1000_INVM_DATA_REG(reg)	(0x12120 + 4*(reg))
 #define INVM_SIZE			64 /* Number of INVM Data Registers */
 
 /* iNVM default vaule */
@@ -1065,15 +1047,11 @@ struct livengood_tcpip_ctxdesc {
 #define INVM_CSR_AUTOLOAD_STRUCTURE		0x2
 #define INVM_PHY_REGISTER_AUTOLOAD_STRUCTURE	0x3
 #define INVM_RSA_KEY_SHA256_STRUCTURE		0x4
-#define INVM_INVALIDATED_STRUCTURE		0xf
+#define INVM_INVALIDATED_STRUCTURE		0x5
 
 #define INVM_RSA_KEY_SHA256_DATA_SIZE_IN_DWORDS	8
 #define INVM_CSR_AUTOLOAD_DATA_SIZE_IN_DWORDS	1
 
-#define INVM_DEFAULT_AL		0x202f
-#define INVM_AUTOLOAD		0x0a
-#define INVM_PLL_WO_VAL		0x0010
-	
 /* Word definitions for ID LED Settings */
 #define ID_LED_RESERVED_FFFF 0xFFFF
 
@@ -1147,13 +1125,6 @@ struct livengood_tcpip_ctxdesc {
 #define SFF_SFP_ETH_FLAGS_1000T		0x08
 #define SFF_SFP_ETH_FLAGS_100FX		0x10
 
-/* I21[01] PHY related definitions */
-#define GS40G_PAGE_SELECT	0x16
-#define GS40G_PAGE_SHIFT	16
-#define GS40G_OFFSET_MASK	0xffff
-#define GS40G_PHY_PLL_FREQ_PAGE	0xfc0000
-#define GS40G_PHY_PLL_FREQ_REG	0x000e
-#define GS40G_PHY_PLL_UNCONF	0xff
 
 /* advanced TX descriptor for 82575 and newer */
 typedef union nq_txdesc {

Index: src/sys/dev/pci/if_wmvar.h
diff -u src/sys/dev/pci/if_wmvar.h:1.26 src/sys/dev/pci/if_wmvar.h:1.27
--- src/sys/dev/pci/if_wmvar.h:1.26	Sat Jun  6 03:33:37 2015
+++ src/sys/dev/pci/if_wmvar.h	Sat Jun  6 03:37:01 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_wmvar.h,v 1.26 2015/06/06 03:33:37 msaitoh Exp $	*/
+/*	$NetBSD: if_wmvar.h,v 1.27 2015/06/06 03:37:01 msaitoh Exp $	*/
 
 /*
  * Copyright (c) 2001, 2002, 2003, 2004 Wasabi Systems, Inc.
@@ -98,7 +98,7 @@
 #define WM_F_ATTACHED		0x00800000 /* attach() finished successfully */
 #define	WM_F_EEPROM_INVM	0x01000000 /* NVM is iNVM */
 #define	WM_F_PCS_DIS_AUTONEGO	0x02000000 /* PCS Disable Autonego */
-#define	WM_F_PLL_WA_I210	0x04000000 /* I21[01] PLL workaround */
+
 
 /*
  * Variations of Intel gigabit Ethernet controller:
@@ -172,6 +172,5 @@ typedef enum {
 #define WM_PHY_CFG_TIMEOUT	100
 #define	WM_ICH8_LAN_INIT_TIMEOUT 1500
 #define	WM_MDIO_OWNERSHIP_TIMEOUT 10
-#define	WM_MAX_PLL_TRIES	5
 
 #endif /* _DEV_PCI_IF_WMVAR_H_ */

Reply via email to