All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Rafał Miłecki" <zajec5@gmail.com>
To: Rob Herring <robh@kernel.org>
Cc: "Krzysztof Kozlowski" <krzysztof.kozlowski@canonical.com>,
	"Miquel Raynal" <miquel.raynal@bootlin.com>,
	"Richard Weinberger" <richard@nod.at>,
	"Vignesh Raghavendra" <vigneshr@ti.com>,
	linux-mtd@lists.infradead.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, "Tom Rini" <trini@konsulko.com>,
	"Ricardo Salveti" <ricardo@foundries.io>,
	"Michal Simek" <michal.simek@xilinx.com>,
	"Jorge Ramirez-Ortiz" <jorge@foundries.io>,
	"Sean Anderson" <seanga2@gmail.com>,
	u-boot@lists.denx.de, "Rafał Miłecki" <rafal@milecki.pl>
Subject: Re: [PATCH] dt-bindings: mtd: partitions: add UBI binding
Date: Wed, 27 Apr 2022 14:46:51 +0200	[thread overview]
Message-ID: <4054f0df-1c1f-da21-71fb-96fb7b3358ff@gmail.com> (raw)
In-Reply-To: <fb18b5e2-d273-adf6-3e14-77628abc4560@gmail.com>

Hi Rob, could you re-review my patch as I provided answers (see below), please?

On 3.03.2022 09:32, Rafał Miłecki wrote:
> On 2.03.2022 22:59, Rob Herring wrote:
>> On Thu, Feb 17, 2022 at 11:24:48AM +0100, Rafał Miłecki wrote:
>>> From: Rafał Miłecki <rafal@milecki.pl>
>>>
>>> UBI is often used on embedded devices to store UBI volumes with device
>>> configuration / calibration data. Such volumes may need to be documented
>>> and referenced for proper boot & setup.
>>>
>>> Some examples:
>>> 1. U-Boot environment variables
>>> 2. Device calibration data
>>> 3. Default setup (e.g. initial password)
>>>
>>> Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
>>> ---
>>>   .../bindings/mtd/partitions/ubi.yaml          | 67 +++++++++++++++++++
>>>   1 file changed, 67 insertions(+)
>>>   create mode 100644 Documentation/devicetree/bindings/mtd/partitions/ubi.yaml
>>>
>>> diff --git a/Documentation/devicetree/bindings/mtd/partitions/ubi.yaml b/Documentation/devicetree/bindings/mtd/partitions/ubi.yaml
>>> new file mode 100644
>>> index 000000000000..cd081f06d4cb
>>> --- /dev/null
>>> +++ b/Documentation/devicetree/bindings/mtd/partitions/ubi.yaml
>>> @@ -0,0 +1,67 @@
>>> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
>>> +%YAML 1.2
>>> +---
>>> +$id: http://devicetree.org/schemas/mtd/partitions/ubi.yaml#
>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>> +
>>> +title: UBI (Unsorted Block Images) device
>>> +
>>> +description: |
>>> +  UBI is a layer providing logical volumes (consisting of logical blocks) on top
>>> +  of raw flash devices. It deals with low-level flash issues (bit-flips, bad
>>> +  physical eraseblocks, wearing) providing a reliable data storage.
>>> +
>>> +  UBI device is built and stored in a single flash partition.
>>> +
>>> +  Some (usually embedded) devices use UBI volumes of specific names or indexes
>>> +  to store setup / configuration data. This binding allows describing such
>>> +  volumes so they can be identified and referenced by consumers.
>>> +
>>> +maintainers:
>>> +  - Rafał Miłecki <rafal@milecki.pl>
>>> +
>>> +allOf:
>>> +  - $ref: partition.yaml#
>>> +
>>> +properties:
>>> +  compatible:
>>> +    const: ubi
>>> +
>>> +patternProperties:
>>> +  "^volume-[0-9a-f]+$":
>>> +    type: object
>>> +    description: UBI volume
>>> +    properties:
>>> +      volume-name:
>>> +        $ref: /schemas/types.yaml#/definitions/string
>>> +      volume-id:
>>> +        $ref: /schemas/types.yaml#/definitions/uint32
>>> +    anyOf:
>>> +      - required:
>>> +          - volume-name
>>> +      - required:
>>> +          - volume-id
>>> +
>>> +unevaluatedProperties: false
>>> +
>>> +examples:
>>> +  - |
>>> +    partitions {
>>> +        compatible = "fixed-partitions";
>>> +        #address-cells = <1>;
>>> +        #size-cells = <1>;
>>> +
>>> +        partition@0 {
>>> +            compatible = "ubi";
>>> +            reg = <0x0000000 0x1000000>;
>>> +            label = "filesystem";
>>> +
>>> +            env: volume-0 {
>>> +                volume-name = "u-boot-env";
>>
>> Why not do 'compatible = "u-boot,env";' to align with normal partitions?
> 
> I mean to reserve "compatible" for describing UBI volume content.
> 
> If I manage to get
> [PATCH V3] dt-bindings: nvmem: add U-Boot environment variables binding
> https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20220228131250.16943-1-zajec5@gmail.com/
> accepted, it'll allow me to later work on something like:
> 
> env: volume-0 {
>      compatible = "u-boot,env";
>      volume-name = "u-boot-env";
> };
> 
> (I believe) I'll need (in the final shape) two properties:
> 1. One for describing UBI volume ("compatible")
> 2. One for identifying UBI volume ("volume-name" / "volume-id")
> 
> It's similar design to the "compatible" vs. "reg" in IO hw blocks.
> 
> 
>> Or 'label'?
> 
> I could replace "volume-name" with "label" but someone once told me that:
>  > 'label' is supposed to correspond to a sticker on a port or something
>  > human identifiable
> 
> ;) https://patchwork.ozlabs.org/comment/2812214/
> 
> So I don't want to abuse "label" here.
> 
> 
>> We have enough ways to identify things, I don't think we need another.
>>
>>> +            };
>>> +
>>> +            calibration: volume-1 {
>>
>> Are 0 and 1 meaningful or just made up indexing?
> 
> Made up indexing. I need unique nodenames but @[0-9a-f] doesn't appply here.
> 
> 
>>> +                volume-id = <99>;
>>> +            };
>>> +        };
>>> +    };
>>> -- 
>>> 2.34.1


