devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Miquel Raynal <miquel.raynal@bootlin.com>
To: Edward Chow <equu@openmail.cc>
Cc: Rob Herring <robh+dt@kernel.org>,
	Richard Weinberger <richard@nod.at>,
	Vignesh Raghavendra <vigneshr@ti.com>,
	Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
	linux-mtd@lists.infradead.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] dt-bindings: mtd-partitions: Export special values
Date: Wed, 25 Oct 2023 09:41:40 +0200	[thread overview]
Message-ID: <20231025094140.3da9ad71@xps-13> (raw)
In-Reply-To: <20231025052937.830813-1-equu@openmail.cc>

Hi Edward,

Thanks for the proposal!

equu@openmail.cc wrote on Wed, 25 Oct 2023 13:29:37 +0800:

> There are special "offset" and "size" values defined and documented in
> linux/mtd/partitions.h:
> 
> // consume as much as possible, leaving size after the end of partition.
> 
> // the partition will start at the next erase block.
> 
> // the partition will start where the previous one ended.
> 
> (Though not explicitly, they are compared against variables in uint64_t
> in drivers/mtd/mtdpart.c, so they had better be considered as such.)
> 
> // the partition will extend to the end of the master MTD device.
> 
> These special values could be used to define partitions automatically
> fitting to the size of the master MTD device at runtime.
> 
> However, these values used not to be exported to dt-bindings, thus
> seldom used before, since they might have been only used in numeric form,
> such as "(-1) (-3)" for MTDPART_OFS_RETAIN.
> 
> Now, they are exported in dt-bindings/mtd/partitions.h as 32-bit cell
> values, so 2-cell addressed should be defined to use special offset values,
> such as "MTDPART_OFS_SPECIAL MTDPART_OFS_RETAIN" for MTDPART_OFS_RETAIN in
> linux/mtd/partitions.h. An example is added to fixed-partitions.yaml.

I don't think this has ever been used in DT, it comes from a previous
era where everything was declared in machine code and was never
intended to be part of the official bindings.

We've been trying to clarify the partitions binding to make them clean
and easily usable and I believe this comes from old times and is
way too legacy and backwards to be exposed.

Typically, this comes from times where the storage devices were so
small that an erase block boundary would be way too big and one would
want to store different "partitions" in a single block. It is close to
impossible to find such devices today so I don't think it really
matters and, as a general advice, should not be used anymore.

> Signed-off-by: Edward Chow <equu@openmail.cc>
> ---
>  .../mtd/partitions/fixed-partitions.yaml      | 29 +++++++++++++++++++
>  MAINTAINERS                                   |  2 ++
>  include/dt-bindings/mtd/partitions.h          | 15 ++++++++++
>  3 files changed, 46 insertions(+)
>  create mode 100644 include/dt-bindings/mtd/partitions.h
> 
> diff --git a/Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.yaml b/Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.yaml
> index 331e564f29dc..a939fb52ef76 100644
> --- a/Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.yaml
> +++ b/Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.yaml
> @@ -164,3 +164,32 @@ examples:
>              read-only;
>          };
>      };
> +
> +  - |
> +    partitions {
> +        compatible = "fixed-partitions";
> +        #address-cells = <2>;
> +        #size-cells = <1>;
> +
> +        partition@0 {
> +            label = "bootloader";
> +            reg = <0 0x000000 0x020000>;
> +            read-only;
> +        };
> +
> +        firmware@1 {
> +            label = "firmware";
> +            /* From the end of the last partition, occupying as mush
> +             * as possible, retaining 0x010000 after it,
> +             * "MTDPART_OFS_SPECIAL MTDPART_OFS_NXTBLK" similar to
> +             * this, but always beginning at erase block boundary. */
> +            reg = <MTDPART_OFS_SPECIAL MTDPART_OFS_RETAIN 0x010000>;
> +        };
> +
> +        calibration@2 {
> +            compatible = "fixed-partitions";
> +            label = "calibration";
> +            /* Appending to the last partition, occupying 0x010000 */
> +            reg = <MTDPART_OFS_SPECIAL MTDPART_OFS_APPEND 0x010000>;
> +        };
> +    };
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 668d1e24452d..7d6beadc8b36 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -13771,9 +13771,11 @@ T:	git git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git mtd/fixes
>  T:	git git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git mtd/next
>  F:	Documentation/devicetree/bindings/mtd/
>  F:	drivers/mtd/
> +F:	include/dt-bindings/mtd/
>  F:	include/linux/mtd/
>  F:	include/uapi/mtd/

This is a nice addition but totally unrelated, please make a separated
patch.

>  
> +
>  MEMSENSING MICROSYSTEMS MSA311 DRIVER
>  M:	Dmitry Rokosov <ddrokosov@sberdevices.ru>
>  L:	linux-iio@vger.kernel.org
> diff --git a/include/dt-bindings/mtd/partitions.h b/include/dt-bindings/mtd/partitions.h
> new file mode 100644
> index 000000000000..456a54a1259a
> --- /dev/null
> +++ b/include/dt-bindings/mtd/partitions.h
> @@ -0,0 +1,15 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +/*
> + * Device Tree constants identical to those in include/linux/mtd/partitions.h
> + */
> +
> +#ifndef _DT_BINDINGS_MTD_PARTITIONS_H
> +#define _DT_BINDINGS_MTD_PARTITIONS_H
> +
> +#define MTDPART_OFS_SPECIAL	(-1)

This one does not exist, maybe -1 is hardcoded in the code and defining
it close to the existing definitions (not shared with the bindings)
make sense, but that is a different patch.

> +#define MTDPART_OFS_RETAIN	(-3)
> +#define MTDPART_OFS_NXTBLK	(-2)
> +#define MTDPART_OFS_APPEND	(-1)
> +#define MTDPART_SIZ_FULL	(0)

Just as an FYI, I would have expected the existing definitions to be
dropped if we were to take the patch.

Thanks,
Miquèl

  reply	other threads:[~2023-10-25  7:42 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-25  5:29 [PATCH] dt-bindings: mtd-partitions: Export special values Edward Chow
2023-10-25  7:41 ` Miquel Raynal [this message]
2023-10-25  8:20 ` Krzysztof Kozlowski
2023-10-25 12:33 ` Rob Herring
2023-10-27  9:46 ` [PATCH v2 0/2] dt-bindings: mtd: partitions: " Edward Chow
2023-10-27  9:46   ` [PATCH v2 1/2] " Edward Chow
2023-10-27  9:46   ` [PATCH v2 2/2] dt-bindings: mtd: partitions: Document " Edward Chow
2023-10-27 11:06     ` Krzysztof Kozlowski
2023-10-27 12:16     ` Rob Herring
2023-10-27 11:06   ` [PATCH v2 0/2] dt-bindings: mtd: partitions: Export " Krzysztof Kozlowski
2023-10-27 11:07   ` Krzysztof Kozlowski
2023-10-27 12:11   ` Miquel Raynal
  -- strict thread matches above, loose matches on Subject: below --
2023-10-25  4:50 [PATCH] dt-bindings: mtd-partitions: " Edward Chow

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=20231025094140.3da9ad71@xps-13 \
    --to=miquel.raynal@bootlin.com \
    --cc=devicetree@vger.kernel.org \
    --cc=equu@openmail.cc \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=richard@nod.at \
    --cc=robh+dt@kernel.org \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).