u-boot/doc
Sean Anderson c8ce7ba87d misc: Add support for nvmem cells
This adds support for "nvmem cells" as seen in Linux. The nvmem device
class in Linux is used for various assorted ROMs and EEPROMs. In this
sense, it is similar to UCLASS_MISC, but also includes
UCLASS_I2C_EEPROM, UCLASS_RTC, and UCLASS_MTD. New drivers corresponding
to a Linux-style nvmem device should be implemented as one of the
previously-mentioned uclasses. The nvmem API acts as a compatibility
layer to adapt the (slightly different) APIs of these uclasses. It also
handles the lookup of nvmem cells.

While nvmem devices can be accessed directly, they are most often used
by reading/writing contiguous values called "cells". Cells typically
hold information like calibration, versions, or configuration (such as
mac addresses).

nvmem devices can specify "cells" in their device tree:

	qfprom: eeprom@700000 {
		#address-cells = <1>;
		#size-cells = <1>;
		reg = <0x00700000 0x100000>;

		/* ... */

		tsens_calibration: calib@404 {
			reg = <0x404 0x10>;
		};
	};

which can then be referenced like:

	tsens {
		/* ... */
		nvmem-cells = <&tsens_calibration>;
		nvmem-cell-names = "calibration";
	};

The tsens driver could then read the calibration value like:

	struct nvmem_cell cal_cell;
	u8 cal[16];
	nvmem_cell_get_by_name(dev, "calibration", &cal_cell);
	nvmem_cell_read(&cal_cell, cal, sizeof(cal));

Because nvmem devices are not all of the same uclass, supported uclasses
must register a nvmem_interface struct. This allows CONFIG_NVMEM to be
enabled without depending on specific uclasses. At the moment,
nvmem_interface is very bare-bones, and assumes that no initialization
is necessary. However, this could be amended in the future.

Although I2C_EEPROM and MISC are quite similar (and could likely be
unified), they present different read/write function signatures. To
abstract over this, NVMEM uses the same read/write signature as Linux.
In particular, short read/writes are not allowed, which is allowed by
MISC.

The functionality implemented by nvmem cells is very similar to that
provided by i2c_eeprom_partition. "fixed-partition"s for eeproms does
not seem to have made its way into Linux or into any device tree other
than sandbox. It is possible that with the introduction of this API it
would be possible to remove it.

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
2022-06-08 14:00:22 -04:00
..
android Create a new boot/ directory 2021-11-11 19:01:56 -05:00
api misc: Add support for nvmem cells 2022-06-08 14:00:22 -04:00
arch doc: sandbox: Add additional valgrind documentation 2022-05-28 10:59:27 +02:00
board doc: update mail author for st-dt.rst 2022-06-06 10:20:04 -04:00
build doc/build/gcc: add more required packages 2022-05-28 10:59:27 +02:00
chromium doc: Update documentation for cros-2021.04 release 2021-07-15 19:50:28 +08:00
develop Convert CONFIG_SPL_SYS_MALLOC_SIMPLE to Kconfig 2022-06-06 12:09:12 -04:00
device-tree-bindings doc: regulator: Add regulator-force-boot-off binding 2022-06-06 17:47:16 -04:00
imx imx7: Update CONFIG_SPL_STACK defaults in Kconfig 2022-06-06 12:09:28 -04:00
media doc: Remove duplicated documentation directory 2019-06-20 10:57:08 -04:00
mvebu WS cleanup: remove trailing empty lines 2021-09-30 08:08:56 -04:00
sphinx doc: update doc/sphinx/requirements.txt 2022-03-25 08:59:49 -04:00
sphinx-static doc: Remove duplicated documentation directory 2019-06-20 10:57:08 -04:00
SPI sandbox: update documents regarding spi_sf 2020-05-29 20:55:45 -06:00
SPL net: Rename SPL_NET_SUPPORT to SPL_NET 2021-09-04 12:48:53 -04:00
uImage.FIT mkimage: use environment variable MKIMAGE_SIGN_PIN to set pin for OpenSSL Engine 2021-07-28 20:46:34 -04:00
usage doc: environment: Fix typo 2022-06-04 08:43:55 +02:00
.gitignore doc: Add .gitignore for the Sphinx build output directory 2019-07-24 14:15:37 -04:00
bounces patman: add support for omitting bouncing addresses 2017-09-11 21:43:58 -06:00
conf.py doc: fix Latex margins 2021-08-14 20:54:41 +02:00
feature-removal-schedule.txt treewide: mem: Move mtest related defines to Kconfig 2020-05-08 12:02:56 -04:00
git-mailrc nds32: Remove the architecture 2022-04-25 16:04:05 -04:00
I2C_Edge_Conditions
index.rst doc: move i.MX7D/i.MX8MM A/B booting to board specific 2021-08-17 17:24:07 +02:00
kwboot.1 tools: kwboot: Fix spelling of "followed" in kwboot.1 2022-04-23 22:05:33 +02:00
Makefile doc: handle 'make htmldocs' warnings as errors 2021-08-01 22:23:01 +02:00
mkeficapsule.1 mkeficapsule: Remove raw and FIT GUID types 2022-04-15 10:43:18 +02:00
mkimage.1 mkimage: Support signing 'auto' FITs 2022-06-06 18:01:20 -04:00
README.arm-caches doc: ARM: Use the right function name 2015-01-14 11:37:39 -05:00
README.arm-relocation treewide: convert bd_t to struct bd_info manually 2020-07-17 10:46:44 -04:00
README.armada-secureboot arm: mvebu: Implement secure boot 2017-02-01 09:04:18 +01:00
README.asn1 doc: add README for asn1 compiler and decoder 2019-12-06 16:44:20 -05:00
README.atmel_mci treewide: convert bd_t to struct bd_info manually 2020-07-17 10:46:44 -04:00
README.atmel_pmecc ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig 2019-01-21 08:36:11 -05:00
README.autoboot autoboot: Rename CONFIG_MENUKEY to CONFIG_AUTOBOOT_MENUKEY 2019-08-02 11:19:14 -04:00
README.bcm7xxx board: arm: Add support for Broadcom BCM7445 2018-07-10 16:55:57 -04:00
README.bcmns3 doc: add README doc for bcmns3 platform 2020-07-29 10:37:11 -04:00
README.bitbangMII Coding Style cleanup; update CHANGELOG, prepare -rc1 2009-10-28 00:49:47 +01:00
README.bootcount bootcount: clarify documentation 2022-03-23 07:27:38 +01:00
README.boston boston: Introduce support for the MIPS Boston development board 2016-09-21 16:24:36 +02:00
README.bus_vcxk SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
README.cfi doc/README.cfi: Update code snippet, and add example. 2017-01-02 11:14:01 -05:00
README.commands.itest
README.commands.spl WS cleanup: remove SPACE(s) followed by TAB 2021-09-30 09:08:16 -04:00
README.console treewide: convert bd_t to struct bd_info manually 2020-07-17 10:46:44 -04:00
README.davinci README: davinci: Clarify when SPL is used and the target devices. 2020-07-13 20:58:34 +05:30
README.davinci.nand_spl arm, davinci: add cam_enc_4xx support 2011-11-03 22:56:25 +01:00
README.dfutftp WS cleanup: remove excessive empty lines 2021-09-30 08:08:56 -04:00
README.displaying-bmps lcd: implement a callback for splashimage 2013-03-11 11:06:09 -04:00
README.dns Coding Style cleanup; update CHANGELOG. 2009-07-23 22:23:23 +02:00
README.enetaddr net: Always build the string_to_enetaddr() helper 2019-12-09 09:47:41 -06:00
README.esbc_validate SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
README.ext4 fs: Migrate ext4 to Kconfig 2018-01-22 16:43:30 -05:00
README.falcon WS cleanup: remove SPACE(s) followed by TAB 2021-09-30 09:08:16 -04:00
README.fec_mxc net: fec_mxc: Drop CONFIG_FEC_XCV_TYPE 2022-03-18 12:48:17 -04:00
README.fsl-ddr driver/ddr/fsl: Add address parity support for DDR4 UDIMM/discrete 2016-03-21 12:42:13 -07:00
README.fsl-dpaa armv8/ls1043a: Add Fman support 2015-10-29 10:34:01 -07:00
README.fsl-esdhc Move eSDHC adapter card identification to board files 2020-07-27 14:16:28 +05:30
README.fsl-hwconfig powerpc/85xx: Specify hwconfig usage for USB controller 2011-07-11 13:24:20 -05:00
README.fsl-trustzone-components armv8: LS2080A: Rename LS2085A to reflect LS2080A 2015-11-30 08:53:04 -08:00
README.fsl_iim Add fsl_iim driver 2013-04-28 11:07:41 +02:00
README.fuse Add fuse API and commands 2013-04-28 11:07:40 +02:00
README.generic-board treewide: convert bd_t to struct bd_info manually 2020-07-17 10:46:44 -04:00
README.generic_usb_ohci doc: Fix outdated ohci board hook documentation 2019-04-02 12:52:54 +02:00
README.gpio dt-bindings: gpio: alignment with kernel v5.3 2020-04-16 23:06:54 -04:00
README.gpt cmd: gpt: Add option to write GPT partitions to environment variable 2021-05-04 12:52:46 -04:00
README.Heterogeneous-SoCs powerpc/mpc85xx: Add DSP side awareness for Freescale Heterogeneous SoCs 2015-03-04 10:15:29 -08:00
README.hwconfig Cosmetic: Fix a number of typos, no functional changes. 2013-09-20 10:30:54 -04:00
README.i2c i2c: Add a mux for GPIO-based I2C bus arbitration 2015-08-05 21:06:10 -06:00
README.iomux SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
README.JFFS2 fs: Kconfig: Add a separate option for FS_JFFS2 2017-05-22 12:45:31 -04:00
README.JFFS2_NAND README: Drop unused JFFS2 options 2016-10-06 20:40:26 -04:00
README.kconfig Revert "global: Remove CONFIG_SYS_EXTRA_OPTIONS support" 2022-04-02 18:18:57 -04:00
README.kwbimage doc: fix documentation of out-of-tree build 2014-11-07 16:27:07 -05:00
README.LED powerpc, 8xx: remove support for 8xx 2017-06-12 08:37:55 -04:00
README.link-local net: cosmetic: Fix checkpatch.pl failures in net.c 2015-04-18 11:11:35 -06:00
README.malta Use correct spelling of "U-Boot" 2016-02-06 12:00:59 +01:00
README.marvell Revert "arm64: dts: a3720: add support for espressobin with populated emmc" 2020-12-07 07:11:37 +01:00
README.mediatek doc: README.mediatek: Add a simple README for MediaTek 2018-11-28 23:04:54 -05:00
README.memory-test Feature Removal: disable "mtest" command by default 2013-03-11 15:26:59 -04:00
README.mpc83xx.ddrecc
README.mpc83xxads README: Drop CONFIG_MPC8349ADS 2016-10-06 20:40:51 -04:00
README.mpc85xx powerpc: mpc85xx: Rename _start_e500 symbol to _start 2022-04-26 17:18:39 +05:30
README.mpc85xx-sd-spi-boot Fix URLs to old freescale git repos 2022-03-28 08:22:17 -04:00
README.mpc85xx-spin-table Use correct spelling of "U-Boot" 2016-02-06 12:00:59 +01:00
README.mpc85xxcds Use correct spelling of "U-Boot" 2016-02-06 12:00:59 +01:00
README.multi-dtb-fit doc: multi-dtb-fit: Remove double underscores 2020-07-17 10:47:19 -04:00
README.mxc_ocotp arm: vf610: Add Vybrid VF610 to mxc_ocotp document 2013-06-03 10:56:54 +02:00
README.nand Convert CONFIG_NAND_OMAP_ECCSCHEME to Kconfig 2021-10-06 09:16:24 -04:00
README.odroid WS cleanup: remove SPACE(s) followed by TAB 2021-09-30 09:08:16 -04:00
README.OFT
README.omap-ulpi-viewport usb: ulpi: Add omap-ulpi-view port support 2012-02-12 10:11:30 +01:00
README.omap3 logicpd: Drop omap3 zoom1 2020-07-09 20:58:05 +05:30
README.pblimage powerpc/tool/pbl: fix pbl image compiling process 2013-10-16 16:13:13 -07:00
README.pcap WS cleanup: remove trailing empty lines 2021-09-30 08:08:56 -04:00
README.POST treewide: convert bd_t to struct bd_info manually 2020-07-17 10:46:44 -04:00
README.power-framework doc:power:pmic: Add doc entry for PMIC(v2) framework 2014-04-18 10:42:30 -04:00
README.pxe cmd: pxe_utils: sysboot: add kaslr-seed generation support 2022-02-11 09:00:47 -05:00
README.ramboot-ppc85xx powerpc: mpc85xx: Convert CONFIG_SYS_CCSRBAR_DEFAULT to Kconfig option 2016-12-02 08:52:34 -08:00
README.rmobile ARM: rmobile: Add R8A77965 M3NULCB support 2019-04-09 18:19:10 +02:00
README.rockchip doc: rockchip: puma: update build and flash instructions 2021-12-24 14:53:31 +08:00
README.rockusb usb: rockchip: implement K_FW_LBA_ERASE_10 command 2018-08-08 22:22:07 +02:00
README.s5p4418 arm: add (default) config for nanopi2 board 2020-07-29 08:43:40 -04:00
README.s5pc1xx s5pc1xx: update the README file 2010-04-03 15:24:26 -05:00
README.sata Use correct spelling of "U-Boot" 2016-02-06 12:00:59 +01:00
README.sched
README.scrapyard scrapyard: Delete this file and script 2019-09-19 12:54:29 -04:00
README.serial_multi powerpc, 5xxx, 512x: remove support for mpc5xxx and mpc512x 2017-06-16 10:14:55 -04:00
README.sha1 Drop references to MAKEALL in the documentation 2016-07-31 19:37:08 -06:00
README.silent Convert CONFIG_SYS_DEVICE_NULLDEV to Kconfig 2020-08-23 13:43:10 -04:00
README.SNTP doc: Fix some typos in different files 2012-03-27 13:31:37 +02:00
README.socfpga arm: socfpga: arria10: Add qts-filter for Arria10 socfpga 2020-10-09 17:53:14 +08:00
README.splashprepare splash: Use splashfile instead of location->name 2019-05-20 11:55:42 +02:00
README.srio-pcie-boot-corenet powerpc/doc: Update the README.srio-pcie-boot-corenet 2013-06-20 17:08:47 -05:00
README.standalone nds32: Remove the architecture 2022-04-25 16:04:05 -04:00
README.t1040-l2switch drivers: net: vsc9953: Add LAG support 2016-01-28 12:22:19 -06:00
README.tee Documentation: tee uclass and op-tee driver 2018-10-07 10:47:38 -04:00
README.ti-secure doc: Update info on using K3 secure devices 2019-04-26 17:51:51 -04:00
README.TPL cosmetic: Fix spelling and whitespace errors 2019-12-03 08:43:23 -05:00
README.ubi ubi: Add "skipcheck" command to set/clear this bit in the UBI volume hdr 2019-10-16 05:42:36 +02:00
README.ubispl spl: Lightweight UBI and UBI fastmap support 2016-07-22 09:53:00 -04:00
README.ublimage Minor coding style cleanup. 2011-09-11 21:24:09 +02:00
README.udp net: add a generic udp protocol 2020-09-30 16:55:03 -04:00
README.unaligned-memory-access.txt doc: Fix comparison operator 2014-10-27 11:04:00 -04:00
README.uniphier ARM: uniphier: enable distro boot 2018-07-25 08:47:53 +09:00
README.update cmd: drop fitupd command 2020-07-16 12:37:01 +02:00
README.usb usb: doc: Fix spelling issues in README.usb 2021-11-15 14:33:33 -05:00
README.vf610 arm: vf610: Add Vybrid VF610 CPU support 2013-06-03 10:56:53 +02:00
README.video video: Add information about using TrueType fonts 2018-12-28 12:26:58 +01:00
README.VLAN
README.VSC3316-3308 board/freescale/common: VSC3316/VSC3308 initialization code 2012-10-22 14:31:21 -05:00
README.watchdog nds32: Remove the architecture 2022-04-25 16:04:05 -04:00
README.zfs Coding Style cleanup: replace leading SPACEs by TABs 2013-10-14 16:06:54 -04:00

This patch series adds support for ZFS listing and load to u-boot.

To Enable zfs ls and load commands, modify the board specific config file with
#define CONFIG_CMD_ZFS

Steps to test:

1. After applying the patch, zfs specific commands can be seen
   in the boot loader prompt using
	UBOOT #help

	zfsload- load binary file from a ZFS file system
	zfsls  - list files in a directory (default /)

2. To list the files in zfs pool, device or partition, execute
	zfsls <interface> <dev[:part]> [POOL/@/dir/file]
	For example:
	UBOOT #zfsls mmc 0:5 /rpool/@/usr/bin/

3. To read and load a file from an ZFS formatted partition to RAM, execute
	zfsload <interface> <dev[:part]> [addr] [filename] [bytes]
	For example:
	UBOOT #zfsload mmc 2:2 0x30007fc0 /rpool/@/boot/uImage

References :
	-- ZFS GRUB sources from Solaris GRUB-0.97
	-- GRUB Bazaar repository

Jorgen Lundman <lundman at lundman.net> 2012.