Module Name:    src
Committed By:   msaitoh
Date:           Fri Dec 28 06:20:32 UTC 2018

Modified Files:
        src/sys/dev/mii: makphy.c makphyreg.h
Removed Files:
        src/sys/dev/mii: e1000phyreg.h

Log Message:
- Backout some changes done in rev. 1.44. OK'd by jdolecek@:
  - Remove e1000phyreg.h and use makphyreg.h again.
  - Remove Energy detect stuff. Leave it by default.
  - Remove MDI crossover configuraton. Leave it by default. I think it's OK to
    add new API to change the mode.
  - PHY_RESET() is used to commit some changes, so I think it's not good to
    always clear BMCR_AUTOEN before reset in makphy_reset().
  - It's not required to read MII_100T2SR twice because this register has no
    any bit which is latched.
- Use mii_phy_reset() instead of extracted code.
- Don't set PSCR_CRS_ON_TX on newer. Those chips have no this bit.
- Add some "XXX FIXME" comment. Non GMII mode uses different page except
  very old chip. Some bits are at the same location but others are not.
- Remove obsolete comment.
- s/MII_MAKPHY_/MAKPHY_/

XXX rev. 1.44 changed the setting of mii_media_active when the interface is
set to other than auto. I suspect the intention of the change is to reflect
the link up/down status. But, it didn't work because non auto setting makes
PSSR_LINK bit alwasy set "without modifing some registers".
This commit won't fix the change and it'll be fixed in the next commit.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r0 src/sys/dev/mii/e1000phyreg.h
cvs rdiff -u -r1.45 -r1.46 src/sys/dev/mii/makphy.c
cvs rdiff -u -r1.8 -r1.9 src/sys/dev/mii/makphyreg.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/mii/makphy.c
diff -u src/sys/dev/mii/makphy.c:1.45 src/sys/dev/mii/makphy.c:1.46
--- src/sys/dev/mii/makphy.c:1.45	Mon Jun 18 09:12:17 2018
+++ src/sys/dev/mii/makphy.c	Fri Dec 28 06:20:32 2018
@@ -1,5 +1,4 @@
-/*	$NetBSD: makphy.c,v 1.45 2018/06/18 09:12:17 msaitoh Exp $	*/
-/*	$OpenBSD: eephy.c,v 1.56 2015/03/14 03:38:48 jsg Exp $	*/
+/*	$NetBSD: makphy.c,v 1.46 2018/12/28 06:20:32 msaitoh Exp $	*/
 
 /*-
  * Copyright (c) 1998, 1999, 2000, 2001 The NetBSD Foundation, Inc.
@@ -55,48 +54,8 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- * Principal Author: Parag Patel
- * Copyright (c) 2001
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice unmodified, this list of conditions, and the following
- *    disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * Additonal Copyright (c) 2001 by Traakan Software under same licence.
- * Secondary Author: Matthew Jacob
- */
-/*
- * Driver for the Marvell 88E1000 ``Alaska'' 10/100/1000 PHY.
- */
-
-/*
- * Support added for the Marvell 88E1011 (Alaska) 1000/100/10baseTX and
- * 1000baseSX PHY.
- * Nathan Binkert <n...@openbsd.org>
- */
-
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: makphy.c,v 1.45 2018/06/18 09:12:17 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: makphy.c,v 1.46 2018/12/28 06:20:32 msaitoh Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -112,7 +71,7 @@ __KERNEL_RCSID(0, "$NetBSD: makphy.c,v 1
 #include <dev/mii/miivar.h>
 #include <dev/mii/miidevs.h>
 
-#include <dev/mii/e1000phyreg.h>
+#include <dev/mii/makphyreg.h>
 
 static int	makphymatch(device_t, cfdata_t, void *);
 static void	makphyattach(device_t, device_t, void *);
@@ -124,11 +83,11 @@ static int	makphy_service(struct mii_sof
 static void	makphy_status(struct mii_softc *);
 static void	makphy_reset(struct mii_softc *);
 
-static const struct mii_phy_funcs eephy_funcs = {
+static const struct mii_phy_funcs makphy_funcs = {
 	makphy_service, makphy_status, makphy_reset,
 };
 
-static const struct mii_phydesc eephys[] = {
+static const struct mii_phydesc makphys[] = {
 	{ MII_OUI_MARVELL,		MII_MODEL_MARVELL_E1000_0,
 	  MII_STR_MARVELL_E1000_0 },
 
@@ -174,7 +133,6 @@ static const struct mii_phydesc eephys[]
 	{ MII_OUI_xxMARVELL,		MII_MODEL_xxMARVELL_E1145,
 	  MII_STR_xxMARVELL_E1145 },
 
-	/* XXX: reported not to work on eg. HP XW9400 */
 	{ MII_OUI_xxMARVELL,		MII_MODEL_xxMARVELL_E1149,
 	  MII_STR_xxMARVELL_E1149 },
 
@@ -192,6 +150,7 @@ static const struct mii_phydesc eephys[]
 
 	{ MII_OUI_xxMARVELL,		MII_MODEL_xxMARVELL_PHYG65G,
 	  MII_STR_xxMARVELL_PHYG65G },
+
 	{ 0,				0,
 	  NULL },
 };
@@ -201,7 +160,7 @@ makphymatch(device_t parent, cfdata_t ma
 {
 	struct mii_attach_args *ma = aux;
 
-	if (mii_phy_match(ma, eephys) != NULL)
+	if (mii_phy_match(ma, makphys) != NULL)
 		return (10);
 
 	return (0);
@@ -215,7 +174,7 @@ makphyattach(device_t parent, device_t s
 	struct mii_data *mii = ma->mii_data;
 	const struct mii_phydesc *mpd;
 
-	mpd = mii_phy_match(ma, eephys);
+	mpd = mii_phy_match(ma, makphys);
 	aprint_naive(": Media interface\n");
 	aprint_normal(": %s, rev. %d\n", mpd->mpd_name, MII_REV(ma->mii_id2));
 
@@ -225,45 +184,22 @@ makphyattach(device_t parent, device_t s
 	sc->mii_mpd_rev = MII_REV(ma->mii_id2);
 	sc->mii_inst = mii->mii_instance;
 	sc->mii_phy = ma->mii_phyno;
-	sc->mii_funcs = &eephy_funcs;
+	sc->mii_funcs = &makphy_funcs;
 	sc->mii_pdata = mii;
 	sc->mii_flags = ma->mii_flags;
 	sc->mii_anegticks = MII_ANEGTICKS;
 
-	/* XXX No loopback support yet, although the hardware can do it. */
-	sc->mii_flags |= MIIF_NOLOOP;
-
 	/* Make sure page 0 is selected. */
-	PHY_WRITE(sc, E1000_EADR, 0);
+	PHY_WRITE(sc, MAKPHY_EADR, 0);
 
-	/* Switch to copper-only mode if necessary. */
-	if (sc->mii_mpd_model == MII_MODEL_MARVELL_E1111 &&
-	    (sc->mii_flags & MIIF_HAVEFIBER) == 0) {
-		/*
-		 * The onboard 88E1111 PHYs on the Sun X4100 M2 come
-		 * up with fiber/copper auto-selection enabled, even
-		 * though the machine only has copper ports.  This
-		 * makes the chip autoselect to 1000baseX, and makes
-		 * it impossible to select any other media.  So
-		 * disable fiber/copper autoselection.
-		 */
-		int reg = PHY_READ(sc, E1000_ESSR);
-		if ((reg & E1000_ESSR_HWCFG_MODE) == E1000_ESSR_RGMII_COPPER) {
-			reg |= E1000_ESSR_DIS_FC;
-			PHY_WRITE(sc, E1000_ESSR, reg);
-		}
-	}
-
-	/* Switch to fiber-only mode if necessary. */
-	if (sc->mii_mpd_model == MII_MODEL_xxMARVELL_E1112 &&
-	    sc->mii_flags & MIIF_HAVEFIBER) {
-		int page = PHY_READ(sc, E1000_EADR);
-		PHY_WRITE(sc, E1000_EADR, 2);
-		int reg = PHY_READ(sc, E1000_SCR);
-		reg &= ~E1000_SCR_MODE_MASK;
-		reg |= E1000_SCR_MODE_1000BX;
-		PHY_WRITE(sc, E1000_SCR, reg);
-		PHY_WRITE(sc, E1000_EADR, page);
+	switch (sc->mii_mpd_model) {
+	case MII_MODEL_xxMARVELL_E1011:
+	case MII_MODEL_xxMARVELL_E1112:
+		if (PHY_READ(sc, MAKPHY_ESSR) & ESSR_FIBER_LINK)
+			sc->mii_flags |= MIIF_HAVEFIBER;
+                break;
+	default:
+		break;
 	}
 
 	PHY_RESET(sc);
@@ -284,72 +220,42 @@ makphyattach(device_t parent, device_t s
 static void
 makphy_reset(struct mii_softc *sc)
 {
-	int reg, i;
+	int reg;
 
-	reg = PHY_READ(sc, MII_BMCR);
-	reg |= BMCR_RESET;
-	PHY_WRITE(sc, MII_BMCR, reg);
-	
-	for (i = 0; i < 500; i++) {
-		DELAY(1);
-		reg = PHY_READ(sc, MII_BMCR);
-		if (!(reg & BMCR_RESET))
-			break;
-	}
+	mii_phy_reset(sc);
 
 	/*
 	 * Initialize PHY Specific Control Register.
 	 */
-	reg = PHY_READ(sc, E1000_SCR);
+	reg = PHY_READ(sc, MAKPHY_PSCR);
 
 	/* Assert CRS on transmit. */
-	reg |= E1000_SCR_ASSERT_CRS_ON_TX;
-
-	/* Enable auto crossover. */
 	switch (sc->mii_mpd_model) {
-	case MII_MODEL_xxMARVELL_E3016:
-	case MII_MODEL_xxMARVELL_E3082:
-		/* Bits are in a different position.  */
-		reg |= (E1000_SCR_AUTO_X_MODE >> 1);
+	case MII_MODEL_MARVELL_E1000_0:
+	case MII_MODEL_MARVELL_E1000_3:
+	case MII_MODEL_MARVELL_E1000_5:
+	case MII_MODEL_MARVELL_E1000_6:
+	case MII_MODEL_xxMARVELL_E1000S:
+	case MII_MODEL_xxMARVELL_E1011:
+	case MII_MODEL_xxMARVELL_E1111:
+		reg |= PSCR_CRS_ON_TX;
 		break;
-	default:
-		/* Automatic crossover causes problems for 1000baseX. */
-		if (sc->mii_flags & MIIF_IS_1000X)
-			reg &= ~E1000_SCR_AUTO_X_MODE;
-		else
-			reg |= E1000_SCR_AUTO_X_MODE;
-	}
-
-	/* Disable energy detect; only available on some models. */
-	switch(sc->mii_mpd_model) {
-	case MII_MODEL_xxMARVELL_E3016:
-		reg &= ~E3000_SCR_EN_DETECT_MASK;
-		break;
-	case MII_MODEL_MARVELL_E1011:
-	case MII_MODEL_MARVELL_E1111:
-	case MII_MODEL_xxMARVELL_E1112:
-	case MII_MODEL_xxMARVELL_PHYG65G:
-		reg &= ~E1000_SCR_EN_DETECT_MASK;
+	default: /* No PSCR_CRS_ON_TX bit */
 		break;
 	}
 
 	/* Enable scrambler if necessary. */
 	if (sc->mii_mpd_model == MII_MODEL_xxMARVELL_E3016)
-		reg &= ~E3000_SCR_SCRAMBLER_DISABLE;
+		reg &= ~E3016_PSCR_SCRAMBLE_DIS;
 
 	/*
 	 * Store next page in the Link Partner Next Page register for
 	 * compatibility with 802.3ab.
 	 */
 	if (sc->mii_mpd_model == MII_MODEL_xxMARVELL_E3016)
-		reg |= E3000_SCR_REG8_NEXT_PAGE;
-
-	PHY_WRITE(sc, E1000_SCR, reg);
+		reg |= E3016_PSCR_REG8NXTPG;
 
-	/* 25 MHz TX_CLK should always work. */
-	reg = PHY_READ(sc, E1000_ESCR);
-	reg |= E1000_ESCR_TX_CLK_25;
-	PHY_WRITE(sc, E1000_ESCR, reg);
+	PHY_WRITE(sc, MAKPHY_PSCR, reg);
 
 	/* Configure LEDs if they were left unconfigured. */
 	if (sc->mii_mpd_model == MII_MODEL_xxMARVELL_E3016 &&
@@ -358,14 +264,7 @@ makphy_reset(struct mii_softc *sc)
 		PHY_WRITE(sc, 0x16, reg);
 	}
 
-	/*
-	 * Do a software reset for these settings to take effect.
-	 * Disable autonegotiation, such that all capabilities get
-	 * advertised when it is switched back on.
-	 */
-	reg = PHY_READ(sc, MII_BMCR);
-	reg &= ~BMCR_AUTOEN;
-	PHY_WRITE(sc, MII_BMCR, reg | BMCR_RESET);
+	mii_phy_reset(sc);
 }
 
 static int
@@ -443,15 +342,16 @@ static void
 makphy_status(struct mii_softc *sc)
 {
 	struct mii_data *mii = sc->mii_pdata;
-	int bmcr, gsr, ssr;
+	int bmcr, gsr, pssr;
 
 	mii->mii_media_status = IFM_AVALID;
 	mii->mii_media_active = IFM_ETHER;
 
 	bmcr = PHY_READ(sc, MII_BMCR);
-	ssr = PHY_READ(sc, E1000_SSR);
+	/* XXX FIXME: Use different page for Fiber on newer chips */
+	pssr = PHY_READ(sc, MAKPHY_PSSR);
 
-	if (ssr & E1000_SSR_LINK)
+	if (pssr & PSSR_LINK)
 		mii->mii_media_status |= IFM_ACTIVE;
 
 	if (bmcr & BMCR_ISO) {
@@ -463,30 +363,44 @@ makphy_status(struct mii_softc *sc)
 	if (bmcr & BMCR_LOOP)
 		mii->mii_media_active |= IFM_LOOP;
 
-	if (!(ssr & E1000_SSR_SPD_DPLX_RESOLVED)) {
+	/*
+	 * Check Speed and Duplex Resolved bit.
+	 * XXX Note that this bit is always 1 when autonego is not enabled.
+	 */
+	if (!(pssr & PSSR_RESOLVED)) {
 		/* Erg, still trying, I guess... */
 		mii->mii_media_active |= IFM_NONE;
 		return;
 	}
 
+	/* XXX FIXME: Use different page for Fiber on newer chips */
 	if (sc->mii_flags & MIIF_IS_1000X) {
 		mii->mii_media_active |= IFM_1000_SX;
 	} else {
-		if (ssr & E1000_SSR_1000MBS)
+		switch (PSSR_SPEED_get(pssr)) {
+		case SPEED_1000:
 			mii->mii_media_active |= IFM_1000_T;
-		else if (ssr & E1000_SSR_100MBS)
+			break;
+		case SPEED_100:
 			mii->mii_media_active |= IFM_100_TX;
-		else
+			break;
+		case SPEED_10:
 			mii->mii_media_active |= IFM_10_T;
+			break;
+		default:
+			mii->mii_media_active |= IFM_NONE;
+			mii->mii_media_status = 0;
+			return;
+		}
 	}
 
-	if (ssr & E1000_SSR_DUPLEX)
+	if (pssr & PSSR_DUPLEX)
 		mii->mii_media_active |= mii_phy_flowstatus(sc) | IFM_FDX;
 	else
 		mii->mii_media_active |= IFM_HDX;
 
 	if (IFM_SUBTYPE(mii->mii_media_active) == IFM_1000_T) {
-		gsr = PHY_READ(sc, MII_100T2SR) | PHY_READ(sc, MII_100T2SR);
+		gsr = PHY_READ(sc, MII_100T2SR);
 		if (gsr & GTSR_MS_RES)
 			mii->mii_media_active |= IFM_ETH_MASTER;
 	}

Index: src/sys/dev/mii/makphyreg.h
diff -u src/sys/dev/mii/makphyreg.h:1.8 src/sys/dev/mii/makphyreg.h:1.9
--- src/sys/dev/mii/makphyreg.h:1.8	Tue Dec 25 08:33:52 2018
+++ src/sys/dev/mii/makphyreg.h	Fri Dec 28 06:20:32 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: makphyreg.h,v 1.8 2018/12/25 08:33:52 msaitoh Exp $	*/
+/*	$NetBSD: makphyreg.h,v 1.9 2018/12/28 06:20:32 msaitoh Exp $	*/
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -36,7 +36,7 @@
  * Marvell 88E1000 ``Alaska'' 10/100/1000 PHY registers.
  */
 
-#define	MII_MAKPHY_PSCR		0x10	/* PHY specific control register */
+#define	MAKPHY_PSCR		0x10	/* PHY specific control register */
 #define	PSCR_DIS_JABBER		(1U << 0)   /* disable jabber */
 #define	PSCR_POL_REV		(1U << 1)   /* polarity reversal */
 #define	PSCR_SQE_TEST		(1U << 2)   /* SQE test */
@@ -44,6 +44,7 @@
 #define	PSCR_DIS_125CLK		(1U << 4)   /* 125CLK low */
 #define	PSCR_MDI_XOVER_MODE(x)	((x) << 5)  /* crossover mode */
 #define	PSCR_LOW_10T_THRESH	(1U << 7)   /* lower 10BASE-T Rx threshold */
+#define	PSCR_EN_DETECT(x)	((x) << 8)  /* Energy Detect */
 #define	PSCR_FORCE_LINK_GOOD	(1U << 10)  /* force link good */
 #define	PSCR_CRS_ON_TX		(1U << 11)  /* assert CRS on transmit */
 #define	PSCR_RX_FIFO(x)		((x) << 12) /* Rx FIFO depth */
@@ -53,7 +54,44 @@
 #define	XOVER_MODE_MDIX		1
 #define	XOVER_MODE_AUTO		2
 
-#define	MII_MAKPHY_PSSR		0x11	/* PHY specific status register */
+/* 88E3016 */
+/* bit 2 and 3 are reserved */
+#define	E3016_PSCR_MDI_XOVER_MODE(x) ((x) << 4)  /* crossover mode */
+#define	E3016_PSCR_SIGDET_POLARITY (1U << 6)  /* 0: Active H, 1: Active L */
+#define	E3016_PSCR_EXTDIST	(1U << 7)  /* Enable Extended Distance */
+#define	E3016_PSCR_FEFI_DIS	(1U << 8)  /* Disable FEFI */
+#define	E3016_PSCR_SCRAMBLE_DIS	(1U << 9)  /* Disable Scrambler */
+/* bit 10 is reserved */
+#define	E3016_PSCR_NLPGEN_DIS	(1U << 11)  /* Disable Linkpulse Generation */
+#define	E3016_PSCR_REG8NXTPG	(1U << 12)  /* En. Link Partner Next Page R */
+#define	E3016_PSCR_NLPCHK_DIS	(1U << 13)  /* Disable NLP check */
+#define	E3016_PSCR_EN_DETECT	(1U << 14)  /* Energy Detect */
+/* bit 15 is reserved */
+
+/* 88E1112 page 1 */
+#define	MAKPHY_FSCR		0x10	/* Fiber specific control register */
+#define	FSCR_XMITTER_DIS	0x0008	/* Transmitter Disable */
+
+/* 88E1112 page 2 */
+#define	MAKPHY_MSCR		0x10	/* MAC specific control register */
+#define	MSCR_TX_FIFODEPTH	0xc000	/* Transmi FIFO Depth */
+#define	MSCR_RX_FIFODEPTH	0x3000	/* Receive FIFO Depth */
+#define	MSCR_AUTOPREF_MASK	0x0c00	/* Autoselect preferred media mask */
+#define	MSCR_AUTOPREF_NO	0x0000	/*  No preference */
+#define	MSCR_AUTOPREF_FIBER	0x0400	/*  Preferred Fiber */
+#define	MSCR_AUTOPREF_COPPER	0x0800	/*  Preferred Copper */
+#define	MSCR_MODE_MASK		0x0380	/* Mode select mask */
+#define	MSCR_M_100FX		0x0000	/*  100BASE-FX */
+#define	MSCR_M_COOPER_GBIC	0x0080	/*  Copper GBIC */
+#define	MSCR_M_AUTO_COPPER_SGMII 0x0100	/*  Auto Copper/SGMII */
+#define	MSCR_M_AUTO_COPPER_1000X 0x0180	/*  Auto Copper/1000BASE-X */
+#define	MSCR_M_COPPER		0x0280	/*  Copper only */
+#define	MSCR_M_SGMII		0x0300	/*  SGMII only */
+#define	MSCR_M_1000X		0x0380	/*  1000BASE-X only */
+#define	MSCR_SGMII_PDOWN	0x0008	/* SGMII MAC Interface Power Down */
+#define	MSCR_ENHANCED_SGMII	0x0004	/* Enhanced SGMII */
+
+#define	MAKPHY_PSSR		0x11	/* PHY specific status register */
 #define	PSSR_JABBER		(1U << 0)   /* jabber indication */
 #define	PSSR_POLARITY		(1U << 1)   /* polarity indiciation */
 #define	PSSR_MDIX		(1U << 6)   /* 1 = MIDX, 0 = MDI */
@@ -69,7 +107,7 @@
 #define	SPEED_1000		2
 #define	SPEED_reserved		3
 
-#define	MII_MAKPHY_IE		0x12	/* Interrupt enable */
+#define	MAKPHY_IE		0x12	/* Interrupt enable */
 #define	IE_JABBER		(1U << 0)   /* jabber indication */
 #define	IE_POL_CHANGED		(1U << 1)   /* polarity changed */
 #define	IE_MDI_XOVER_CHANGED	(1U << 6)   /* MDI/MDIX changed */
@@ -83,20 +121,20 @@
 #define	IE_SPEED_CHANGED	(1U << 14)  /* speed changed */
 #define	IE_ANEG_ERROR		(1U << 15)  /* autonegotiation error occurred */
 
-#define	MII_MAKPHY_IS		0x13	/* Interrupt status */
+#define	MAKPHY_IS		0x13	/* Interrupt status */
 	/* See Interrupt enable bits */
 
-#define	MII_MAKPHY_EPSC		0x14	/* extended PHY specific control */
+#define	MAKPHY_EPSC		0x14	/* extended PHY specific control */
 #define	EPSC_TX_CLK(x)		((x) << 4)  /* transmit clock */
 #define	EPSC_TBI_RCLK_DIS	(1U << 12)  /* TBI RCLK disable */
 #define	EPSC_TBI_RX_CLK125_EN	(1U << 13)  /* TBI RX_CLK125 enable */
 #define	EPSC_LINK_DOWN_NO_IDLES	(1U << 15)  /* 1 = lost lock detect */
 
-#define	MII_MAKPHY_REC		0x15	/* receive error counter */
+#define	MAKPHY_REC		0x15	/* receive error counter */
 
-#define	MII_MAKPHY_EADR		0x16	/* extended address register */
+#define	MAKPHY_EADR		0x16	/* extended address register */
 
-#define	MII_MAKPHY_LEDCTRL	0x18	/* LED control */
+#define	MAKPHY_LEDCTRL	0x18	/* LED control */
 #define	LEDCTRL_LED_TX		(1U << 0)   /* 1 = activ/link, 0 = xmit */
 #define	LEDCTRL_LED_RX		(1U << 1)   /* 1 = activ/link, 1 = recv */
 #define	LEDCTRL_LED_DUPLEX	(1U << 2)   /* 1 = duplex, 0 = dup/coll */
@@ -105,10 +143,21 @@
 #define	LEDCTRL_PULSE_STRCH(x)	((x) << 12)
 #define	LEDCTRL_DISABLE		(1U << 15)  /* disable LED */
 
-#define MII_MAKPHY_ESSR		0x1b    /* Extended PHY specific status */
-#define ESSR_FIBER_LINK		0x2000
+#define MAKPHY_ESSR		0x1b    /* Extended PHY specific status */
+#define ESSR_AUTOSEL_DISABLE	0x8000	/* Fiber/Copper autoselect disable */
+#define ESSR_FIBER_LINK		0x2000	/* Fiber/Copper resolution */
+#define ESSR_SER_ANEG_BYPASS	0x1000	/* Serial Iface Aneg bypass enable */
+#define ESSR_SER_ANEG_BYPASS_ST	0x0800	/* Serial Iface Aneg bypass status */
+#define ESSR_INTR_POLARITY	0x0400	/* Interrupt Polarity */
+#define ESSR_AUTO_MEDIAREG_SEL	0x0200	/* Auto Medium Register Selection */
+#define ESSR_DTE_DROP_HYST	0x01e0	/* DTE detect status drop hysteresis */
+#define ESSR_DTE_POWER		0x0010
+#define ESSR_HWCFG_MODE		0x000f
 #define ESSR_GMII_COPPER	0x000f
 #define ESSR_GMII_FIBER		0x0007
+#define ESSR_RGMII_COPPER	0x000b
+#define ESSR_RGMII_FIBER	0x0003
+#define ESSR_RGMII_SGMII	0x0006
 #define ESSR_TBI_COPPER		0x000d
 #define ESSR_TBI_FIBER		0x0005
 

Reply via email to