______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

WARNING: multiple messages have this Message-ID (diff)
From: "Rafał Miłecki" <zajec5@gmail.com>
To: Rob Herring <robh@kernel.org>
Cc: "Krzysztof Kozlowski" <krzysztof.kozlowski@canonical.com>,
	"Miquel Raynal" <miquel.raynal@bootlin.com>,
	"Richard Weinberger" <richard@nod.at>,
	"Vignesh Raghavendra" <vigneshr@ti.com>,
	linux-mtd@lists.infradead.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, "Tom Rini" <trini@konsulko.com>,
	"Ricardo Salveti" <ricardo@foundries.io>,
	"Michal Simek" <michal.simek@xilinx.com>,
	"Jorge Ramirez-Ortiz" <jorge@foundries.io>,
	"Sean Anderson" <seanga2@gmail.com>,
	u-boot@lists.denx.de, "Rafał Miłecki" <rafal@milecki.pl>
Subject: Re: [PATCH] dt-bindings: mtd: partitions: add UBI binding
Date: Wed, 27 Apr 2022 14:46:51 +0200	[thread overview]
Message-ID: <4054f0df-1c1f-da21-71fb-96fb7b3358ff@gmail.com> (raw)
In-Reply-To: <fb18b5e2-d273-adf6-3e14-77628abc4560@gmail.com>

Hi Rob, could you re-review my patch as I provided answers (see below), please?

