Linux-mmc Archive mirror
 help / color / mirror / Atom feed
From: Daniel Golle <daniel@makrotopia.org>
To: "Rob Herring" <robh@kernel.org>,
	"Krzysztof Kozlowski" <krzysztof.kozlowski+dt@linaro.org>,
	"Conor Dooley" <conor+dt@kernel.org>,
	"Ulf Hansson" <ulf.hansson@linaro.org>,
	"Jens Axboe" <axboe@kernel.dk>,
	"Daniel Golle" <daniel@makrotopia.org>,
	"Dave Chinner" <dchinner@redhat.com>, "Jan Kara" <jack@suse.cz>,
	"Thomas Weißschuh" <linux@weissschuh.net>,
	"Damien Le Moal" <dlemoal@kernel.org>,
	"Li Lingfeng" <lilingfeng3@huawei.com>,
	"Christian Brauner" <brauner@kernel.org>,
	"Christian Heusel" <christian@heusel.eu>,
	"Min Li" <min15.li@samsung.com>,
	"Adrian Hunter" <adrian.hunter@intel.com>,
	"Avri Altman" <avri.altman@wdc.com>,
	"Hannes Reinecke" <hare@suse.de>,
	"Christian Loehle" <CLoehle@hyperstone.com>,
	"Bean Huo" <beanhuo@micron.com>, "Yeqi Fu" <asuk4.q@gmail.com>,
	"Victor Shih" <victor.shih@genesyslogic.com.tw>,
	"Christophe JAILLET" <christophe.jaillet@wanadoo.fr>,
	"Dominique Martinet" <dominique.martinet@atmark-techno.com>,
	"Ricardo B. Marliere" <ricardo@marliere.net>,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-mmc@vger.kernel.org, linux-block@vger.kernel.org
Subject: [PATCH 0/8] block: implement NVMEM provider
Date: Thu, 21 Mar 2024 19:31:48 +0000	[thread overview]
Message-ID: <cover.1711048433.git.daniel@makrotopia.org> (raw)

On embedded devices using an eMMC it is common that one or more (hw/sw)
partitions on the eMMC are used to store MAC addresses and Wi-Fi
calibration EEPROM data.

Implement an NVMEM provider backed by a block device as typically the
NVMEM framework is used to have kernel drivers read and use binary data
from EEPROMs, efuses, flash memory (MTD), ...

In order to be able to reference hardware partitions on an eMMC, add code
to bind each hardware partition to a specific firmware subnode.

Overall, this enables uniform handling across practially all flash
storage types used for this purpose (MTD, UBI, and now also MMC).

As part of this series it was necessary to define a device tree schema
for block devices and partitions on them, which (similar to how it now
works also for UBI volumes) can be matched by one or more properties.

---
This series has previously been submitted as RFC on July 19th 2023[1]
and most of the basic idea did not change since. Another round of RFC
was submitted on March 5th 2024[2] which has received overall positive
feedback and only minor corrections have been done since (see
changelog below).

[1]: https://patchwork.kernel.org/project/linux-block/list/?series=767565
[2]: https://patchwork.kernel.org/project/linux-block/list/?series=832705

Changes since RFC:
 * Use 'partuuid' instead of reserved 'uuid' keyword to match against
   PARTUUID.
 * Simplify blk_nvmem_init(void) function.

Daniel Golle (8):
  dt-bindings: block: add basic bindings for block devices
  block: partitions: populate fwnode
  block: add new genhd flag GENHD_FL_NVMEM
  block: implement NVMEM provider
  dt-bindings: mmc: mmc-card: add block device nodes
  mmc: core: set card fwnode_handle
  mmc: block: set fwnode of disk devices
  mmc: block: set GENHD_FL_NVMEM

 .../bindings/block/block-device.yaml          |  22 +++
 .../devicetree/bindings/block/partition.yaml  |  51 ++++++
 .../devicetree/bindings/block/partitions.yaml |  20 +++
 .../devicetree/bindings/mmc/mmc-card.yaml     |  45 +++++
 MAINTAINERS                                   |   5 +
 block/Kconfig                                 |   9 +
 block/Makefile                                |   1 +
 block/blk-nvmem.c                             | 169 ++++++++++++++++++
 block/partitions/core.c                       |  41 +++++
 drivers/mmc/core/block.c                      |   8 +
 drivers/mmc/core/bus.c                        |   2 +
 include/linux/blkdev.h                        |   2 +
 12 files changed, 375 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/block/block-device.yaml
 create mode 100644 Documentation/devicetree/bindings/block/partition.yaml
 create mode 100644 Documentation/devicetree/bindings/block/partitions.yaml
 create mode 100644 block/blk-nvmem.c

