svn commit: r363799 - head/sys/dev/fdt
Andrew Turner
andrew at FreeBSD.org
Mon Aug 3 16:26:11 UTC 2020
Author: andrew
Date: Mon Aug 3 16:26:10 2020
New Revision: 363799
URL: https://svnweb.freebsd.org/changeset/base/363799
Log:
Allow child classes of simplebus to call attach directly
Reduce code duplication when a bus is subclassed from simplebus by allowing
them to call simplebus_attach directly. This is useful when the child bus
will just implement the same calls.
As not all children will expect to have a ranges property, e.g. the
Raspberry Pi firmware, allow this property to be missing.
Reviewed by: manu
Sponsored by: Innovate UK
Differential Revision: https://reviews.freebsd.org/D25925
Modified:
head/sys/dev/fdt/simplebus.c
head/sys/dev/fdt/simplebus.h
Modified: head/sys/dev/fdt/simplebus.c
==============================================================================
--- head/sys/dev/fdt/simplebus.c Mon Aug 3 13:12:07 2020 (r363798)
+++ head/sys/dev/fdt/simplebus.c Mon Aug 3 16:26:10 2020 (r363799)
@@ -46,7 +46,6 @@ __FBSDID("$FreeBSD$");
* Bus interface.
*/
static int simplebus_probe(device_t dev);
-static int simplebus_attach(device_t dev);
static struct resource *simplebus_alloc_resource(device_t, device_t, int,
int *, rman_res_t, rman_res_t, rman_res_t, u_int);
static void simplebus_probe_nomatch(device_t bus, device_t child);
@@ -134,7 +133,7 @@ simplebus_probe(device_t dev)
return (BUS_PROBE_GENERIC);
}
-static int
+int
simplebus_attach(device_t dev)
{
struct simplebus_softc *sc;
@@ -142,7 +141,8 @@ simplebus_attach(device_t dev)
sc = device_get_softc(dev);
simplebus_init(dev, 0);
- if (simplebus_fill_ranges(sc->node, sc) < 0) {
+ if ((sc->flags & SB_FLAG_NO_RANGES) == 0 &&
+ simplebus_fill_ranges(sc->node, sc) < 0) {
device_printf(dev, "could not get ranges\n");
return (ENXIO);
}
Modified: head/sys/dev/fdt/simplebus.h
==============================================================================
--- head/sys/dev/fdt/simplebus.h Mon Aug 3 13:12:07 2020 (r363798)
+++ head/sys/dev/fdt/simplebus.h Mon Aug 3 16:26:10 2020 (r363799)
@@ -47,6 +47,8 @@ struct simplebus_softc {
struct simplebus_range *ranges;
int nranges;
+#define SB_FLAG_NO_RANGES (1 << 0) /* Bus doesn't have ranges property */
+ int flags;
pcell_t acells, scells;
};
@@ -63,4 +65,7 @@ struct simplebus_devinfo *simplebus_setup_dinfo(device
struct simplebus_devinfo *di);
int simplebus_fill_ranges(phandle_t node,
struct simplebus_softc *sc);
+
+int simplebus_attach(device_t dev);
+
#endif /* _FDT_SIMPLEBUS_H */
More information about the svn-src-head
mailing list