[U-Boot] cfb_console.c: DM_VIDEO conversion questions/suggestions

Igor Opaniuk igor.opaniuk at gmail.com
Mon May 27 05:21:17 UTC 2019


Hi everyone,

I've finally started looking into the cfb_console.c driver and it's
conversion to DM_VIDEO after our initial discussion [1].
Unfortunately I've a bit underestimated the amount of effort that
should be done, as mxsfb.c in the Linux mainline obviously pulls the
whole core fb subsystem
(drivers/video/fbdev/core), which can take a while and frankly I doubt
that this is a proper way to do things here.

Taking into account that the deadline for DM_VIDEO conversion is
2019.07, it's unlikely that we will manage to do the full conversions
this cfb_console driver and all dependent hw specific drivers in a
proper way (where we can provide information about videomodes as
properties in a proper nodes in DT).

Currently the init chain for fb stuff in U-boot (on the other hand, in
the Linux, hw specific driver is probed initially, then they trigger
fb common routines that are needed from `video/fbdev/core`):
stdio_add_devices() -> ./common/stdio.c -> drv_video_init ()
(drivers/cfb_console.c) - > video_hw_init (particular hw backend,
which was statically linked at compile time with a proper
video_hw_init() implementation, for example look into mxsfb.c)

2 ways of conversion that come to my mind:
1. Start with simple DM wrappers in cfb_console.c, and introduce dumb
DT nodes so the device at least can be probed. All video configuration
will be stored the same way as before in the U-boot env (for example,
"videomode=video=ctfb:x:640,y:480,depth:18,pclk:39722,le:48,ri:16,up:33,lo:10,hs:96,vs:2,sync:0,vmode:0\0").
Then, step by step, driver by driver, we can move some properties to
DT and try to sync Linux/U-boot video DT nodes (at least avoid
divergence of tree nodes, so Linux/U-boot video-related DT nodes
conform to each other). Yes, this is kind of dirty workaround, but at
least this something we can start with, and with minimal amount of
intrusive changes.
2. Perform full conversion, where everything works the same way as in
Linux kernel. Initially I thought that it could be the proper way to
go, but taking into account all differences in the implementation of
fb in U-boot/Linux (even the way how the drivers are initialized), I
think we will just end up pulling the whole big piece from the Linux
kernel, that will definitely take a while (especially further support
of this code base, testing/fixing issues etc.).

Just to be aware about the amount of effort that should be done:

: u-boot.git$ grep -e CONFIG_CFB_CONSOLE -r ./configs/
./configs/T1042RDB_PI_SDCARD_defconfig:CONFIG_CFB_CONSOLE_ANSI=y
./configs/T1042D4RDB_SDCARD_defconfig:CONFIG_CFB_CONSOLE_ANSI=y
./configs/T1042RDB_PI_NAND_SECURE_BOOT_defconfig:CONFIG_CFB_CONSOLE_ANSI=y
./configs/nokia_rx51_defconfig:CONFIG_CFB_CONSOLE_ANSI=y
./configs/T1042D4RDB_NAND_defconfig:CONFIG_CFB_CONSOLE_ANSI=y
./configs/T1042RDB_PI_SPIFLASH_defconfig:CONFIG_CFB_CONSOLE_ANSI=y
./configs/T1042RDB_PI_NAND_defconfig:CONFIG_CFB_CONSOLE_ANSI=y
./configs/T1042D4RDB_defconfig:CONFIG_CFB_CONSOLE_ANSI=y
./configs/T1042RDB_PI_defconfig:CONFIG_CFB_CONSOLE_ANSI=y
./configs/eb_cpu5282_internal_defconfig:# CONFIG_CFB_CONSOLE is not set
./configs/T1042D4RDB_SPIFLASH_defconfig:CONFIG_CFB_CONSOLE_ANSI=y
./configs/eb_cpu5282_defconfig:# CONFIG_CFB_CONSOLE is not set
./configs/T1042D4RDB_SECURE_BOOT_defconfig:CONFIG_CFB_CONSOLE_ANSI=y

Additional Kconfig symbols, that depend on CFB_CONSOLE:
* VGA_AS_SINGLE_DEVICE
* CONSOLE_EXTRA_INFO
* CONSOLE_SCROLL_LINES
* SYS_CONSOLE_BG_COL
* SYS_CONSOLE_FG_COL

Drivers, that don't imply CFG_CONSOLE, but are used alongside with
cfb_console.c (kind of particular hw backend driver for fb console):
* mxsfb.c
* mb862xx.c
* sunxi_display.c
* ati_radeon_fb.c
* fsl_dcu_fb.c
* omap3_dss.c
* da8xx-fb.c

Looking forward to your suggestions/recommendations here (and let me
know if I missed something), thanks!

[1] https://lists.denx.de/pipermail/u-boot/2019-April/365506.html

-- 
Best regards - Freundliche GrĂ¼sse - Meilleures salutations

Igor Opaniuk

mailto: igor.opaniuk at gmail.com
skype: igor.opanyuk
+380 (93) 836 40 67
http://ua.linkedin.com/in/iopaniuk


More information about the U-Boot mailing list