[U-Boot-Users] [PATCH] fdt: Add simple alias support to fdt print command

Jerry Van Baren gerald.vanbaren at ge.com
Wed Jul 9 19:02:33 CEST 2008


Kumar Gala wrote:
> 
> On Jul 9, 2008, at 10:17 AM, Jerry Van Baren wrote:
> 
>> Kumar Gala wrote:
>>> If the path we are trying to print doesn't exist see if it matches an
>>> aliases.  We don't do anything fancy at this point, but just strip the
>>> leading '/' if it exists and see if we have an exact match to an alias.
>>> In the future we could try and prefix matching so the alias could be 
>>> used
>>> as a shorter path reference.
>>> Signed-off-by: Kumar Gala <galak at kernel.crashing.org>
>>
>> Cool and useful too.  Out of curiousity, does "real" Open Firmware do 
>> this sort of thing with aliases?
> 
> I'm pretty sure it the Apple OF implementation does.  However I dont 
> remember to what extent it does from my playing around with OF on Apple HW.

Sounds like I'm going to have to preempt my kids on the olpc and see 
what OF does on it.  :-)

>> One reservation I have (which may disappear if the answer to the 
>> previous question is "yes"), it automatically and silently 
>> dereferences the /aliases/X node when asked to display /X or X (but 
>> only if /X doesn't exist in the dtb).  This is not an obvious behavior 
>> since X isn't real.
> 
> we could print out something about using an alias so the user knows that 
> its happening.
> 
>> Should we have a different display syntax to force the dereference of 
>> an alias X?  Assuming "*" is a good choice, this would change the 
>> behavior
>>  fdt print *ethernet0
>> to dereference /aliases/ethernet0 and print out
>>  /soc8360 at e0000000/.../enet0 (or whatever).
> 
> Lets says I have an alias for 'soc' to 'soc8360 at e000000'.  I want to be 
> able to in the future do print /soc/enet0 and have that work.  
> Introducing some new syntax would make that difficult and more ugly.
> 
> - k

Thinking out loud... we could define the syntax that a leading "*" 
indicates the first part of the path is a dereference of /aliases.

Assuming
   /aliases/soc = /soc8360 at e000000
   /aliases/ethernet0 = /soc8360 at e0000000/.../enet0
then
   print *soc/enet0
and
   print *ethernet0
would both work and print the right thing.  You *would* have to know 
that the first element of the path is an /aliases dereference.  Your 
original patch did not require that piece of knowledge (but silently and 
automagically, which makes me nervous).

gvb




More information about the U-Boot mailing list