Date: Sun, 29 Jan 2012 17:00:38 +0100 From: Stefan Bethke <stb@lassitu.de> To: Marius Strobl <marius@alchemy.franken.de> Cc: FreeBSD Net <freebsd-net@freebsd.org>, Aleksandr Rybalko <ray@ddteam.net>, Adrian Chadd <adrian@freebsd.org>, FreeBSD-arch <freebsd-arch@freebsd.org> Subject: Re: Ethernet Switch Framework Message-ID: <3B5A749B-9553-4152-9441-3F343BA219FB@lassitu.de> In-Reply-To: <20120129153159.GA44362@alchemy.franken.de> References: <20120120221319.ca8b631f.ray@freebsd.org> <30A45A1E-CA13-4AC8-86FB-F8E06301D1F6@lassitu.de> <20120122195130.360261ce.ray@freebsd.org> <CAJ-VmokTh2q0ZH=kwU6GzJm5Mr4k7geJiFsoX_A9hcLhMZNxsg@mail.gmail.com> <0E31FEC4-963D-4AC8-9AB7-EE6D6D7F86EE@lassitu.de> <CAJ-Vmo=GRKRf%2BYsFqNm9d_T3Tq583uV_pabMV6ozuaytSRLivg@mail.gmail.com> <20120129001251.7e4cfe83.ray@ddteam.net> <CACVs6=-U9rr7cpeJ%2BVUgP3Xq1yRB=Xk1GjuzEOuXiEUoqGFq_Q@mail.gmail.com> <DBAB0C5C-5B2D-4430-8096-9E4DC7233961@bsdimp.com> <81B88904-6894-4AC3-80F3-2866216E494B@lassitu.de> <20120129153159.GA44362@alchemy.franken.de>
next in thread | previous in thread | raw e-mail | index | archive | help
Am 29.01.2012 um 16:31 schrieb Marius Strobl: > How about adding the MDIO provider via multi-pass probing? That idea > of that model was to attach things like drivers for interrupt = controllers > before any other driver that requires that resource. This seems like a > perfect match here and requires neither a specific hack to the nexus > (the platform generally needs to be multi-pass aware though and the > thing enabled in subr_bus.c) nor a hack to miibus(4). Please recall the devinfo graph that I posted earlier. The PHY arge0 = needs to talk to is attached to the MDIO master on the switch = controller, which in turn is attached to GE1's MDIO master. This would = require early attachment of the switch, in turn requiring early = attachment of arge_mdio, in turn requiring early attachment of = mips/mips/nexus. > We really need > to find a proper way of dealing with the constraints of the embedded- > world rather than to sprinkle hacks all over the place. Why is the above is less of a hack than making the ordering in nexus = configurable through a hint? Stefan --=20 Stefan Bethke <stb@lassitu.de> Fon +49 151 14070811 diff --git a/sys/mips/mips/nexus.c b/sys/mips/mips/nexus.c index b51357d..c4c207a 100644 --- a/sys/mips/mips/nexus.c +++ b/sys/mips/mips/nexus.c @@ -240,8 +240,11 @@ nexus_hinted_child(device_t bus, const char *dname, = int dunit) int result; int irq; int mem_hints_count; + int order; =20 - child =3D BUS_ADD_CHILD(bus, 0, dname, dunit); + order =3D 1000; /* there should be a define for the default = order */ + resource_int_value(dname, dunit, "order", &order); + child =3D BUS_ADD_CHILD(bus, order, dname, dunit); if (child =3D=3D NULL) return;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3B5A749B-9553-4152-9441-3F343BA219FB>