[PATCH v2 0/9] nvmem: implement block NVMEM provider
From: Daniel Golle
Date: Wed May 29 2024 - 22:14:01 EST
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 or and in
future may also other block devices).
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].
Changes since v1 sent on March 21st 2024 [3]:
- introduce notifications for block device addition and removal for
in-kernel users. This allows the nvmem driver to be built as a module
and avoids using class_interface and block subsystem internals as
suggested in https://patchwork.kernel.org/comment/25771998/ and
https://patchwork.kernel.org/comment/25770441/
[1]: https://patchwork.kernel.org/project/linux-block/list/?series=767565
[2]: https://patchwork.kernel.org/project/linux-block/list/?series=832705
[3]: https://patchwork.kernel.org/project/linux-block/list/?series=837150&archive=both
Daniel Golle (9):
dt-bindings: block: add basic bindings for block devices
block: partitions: populate fwnode
block: add support for notifications
block: add new genhd flag GENHD_FL_NVMEM
nvmem: implement block 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 ++++
block/Kconfig | 6 +
block/Makefile | 1 +
block/blk-notify.c | 88 ++++++++
block/partitions/core.c | 41 ++++
drivers/mmc/core/block.c | 8 +
drivers/mmc/core/bus.c | 2 +
drivers/nvmem/Kconfig | 11 +
drivers/nvmem/Makefile | 2 +
drivers/nvmem/block.c | 198 ++++++++++++++++++
include/linux/blkdev.h | 10 +
14 files changed, 505 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-notify.c
create mode 100644 drivers/nvmem/block.c
--
2.45.1