On 3.03.2022 09:32, Rafał Miłecki wrote:
> On 2.03.2022 22:59, Rob Herring wrote:
>> On Thu, Feb 17, 2022 at 11:24:48AM +0100, Rafał Miłecki wrote:
>>> From: Rafał Miłecki <rafal@milecki.pl>
>>>
>>> UBI is often used on embedded devices to store UBI volumes with device
>>> configuration / calibration data. Such volumes may need to be documented
>>> and referenced for proper boot & setup.
>>>
>>> Some examples:
>>> 1. U-Boot environment variables
>>> 2. Device calibration data
>>> 3. Default setup (e.g. initial password)
>>>
>>> Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
>>> ---
>>>   .../bindings/mtd/partitions/ubi.yaml          | 67 +++++++++++++++++++
>>>   1 file changed, 67 insertions(+)
>>>   create mode 100644 Documentation/devicetree/bindings/mtd/partitions/ubi.yaml
>>>
>>> diff --git a/Documentation/devicetree/bindings/mtd/partitions/ubi.yaml b/Documentation/devicetree/bindings/mtd/partitions/ubi.yaml
>>> new file mode 100644
>>> index 000000000000..cd081f06d4cb
>>> --- /dev/null
>>> +++ b/Documentation/devicetree/bindings/mtd/partitions/ubi.yaml
>>> @@ -0,0 +1,67 @@
>>> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
>>> +%YAML 1.2
>>> +---
>>> +$id: http://devicetree.org/schemas/mtd/partitions/ubi.yaml#
>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>> +
>>> +title: UBI (Unsorted Block Images) device
>>> +
>>> +description: |
>>> +  UBI is a layer providing logical volumes (consisting of logical blocks) on top
>>> +  of raw flash devices. It deals with low-level flash issues (bit-flips, bad
>>> +  physical eraseblocks, wearing) providing a reliable data storage.
>>> +
>>> +  UBI device is built and stored in a single flash partition.
>>> +
>>> +  Some (usually embedded) devices use UBI volumes of specific names or indexes
>>> +  to store setup / configuration data. This binding allows describing such
>>> +  volumes so they can be identified and referenced by consumers.
>>> +
>>> +maintainers:
>>> +  - Rafał Miłecki <rafal@milecki.pl>
>>> +
>>> +allOf:
>>> +  - $ref: partition.yaml#
>>> +
>>> +properties:
>>> +  compatible:
>>> +    const: ubi
>>> +
>>> +patternProperties:
>>> +  "^volume-[0-9a-f]+$":
>>> +    type: object
>>> +    description: UBI volume
>>> +    properties:
>>> +      volume-name:
>>> +        $ref: /schemas/types.yaml#/definitions/string
>>> +      volume-id:
>>> +        $ref: /schemas/types.yaml#/definitions/uint32
>>> +    anyOf:
>>> +      - required:
>>> +          - volume-name
>>> +      - required:
>>> +          - volume-id
>>> +
>>> +unevaluatedProperties: false
>>> +
>>> +examples:
>>> +  - |
>>> +    partitions {
>>> +        compatible = "fixed-partitions";
>>> +        #address-cells = <1>;
>>> +        #size-cells = <1>;
>>> +
>>> +        partition@0 {
>>> +            compatible = "ubi";
>>> +            reg = <0x0000000 0x1000000>;
>>> +            label = "filesystem";
>>> +
>>> +            env: volume-0 {
>>> +                volume-name = "u-boot-env";
>>
>> Why not do 'compatible = "u-boot,env";' to align with normal partitions?
> 
> I mean to reserve "compatible" for describing UBI volume content.
> 
> If I manage to get
> [PATCH V3] dt-bindings: nvmem: add U-Boot environment variables binding
> https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20220228131250.16943-1-zajec5@gmail.com/
> accepted, it'll allow me to later work on something like:
> 
> env: volume-0 {
>      compatible = "u-boot,env";
>      volume-name = "u-boot-env";
> };
> 
> (I believe) I'll need (in the final shape) two properties:
> 1. One for describing UBI volume ("compatible")
> 2. One for identifying UBI volume ("volume-name" / "volume-id")
> 
> It's similar design to the "compatible" vs. "reg" in IO hw blocks.
> 
> 
>> Or 'label'?
> 
> I could replace "volume-name" with "label" but someone once told me that:
>  > 'label' is supposed to correspond to a sticker on a port or something
>  > human identifiable
> 
> ;) https://patchwork.ozlabs.org/comment/2812214/
> 
> So I don't want to abuse "label" here.
> 
> 
>> We have enough ways to identify things, I don't think we need another.
>>
>>> +            };
>>> +
>>> +            calibration: volume-1 {
>>
>> Are 0 and 1 meaningful or just made up indexing?
> 
> Made up indexing. I need unique nodenames but @[0-9a-f] doesn't appply here.
> 
> 
>>> +                volume-id = <99>;
>>> +            };
>>> +        };
>>> +    };
>>> -- 
>>> 2.34.1


  reply	other threads:[~2022-04-27 12:47 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-17 10:24 [PATCH] dt-bindings: mtd: partitions: add UBI binding Rafał Miłecki
2022-02-17 10:24 ` Rafał Miłecki
2022-03-02 21:59 ` Rob Herring
2022-03-02 21:59   ` Rob Herring
2022-03-03  8:32   ` Rafał Miłecki
2022-03-03  8:32     ` Rafał Miłecki
2022-04-27 12:46     ` Rafał Miłecki [this message]
2022-04-27 12:46       ` Rafał Miłecki
2022-05-09 20:11     ` Rob Herring
2022-05-09 20:11       ` Rob Herring
2022-06-10 12:19 ` Daniel Golle
2022-06-10 12:19   ` Daniel Golle

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4054f0df-1c1f-da21-71fb-96fb7b3358ff@gmail.com \
    --to=zajec5@gmail.com \
    --cc=devicetree@vger.kernel.org \
    --cc=jorge@foundries.io \
    --cc=krzysztof.kozlowski@canonical.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=michal.simek@xilinx.com \
    --cc=miquel.raynal@bootlin.com \
    --cc=rafal@milecki.pl \
    --cc=ricardo@foundries.io \
    --cc=richard@nod.at \
    --cc=robh@kernel.org \
    --cc=seanga2@gmail.com \
    --cc=trini@konsulko.com \
    --cc=u-boot@lists.denx.de \
    --cc=vigneshr@ti.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.