About 6 months ago, I successfully brought up two Industrial 800x480 LVDS displays running in dual mode (my patch to the dts file is attached).
What changes do I need to make to make the displays independent?
Simply changing the mode is not enough. My displays show that I have something clocked wrong (they do the funky wave of black).
My timing is correct for both of them for dual. In looking at ldb.c I see that dual mode runs with a different divider than other modes. (in certain modes it is divide by 3.5).
First what the correct mode so I can have two independent display? I think split.
Second do I double or halve the clock? I've tried both for split mode, no joy
Is there another setting I need to change?
I've tried making fb2 and fb3 matching fb1.
mxcfb1: fb@0 {
compatible = "fsl,mxc_sdc_fb";
disp_dev = "ldb";
mode_str ="LDB-XGA";
interface_pix_fmt = "RGB24";
default_bpp = <24>;
int_clk = <0>;
late_init = <0>;
status = "disabled";
};
Any help would be appreciated. I've struggled with this for a while.
Original Attachment has been moved to: 0004-Display.patch.zip
解決済! 解決策の投稿を見る。
The answer is separate-mode was all I was missing (thank Igor)
Also note that my second display ended up on fb2.
ldb {
status = "okay";
separate-mode; //MSS: THIS IS THE KEY!
lvds-channel@0 {
fsl,data-mapping = "jeida";
fsl,data-width = <24>;
primary; //MSS: Make sure you have this
status = "okay";
display-timings {
native-mode = <&timing0>;
timing0: hsd100pxn1 {
clock-frequency = <33260000>;
hfront-porch = <40>;
hactive = <800>;
hback-porch = <88>;
hsync-len = <128>;
vactive = <480>;
vfront-porch = <10>;
vback-porch = <33>;
vsync-len = <2>;
};
};
};
lvds-channel@1 {
fsl,data-mapping = "jeida";
fsl,data-width = <24>;
status = "okay";
crtc = "ipu1-di1"; //MSS Make sure you have this
display-timings {
native-mode = <&timing1>;
timing1: hsd100pxn1 {
clock-frequency = <33260000>;
hfront-porch = <40>;
hactive = <800>;
hback-porch = <88>;
hsync-len = <128>;
vactive = <480>;
vfront-porch = <10>;
vback-porch = <33>;
vsync-len = <2>;
};
};
};
};
The answer is separate-mode was all I was missing (thank Igor)
Also note that my second display ended up on fb2.
ldb {
status = "okay";
separate-mode; //MSS: THIS IS THE KEY!
lvds-channel@0 {
fsl,data-mapping = "jeida";
fsl,data-width = <24>;
primary; //MSS: Make sure you have this
status = "okay";
display-timings {
native-mode = <&timing0>;
timing0: hsd100pxn1 {
clock-frequency = <33260000>;
hfront-porch = <40>;
hactive = <800>;
hback-porch = <88>;
hsync-len = <128>;
vactive = <480>;
vfront-porch = <10>;
vback-porch = <33>;
vsync-len = <2>;
};
};
};
lvds-channel@1 {
fsl,data-mapping = "jeida";
fsl,data-width = <24>;
status = "okay";
crtc = "ipu1-di1"; //MSS Make sure you have this
display-timings {
native-mode = <&timing1>;
timing1: hsd100pxn1 {
clock-frequency = <33260000>;
hfront-porch = <40>;
hactive = <800>;
hback-porch = <88>;
hsync-len = <128>;
vactive = <480>;
vfront-porch = <10>;
vback-porch = <33>;
vsync-len = <2>;
};
};
};
};
Hi Michael
split mode is used for one display with high resolution,
for two independent displays separate mode should be used.
Please refer to Table 39-5. Channel Mapping i.MX6DQ Reference Manual
http://cache.freescale.com/files/32bit/doc/ref_manual/IMX6DQRM.pdf
and attached Release Notes from older kernel Table 6. Kernel Boot Parameters
"ldb" parameter, it provides some better description.
Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Igor,
I did not get the release notes. The Channel Mapping is extremely low level and I hope the driver will handle it.