Module Name:    src
Committed By:   rjs
Date:           Tue Sep  6 19:38:23 UTC 2011

Modified Files:
        src/sys/dev/marvell: if_mvgbe.c

Log Message:
Only zero MVGBE_MTU on Orion platforms.


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/dev/marvell/if_mvgbe.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/marvell/if_mvgbe.c
diff -u src/sys/dev/marvell/if_mvgbe.c:1.12 src/sys/dev/marvell/if_mvgbe.c:1.13
--- src/sys/dev/marvell/if_mvgbe.c:1.12	Thu Sep  1 14:46:23 2011
+++ src/sys/dev/marvell/if_mvgbe.c	Tue Sep  6 19:38:23 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_mvgbe.c,v 1.12 2011/09/01 14:46:23 jakllsch Exp $	*/
+/*	$NetBSD: if_mvgbe.c,v 1.13 2011/09/06 19:38:23 rjs Exp $	*/
 /*
  * Copyright (c) 2007, 2008 KIYOHARA Takashi
  * All rights reserved.
@@ -25,7 +25,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_mvgbe.c,v 1.12 2011/09/01 14:46:23 jakllsch Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_mvgbe.c,v 1.13 2011/09/06 19:38:23 rjs Exp $");
 
 #include "rnd.h"
 
@@ -190,7 +190,7 @@
 
 	kmutex_t sc_mtx;
 
-	int sc_fix_tqtb;
+	int sc_flags;
 };
 
 struct mvgbe_softc {
@@ -286,6 +286,7 @@
 	int irqs[3];
 	int flags;
 #define FLAGS_FIX_TQTB	(1 << 0)
+#define FLAGS_FIX_MTU	(1 << 1)
 } mvgbe_ports[] = {
 	{ MARVELL_DISCOVERY_II,		0, 3, { 32, 33, 34 }, 0 },
 	{ MARVELL_DISCOVERY_III,	0, 3, { 32, 33, 34 }, 0 },
@@ -294,13 +295,13 @@
 	{ MARVELL_DISCOVERY_V,		0, ?, { }, 0 },
 	{ MARVELL_DISCOVERY_VI,		0, ?, { }, 0 },
 #endif
-	{ MARVELL_ORION_1_88F5082,	0, 1, { 21 }, 0 },
-	{ MARVELL_ORION_1_88F5180N,	0, 1, { 21 }, 0 },
-	{ MARVELL_ORION_1_88F5181,	0, 1, { 21 }, 0 },
-	{ MARVELL_ORION_1_88F5182,	0, 1, { 21 }, 0 },
-	{ MARVELL_ORION_2_88F5281,	0, 1, { 21 }, 0 },
-	{ MARVELL_ORION_1_88F6082,	0, 1, { 21 }, 0 },
-	{ MARVELL_ORION_1_88W8660,	0, 1, { 21 }, 0 },
+	{ MARVELL_ORION_1_88F5082,	0, 1, { 21 }, FLAGS_FIX_MTU },
+	{ MARVELL_ORION_1_88F5180N,	0, 1, { 21 }, FLAGS_FIX_MTU },
+	{ MARVELL_ORION_1_88F5181,	0, 1, { 21 }, FLAGS_FIX_MTU },
+	{ MARVELL_ORION_1_88F5182,	0, 1, { 21 }, FLAGS_FIX_MTU },
+	{ MARVELL_ORION_2_88F5281,	0, 1, { 21 }, FLAGS_FIX_MTU },
+	{ MARVELL_ORION_1_88F6082,	0, 1, { 21 }, FLAGS_FIX_MTU },
+	{ MARVELL_ORION_1_88W8660,	0, 1, { 21 }, FLAGS_FIX_MTU },
 
 	{ MARVELL_KIRKWOOD_88F6180,	0, 1, { 11 }, FLAGS_FIX_TQTB },
 	{ MARVELL_KIRKWOOD_88F6192,	0, 1, { 11 }, FLAGS_FIX_TQTB },
@@ -380,7 +381,7 @@
 		    mvgbe_ports[i].unit != mva->mva_unit)
 			continue;
 
-		sc->sc_fix_tqtb = mvgbe_ports[i].flags & FLAGS_FIX_TQTB;
+		sc->sc_flags = mvgbe_ports[i].flags;
 
 		for (j = 0; j < mvgbe_ports[i].ports; j++) {
 			gbea.mva_name = "mvgbe";
@@ -980,7 +981,8 @@
 		return ENOBUFS;
 	}
 
-	MVGBE_WRITE(sc, MVGBE_MTU, 0);		/* hw reset value is wrong */
+	if (csc->sc_flags & FLAGS_FIX_MTU)
+		MVGBE_WRITE(sc, MVGBE_MTU, 0);	/* hw reset value is wrong */
 	MVGBE_WRITE(sc, MVGBE_PSC,
 	    MVGBE_PSC_ANFC |			/* Enable Auto-Neg Flow Ctrl */
 	    MVGBE_PSC_RESERVED |		/* Must be set to 1 */
@@ -996,7 +998,7 @@
 	MVGBE_WRITE(sc, MVGBE_CRDP(0), MVGBE_RX_RING_ADDR(sc, 0));
 	MVGBE_WRITE(sc, MVGBE_TCQDP, MVGBE_TX_RING_ADDR(sc, 0));
 
-	if (csc->sc_fix_tqtb) {
+	if (csc->sc_flags & FLAGS_FIX_TQTB) {
 		/*
 		 * Queue 0 (offset 0x72700) must be programmed to 0x3fffffff.
 		 * And offset 0x72704 must be programmed to 0x03ffffff.

Reply via email to