i.MX6 Solo with ADV7391

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

i.MX6 Solo with ADV7391

Jump to solution
3,095 Views
oliverkuo
Contributor IV

Hi,

     We have an i.MX6Solo custom board with ADV7391 on DISP1_DAT0~7, and LCD panel is connected to DISP0.

After apply patches for BT656 (https://community.freescale.com/docs/DOC-94019#comment-7824) then change clock setting and BT656_IF_DI_MSB to 7, I can see Android output as below image.

Set ADV7391 to output color bar test pattern, the display is properly (not full screen but the color bar is clear), so I think CVBS output of ADV7391 is good.

But when I make Android desktop to output to ADV7391, a black gap is on the middle of screen and the top of desktop is on the lower screen; booting screen is also corrupt, please check attached clip.

The video parameter is "video=mxcfb0:dev=adv739x,BT656-NTSC,if=BT656,fbpix=UYVY16".

Could someone share good experience about ADV7391 porting?

Where can I find the information about fb_videomode setting?

{
/* NTSC Interlaced output, include EAV/SAV */
"BT656-NTSC", 60, 720, 480, 37037,
19, 3,
20, 3,
276, 1,
FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
FB_VMODE_INTERLACED,
FB_MODE_IS_DETAILED,},

Thanks!

IMAG0408.jpg

Labels (3)
Tags (1)
0 Kudos
1 Solution
1,412 Views
qiang_li-mpu_se
NXP Employee
NXP Employee

For Android, YUV framebuffer(fbpix=UYVY16) can't be supported, you can try with "fbpix=BGR32".

By the way, for BT656 output, the IPU DP port should be used to convert RGB frame buffer to UYVY16 BT656 data on the fly. This had already been implemented in the patch of https://community.freescale.com/docs/DOC-94019.

By the way, I found you are using adv7391 as the main display, if so you should modify the code in mxc_ipuv3_fb.c, function mxcfb_probe():

if (((mxcfbi->ipu_di_pix_fmt == IPU_PIX_FMT_BT656) || (mxcfbi->ipu_di_pix_fmt == IPU_PIX_FMT_BT1120)) && (mxcfbi->ipu_id == 0) && cpu_is_mx6dl())

should be

if (0)

That code will assign IPU DC channel to main display, which has no CSC function, it is used for adv7391 as the second display. After modified that code, it will assign IPU DP to main display, whcih can support harfdware CSC, this setting is for adv7391 as the main display case.

View solution in original post

0 Kudos
2 Replies
1,413 Views
qiang_li-mpu_se
NXP Employee
NXP Employee

For Android, YUV framebuffer(fbpix=UYVY16) can't be supported, you can try with "fbpix=BGR32".

By the way, for BT656 output, the IPU DP port should be used to convert RGB frame buffer to UYVY16 BT656 data on the fly. This had already been implemented in the patch of https://community.freescale.com/docs/DOC-94019.

By the way, I found you are using adv7391 as the main display, if so you should modify the code in mxc_ipuv3_fb.c, function mxcfb_probe():

if (((mxcfbi->ipu_di_pix_fmt == IPU_PIX_FMT_BT656) || (mxcfbi->ipu_di_pix_fmt == IPU_PIX_FMT_BT1120)) && (mxcfbi->ipu_id == 0) && cpu_is_mx6dl())

should be

if (0)

That code will assign IPU DC channel to main display, which has no CSC function, it is used for adv7391 as the second display. After modified that code, it will assign IPU DP to main display, whcih can support harfdware CSC, this setting is for adv7391 as the main display case.

0 Kudos
1,413 Views
oliverkuo
Contributor IV

Hi Qiang,

Thanks for your quick reply.

After change mxcfbi->ipu_id from 0 to 1, ADV7391 can output clear display now, according to my test, no mater what format set to fbpix(BGR32 or UYVY16), output is properly, fbpix setting is regardless.

I use below uboot parameter to boot into Android system and a plugged display device is detected, however, when I click to enter the plugged display setting exception is occurred, I trace PluggableDisplaySettings.java, seems only HDMI and LDB display devices are supported?

"setenv bootargs console=ttymxc3,115200 androidboot.console=ttymxc3 init=/init video=mxcfb0:dev=lcd,AUO-WQVGA,if=RGB24 video=mxcfb1:dev=adv739x,BT656-NTSC,if=BT656 video=mxcfb2:off androidboot.hardware=freescale"

We'll try to fix this exception, if a workaround is alread existed, please share the information to me, thanks.

0 Kudos