Subject: Re: [PATCH] Device tree bindings for Xilinx devices

From: David Gibson <[email-masked]>
Date: Fri, 12 Oct 2007 13:14:49 +1000

On Wed, Oct 10, 2007 at 11:27:14PM -0600, Grant Likely wrote:
> On 10/10/07, David Gibson <[email-masked]> wrote:
> > > My main concern is that I don't like the implicit numbering that
> > > occurs simply based on the order of devices in the device tree.  If
> > > the probe algorithm ever changes to parse in reverse order or
> > > something reorders the tree, then the device numbers also change.  :-(
> >
> > Way of the future, apparently, everything's supposed to use udev to
> > give things logical names.  No, I'm not thrilled at the prospect
> > either.
> 
> ...
> 
> So in the OF aliases approach, would udev need to read the aliases
> node when assigning names to devices?

Well... maybe.  Exactly how to sensibly propogate the information up
to userspace depends on the type of device and other factors.  In most
cases I'd expect some kind of kernel intermediary between the device
tree and udev, but there might be instances where it would make sense
for udev to directly access /proc/device-tree/aliases via a helper
program.

In any case, if the kernel does provide some sort of name/number for
the device, you can use the aliases for that.

> > > I'd rather be explicit.  In fact I've already been bitten by this
> > > where the mpc5200 has 6 PSC, each of which can be configured as a
> > > serial port.  However, I've got access to 3 different boards; each of
> > > which has the logical port numbers 100% unrelated to the 'cell'
> > > number.
> >
> > In any case, this can't really belong in a *device* binding.  Because
> > the numbering has to cross devices of the same basic type, but
> > different implementations.  Where "basic type" is based on how device
> > names are allocated, and is thus inherently Linux specific.
> 
> Okay, that makes sense.
> 
> > > > Segher's suggestion of using OF-style aliases for this is a fairly
> > > > good one, actually.  I just need to get to implementing it...
> > >
> > > /me needs to look up what that look like and how I would use it.  My
> > > knowledge of OF is sadly lacking.
> >
> > Short version by example:
> > / {
> >         /* ... */
> >         aliases {
> >                 hd = "/pci@f0000000/sata@f4000000/....";
> >                 enet0 = "/soc/ethernet@c000";
> >                 enet1 = "/soc/ethernet@d000";
> >                 enet2 = "/pci@f0000000/isa/ethernet@i480"
> >                 ttya = "/soc/serial@e000";
> >                 ttyb = "/pci/isa/serail@3f8";
> >         }
> > }
> 
> Ah, my plan worked...  I got you to teach me about OF aliases and I
> have to do any work myself.  :-)

Well, be careful, and take that example with a grain of salt.  I made
it up on the spot without checking a lot, so although it gives you the
general idea, I probably haven't followed conventions for the names of
the aliases and so forth.

> Hmm, yes that would provide the information nicely.  As long as the
> data is in the tree, I'm pretty happy.

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson