i.mx6q dual channel lvds panel

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

i.mx6q dual channel lvds panel

3,797 Views
eric_lee1
Contributor II

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

Labels (1)
Tags (2)
0 Kudos
8 Replies

1,067 Views
BiyongSUN
NXP Employee
NXP Employee

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

0 Kudos

1,067 Views
breixolopezgarc
Contributor II

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

0 Kudos

1,067 Views
eric_lee1
Contributor II

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

0 Kudos

1,067 Views
osmarfrisonjun1
Contributor III

Hello Erici,

Can you explain how did you do to put in operation your LVDS?

Thanks.

0 Kudos

1,067 Views
eric_lee1
Contributor II

Vilem,

I don't think this is the case in 3.14.28 kernel anymore. If you compare the drivers/video/mxc/ldb.c, the kernel parameters seems to be replaced by device tree timing settings.

-Eric

0 Kudos

1,067 Views
VilemZ
NXP Employee
NXP Employee

Oh,

I'm sorry. I'm using older kernel. My version is 3.10.58. I thought, that it will be same.

Best Regards,

Vilem

0 Kudos

1,067 Views
eric_lee1
Contributor II

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

0 Kudos

1,067 Views
VilemZ
NXP Employee
NXP Employee

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

0 Kudos