I am working on AUO dual-channel 1366x768 panels. The kernel version is 3.14.28. I pass the kernel parameters as follows.
video=mxcfb0:dev=ldb,LDB-WXGA,if=RGB24 ldb=spl0 fbmem=24M
The panel is black and not showing anything. (The backlight is on.)
The device tree file is as follows.
mxcfb1: fb@0 {
compatible = "fsl,mxc_sdc_fb";
disp_dev = "ldb";
interface_pix_fmt = "RGB666";
default_bpp = <24>;
int_clk = <0>;
late_init = <0>;
status = "okay";
};
&ldb {
status = "okay";
lvds-channel@0 {
fsl,data-mapping = "spwg";
fsl,data-width = <18>;
status = "okay";
display-timings {
native-mode = <&timing0>;
timing0: hsd100pxn1 {
clock-frequency = <65000000>;
hactive = <1024>;
vactive = <768>;
hback-porch = <220>;
hfront-porch = <40>;
vback-porch = <21>;
vfront-porch = <7>;
hsync-len = <60>;
vsync-len = <10>;
};
};
};
lvds-channel@1 {
fsl,data-mapping = "spwg";
fsl,data-width = <18>;
primary;
status = "okay";
display-timings {
native-mode = <&timing1>;
timing1: hsd100pxn1 {
clock-frequency = <65000000>;
hactive = <1024>;
vactive = <768>;
hback-porch = <220>;
hfront-porch = <40>;
vback-porch = <21>;
vfront-porch = <7>;
hsync-len = <60>;
vsync-len = <10>;
};
};
};
};
Did I miss anything? I would like to assign lvds to ipu_id=1. However, it seems that the device tree in sabresd does not have this node. I am not sure if the kernel parameter LDB-WXGA correct or not. I also tried 1366x768M@60. The result are the same. The LCD_VDD is enabled. I can measure it is 5V. Thanks for your help.
-Eric
Please check the ldb binding guide for device tree
Documentation/devicetree/bindings/video/fsl,ldb.txt
24 Optional properties:
25 - ext-ref: Provide this bool property if your LDB uses an external
26 reference resistor for bandgap.
27 - split-mode: Provide this bool property if your board uses LDB split
28 mode to drive a high resolution display, say 1080P@60. In this
29 mode, two LVDS channels will drive one display.
30 - dual-mode: Provide this bool property if your board uses LDB dual
31 mode to drive two displays. In this mode, one display engine will
32 drive two displays which have the same timings and display content.
display timing is part of linux, not part of ldb
Hi Eric,
About your question what means LDB-WXGA in your boot arguments, it is the string that catch the kernel to look in the table of LVDS displays configuration.
This table can you find it in the driver ldb.c in the source code of your kernel.
I am working with a version fo the kernel 3.0.35. In that case the kernel has the ldb.c in this folder drivers/video/mxc/ldb.c. There is ldb_modedb[] with all the actual ldb configuration that the system supports in your case. I don't for sure if it still the same in the 3.14.28 kernel.
About the problem, that the lvds doesn't show nothing, which enviorment you are using for the grafic driver. Are you using Wayland or X11? How do you try to show something in the displays? with a hello application or directly writting something in the framebuffers?
I saw once in the kernel 3.0.35 that the board didn't support 24 bith depth color, and I will need to change this with the help of fbset.
fbset is a tool that allows to change lvds configuration in the userspace with the simple comand
$ fbset -fb <dev_fb> -g <xres> <yres> <virutal_x_res> <virtual_y_res> <depth> -t <pixclock> <left> <rigth> <upper> <lower> <hslen> <vslen>
where:
<left> and <right>: are the Horizontal Margins, without the Hsync Pulse, it is counted in hslen
<upper> and <lower>: are the Vertical Margins, without the Vsync Pulse, it is counte in vslen
My first suggestion is try to play with fbset and changing the depth configuration in the fb that you have activated. And see what is the result.
-Regard
Breixo L. Garcia
Breixo,
My LVDS is working well actually. I am pretty sure that ldb_modedb is depreciated in kernel 3.14.28 and make it not possible to pass the u-boot parameters to kernel. It seems that we need to work on the device tree file for different panels. I think the reason for that is we only need to modify the device tree file instead of the driver itself if we need to add a new panel. This make more sense for flattened device tree kernel.
-Eric
Hello Erici,
Can you explain how did you do to put in operation your LVDS?
Thanks.
I am able to see something on LVDS panel now. The resolutions are not quite correct. How to pass different resolution parameters to kernel? Or I have to modify the kernel device tree panel parameters?
-Eric
Hi,
I'm using this command in U-Boot for LVDS0 and HDMI:
setenv mmcargs "setenv bootargs console=${console},${baudrate} root=${mmcroot} rootwait rw video=mxcfb0:dev=ldb,LDB-XGA,if=RGB666 ldb=sin0 video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24"
For LVDS1 you can change ldb=sin0 to ldb=sin1.
You can use LVDS0 and LVDS1 instead of HDMI.
Best Regards,
Vilem