dual display (LVDS + VGA) support on mx53

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

dual display (LVDS + VGA) support on mx53

5,670 Views
PatrickChau
Contributor II

Hi All:

          We have a project which requires dual display support (LVDS + VGA), both of the displays should show the same content, which means one of the display content is cloned from the other one, is it possible to do so, we tried the following configuration:

          setenv bootargs console=ttymxc0,115200 video=mxcdi0fb:RGB24,XGA video=mxcdi1fb:GBR24,VGA-XGA vga di1_primary ldb=dual,di=1,ch0_map=SPWG,ch1_map=SPWG root=/dev/mmcblk0p1 rootwait rw

          Which seems partiailly working, but the clock on VGA is wrong, it is 69Hz, which suppose 60Hz, and also the content on LVDS display is masked with green, seems something wrong with the color space.

          Anybody has the experience on setting dual display like that?

         Thanks for your help in advance.

B. Regrads.

Patrick

Labels (1)
16 Replies

1,896 Views
jimmychan
NXP TechSupport
NXP TechSupport

We have SMD board and QSB board. Which board is your design reference?

Which BSP are you using?

Please check the corresponding BSP release note. There is the kernel boot parameters for different display.

Please check the BSP Reference Manual, there is a chapter talk about dual display in details.

Examples for i.MX53 TABLET platform: (in Chapter 10)

DI0:HDMI monitor, DI1:XGA LVDS display panel (primary)

video=mxcdi0fb:RGB24,1024x768M@60 hdmi video=mxcdi1fb:RGB666,XGA di1_primary ldb=di1

0 Kudos

1,896 Views
PatrickChau
Contributor II

Hi Jimmy:

       Thx for your reply.

       We are using QSB, we also have QSB board with us, the BSP that we are using is L2.6.35_11_09 with IMX53_LINUX_1109_BSP_PATCH.

       We tried the bootargs that you suggested, it is working, but the content of HDMI and LVDS are not the same, what we want is dual display with same content, so when we write data to fb0, it should be shown on both VGA & LVDS, something like the content of VGA is cloned from LVDS, or vice versa.

       What we have now the content of both VGA and LVDS are the same, but the color output to VGA is wrong, pls check the files test1_lvds.jpg & test1_vga.jpg, the color pattern on the picture test1_lvds.jpg is correct, but on test1_vga.jpg is wrong, the RGB colors are mess-up, and also the clock output to VGA is wrong, it is showing 69Hz, the correct one should be 60Hz.

        Again, thanks for your reply & help.

B. Regards

Patrick

0 Kudos

1,896 Views
jimmychan
NXP TechSupport
NXP TechSupport

Have you try to test the display output separately?

for the LVDS output, using LVDS0.

video=mxcdi0fb:RGB666,XGA di0_primary ldb=di0

for the VGA,

video=mxcdi1fb:GBR24,VGA-XGA di1_primary vga

if work, then combine them into one,

e.g. video=mxcdi0fb:RGB666,XGA ldb=di0 video=mxcdi1fb:GBR24,VGA-XGA vga di1_primary

0 Kudos

1,896 Views
johnturnur
Contributor III

Hi,

Does HDMI and LCD dual disply possible? Where can I find related document for IMX6.

Thanks,

John


0 Kudos

1,896 Views
PatrickChau
Contributor II

Hi John:

          Might this hep?

          https://community.freescale.com/docs/DOC-93449

Patrick

0 Kudos

1,896 Views
johnturnur
Contributor III

Hi,

Patrick

Thanks for the reply.

In android how does it possible?

Do i need to make code change in kernel for dual display?

Does dual display working on Android 13.4.1

Thanks,

John


0 Kudos

1,896 Views
PatrickChau
Contributor II

Hi John:

          Check the Adeneo Android Gingerbread for mx53qsb, you will get the idea from there.

Patrick

0 Kudos

1,896 Views
johnturnur
Contributor III

Hi,

Patrick

I will follow suggested document.

Can you provide similar document for imx6q?

Thanks,

John

0 Kudos

1,896 Views
PatrickChau
Contributor II

Hi John:

          Sorry, I donot have any chance to play with my mx6q yet!

Patrick

0 Kudos

1,896 Views
PatrickChau
Contributor II

Hi Jimmy:

            I set the following:

               console=ttymxc0,115200 video=mxcdi0fb:RGB666,XGA ldb=di0 video=mxcdi1fb:GBR24,VGA-XGA vga di1_primary ip=dhcp 

          Both displays are working, but when write data to fb0, only content on vga is updated, when write to fb1, only content on lvds is updated. but what we want is when write to fb0, both contents on vga & lvds should be updated, and both data should be correct.

Patrick

0 Kudos

1,896 Views
jimmychan
NXP TechSupport
NXP TechSupport

After discussed with my colleague (he is an expert). In Android, you can use HAL code to resize the fb0 data to fb1 to show the same content in dual display. But in Linux, seems the only way is writing the same data to fb0 and fb1 at the same time. If you are using two LVDS panels, there is no software needed to show the same content on dual display. Because the LVDS module can output the same framebuffer to two LVDS interface.

0 Kudos

1,896 Views
PatrickChau
Contributor II

Hi Jimmy:

       I have check the source code for android, when it configures as dual display, it post the data to both fb0 and fb1, it is done in software way.

      What we really want is something like in the case of two LVDS panels. Our software needs to show some rolling texts, play video, receipt external signal for further processing, what we concern is that when copying data from fb0 to fb1, tearing, data not sync will occur. And also, the extract software for copying will heavy the system loading. So it will be good, if VGA + LVDS dual display is working.

Patrick

0 Kudos

1,896 Views
qiang_li-mpu_se
NXP Employee
NXP Employee

Hi Patrick,
    To avoid the tearing issue, you should not copy the data from fb0 to fb1 directly. I think you should create two physical buffer queues for the two displays, and your application will always draw into on queue for fb0, before render out to display for the current frame, you should use ipu lib to resize this frame buffer to another queue, which is for fb1. Then when you output to fb0, you also need output the other buffer to fb1, I think you need use pan display or V4l2 output for such use case.

    In this case, when update the display, it will update the frame buffer frame address directly, so there will not tearing, and since resizing from queue 0 to queue 1 is implemented by IPU hardware, no more CPU loading will be used.

0 Kudos

1,896 Views
PatrickChau
Contributor II

Hi Qiang & Jimmy:

          Thx from the suggestion.

          We found another alternative way to do it, since our program is using Qt, Qt supports multiple screens, we can simply post the data to both fbs by adding multi option to the program command line.

          But I still have a question, if we want to show both video on the 2 display, does it work? or can only show in either one?

Thanks

Patrick

0 Kudos

1,896 Views
qiang_li-mpu_se
NXP Employee
NXP Employee

    I'm not familiar with QT, for Freescale Linux BSP, the MMCodec will decode the video frames to buffer, then player will render this buffer to display with V4l2 output or IPU lib (CSC and resize will be implemented in this step), and we implemented the dual display video playback by rendering the frames to two frame buffers. Maybe you can reference it for your solution.

0 Kudos

1,896 Views
PatrickChau
Contributor II

Hi Qiang:

          Thanks for your reply, I just found this:

               https://community.freescale.com/thread/272989         

          That is what I want.

B. Regards

Patrick

0 Kudos