Message ID | 20231009220436.2164245-2-sjg@chromium.org |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a888:0:b0:403:3b70:6f57 with SMTP id x8csp2143336vqo; Mon, 9 Oct 2023 15:04:59 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFKhsGZVTFCr7ZrnLB1AdKNHadowqdFG+jR9S3fdiy45EAQ4C0oFrugyck4RQrMOaE4Irn+ X-Received: by 2002:a05:6358:988d:b0:143:97c6:1e3a with SMTP id q13-20020a056358988d00b0014397c61e3amr18179029rwa.9.1696889098711; Mon, 09 Oct 2023 15:04:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696889098; cv=none; d=google.com; s=arc-20160816; b=Bw5tt075eFOkBVN69z8kFXfEnOhy7XE2rrnCg/gHSHlVheSWOmyi4zO9IiPEI7kHA4 186jUNysCfZreZys3umpskGHzDHpPOMrBI76XidZ5APUxBJwKG2tqspYqYrEuDguwekh RjcmxMm7EBS9u74bUWyZwDkCr7XNDhuuT3rwpcmIXW/4ozZlIl4qCyv/AHhQtzRFvA6T HZ3/bVdGir+GHzrZ/2159cgv1m/Y76hfMIm1STvPC+4bp/Ttv7nZQounpnRA2OvBaRVk xz4dbsWFUp6QWuOVxEBO26FwpAWkl2liW12bhvW39rtsw8TbvHzf7k1GiIOjFEnrg++X xKMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=8Oy3/oDIsrYxVx08XCzjcM9Z9wsmpIMgRcvueEjHv/4=; fh=IFarww2qplPjrJl7hbkk+Nq7HylZz6B3JgSh2povEMA=; b=1G4gnSShPtg4Cjq4aZ49IHoxAvPMov66EC7nFh3J3lns3FPmYmBM5rsBlNMznYaYVw f41kSiTwL00D2+uv4LCi3HL6PFsB8ctawwdUevfRswPYn3a26HViEQgExU6JfzCFOcsx vRHUSXOaUw8JyGcsVbl4+r2IhRTtVatk3y4zQ7UWJ7qkgLMhahIxtbUkAh4QfwR7xcBg tvCC+jr9bNXIZvmYtzdoVOcfzheu4jC+jLcX1CoFdbz/ifz374jQcllzRiE/ppe1r5S+ h6BDVC6xeG9IODk72RJajKyWxsOMhkkyNMtXTIipNBKXJ77gOWHG9Zl7NxVnrqK+QBQw TkRg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=ZJfn2IU2; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id mm16-20020a17090b359000b0025bb4a1c12esi10203181pjb.148.2023.10.09.15.04.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Oct 2023 15:04:58 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=ZJfn2IU2; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id ECD6D806500A; Mon, 9 Oct 2023 15:04:57 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378857AbjJIWEu (ORCPT <rfc822;makky5685@gmail.com> + 19 others); Mon, 9 Oct 2023 18:04:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37804 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1378742AbjJIWEr (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Mon, 9 Oct 2023 18:04:47 -0400 Received: from mail-io1-xd31.google.com (mail-io1-xd31.google.com [IPv6:2607:f8b0:4864:20::d31]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A3866A9 for <linux-kernel@vger.kernel.org>; Mon, 9 Oct 2023 15:04:41 -0700 (PDT) Received: by mail-io1-xd31.google.com with SMTP id ca18e2360f4ac-79fe8986355so199308039f.2 for <linux-kernel@vger.kernel.org>; Mon, 09 Oct 2023 15:04:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1696889081; x=1697493881; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8Oy3/oDIsrYxVx08XCzjcM9Z9wsmpIMgRcvueEjHv/4=; b=ZJfn2IU2szW2+wKn4i2QWfHoCcNMc3YKOnf9totCsBGNOUaK+ZnF7jTC71aMcXkZRr FgDUWey/IU3+CvX6H7XaK1UDSjM8XwimcHzxup7WrbgkTQAfGAxBEz9q+PZWqE+tTM5q jlR6r9fCYm6Xnq/+98MOvAS5aTxWJ/IGVMxb0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696889081; x=1697493881; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8Oy3/oDIsrYxVx08XCzjcM9Z9wsmpIMgRcvueEjHv/4=; b=Vcbv77f1jK1wkpjBSgwyQnoLO3aFNB3sKCw5umSmee5BXBLLnYgeQLDsZ7DjKkUhL5 u3vFUOZGhczBRc2yonKB3dZgYFdXlQhbqoB4b/hLmJPXUqIbBVQKrPbUKcq35mZkoMFg I0I3q6Zydc40Y85ftuz9Ll+MStHFTkcGik7oWwOMmDcV9JP6kqKDfiDsmrUoQz+FBJZu pTnkrsQsv5V/K5U6Tie/EijRUBeEtURhzJu6WMhhdYnMyHHCJG0NnmbPmZjCvOFjVVP4 A1f4P5N6hMirt3FIYfwopGIqCb46I3yDmZf0i0ar0Rbd3SodgmMfRbewjmhQxmC5GvY1 h09g== X-Gm-Message-State: AOJu0YwqfZDHIoNTEQz62p9n4rFDT+PhYVa8pHA1icy0KFp9Creh1Z0h g4G9SS2rDIlBG2TTEp4Lys4X3Q== X-Received: by 2002:a05:6e02:170c:b0:350:f510:3990 with SMTP id u12-20020a056e02170c00b00350f5103990mr23056007ill.2.1696889081061; Mon, 09 Oct 2023 15:04:41 -0700 (PDT) Received: from kea.bld.corp.google.com ([2620:15c:183:200:138c:cf57:c18d:20f5]) by smtp.gmail.com with ESMTPSA id o3-20020a92d4c3000000b0034cd2c0afe8sm3164063ilm.56.2023.10.09.15.04.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Oct 2023 15:04:40 -0700 (PDT) From: Simon Glass <sjg@chromium.org> To: devicetree@vger.kernel.org Cc: linux-mtd@lists.infradead.org, Miquel Raynal <miquel.raynal@bootlin.com>, Michael Walle <mwalle@kernel.org>, Rob Herring <robh@kernel.org>, U-Boot Mailing List <u-boot@lists.denx.de>, Tom Rini <trini@konsulko.com>, Simon Glass <sjg@chromium.org>, Conor Dooley <conor+dt@kernel.org>, Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>, Richard Weinberger <richard@nod.at>, Rob Herring <robh+dt@kernel.org>, Vignesh Raghavendra <vigneshr@ti.com>, linux-kernel@vger.kernel.org Subject: [PATCH v4 2/3] dt-bindings: mtd: binman-partition: Add binman compatibles Date: Mon, 9 Oct 2023 16:04:14 -0600 Message-ID: <20231009220436.2164245-2-sjg@chromium.org> X-Mailer: git-send-email 2.42.0.609.gbb76f46606-goog In-Reply-To: <20231009220436.2164245-1-sjg@chromium.org> References: <20231009220436.2164245-1-sjg@chromium.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Mon, 09 Oct 2023 15:04:58 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779317183599574529 X-GMAIL-MSGID: 1779317183599574529 |
Series |
[v4,1/3] dt-bindings: mtd: partitions: Add binman compatible
|
|
Commit Message
Simon Glass
Oct. 9, 2023, 10:04 p.m. UTC
Add two compatible for binman entries, as a starting point for the
schema.
Note that, after discussion on v2, we decided to keep the existing
meaning of label so as not to require changes to existing userspace
software when moving to use binman nodes to specify the firmware
layout.
Signed-off-by: Simon Glass <sjg@chromium.org>
---
Changes in v4:
- Correct selection of multiple compatible strings
Changes in v3:
- Drop fixed-partitions from the example
- Use compatible instead of label
Changes in v2:
- Use plain partition@xxx for the node name
.../mtd/partitions/binman-partition.yaml | 49 +++++++++++++++++++
1 file changed, 49 insertions(+)
create mode 100644 Documentation/devicetree/bindings/mtd/partitions/binman-partition.yaml
Comments
On Mon, Oct 09, 2023 at 04:04:14PM -0600, Simon Glass wrote: > Add two compatible for binman entries, as a starting point for the > schema. > > Note that, after discussion on v2, we decided to keep the existing > meaning of label so as not to require changes to existing userspace > software when moving to use binman nodes to specify the firmware > layout. > > Signed-off-by: Simon Glass <sjg@chromium.org> > --- > > Changes in v4: > - Correct selection of multiple compatible strings > > Changes in v3: > - Drop fixed-partitions from the example > - Use compatible instead of label > > Changes in v2: > - Use plain partition@xxx for the node name > > .../mtd/partitions/binman-partition.yaml | 49 +++++++++++++++++++ > 1 file changed, 49 insertions(+) > create mode 100644 Documentation/devicetree/bindings/mtd/partitions/binman-partition.yaml > > diff --git a/Documentation/devicetree/bindings/mtd/partitions/binman-partition.yaml b/Documentation/devicetree/bindings/mtd/partitions/binman-partition.yaml > new file mode 100644 > index 000000000000..35a320359ec1 > --- /dev/null > +++ b/Documentation/devicetree/bindings/mtd/partitions/binman-partition.yaml > @@ -0,0 +1,49 @@ > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) > +# Copyright 2023 Google LLC > + > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/mtd/partitions/binman-partition.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Binman partition > + > +maintainers: > + - Simon Glass <sjg@chromium.org> > + > +select: false So this schema is never used. 'select: false' is only useful if something else if referencing the schema. > + > +description: | > + This corresponds to a binman 'entry'. It is a single partition which holds > + data of a defined type. > + > +allOf: > + - $ref: /schemas/mtd/partitions/partition.yaml# > + > +properties: > + compatible: > + oneOf: > + - const: binman,entry # generic binman entry 'binman' is not a vendor. You could add it if you think that's useful. Probably not with only 1 case... > + - items: > + - const: u-boot # u-boot.bin from U-Boot project > + - const: atf-bl31 # bl31.bin or bl31.elf from TF-A project Probably should use the new 'tfa' rather than old 'atf'. Is this the only binary for TFA? The naming seems inconsistent in that every image goes in (or can go in) a bl?? section. Why does TFA have it but u-boot doesn't? Perhaps BL?? is orthogonal to defining what is in each partition. Perhaps someone more familar with all this than I am can comment. Once you actually test this, you'll find you are specifying: compatible = "u-boot", "atf-bl31"; > + > +additionalProperties: false > + > +examples: > + - | > + partitions { > + compatible = "binman"; > + #address-cells = <1>; > + #size-cells = <1>; > + > + partition@100000 { > + compatible = "u-boot"; > + reg = <0x100000 0xf00000>; > + }; > + > + partition@200000 { > + compatible = "atf-bl31"; > + reg = <0x200000 0x100000>; > + }; > + }; > -- > 2.42.0.609.gbb76f46606-goog >
Hi Rob, On Tue, 24 Oct 2023 at 09:16, Rob Herring <robh@kernel.org> wrote: > > On Mon, Oct 09, 2023 at 04:04:14PM -0600, Simon Glass wrote: > > Add two compatible for binman entries, as a starting point for the > > schema. > > > > Note that, after discussion on v2, we decided to keep the existing > > meaning of label so as not to require changes to existing userspace > > software when moving to use binman nodes to specify the firmware > > layout. > > > > Signed-off-by: Simon Glass <sjg@chromium.org> > > --- > > > > Changes in v4: > > - Correct selection of multiple compatible strings > > > > Changes in v3: > > - Drop fixed-partitions from the example > > - Use compatible instead of label > > > > Changes in v2: > > - Use plain partition@xxx for the node name > > > > .../mtd/partitions/binman-partition.yaml | 49 +++++++++++++++++++ > > 1 file changed, 49 insertions(+) > > create mode 100644 Documentation/devicetree/bindings/mtd/partitions/binman-partition.yaml > > > > diff --git a/Documentation/devicetree/bindings/mtd/partitions/binman-partition.yaml b/Documentation/devicetree/bindings/mtd/partitions/binman-partition.yaml > > new file mode 100644 > > index 000000000000..35a320359ec1 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/mtd/partitions/binman-partition.yaml > > @@ -0,0 +1,49 @@ > > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) > > +# Copyright 2023 Google LLC > > + > > +%YAML 1.2 > > +--- > > +$id: http://devicetree.org/schemas/mtd/partitions/binman-partition.yaml# > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > + > > +title: Binman partition > > + > > +maintainers: > > + - Simon Glass <sjg@chromium.org> > > + > > +select: false > > So this schema is never used. 'select: false' is only useful if > something else if referencing the schema. OK. Is there a user guide to this somewhere? I really don't understand it very well. > > > + > > +description: | > > + This corresponds to a binman 'entry'. It is a single partition which holds > > + data of a defined type. > > + > > +allOf: > > + - $ref: /schemas/mtd/partitions/partition.yaml# > > + > > +properties: > > + compatible: > > + oneOf: > > + - const: binman,entry # generic binman entry > > 'binman' is not a vendor. You could add it if you think that's useful. > Probably not with only 1 case... I think it is best to use this for generic things implemented by binman, rather than some other project. For example, binman supports a 'fill' region. It also supports sections which are groups of sub-entries. So we will likely start with half a dozen of these and it will likely grow: binman,fill, binman,section, binman,files If we don't use 'binman', what do you suggest? > > > + - items: > > + - const: u-boot # u-boot.bin from U-Boot project > > + - const: atf-bl31 # bl31.bin or bl31.elf from TF-A project > > Probably should use the new 'tfa' rather than old 'atf'. Is this the > only binary for TFA? The naming seems inconsistent in that every image > goes in (or can go in) a bl?? section. Why does TFA have it but u-boot > doesn't? Perhaps BL?? is orthogonal to defining what is in each > partition. Perhaps someone more familar with all this than I am can > comment. From what I can tell TF-A can produce all sorts of binaries, of which bl31 is one. U-Boot can also produce lots of binaries, but its naming is different (u-boot, u-boot-spl, etc.). Bear in mind that U-Boot is used on ARM, where this terminology is defined, and on x86 (for example), where it is not. > > Once you actually test this, you'll find you are specifying: > > compatible = "u-boot", "atf-bl31"; I don't understand that, sorry. I'll send a v5 and see if the problem goes away. > > > > + > > +additionalProperties: false > > + > > +examples: > > + - | > > + partitions { > > + compatible = "binman"; > > + #address-cells = <1>; > > + #size-cells = <1>; > > + > > + partition@100000 { > > + compatible = "u-boot"; > > + reg = <0x100000 0xf00000>; > > + }; > > + > > + partition@200000 { > > + compatible = "atf-bl31"; > > + reg = <0x200000 0x100000>; > > + }; > > + }; > > -- > > 2.42.0.609.gbb76f46606-goog > > Regards, Simon
Hi Simon, sjg@chromium.org wrote on Tue, 24 Oct 2023 14:40:54 -0700: > Hi Rob, > > On Tue, 24 Oct 2023 at 09:16, Rob Herring <robh@kernel.org> wrote: > > > > On Mon, Oct 09, 2023 at 04:04:14PM -0600, Simon Glass wrote: > > > Add two compatible for binman entries, as a starting point for the > > > schema. > > > > > > Note that, after discussion on v2, we decided to keep the existing > > > meaning of label so as not to require changes to existing userspace > > > software when moving to use binman nodes to specify the firmware > > > layout. > > > > > > Signed-off-by: Simon Glass <sjg@chromium.org> > > > --- > > > > > > Changes in v4: > > > - Correct selection of multiple compatible strings > > > > > > Changes in v3: > > > - Drop fixed-partitions from the example > > > - Use compatible instead of label > > > > > > Changes in v2: > > > - Use plain partition@xxx for the node name > > > > > > .../mtd/partitions/binman-partition.yaml | 49 +++++++++++++++++++ > > > 1 file changed, 49 insertions(+) > > > create mode 100644 Documentation/devicetree/bindings/mtd/partitions/binman-partition.yaml > > > > > > diff --git a/Documentation/devicetree/bindings/mtd/partitions/binman-partition.yaml b/Documentation/devicetree/bindings/mtd/partitions/binman-partition.yaml > > > new file mode 100644 > > > index 000000000000..35a320359ec1 > > > --- /dev/null > > > +++ b/Documentation/devicetree/bindings/mtd/partitions/binman-partition.yaml > > > @@ -0,0 +1,49 @@ > > > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) > > > +# Copyright 2023 Google LLC > > > + > > > +%YAML 1.2 > > > +--- > > > +$id: http://devicetree.org/schemas/mtd/partitions/binman-partition.yaml# > > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > > + > > > +title: Binman partition > > > + > > > +maintainers: > > > + - Simon Glass <sjg@chromium.org> > > > + > > > +select: false > > > > So this schema is never used. 'select: false' is only useful if > > something else if referencing the schema. > > OK. Is there a user guide to this somewhere? I really don't understand > it very well. The example-schema.yaml at the root of the dt-bindings directory is well commented. > > > +description: | > > > + This corresponds to a binman 'entry'. It is a single partition which holds > > > + data of a defined type. > > > + > > > +allOf: > > > + - $ref: /schemas/mtd/partitions/partition.yaml# > > > + > > > +properties: > > > + compatible: > > > + oneOf: > > > + - const: binman,entry # generic binman entry > > > > 'binman' is not a vendor. You could add it if you think that's useful. > > Probably not with only 1 case... > > I think it is best to use this for generic things implemented by > binman, rather than some other project. For example, binman supports a > 'fill' region. It also supports sections which are groups of > sub-entries. So we will likely start with half a dozen of these and it > will likely grow: binman,fill, binman,section, binman,files > > If we don't use 'binman', what do you suggest? > > > > > > + - items: > > > + - const: u-boot # u-boot.bin from U-Boot project > > > + - const: atf-bl31 # bl31.bin or bl31.elf from TF-A project > > > > Probably should use the new 'tfa' rather than old 'atf'. Is this the > > only binary for TFA? The naming seems inconsistent in that every image > > goes in (or can go in) a bl?? section. Why does TFA have it but u-boot > > doesn't? Perhaps BL?? is orthogonal to defining what is in each > > partition. Perhaps someone more familar with all this than I am can > > comment. > > From what I can tell TF-A can produce all sorts of binaries, of which > bl31 is one. U-Boot can also produce lots of binaries, but its naming > is different (u-boot, u-boot-spl, etc.). Bear in mind that U-Boot is > used on ARM, where this terminology is defined, and on x86 (for > example), where it is not. > > > > > Once you actually test this, you'll find you are specifying: > > > > compatible = "u-boot", "atf-bl31"; > > I don't understand that, sorry. I'll send a v5 and see if the problem goes away. For me this means the partition contains U-Boot and TF-A, which is probably not what you want. I believe Rob is saying that how you define the compatible property above does not match the examples below. Did you run make dt_binding_check? Also, do you really need to say which software project provides a component? Would using "bl31", "bl33", etc be enough? Or maybe you could have eg. "bl31-tf-a" and "bl31-u-boot-spl" (in this order) for clarity? This way one knows which stage a partition contains and also the software project which provided it. To be honest I still don't fully get where you want to go and I believe a more complete schema would probably help, with different examples, to catch what you need and why. > > > +additionalProperties: false > > > + > > > +examples: > > > + - | > > > + partitions { > > > + compatible = "binman"; > > > + #address-cells = <1>; > > > + #size-cells = <1>; > > > + > > > + partition@100000 { > > > + compatible = "u-boot"; > > > + reg = <0x100000 0xf00000>; > > > + }; > > > + > > > + partition@200000 { > > > + compatible = "atf-bl31"; > > > + reg = <0x200000 0x100000>; > > > + }; > > > + }; > > > -- > > > 2.42.0.609.gbb76f46606-goog > > > > > Regards, > Simon Thanks, Miquèl
Hi Miquel, On Wed, 25 Oct 2023 at 08:11, Miquel Raynal <miquel.raynal@bootlin.com> wrote: > > Hi Simon, > > sjg@chromium.org wrote on Tue, 24 Oct 2023 14:40:54 -0700: > > > Hi Rob, > > > > On Tue, 24 Oct 2023 at 09:16, Rob Herring <robh@kernel.org> wrote: > > > > > > On Mon, Oct 09, 2023 at 04:04:14PM -0600, Simon Glass wrote: > > > > Add two compatible for binman entries, as a starting point for the > > > > schema. > > > > > > > > Note that, after discussion on v2, we decided to keep the existing > > > > meaning of label so as not to require changes to existing userspace > > > > software when moving to use binman nodes to specify the firmware > > > > layout. > > > > > > > > Signed-off-by: Simon Glass <sjg@chromium.org> > > > > --- > > > > > > > > Changes in v4: > > > > - Correct selection of multiple compatible strings > > > > > > > > Changes in v3: > > > > - Drop fixed-partitions from the example > > > > - Use compatible instead of label > > > > > > > > Changes in v2: > > > > - Use plain partition@xxx for the node name > > > > > > > > .../mtd/partitions/binman-partition.yaml | 49 +++++++++++++++++++ > > > > 1 file changed, 49 insertions(+) > > > > create mode 100644 Documentation/devicetree/bindings/mtd/partitions/binman-partition.yaml > > > > > > > > diff --git a/Documentation/devicetree/bindings/mtd/partitions/binman-partition.yaml b/Documentation/devicetree/bindings/mtd/partitions/binman-partition.yaml > > > > new file mode 100644 > > > > index 000000000000..35a320359ec1 > > > > --- /dev/null > > > > +++ b/Documentation/devicetree/bindings/mtd/partitions/binman-partition.yaml > > > > @@ -0,0 +1,49 @@ > > > > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) > > > > +# Copyright 2023 Google LLC > > > > + > > > > +%YAML 1.2 > > > > +--- > > > > +$id: http://devicetree.org/schemas/mtd/partitions/binman-partition.yaml# > > > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > > > + > > > > +title: Binman partition > > > > + > > > > +maintainers: > > > > + - Simon Glass <sjg@chromium.org> > > > > + > > > > +select: false > > > > > > So this schema is never used. 'select: false' is only useful if > > > something else if referencing the schema. > > > > OK. Is there a user guide to this somewhere? I really don't understand > > it very well. > > The example-schema.yaml at the root of the dt-bindings directory is > well commented. OK I had forgotten about that, thank you. > > > > > +description: | > > > > + This corresponds to a binman 'entry'. It is a single partition which holds > > > > + data of a defined type. > > > > + > > > > +allOf: > > > > + - $ref: /schemas/mtd/partitions/partition.yaml# > > > > + > > > > +properties: > > > > + compatible: > > > > + oneOf: > > > > + - const: binman,entry # generic binman entry > > > > > > 'binman' is not a vendor. You could add it if you think that's useful. > > > Probably not with only 1 case... > > > > I think it is best to use this for generic things implemented by > > binman, rather than some other project. For example, binman supports a > > 'fill' region. It also supports sections which are groups of > > sub-entries. So we will likely start with half a dozen of these and it > > will likely grow: binman,fill, binman,section, binman,files > > > > If we don't use 'binman', what do you suggest? > > > > > > > > > + - items: > > > > + - const: u-boot # u-boot.bin from U-Boot project > > > > + - const: atf-bl31 # bl31.bin or bl31.elf from TF-A project > > > > > > Probably should use the new 'tfa' rather than old 'atf'. Is this the > > > only binary for TFA? The naming seems inconsistent in that every image > > > goes in (or can go in) a bl?? section. Why does TFA have it but u-boot > > > doesn't? Perhaps BL?? is orthogonal to defining what is in each > > > partition. Perhaps someone more familar with all this than I am can > > > comment. > > > > From what I can tell TF-A can produce all sorts of binaries, of which > > bl31 is one. U-Boot can also produce lots of binaries, but its naming > > is different (u-boot, u-boot-spl, etc.). Bear in mind that U-Boot is > > used on ARM, where this terminology is defined, and on x86 (for > > example), where it is not. > > > > > > > > Once you actually test this, you'll find you are specifying: > > > > > > compatible = "u-boot", "atf-bl31"; > > > > I don't understand that, sorry. I'll send a v5 and see if the problem goes away. > > For me this means the partition contains U-Boot and TF-A, which is > probably not what you want. I believe Rob is saying that how you define > the compatible property above does not match the examples below. Did > you run make dt_binding_check? Yes, but I have not been able to install the correct version with 'pip install'. So the check about not being an object did not appear for me. I have now figured out how to run the latest version locally with the Linux validation, so will fix these problems in v6. > > Also, do you really need to say which software project provides a > component? Would using "bl31", "bl33", etc be enough? Or maybe you > could have eg. "bl31-tf-a" and "bl31-u-boot-spl" (in this order) for > clarity? This way one knows which stage a partition contains and also > the software project which provided it. The software project tells binman the filename to pick up and any processing it might need to use. It is quite an important element of this schema. Bear in mind that Binman assembles the image...so it must read in the various files that are needed. The bl31 terminology is used by ARM but not x86. So using bl31 in the context of U-Boot would be quite confusing on non-ARM SoCs. For the stage (or what I call Phase), I have not considered that yet. The purpose of adding 'bl31' is because TF-A (like U-Boot) produces a few binaries so we need to specify which one is wanted, which in turn leads to the filename. We do have the concept of a boot phase in DT (bootph-pre-ram for example), so I hope to integrate that at some point, for runtime use. But for the purposes of assembling the image, it doesn't matter when the phase runs...all that matters is being able to read in the files which need to be assembled into the image. > > To be honest I still don't fully get where you want to go and I believe > a more complete schema would probably help, with different examples, to > catch what you need and why. The full schema is described at [1] and [2]. Note that this may need to change as I slowly upstream it. The top of [1] describes the motivation for binman and there is a more detailed talk at [3]. So far I am just trying to describe two things: - U-Boot (u-boot.bin) - TF-A BL31 (bl31.elf) I am doing things in baby steps because even that is quite a challenge. But I think the linked docs should help explain where it is heading. > > > > > +additionalProperties: false > > > > + > > > > +examples: > > > > + - | > > > > + partitions { > > > > + compatible = "binman"; > > > > + #address-cells = <1>; > > > > + #size-cells = <1>; > > > > + > > > > + partition@100000 { > > > > + compatible = "u-boot"; > > > > + reg = <0x100000 0xf00000>; > > > > + }; > > > > + > > > > + partition@200000 { > > > > + compatible = "atf-bl31"; > > > > + reg = <0x200000 0x100000>; > > > > + }; > > > > + }; > > > > -- > > > > 2.42.0.609.gbb76f46606-goog > > > > Regards, SImon [1] https://u-boot.readthedocs.io/en/latest/develop/package/binman.html#image-description-format [2] https://u-boot.readthedocs.io/en/latest/develop/package/binman.html#entry-documentation [3] https://elinux.org/Boot_Loaders#U-Boot
diff --git a/Documentation/devicetree/bindings/mtd/partitions/binman-partition.yaml b/Documentation/devicetree/bindings/mtd/partitions/binman-partition.yaml new file mode 100644 index 000000000000..35a320359ec1 --- /dev/null +++ b/Documentation/devicetree/bindings/mtd/partitions/binman-partition.yaml @@ -0,0 +1,49 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +# Copyright 2023 Google LLC + +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/mtd/partitions/binman-partition.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Binman partition + +maintainers: + - Simon Glass <sjg@chromium.org> + +select: false + +description: | + This corresponds to a binman 'entry'. It is a single partition which holds + data of a defined type. + +allOf: + - $ref: /schemas/mtd/partitions/partition.yaml# + +properties: + compatible: + oneOf: + - const: binman,entry # generic binman entry + - items: + - const: u-boot # u-boot.bin from U-Boot project + - const: atf-bl31 # bl31.bin or bl31.elf from TF-A project + +additionalProperties: false + +examples: + - | + partitions { + compatible = "binman"; + #address-cells = <1>; + #size-cells = <1>; + + partition@100000 { + compatible = "u-boot"; + reg = <0x100000 0xf00000>; + }; + + partition@200000 { + compatible = "atf-bl31"; + reg = <0x200000 0x100000>; + }; + };