cmd: eeprom: add support for layout aware commands
authorNikita Kiryanov <nikita@compulab.co.il>
Sat, 16 Apr 2016 14:55:03 +0000 (17:55 +0300)
committerTom Rini <trini@konsulko.com>
Fri, 20 May 2016 21:02:07 +0000 (17:02 -0400)
commitaa9e60441095ee3f20a109742e3ba5cdfd28458b
tree633fb82be68ab255d0a1df96a063fb5fe88b4792
parent2636ac65a84f2bbab4b6a773384cfc630b9b6d7b
cmd: eeprom: add support for layout aware commands

Introduce the (optional) eeprom print and eeprom update commands.

These commands are eeprom layout aware:
* The eeprom print command prints the contents of the eeprom in a human
  readable way (eeprom layout fields, and data formatted to be fit for human
  consumption).
* The eeprom update command allows user to update eeprom fields by specifying
  the field name, and providing the new data in a human readable format (same
  format as displayed by the eeprom print command).
* Both commands can either auto detect the layout, or be told which layout to
  use.

New CONFIG options:
CONFIG_CMD_EEPROM_LAYOUT - enables commands.
CONFIG_EEPROM_LAYOUT_HELP_STRING - tells user what layout names are supported

Feature API:
__weak int parse_layout_version(char *str)
- override to provide your own layout name parsing
__weak void __eeprom_layout_assign(struct eeprom_layout *layout, int layout_version);
- override to setup the layout metadata based on the version
__weak int eeprom_layout_detect(unsigned char *data)
- override to provide your own algorithm for detecting layout version
eeprom_field.c
- contains various printing and updating functions for common types of
  eeprom fields. Can be used for defining custom layouts.

Cc: Heiko Schocher <hs@denx.de>
Cc: Marek Vasut <marex@denx.de>
Cc: Simon Glass <sjg@chromium.org>
Cc: Igor Grinberg <grinberg@compulab.co.il>
Cc: Tom Rini <trini@konsulko.com>
Signed-off-by: Nikita Kiryanov <nikita@compulab.co.il>
README
cmd/eeprom.c
common/Makefile
common/eeprom/eeprom_field.c [new file with mode: 0644]
common/eeprom/eeprom_layout.c [new file with mode: 0644]
include/eeprom_field.h [new file with mode: 0644]
include/eeprom_layout.h [new file with mode: 0644]