iMX53 QSB: CVBS not working properly

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

iMX53 QSB: CVBS not working properly

3,913 Views
xavierboudes
Contributor II

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

IMG_20121105_163132.jpg

LVDS

IMG_20121105_164321.jpg

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

Labels (3)
18 Replies

2,530 Views
ChucoChe
NXP Employee
NXP Employee

Hello,

Please try the "ldb=" and "dmfc=" options described in the linux reference manual.

They may help.

Michel

0 Kudos
Reply

2,530 Views
charleschang
Contributor III

Hi Michael.,

I have the same problem - the green screen on TVOUT.

could you give more info about the "linux refereence manual " ?

Thanks.

0 Kudos
Reply

2,530 Views
ChucoChe
NXP Employee
NXP Employee

oh sorry, I meant mx53 QSB release notes

Michel

0 Kudos
Reply

2,530 Views
xavierboudes
Contributor II

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

0 Kudos
Reply

2,530 Views
augusto
Contributor II

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

2,530 Views
xavierboudes
Contributor II

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

0 Kudos
Reply

2,530 Views
augusto
Contributor II

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

0 Kudos
Reply

2,534 Views
xavierboudes
Contributor II

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

0 Kudos
Reply

2,534 Views
augusto
Contributor II

Hi Xavier,

a wrong PLL setup would affect the pixel clock, not the color space.

Send me your command line and TVE test code.

Augusto

0 Kudos
Reply

2,534 Views
xavierboudes
Contributor II

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

0 Kudos
Reply

2,534 Views
mlinuxl
Contributor I

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:

pastedImage_1.jpg

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:

CVBS TV encoder on i.MX53

Regards,

0 Kudos
Reply

2,534 Views
xavierboudes
Contributor II

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

0 Kudos
Reply

2,534 Views
xavierboudes
Contributor II

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

0 Kudos
Reply

2,534 Views
xavierboudes
Contributor II

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.

0 Kudos
Reply

2,534 Views
jimmychan
NXP TechSupport
NXP TechSupport

For your information, here is the support about ADV7180. I think it may helpful for you.  https://community.freescale.com/message/302798#302798

0 Kudos
Reply

2,534 Views
xavierboudes
Contributor II

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.

0 Kudos
Reply

2,534 Views
jimmychan
NXP TechSupport
NXP TechSupport

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"

2,534 Views
xavierboudes
Contributor II

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

0 Kudos
Reply