[Midnightbsd-cvs] src [9015] trunk/sys/dev/bge/if_bge.c: fix ipmi firmware

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Thu Sep 29 21:52:44 EDT 2016


Revision: 9015
          http://svnweb.midnightbsd.org/src/?rev=9015
Author:   laffer1
Date:     2016-09-29 21:52:44 -0400 (Thu, 29 Sep 2016)
Log Message:
-----------
fix ipmi firmware

Modified Paths:
--------------
    trunk/sys/dev/bge/if_bge.c

Modified: trunk/sys/dev/bge/if_bge.c
===================================================================
--- trunk/sys/dev/bge/if_bge.c	2016-09-30 01:52:13 UTC (rev 9014)
+++ trunk/sys/dev/bge/if_bge.c	2016-09-30 01:52:44 UTC (rev 9015)
@@ -3637,7 +3637,7 @@
 	}
 
 	bge_stop_fw(sc);
-	bge_sig_pre_reset(sc, BGE_RESET_START);
+	bge_sig_pre_reset(sc, BGE_RESET_SHUTDOWN);
 	if (bge_reset(sc)) {
 		device_printf(sc->bge_dev, "chip reset failed\n");
 		error = ENXIO;
@@ -3644,8 +3644,8 @@
 		goto fail;
 	}
 
-	bge_sig_legacy(sc, BGE_RESET_START);
-	bge_sig_post_reset(sc, BGE_RESET_START);
+	bge_sig_legacy(sc, BGE_RESET_SHUTDOWN);
+	bge_sig_post_reset(sc, BGE_RESET_SHUTDOWN);
 
 	if (bge_chipinit(sc)) {
 		device_printf(sc->bge_dev, "chip initialization failed\n");
@@ -3998,6 +3998,20 @@
 	} else
 		write_op = bge_writereg_ind;
 
+	if (sc->bge_asicrev != BGE_ASICREV_BCM5700 &&
+	    sc->bge_asicrev != BGE_ASICREV_BCM5701) {
+		CSR_WRITE_4(sc, BGE_NVRAM_SWARB, BGE_NVRAMSWARB_SET1);
+		for (i = 0; i < 8000; i++) {
+			if (CSR_READ_4(sc, BGE_NVRAM_SWARB) &
+			    BGE_NVRAMSWARB_GNT1)
+				break;
+			DELAY(20);
+		}
+		if (i == 8000) {
+			if (bootverbose)
+				device_printf(dev, "NVRAM lock timedout!\n");
+		}
+	}
 	/* Take APE lock when performing reset. */
 	bge_ape_lock(sc, BGE_APE_LOCK_GRC);
 



More information about the Midnightbsd-cvs mailing list