-- 
2.44.0

             reply	other threads:[~2024-03-21 19:33 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-21 19:31 Daniel Golle [this message]
2024-03-21 19:32 ` [PATCH 1/8] dt-bindings: block: add basic bindings for block devices Daniel Golle
2024-03-21 19:39   ` Bart Van Assche
2024-03-21 20:26     ` Daniel Golle
2024-03-21 19:33 ` [PATCH 2/8] block: partitions: populate fwnode Daniel Golle
2024-03-21 19:33 ` [PATCH 3/8] block: add new genhd flag GENHD_FL_NVMEM Daniel Golle
2024-03-22 17:49   ` Bart Van Assche
2024-03-22 18:07     ` Daniel Golle
2024-03-22 19:22       ` Bart Van Assche
2024-04-18 22:51         ` Daniel Golle
2024-03-21 19:34 ` [PATCH 4/8] block: implement NVMEM provider Daniel Golle
2024-03-21 19:44   ` Bart Van Assche
2024-03-21 20:22     ` Daniel Golle
2024-03-22 17:52       ` Bart Van Assche
2024-03-22 18:11         ` Daniel Golle
2024-03-21 19:34 ` [PATCH 5/8] dt-bindings: mmc: mmc-card: add block device nodes Daniel Golle
2024-03-21 19:35 ` [PATCH 6/8] mmc: core: set card fwnode_handle Daniel Golle
2024-03-21 19:35 ` [PATCH 7/8] mmc: block: set fwnode of disk devices Daniel Golle
2024-03-21 19:36 ` [PATCH 8/8] mmc: block: set GENHD_FL_NVMEM Daniel Golle
2024-03-22 17:52 ` [PATCH 0/8] block: implement NVMEM provider Bart Van Assche
2024-03-22 18:02   ` Daniel Golle
2024-03-22 19:19     ` Bart Van Assche
2024-03-25 15:10 ` Rob Herring
2024-03-25 15:38   ` Daniel Golle
2024-03-26 20:24     ` Rob Herring
2024-03-26 21:28       ` Daniel Golle
2024-03-27 12:33         ` Rob Herring
2024-03-25 15:12 ` Rob Herring
2024-03-25 15:46   ` 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=cover.1711048433.git.daniel@makrotopia.org \
    --to=daniel@makrotopia.org \
    --cc=CLoehle@hyperstone.com \
    --cc=adrian.hunter@intel.com \
    --cc=asuk4.q@gmail.com \
    --cc=avri.altman@wdc.com \
    --cc=axboe@kernel.dk \
    --cc=beanhuo@micron.com \
    --cc=brauner@kernel.org \
    --cc=christian@heusel.eu \
    --cc=christophe.jaillet@wanadoo.fr \
    --cc=conor+dt@kernel.org \
    --cc=dchinner@redhat.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dlemoal@kernel.org \
    --cc=dominique.martinet@atmark-techno.com \
    --cc=hare@suse.de \
    --cc=jack@suse.cz \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=lilingfeng3@huawei.com \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=linux@weissschuh.net \
    --cc=min15.li@samsung.com \
    --cc=ricardo@marliere.net \
    --cc=robh@kernel.org \
    --cc=ulf.hansson@linaro.org \
    --cc=victor.shih@genesyslogic.com.tw \
    /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 read-only IMAP folder(s) and NNTP newsgroup(s).