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
This commit is contained in:
Nathan Whitehorn 2008-10-13 17:33:55 +00:00
parent f184eace75
commit 1209e7e538
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=183827

View File

@ -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 */