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
This commit is contained in:
parent
8c72577900
commit
bc9b178cd0
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=363799
@ -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);
|
||||
}
|
||||
|
@ -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_t dev, phandle_t node,
|
||||
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 */
|
||||
|
Loading…
Reference in New Issue
Block a user