Index: simplebus.c =================================================================== --- simplebus.c (revision 239333) +++ simplebus.c (working copy) @@ -129,17 +129,20 @@ devclass_t simplebus_devclass; DRIVER_MODULE(simplebus, fdtbus, simplebus_driver, simplebus_devclass, 0, 0); +DRIVER_MODULE(simplebus, simplebus, simplebus_driver, simplebus_devclass, 0, 0); static int simplebus_probe(device_t dev) { - if (!ofw_bus_is_compatible_strict(dev, "simple-bus")) + /* This is template driver, so no need to check strict compat */ + if (!ofw_bus_is_compatible(dev, "simple-bus")) return (ENXIO); device_set_desc(dev, "Flattened device tree simple bus"); - return (BUS_PROBE_DEFAULT); + /* BUS_PROBE_GENERIC to allow more specific driver to attach */ + return (BUS_PROBE_GENERIC); } static int @@ -286,9 +289,6 @@ enum intr_polarity pol; int error, rid; - if (device_get_parent(child) != bus) - return (ECHILD); - di = device_get_ivars(child); if (di == NULL) return (ENXIO);