Re: [PATCH] dt-bindings: mtd: Add a schema for binman

From: Rob Herring
Date: Fri Sep 22 2023 - 13:46:59 EST


On Fri, Sep 22, 2023 at 11:01:18AM -0600, Simon Glass wrote:
> Hi Rob,
>
> On Fri, 22 Sept 2023 at 10:00, Rob Herring <robh@xxxxxxxxxx> wrote:
> >
> > On Thu, Sep 21, 2023 at 1:45 PM Simon Glass <sjg@xxxxxxxxxxxx> wrote:
> > >
> > > Binman[1] is a tool for creating firmware images. It allows you to
> > > combine various binaries and place them in an output file.
> > >
> > > Binman uses a DT schema to describe an image, in enough detail that
> > > it can be automatically built from component parts, disassembled,
> > > replaced, listed, etc.
> > >
> > > Images are typically stored in flash, which is why this binding is
> > > targeted at mtd. Previous discussion is at [2] [3].
> > >
> > > [1] https://u-boot.readthedocs.io/en/stable/develop/package/binman.html
> > > [2] https://lore.kernel.org/u-boot/20230821180220.2724080-3-sjg@xxxxxxxxxxxx/
> > > [3] https://www.spinics.net/lists/devicetree/msg626149.html
> >
> > You missed:
> >
> > https://github.com/devicetree-org/dt-schema/pull/110
> >
> > where I said: We certainly shouldn't duplicate the existing partitions
> > bindings. What's missing from them (I assume we're mostly talking
> > about "fixed-partitions" which has been around forever I think (before
> > me))?
> >
> > To repeat, unless there is some reason binman partitions conflict with
> > fixed-partitions, you need to start there and extend it. From what's
> > posted here, it neither conflicts nor needs extending.
>
> I think at this point I am just hopelessly confused. Have you taken a
> look at the binman schema? [1]

Why do I need to? That's used for some tool and has nothing to do with a
device's DTB. However, I thought somewhere in this discussion you showed
it under a flash device node. Then I care because then it overlaps with
what we already have for partitions. If I misunderstood that, then just
put your schema with your tool. Only users of the tool should care about
the tool's schema.

>
> I saw this file, which seems to extend a partition.
>
> Documentation/devicetree/bindings/mtd/partitions/brcm,bcm4908-partitions.yaml

IIRC, that's a different type where partition locations are stored in
the flash, so we don't need location and size in DT.

>
> I was assuming that I should create a top-level compatible = "binman"
> node, with subnodes like compatible = "binman,bl31-atf", for example.
> I should use the compatible string to indicate the contents, right?

Yes for subnodes, and we already have some somewhat standard ones for
"u-boot" and "u-boot-env". Though historically, "label" was used.

Top-level, meaning the root of the DT? That sound like just something
for the tool, so I don't care, but it doesn't belong in the DTB.

>
> Re extending, what is the minimum I can do? Are you looking for
> something like a "compress" property that indicates that the entry is
> compressed?
>
> I'm really just a bit lost.

Me too.

Rob