svn commit: r183827 - head/sys/dev/bm
Nathan Whitehorn
nwhitehorn at FreeBSD.org
Mon Oct 13 17:33:56 UTC 2008
Author: nwhitehorn
Date: Mon Oct 13 17:33:55 2008
New Revision: 183827
URL: http://svn.freebsd.org/changeset/base/183827
Log:
Change the way we enable the BMAC cell in macio. Instead of calling the
macio's enable-enet word, which apparently does nothing on some machines,
open an OF instance of the ethernet controller. This fixes cold booting
from disk on my Blue & White G3.
MFC after: 3 days
Modified:
head/sys/dev/bm/if_bm.c
Modified: head/sys/dev/bm/if_bm.c
==============================================================================
--- head/sys/dev/bm/if_bm.c Mon Oct 13 17:33:44 2008 (r183826)
+++ head/sys/dev/bm/if_bm.c Mon Oct 13 17:33:55 2008 (r183827)
@@ -1119,21 +1119,25 @@ bm_chip_setup(struct bm_softc *sc)
{
uint16_t reg;
uint16_t *eaddr_sect;
- char hrow_path[128];
- ihandle_t hrow_ih;
+ char path[128];
+ ihandle_t bmac_ih;
eaddr_sect = (uint16_t *)(sc->sc_enaddr);
- /* Enable BMAC cell */
- OF_package_to_path(OF_parent(ofw_bus_get_node(sc->sc_dev)),
- hrow_path, sizeof(hrow_path));
- hrow_ih = OF_open(hrow_path);
- if (hrow_ih == -1) {
+ /*
+ * Enable BMAC cell by opening and closing its OF node. This enables
+ * the cell in macio as a side effect. We should probably directly
+ * twiddle the FCR bits, but we lack a good interface for this at the
+ * present time.
+ */
+
+ OF_package_to_path(ofw_bus_get_node(sc->sc_dev), path, sizeof(path));
+ bmac_ih = OF_open(path);
+ if (bmac_ih == -1) {
device_printf(sc->sc_dev,
"Enabling BMAC cell failed! Hoping it's already active.\n");
} else {
- OF_call_method("enable-enet", hrow_ih, 0, 0);
- OF_close(hrow_ih);
+ OF_close(bmac_ih);
}
/* Reset chip */
More information about the svn-src-all
mailing list