The aim of this section is to properly configure custom display: LVDS and eDP panels.
...
The target file to edit is linux-seco/arch/arm/boot/dts/imx6qdl-seco_lvds_display.dtsi. This last contains the list of available LVDS resolutions.
...
To obtain the information about the ldb structure, you can refer to the documentation available into the Kernel:
linux-seco/Documentation/devicetree/bindings/display/imx/ldb.txt
linux-seco/Documentation/devicetree/bindings/fb/fsl_ipuv3_fb.txt_fb.txt
Is this the struct you were talking about?
Code Block |
---|
timing9: $name { clock-frequency = <$Clock-frequency>; hactive = <$Hactive>; vactive = <$Vactive>; hback-porch = <$Hback>; hfront-porch = <$Hfront>; vback-porch = <$Vback>; vfront-porch = <$Vfront>; hsync-len = <$Hsync>; vsync-len = <$Vsync>; }; |
Below Here below an example of lbd structure got for SVGA TFT LCD(800x600) 10.4 inches panel (datasheet avalaible here) is the sample timing data for SVGA TFT LCD(800x600) 10.4 inches (BA104S01-100):
...
The resolution to use is passed from U-Boot to the kernel via bootargs. The " seco_config " command help the user to perform the selection of the video settings and resolution.
In order to add a new custom LVDS resolution, please follow steps below described:
The target file to edit is u-boot-seco/cmd/cmd_seco_config.c. This last contains the list of available LVDS resolutions to pass to kernel via bootargs (selection is performed via seco_config command).
Code Block |
---|
cd u-boot-seco/cmd/ vi cmd_seco_config.c |
Add the custom resolution
...
settings by appending new
...
items into the following structure:
Code Block | ||
---|---|---|
| ||
static lvds_video_spec_t lvds_video_spec_list [] = { { "WVGA [800x480]", "LDB-WVGA", "RGB666", "datamap=spwg", "", 1 }, { "SVGA [800x600]", "LDB-SVGA", "RGB666", "datamap=spwg", "", 1 }, { "XGA [1024x768]", "LDB-XGA", "RGB666", "datamap=spwg", "", 1 }, { "WXGA [1368x768]", "LDB-WXGA", "RGB24", "datamap=jeida", "", 1 }, { "WXGAP60 [1280x800]", "LDB-1280P60", "RGB24,bpp=32","datamap=spwg", "", 1 }, { "SXGA [1280x1024]", "LDB-SXGA", "RGB24", "datamap=jeida", "", 1 }, { "HD1080 [1920x1080]", "LDB-1080P60", "RGB24", "datamap=spwg", "ldb=spl0", 2 }, {<DISPLAY NAME>, <KERNEL DISPLAY NAME>, <PIXEL FORMAT>, <DATA MAPPING>, "LDB SETTING", <CHANNEL NUMBER>} }; |
withThe fields <DISPLAY NAME>, <KERNEL DISPLAY NAME>, <PIXEL FORMAT>, <DATA MAPPING>, "LDB SETTING", <CHANNEL NUMBER>
are here described:
Field | Description | ||
---|---|---|---|
DISPLAY NAME | name Name shown into the resolution list when seco_config command is used | ||
KERNEL DISPLAY NAME | name Name of the resolution added into the kernel file arch/arm/boot/dts/imx6qdl-seco_lvds_display.dtsi ($name variable) | ||
PIXEL FORMAT | display Display interface pixel format:
| ||
DATA MAPPING | color Color signals mapping order [ jeida | spwg | vesa ] | ||
LDB SETTING | i.MX6 LVDS setting. Leave empty to use the default (display single channel) (ldb=spl0 -> split mode, used for display dual channel) | ||
CHANNEL NUMBER | number Number of channel to use (leave 1 for default configuration) |
...
Also the U-Boot uses the Display to display the Splash Screen. So, if the scope is to use also the custom resolution at U-Boot level, this task have to be performed:
Editing the file board/seco/common/display.c
A new node into “struct display_info_t const displays[]” must to be added. Under the sub-structure
...