Hi All,
I am working on the iMX53 QSB running uBoot and Linux and I tried to have a LVDS screen (fb0 primary) and a CVBS (fb1) output working at the same time.
The LVDS is fine and display exactly what I want but the CVBS output doesn't work properly:
- I get some video on my connected screen in PAL or NTSC format but the colours are wrong.
- As soon as I unblank fb1 my display detect the video and I get a screen with a dark green background
- Then it does display my test images but the colours don't match (see pics)
CVBS
LVDS
The screen is connected on the VGA connector - pin 2, and here are the modifications I have done:
- in mx53_loco.c: ".boot_enable = MXC_TVE_TVOUT;"
- in uboot: "video=mxcdi1fb:RGB24,TV-PAL tve=di1"
Has anybody encountered this issue?
Have I missed something?
Regards
Hi Michael.,
I have the same problem - the green screen on TVOUT.
could you give more info about the "linux refereence manual " ?
Thanks.
Hi Michel,
I am back on this issue using LVDS anTVout...
I am not sure what options you are talking about? Could you be more specific?
Also I had some success running the "mxc_ipudev_test.out -P 19" on our HW (based on QSB with some tweaks) and manage to have both display working at the same time, so now we are very confident about our HW! Colors are right using this test...
But we are still struggling with the TVout! We are not using the screenlayer library so what steps do we need to follow to output the same graphics as LVDS to TVout? Is UYVY the right format for TVout? So does it mean if I want to have the same display as on LVDS (RGB24) I will need to do some color space conversion (CSC)?
Thanks
Xavier
Hi Xavier,
I had the same green output problem upon CVBS unblanking, it is because the fb memory is initialized to 0x00 even if pixel format is YUV444 (so the green output).
In the file attached (drivers/video/mxc/mxc_ipuv3_fb.c) I fixed both the fb memory initialization and the bit per pixel value related to the pixel format, otherwise if you forgot to add the correct bpp value to your command line you could have a bad video output.
Augusto
Hi Augusto,
Thanks for your input again... I got the source file in the end...
Looking at the changes you have done in mxc_ipuv3_fb.c, does it mean you don't have to specify the bpp in your bootargs?
Could you provide your bootargs as well? Do you use the QSB as a target?
Regards
Xavier
Hi Xavier,
about our command line (we added a custom modeline for our LVDS display):
video=mxcdi1fb:YUV444,TV-NTSC,bpp=24 di0_primary tve video=mxcdi0fb:RGB24,CUSTOM-WVGA,bpp=24
we left the bpp parameter for backward compatibility, however with my patch this should not be necessary;
the default is 16 bpp and in some cases you could not notice it because it leads to a color depth degradation
that you could not spot immediately.
We started from QSB years ago however now we have several custom boards more similar to sabre design.
Regards,
Augusto
Hi Augusto,
I added your changes to my project and compared your bootargs to mine but it didn't make any difference...
Did you modify any other source, many people point at the PLL setup in clock.c?
I check my HW again and it does still produce some nice output on the TVE output when I use the test provided by Freescale... so I guess I still need to dig....
Regards,
Xavier
Hi Augusto,
Did you spot anything with my sources?
I just noticed something I don't quite understand in tve.c:
For PAL/NTSC composite output surely the TV ouput mode should be set to CVBS but it is not! It seems to be set to YPbPr component...
Do you understand that? Anybody understand this?
Thanks in advance
Xavier
Hi Xavier,
I think, actually i am sure that you need SCS (colorspace conversion).
LVDS Display use RGB colorspace but TVE in CVBS mode expect YUV colorspace.
This is reason why your background is green..:)
I also had same situation some months ago.
When you use single display your interface is set to YUV colorspace and you have right colors on CVBS TV video out.
I managed to get different colorspace simultaneously for Display Interface 0 DI0->RGB (parallel display in my case) and Display Interface 1 DI1->YUV (tve cvbs in my case) with the Display Processor DP (page 2743 in the datasheet).
I can help you if you use newer kernel version (3.12 and above) but i think that you use LTIB 2.6.35 kernel..? I have checked source in tve.c for your kernel and it is right set for CVBS not YPbPr. It seems that is set for YPbPr but it is actually not. It is set for CVBS, look better..
According to this:
You can use TVE only as DI1 secondary display not as primary..
Next, when you use TVE encoder in VGA mode it expect GBR24 format, so you have same colorspace for LVDS and VGA.. This is reason why VGA work right with LVDS..
I have problem with synchronization in my kernel version, so i'm still working on that..:(
Maybe there are some who can help me. I opened new thread for my problem:
Regards,
Hi Augusto,
Well it still doesn't work for me.
Here is my setup: HW design based on the QSB with XGA LVDS display and PAL TV out.
Our application get some from from a camera in YUV420 format at 50 fps we do som color conversion for our OSD to RGB and that does work fine!
We can display our graphics and the camera video on the LVDS correctly. On the TV out however I get all sort of colors but not the right one. We know the HW works to some degree as we can have single display on the TV out with the right colors...
Here are my sources including your mods (including some mods I had to do in ipu_common.c and ipu_param_meme.h to incorporate your stuff):
Sorry I can't release anything related to the application for obvious reason...
I really think we are getting some CSC issue here but I am not sure why.
Thanks for your help
Xavier
Hi Augusto,
I am glad to hear that you managed to fix this problem... we didn't and the end got around it by implementing a different HW/SW solution...
However I would like to fully understand it as I spent quite a lot of time scratching my head!
You mentioned an attached file to your message but it is not there... could you try to send it to me again?
Thanks
Xavier
Hi there,
Has anybody had any success using the composite video output as a secondary display?
We had the LVDS working as a primary display on DI0 and VGA as a secondary display on DI1, but if we select TV-out instead of VGA that doesn't work properly (we have the Green effect descibed earlier)!
Any clue anybody?
Thanks in advance for your input.
First of all, thanks for your suggestion, but I think there is a bit of confusion.
The ADV7180 is a chip which take a analog composite INPUT (PAL, SECAM, NTSC) to convert it into a digital OUTPUT. It is not what I want to do and on top of that my current HW doesn't have this chip.
I am using the QSB-R board (known as loco), and the HW provide a VGA output for a monitor (tested and working!).
Freescale provide the ability to configure this output as a composite TV out by using their TVE module (ref. iMX53RM Rev 2.1 - Chapter 74). So I should not need any extra HW...
The boot arguments set in uBoot (video=mxcdi1fb:RGB24,TV-PAL tve=di1) kinds of work: got a picture, frequency match the PAL setting, but the color encoding is not right!
Thanks for your support.
Sorry, I misread the question. I thought you are using ADV7180.
for your case, I think it may be the problem of bootarg.
According to the BSP release note, there is an example for TVE output.
"video=mxcdi1fb:YUV444,TV-1080P30 di1_primary tve"
NOTE: GBR24/RGB565/YUV444 etc represent the display HW interface format, typical value for different display devices is like below:
TVOUT: YUV444
VGA: GBR24
HDMI&DVI: RGB24
CLAA WVGA LCD: RGB565
after enable tve, below video modes will be added into di1 FB mode list:
TV-1080P24: D:1920x1080p-24
TV-1080P25: D:1920x1080p-25
TV-1080P30: D:1920x1080p-30
TV-1080I50: D:1920x1080i-50
TV-1080I60: D:1920x1080i-60
TV-720P30: D:1280x720p-30
TV-720P60: D:1280x720p-60
TV-PAL: D:720x576i-50
TV-NTSC: D:720x480i-60
so for your case, please try:
"video=mxcdi1fb:YUV444,TV-PAL di1_primary tve"
Thanks again for your input,
I have done many trys and here are my findings:
- with your bootargs settings: "video=mxcdi1fb:YUV444,TV-PAL di1_primary tve" it DOES work! But only if I remove the LVDS display in the bootargs.
The screen definitions seem to be wrong too: checking fb1 mode in linux give me U:800x600p-60 (which is my LVDS setting!)
This is half of a lie as my scope says 312 which is the same number of line but interlaced, and frame frequency is 50 Hz.
So it is all mixed up!
- If I enable LVDS as a secondary screen the TVE output doesn't work.When I unblank fb1 I get the splashscreen on the LVDS with wrong colours!!!
Again doesn't make sense!
- If the LVDS is primary and TVE secondary, LVDS is fine in term of color or definition, but as I mention earlier I get a green background on the TVE ouput and all the colors are wrong (see first post).
At least I know my HW works for composite.
It seems that there is a relation between the setting on fb0 and fb1, is it some IPU setting , the PLLs?
Has anybody noticed that too? Has anybody managed to have LVDS and TVE out working at the same time?
Thanks in advance for your help
Cheers