Re: [U-Boot] [PATCH 01/10] dm: fdt: scan for devices under /firmware too

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



On Wed, Aug 15, 2018 at 09:31:30AM -0600, Rob Herring wrote:
> On Wed, Aug 15, 2018 at 8:51 AM Michal Simek <michal.simek@xxxxxxxxxx> wrote:
> >
> > Hi Rob,
> >
> > On 15.8.2018 16:34, Tom Rini wrote:
> > > On Wed, Aug 15, 2018 at 04:30:15PM +0200, Michal Simek wrote:
> > >> On 15.8.2018 16:17, Tom Rini wrote:
> > >>> On Mon, Aug 13, 2018 at 05:53:38PM +0200, Jens Wiklander wrote:
> > >>>
> > >>>> Just as /chosen may contain devices /firmware may contain devices, scan
> > >>>> for devices under /firmware too.
> > >>>>
> > >>>> Signed-off-by: Jens Wiklander <jens.wiklander@xxxxxxxxxx>
> > >>>> ---
> > >>>>  drivers/core/root.c | 15 ++++++++++-----
> > >>>>  1 file changed, 10 insertions(+), 5 deletions(-)
> > >>>>
> > >>>> diff --git a/drivers/core/root.c b/drivers/core/root.c
> > >>>> index 72bcc7d7f2a3..0dca507e1187 100644
> > >>>> --- a/drivers/core/root.c
> > >>>> +++ b/drivers/core/root.c
> > >>>> @@ -265,9 +265,15 @@ static int dm_scan_fdt_node(struct udevice *parent, const void *blob,
> > >>>>    for (offset = fdt_first_subnode(blob, offset);
> > >>>>         offset > 0;
> > >>>>         offset = fdt_next_subnode(blob, offset)) {
> > >>>> -          /* "chosen" node isn't a device itself but may contain some: */
> > >>>> -          if (!strcmp(fdt_get_name(blob, offset, NULL), "chosen")) {
> > >>>> -                  pr_debug("parsing subnodes of \"chosen\"\n");
> > >>>> +          const char *node_name = fdt_get_name(blob, offset, NULL);
> > >>>> +
> > >>>> +          /*
> > >>>> +           * The "chosen" and "firmware" nodes aren't devices
> > >>>> +           * themselves but may contain some:
> > >>>> +           */
> > >>>> +          if (!strcmp(node_name, "chosen") ||
> > >>>> +              !strcmp(node_name, "firmware")) {
> > >>>> +                  pr_debug("parsing subnodes of \"%s\"\n", node_name);
> > >>>>
> > >>>>                    err = dm_scan_fdt_node(parent, blob, offset,
> > >>>>                                           pre_reloc_only);
> > >>>
> > >>> So, the /firmware node seems special.  Have you talked with the
> > >>> devicetree folks to get it listed in the spec?  That would seem rather
> > >>> valuable for something used by many parties.  Thanks!
> > >>>
> > >>
> > >> some days ago we have sent a patch for this too.
> > >> https://lists.denx.de/pipermail/u-boot/2018-August/338049.html
> > >>
> > >> It is using different way but it should do the same thing.
> > >
> > > OK, so it sounds like in terms of code clean-ups, we need something like
> > > what you reference and then some further clean-ups on top of that
> > > perhaps for other places to call dm_scan_fdt_ofnode_path() for special
> > > cases.  And in terms of formalized specification bits, I do think
> > > /firmware should perhaps get kicked up to the spec itself so that it's
> > > very clear to all consumers.
> >
> > I was also checking latest devicetree spec and there is no record about
> > /firmware node and how it is supposed to be used.
> 
> Patches welcome. :)
> 
> It's really only a container to define non-discoverable firmware
> interfaces. Typically accessed thru a secure call (for ARM) or a
> mailbox. It is primarily just convention rather than a strict
> requirement. We have to support firmware nodes at the top-level too
> anyways.

Right.  To be clear, I'm suggesting that someone (I was thinking Jens)
pop over to the devicetree-spec list and ask about adding _something_
there as "firmware" isn't even on the list of generic names and may even
warrant something in section 3 under base device node types.

-- 
Tom

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Device Tree]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux Audio Users]     [Photos]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]

  Powered by Linux