[U-Boot] [PATCH v3 1/8] wandboard: add Future Eletronics 7" WVGA LCD extension board
Otavio Salvador
otavio at ossystems.com.br
Fri Jan 3 18:47:42 CET 2014
Hello Stefano,
On Thu, Dec 19, 2013 at 8:36 AM, Stefano Babic <sbabic at denx.de> wrote:
> one minor point.
>
> On 16/12/2013 23:43, Otavio Salvador wrote:
>
>> +int board_video_skip(void)
>> +{
>> + int i;
>> + int ret;
>> + int detected = 0;
>> + char const *panel = getenv("panel");
>> + if (!panel) {
>> + for (i = 0; i < ARRAY_SIZE(displays); i++) {
>> + struct display_info_t const *dev = displays+i;
>> + if (dev->detect && dev->detect(dev)) {
>> + panel = dev->mode.name;
>> + detected = 1;
>> + break;
>> + }
>> + }
>> + if (!panel) {
>> + panel = displays[0].mode.name;
>> + printf("No panel detected: default to %s\n", panel);
>> + i = 0;
>> + }
>> + } else {
>> + for (i = 0; i < ARRAY_SIZE(displays); i++) {
>> + if (!strcmp(panel, displays[i].mode.name))
>> + break;
>> + }
>> + }
>> + if (i < ARRAY_SIZE(displays)) {
>> + ret = ipuv3_fb_init(&displays[i].mode, 0,
>> + displays[i].pixfmt);
>> +
>> + if (!ret) {
>> + displays[i].enable(displays+i);
>> + printf("Display: %s (%ux%u) %s\n",
>> + displays[i].mode.name,
>> + displays[i].mode.xres,
>> + displays[i].mode.yres,
>> + (detected ? "[auto]" : ""));
>> + } else
>> + printf("LCD %s cannot be configured: %d\n",
>> + displays[i].mode.name, ret);
>> + } else {
>> + printf("unsupported panel %s\n", panel);
>> + return -EINVAL;
>> + }
>> +
>> + return 0;
>> }
>>
>
> This is identical to the nitrogen one, and quite identical to the same
> function in sabresd. Or better, function in sabresd is older and has not
> received the fixes as nitrogen (line with dev->detect).
>
> IMHO the function is generic to be factorized. The display_info_t
> structure lets us to specialize the behavior for each board, and the
> generic part can be put in a common part.
...
>
> This function is also quite identical to all boards.You add here only
> the disable of the LCD backlight. I can recognize some parts, that are
> surely common to all implementations (enabling clocks). Even if the
> setup of gpr[2]/[3] is identical, I can imagine that it could be board
> specific. Anyway, any chance to factorize the code ?
I agree with both remarks but I think we're late in the release cycle
for this kind of refactoring; I prefer to merge this patch as is for
now and send a patch, on top of this one, to rework this.
Can we go further this way? I am awaiting for this patch to be
merged/reviewed for quite a while already.
>> diff --git a/include/configs/wandboard.h b/include/configs/wandboard.h
>> index e9c7e64..85f3c16 100644
>> --- a/include/configs/wandboard.h
>> +++ b/include/configs/wandboard.h
>> @@ -55,6 +55,12 @@
>> #define CONFIG_LOADADDR 0x12000000
>> #define CONFIG_SYS_TEXT_BASE 0x17800000
>>
>> +/* I2C Configs */
>> +#define CONFIG_CMD_I2C
>> +#define CONFIG_SYS_I2C
>> +#define CONFIG_SYS_I2C_MXC
>> +#define CONFIG_SYS_I2C_SPEED 100000
>> +
>> /* MMC Configuration */
>> #define CONFIG_FSL_ESDHC
>> #define CONFIG_FSL_USDHC
>> @@ -97,6 +103,7 @@
>> #define CONFIG_VIDEO_LOGO
>> #define CONFIG_VIDEO_BMP_LOGO
>> #define CONFIG_IPUV3_CLK 260000000
>> +#define CONFIG_CMD_HDMIDETECT
>> #define CONFIG_IMX_HDMI
>>
>> #if defined(CONFIG_MX6DL) || defined(CONFIG_MX6S)
>> @@ -134,7 +141,33 @@
>> "fi; " \
>> "fi\0" \
>> "mmcargs=setenv bootargs console=${console},${baudrate} " \
>> - "root=${mmcroot}\0" \
>> + "root=${mmcroot}; run videoargs\0" \
>> + "videoargs=" \
>> + "setenv nextcon 0; " \
>> + "if hdmidet; then " \
>> + "setenv bootargs ${bootargs} " \
>> + "video=mxcfb${nextcon}:dev=hdmi,1280x720M at 60," \
>> + "if=RGB24; " \
>> + "setenv fbmen fbmem=28M; " \
>> + "setexpr nextcon ${nextcon} + 1; " \
>> + "else " \
>> + "echo - no HDMI monitor;" \
>> + "fi; " \
>> + "i2c dev 0; " \
>> + "if i2c probe 0x10; then " \
>> + "setenv bootargs ${bootargs} " \
>> + "video=mxcfb${nextcon}:dev=lcd,800x480 at 60," \
>> + "if=RGB666; " \
>
> Why do we need this ? The kernel should get the setup for display from
> DTS (display-timings node). Do you need to short-circuit DTS setup ?
Current kernel still does not use DTS (it is based on 3.0.35 FSL fork).
--
Otavio Salvador O.S. Systems
http://www.ossystems.com.br http://code.ossystems.com.br
Mobile: +55 (53) 9981-7854 Mobile: +1 (347) 903-9750
More information about the U-Boot
mailing list