This series provides a means to edit board configuration in U-Boot in a graphical manner. It supports multiple menu items and allows moving between them and selecting items. The configuration is defined in a data format so that code is not needed in most cases. This allows the board configuration to be provided in the devicetree.
This is still at an early stage, since it only supports menus. Numeric values are not supported. Most importantly it does not yet support loading or saving the configuration selected by the user. To try it out you can use something like: ./tools/expo.py -e test/boot/files/expo_layout.dts \ -l test/boot/files/expo_layout.dts -o cedit.dtb ./u-boot -Tl -c "cedit load hostfs - cedit.dtb; cedit run" Use the arrow keys to move between menus, enter to open a menu, escape to exit. Various minor fixes and improvements are provided in this series: - Update STB TrueType library to latest - Support clearing part of the video display - Support multiple livetrees loaded at runtime - Support loading and allocating a file - Support proper measuring of text in expo - Support simple themes for expo This series is available at u-boot-dm/cedit-working Simon Glass (40): binman: Correct coverage gap in control expo: Correct some header-file comments expo: Convert to using a string ID for the scene title sandbox: Fix quiting when the LCD window is closed test: Restore test behaviour on failure gpio: Avoid using an invalid ofnode dm: core: Avoid registering an inaccessible tree video: Drop #ifdefs from console_truetype video: Provide a way to clear part of the console expo: Store the console in the expo expo: Avoid automatically arranging the scene console: Correct truetype spacing error expo: Rename exp_set_text_mode() fs: Create functions to load and allocate a file cat: Update command to use fs_load_alloc() fdt: Align the start of the livetree fdt: Clarify the fdt pre-relocation warning fdt: Allow more general use of livetree bootstd: Add a separate log category for expo video: Correct docs for video_index_to_colour() video: Allow temporary colour changes console: Allow measuring the bounding box of text expo: Allow setting the start of the dynamic-ID range video: Use enum with video_index_to_colour() expo: Add width and height to objects expo: Use flags for objects expo: Calculate text bounding-box correctly expo: Set up the width and height of objects expo: Support simple themes expo: Move menu-item selection into a function expo: Support drawing of popup menus expo: Rename EXPOACT_POINT to EXPOACT_POINT_ITEM expo: Draw popup menus in both opened and closed states expo: Draw the current opened menu on top expo: Implement the keypress logic for popup menus expo: Add spacing around menus and items expo: Support building an expo from a description file expo: Add a configuration editor expo: Add tests for the configuration editor RFC: video: Update stb_truetype arch/sandbox/cpu/sdl.c | 3 +- arch/sandbox/dts/cedit.dtsi | 64 + arch/sandbox/dts/sandbox.dtsi | 6 + arch/sandbox/dts/test.dts | 13 + boot/Kconfig | 14 + boot/Makefile | 3 +- boot/bootflow_menu.c | 6 +- boot/bootmeth-uclass.c | 30 +- boot/cedit.c | 163 +++ boot/expo.c | 102 +- boot/expo_build.c | 401 +++++ boot/scene.c | 361 ++++- boot/scene_internal.h | 84 +- boot/scene_menu.c | 290 +++- cmd/Kconfig | 9 + cmd/Makefile | 1 + cmd/cat.c | 47 +- cmd/cedit.c | 93 ++ common/log.c | 1 + configs/sandbox_defconfig | 1 + doc/develop/expo.rst | 305 +++- doc/usage/cmd/cedit.rst | 31 + doc/usage/index.rst | 1 + drivers/core/ofnode.c | 27 +- drivers/gpio/gpio-uclass.c | 2 +- drivers/video/console_truetype.c | 259 ++-- drivers/video/stb_truetype.h | 2257 ++++++++++++++++++++++++++--- drivers/video/vidconsole-uclass.c | 42 + drivers/video/video-uclass.c | 54 +- fs/fs.c | 58 + include/dm/of.h | 2 + include/dm/ofnode.h | 10 + include/expo.h | 209 ++- include/fs.h | 38 + include/log.h | 2 + include/of_live.h | 10 + include/test/cedit-test.h | 29 + include/test/ut.h | 36 +- include/video.h | 22 +- include/video_console.h | 78 + lib/of_live.c | 11 +- test/boot/expo.c | 241 ++- test/boot/files/expo_layout.dts | 84 ++ test/dm/ofnode.c | 45 + test/dm/video.c | 6 +- test/py/tests/test_ut.py | 10 + tools/binman/control.py | 2 +- tools/expo.py | 130 ++ 48 files changed, 5110 insertions(+), 583 deletions(-) create mode 100644 arch/sandbox/dts/cedit.dtsi create mode 100644 boot/cedit.c create mode 100644 boot/expo_build.c create mode 100644 cmd/cedit.c create mode 100644 doc/usage/cmd/cedit.rst create mode 100644 include/test/cedit-test.h create mode 100644 test/boot/files/expo_layout.dts create mode 100755 tools/expo.py -- 2.41.0.rc0.172.g3f132b7071-goog