This adds support for the nvmem-cells properties cropping up in manyb device trees. This is an easy way to load configuration, version information, or calibration data from a non-volatile memory source. For more information, refer to patch 6 ("misc: Add support for nvmem cells").
For the moment I have only added some integration tests using the ethernet addresses. This hits the main code paths (looking up nvmem cells) but doesn't test writing. I can add a few stand-alone tests if desired. The patches are structured in the following manner: 1-5: These are general cleanups, and may be applied independently of the rest of the series. 6-7: Add NVMEM support 8-11: Support reading ethernet addresses using the NVMEM API and add some tests. Changes in v2: - Call the appropriate API functions directly from nvmem_cell_(read|write). This means we can drop the nvmem_interface machinery. Sean Anderson (11): sandbox: net: Remove fake-host-hwaddr sandbox: Remove eth2addr from environment test: eth: Add test for ethernet addresses sandbox: Move some mac addresses to device tree misc: i2c_eeprom: Make i2c_eeprom_write use a const buf misc: Add support for nvmem cells sandbox: Enable NVMEM net: Add support for reading mac addresses from nvmem cells test: Load mac address with i2c eeprom test: Load mac address using RTC test: Load mac address using misc device MAINTAINERS | 7 ++ arch/sandbox/dts/sandbox.dts | 1 - arch/sandbox/dts/sandbox64.dts | 1 - arch/sandbox/dts/test.dts | 29 +++++- board/sandbox/sandbox.env | 4 - configs/sandbox64_defconfig | 1 + configs/sandbox_defconfig | 1 + configs/sandbox_flattree_defconfig | 1 + configs/sandbox_noinst_defconfig | 1 + configs/sandbox_spl_defconfig | 1 + doc/api/index.rst | 1 + doc/api/nvmem.rst | 7 ++ drivers/misc/Kconfig | 16 +++ drivers/misc/Makefile | 1 + drivers/misc/i2c_eeprom.c | 3 +- drivers/misc/i2c_eeprom_emul.c | 4 + drivers/misc/misc_sandbox.c | 3 + drivers/misc/nvmem.c | 142 +++++++++++++++++++++++++++ drivers/net/sandbox.c | 10 +- drivers/rtc/i2c_rtc_emul.c | 10 ++ include/i2c_eeprom.h | 3 +- include/nvmem.h | 151 +++++++++++++++++++++++++++++ net/eth-uclass.c | 13 ++- test/dm/eth.c | 28 ++++++ 24 files changed, 414 insertions(+), 25 deletions(-) create mode 100644 doc/api/nvmem.rst create mode 100644 drivers/misc/nvmem.c create mode 100644 include/nvmem.h -- 2.35.1.1320.gc452695387.dirty