PERFORCE change 154600 for review

Bruce M Simpson bms at FreeBSD.org
Sat Dec 13 09:04:16 PST 2008


http://perforce.freebsd.org/chv.cgi?CH=154600

Change 154600 by bms at bms_anglepoise on 2008/12/13 17:04:10

	Merge changes from my private branch which enable bfe(4)
	on the BCM5365P SoC to get as far as attaching the PHY;
	it doesn't get any interrupts, though, most likely
	due to bfe_pci_setup() needing to be rewritten for SiBa.

Affected files ...

.. //depot/projects/mips2/src/sys/dev/bfe/if_bfe.c#11 edit

Differences ...

==== //depot/projects/mips2/src/sys/dev/bfe/if_bfe.c#11 (text+ko) ====

@@ -29,6 +29,7 @@
 __FBSDID("$FreeBSD: src/sys/dev/bfe/if_bfe.c,v 1.45 2008/04/30 02:49:24 yongari Exp $");
 
 #include <sys/param.h>
+#include <sys/kdb.h>
 #include <sys/systm.h>
 #include <sys/sockio.h>
 #include <sys/mbuf.h>
@@ -79,7 +80,6 @@
 static void bfe_init_locked			(void *);
 static void bfe_stop				(struct bfe_softc *);
 static void bfe_watchdog			(struct bfe_softc *);
-static int  bfe_shutdown			(device_t);
 static void bfe_tick				(void *);
 static void bfe_txeof				(struct bfe_softc *);
 static void bfe_rxeof				(struct bfe_softc *);
@@ -622,8 +622,33 @@
 	return (0);
 }
 
+/*
+ * XXX: The SiBa version of bfe does not have an eeprom.
+ * We may also need to know the external clock speed of
+ * the SoC to set up the MDIO registers correctly.
+ */
+static void
+bfe_siba_get_config(struct bfe_softc *sc)
+{
+
+        /* XXX this is bogus */
+	sc->bfe_enaddr[0] = 0x00;
+	sc->bfe_enaddr[1] = 0x0f;
+	sc->bfe_enaddr[2] = 0xb5;
+	sc->bfe_enaddr[3] = 0x3d;
+	sc->bfe_enaddr[4] = 0x52;
+	sc->bfe_enaddr[5] = 0x90;
+
+	sc->bfe_phyaddr = 0x01;    /* XXX */
+
+        /* unused fields */
+	sc->bfe_mdc_port = 0;
+	sc->bfe_core_unit = 0;
+	sc->bfe_dma_offset = 0;
+}
+
 static void
-bfe_get_config(struct bfe_softc *sc)
+bfe_pci_get_config(struct bfe_softc *sc)
 {
 	u_int8_t eeprom[128];
 
@@ -647,6 +672,17 @@
 }
 
 static void
+bfe_get_config(struct bfe_softc *sc)
+{
+
+	if (sc->bfe_bus_type == BFE_BUS_PCI) {
+		bfe_pci_get_config(sc);
+	} else if (sc->bfe_bus_type == BFE_BUS_SIBA) {
+		bfe_siba_get_config(sc);
+	}
+}
+
+static void
 bfe_pci_setup(struct bfe_softc *sc, u_int32_t cores)
 {
 	u_int32_t bar_orig, pci_rev, val;


More information about the p4-projects mailing list