Skip site navigation (1)Skip section navigation (2)
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>