[PATCH 0/8] nvmem: Let layout drivers be modules

From: Miquel Raynal
Date: Wed Mar 01 2023 - 10:22:50 EST


Hello,

Following Greg's opposition to merge the current nvmem layout support
proposal [1], arguing that it would eventually grow the size of the
Linux kernel and asking for some "modularization" support, here is a
proposal to turn layout drivers into regular tristate drivers.

The first three patches are preparation changes in order to extend (and
fix) a little bit the of/device.c support. The fix does not seem to
impact most of the current users so I guess it can live with the rest of
the series in order to avoid future merge conflicts.

The nvmem core is then extended to support the absence of layouts and
possibly lead to probe deferrals when relevant.

Finally, the two existing layout drivers are converted into modules and
their Kconfig symbols changed to tristate.

The base series on which these changes apply is still contained in [1],
I would prefer to keep it as it was and apply this series on top of it.

Tests have been conducted on a Marvell Prestera switch with the mvpp2
Ethernet driver calling for a MAC address stored in the ONIE TLV table
available through a layout driver in an EEPROM/MTD device.

[1] https://github.com/miquelraynal/linux/tree/nvmem-next/layouts

Thanks,
Miquèl

Miquel Raynal (8):
of: Fix modalias string generation
of: Change of_device_get_modalias() main argument
of: Create an of_device_request_module() receiving an OF node
nvmem: core: Fix error path ordering
nvmem: core: Handle the absence of expected layouts
nvmem: core: Request layout modules loading
nvmem: layouts: sl28vpd: Convert layout driver into a module
nvmem: layouts: onie-tlv: Convert layout driver into a module

drivers/nvmem/core.c | 20 ++++++++++++--
drivers/nvmem/layouts/Kconfig | 4 +--
drivers/nvmem/layouts/onie-tlv.c | 15 ++++++++++-
drivers/nvmem/layouts/sl28vpd.c | 14 +++++++++-
drivers/of/device.c | 45 ++++++++++++++++++++++----------
include/linux/of_device.h | 6 +++++
6 files changed, 84 insertions(+), 20 deletions(-)

--
2.34.1