OF device mappings

Grant Likely grant.likely at secretlab.ca
Sun Mar 1 05:04:11 EST 2009


On Sat, Feb 28, 2009 at 10:46 AM, Gary Thomas <gary at mlbassoc.com> wrote:
> Still looking for some help...  I need to be able to locate
> the kernel platform_device which corresponds to an instance
> from my OF tree.  Basically, I have a [somewhat] unrelated
> driver which needs to know these things, so the drivers in
> question should not have to be affected.
>
> In particular, I'm working with the net/dsa drivers (Distributed
> Switch Architecture) which need access to the network driver as
> well as the MII/MDIO bus driver.  It doesn't make sense to tie
> those drivers back to DSA, but rather let the DSA driver find
> its way to them.
>
> I've defined this in by DTS tree:
>        lan1 {
>                cell-index = <0x01>;

Side note, why do you have cell-index here?  I suspect that you're
using it incorrectly.

>                compatible = "marvell,m88e609x";
>                net_dev = "fsl-gianfar.0";
>                mii_bus = "fsl-gianfar_mdio.14";

These two lines don't make much sense.  They are encoding Linux
internal details with could very well change in the future.

>                net_devX = <&eth0>;
>                mii_busX = <&mii_bus>;

This is the right thing to do.  This give you the phandle to the relevant node.

Once you have a handle to the node, you can iterate through the
of_platform bus devices and look for a node which has a matching node
pointer stored in archdata.  That will give you a struct device which
is contained by a struct of_device (note well: this will give you an
of_device, not a platform_device.)

I'm working on a set of patches which should make this much easier.
I'll try to remember to CC you when I post them to the list.

>        };
> ... two ways to find the same node.
>
> Using 'net_dev' (which I admit is pretty hokey), I can look
> up the corresponding platform device, which does work for
> the DSA layer.  What I want is to be able to get to this
> from the 'net_devX' pointer, but I don't seem to be able
> to get out of the OF tree and into the actual platform
> device tree to find the appropriate instance.
>
> Any pointers?
>
> Thanks
>
> --
> ------------------------------------------------------------
> Gary Thomas                 |  Consulting for the
> MLB Associates              |    Embedded world
> ------------------------------------------------------------
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev at ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-dev
>



-- 
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.



More information about the Linuxppc-dev mailing list