
This series starts the process of converting LCD and video devices over to use driver model. Both now use a very similar API thanks to earlier work by Nikita Kiryanov. With the driver-model conversion these will end up unified in a single uclass.
Unfortunately there are different features supported by each. This implementation provides for a common set of features which should serve most purposes. The intent is to support:
- bitmap devices with 8, 16 and 32 bits per pixel - text console wih white on black or vice versa - rotated text console - bitmap display (BMP format)
More can be added as additional boards are ported over to use driver model for video.
The name 'video' is chosen for the uclass since it is more generic than LCD. Another option would be 'display' but that would introduce a third concept to U-Boot which seems like the wrong approach.
The existing LCD and video init functions are not needed now, so this uclass does not implement them. This includes lcd_ctrl_init(), lcd_enable() and video_init().
Tests are provided to check that console text and bitmap output is correct. These should be able to be extended as more features are added.
Future work will convert a few boards over to use driver model for video. Likely targets are x86, exynos, tegra. Also, Rockchip LCD support will be added using driver model (patches will likely be sent some time in January).
Changes in v2: - Fix Ebabling typo in comment - Remove duplicated @fb_size line in common - Fix comment for video_get_ysize() - Fix reference to \n which should be \b - Fix 'withthe' typo in comment - Fix 'resolutino' typo in comment
Simon Glass (14): dm: video: Add a video uclass dm: lcd: Avoid using the lcd.h header file with driver model dm: video: Add a uclass for the text console dm: video: Add a 'normal' text console driver dm: video: Add a driver for a rotated text console common: Move LCD and video memory reservation together dm: common: Add memory reservation for the video uclass dm: video: Implement the bmp command for driver model dm: stdio: video: Plumb the video uclass into stdio sandbox: Move CONFIG_VIDEO_SANDBOX_SDL to Kconfig dm: video: sandbox: Convert sandbox to use driver model for video dm: video: test: Add tests for the video uclass dm: video: test: Add tests for rotated consoles dm: video: test: Test that bitmap display works correctly
arch/sandbox/dts/sandbox.dts | 1 + arch/sandbox/dts/test.dts | 7 + board/sandbox/sandbox.c | 17 -- common/Makefile | 2 + common/board_f.c | 71 ++++--- common/cmd_bmp.c | 22 +- common/lcd.c | 11 - common/stdio.c | 19 +- configs/sandbox_defconfig | 5 +- drivers/serial/sandbox.c | 5 +- drivers/video/Kconfig | 62 ++++++ drivers/video/Makefile | 3 + drivers/video/console_normal.c | 141 ++++++++++++ drivers/video/console_rotate.c | 436 ++++++++++++++++++++++++++++++++++++++ drivers/video/sandbox_sdl.c | 90 ++++---- drivers/video/vidconsole-uclass.c | 239 +++++++++++++++++++++ drivers/video/video-uclass.c | 249 ++++++++++++++++++++++ drivers/video/video_bmp.c | 353 ++++++++++++++++++++++++++++++ include/asm-generic/global_data.h | 4 + include/configs/sandbox.h | 13 +- include/dm/test.h | 8 + include/dm/uclass-id.h | 2 + include/fdtdec.h | 1 - include/lcd.h | 12 +- include/video.h | 168 ++++++++++++++- include/video_console.h | 136 ++++++++++++ lib/fdtdec.c | 1 - test/dm/Makefile | 1 + test/dm/video.c | 271 +++++++++++++++++++++++ tools/logos/denx-comp.bmp | Bin 0 -> 4148 bytes 30 files changed, 2221 insertions(+), 129 deletions(-) create mode 100644 drivers/video/console_normal.c create mode 100644 drivers/video/console_rotate.c create mode 100644 drivers/video/vidconsole-uclass.c create mode 100644 drivers/video/video-uclass.c create mode 100644 drivers/video/video_bmp.c create mode 100644 include/video_console.h create mode 100644 test/dm/video.c create mode 100644 tools/logos/denx-comp.bmp