hello everyone!
i'm use the imx6q. and patch the "Patch to Support BT656 and BT1120 Output For i.MX6 BSP", I want to use the DISP_DAT0-DISP_DAT15 for BT1120 YUYV16 data.
I have some questions for you!
1. I find the "LVDS0 source is IPU1 DI0 por" and "HDMI source is IPU1 DI0 port" at the IOMUXC_GPR3,but I not find DISP_DAT source is which one IPU and DI ?
2. the patch set IPU_PIX_FMT_UYVY 16bit width for BT1120 at the ipu_disp.c. i don't Understand why this set. please tell me! and I want send the BT1120 YUYV16 data, Whether need add code for BT1120 YUYV16 data?
3.I set bootargs "video=mxcfb0:dev=bt656,BT1120-1080I60,if=BT1120,fbpix=YUYV16",the fbpix whether can be set as YUYV16?
My English is not good, please do not mind.
Thanks!
Solved! Go to Solution.
For 1, the IPU1 DI0 display data pins are "IPU1_DISP0_DAT_xxx", and IPU1 DI1 display data pins are "IPU1_DISP1_DAT_xxx".
For 2, you can apply the patch "https://community.freescale.com/docs/DOC-100657", it was verified with UYVY16 1080i50 output on LCD interface, it should also work for 1080P.
For 3, you can add the followed video mode into mxc_lcdif.c, and video mode parameters in kernel command lines: "video=mxcfb0:dev=lcd,LCD-1080P50,if=UYVY16,fbpix=BGR32" or "video=mxcfb0:dev=lcd,LCD-1080P60,if=UYVY16,fbpix=BGR32".
{
/* 1920x1080p @ 60 Hz , pixel clk @ 148.5MHz */
"LCD-1080P60", 60, 1920, 1080, 6734, 148, 88, 36, 4, 44, 5,
FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
FB_VMODE_NONINTERLACED,
0,},
{
/* 1920x1080p @ 50 Hz , pixel clk @ 148.5MHz */
"LCD-1080P50", 50, 1920, 1080, 6734, 148, 528, 36, 4, 44, 5,
FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
FB_VMODE_NONINTERLACED,
0,},
For 1, the IPU1 DI0 display data pins are "IPU1_DISP0_DAT_xxx", and IPU1 DI1 display data pins are "IPU1_DISP1_DAT_xxx".
For 2, you can apply the patch "https://community.freescale.com/docs/DOC-100657", it was verified with UYVY16 1080i50 output on LCD interface, it should also work for 1080P.
For 3, you can add the followed video mode into mxc_lcdif.c, and video mode parameters in kernel command lines: "video=mxcfb0:dev=lcd,LCD-1080P50,if=UYVY16,fbpix=BGR32" or "video=mxcfb0:dev=lcd,LCD-1080P60,if=UYVY16,fbpix=BGR32".
{
/* 1920x1080p @ 60 Hz , pixel clk @ 148.5MHz */
"LCD-1080P60", 60, 1920, 1080, 6734, 148, 88, 36, 4, 44, 5,
FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
FB_VMODE_NONINTERLACED,
0,},
{
/* 1920x1080p @ 50 Hz , pixel clk @ 148.5MHz */
"LCD-1080P50", 50, 1920, 1080, 6734, 148, 528, 36, 4, 44, 5,
FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
FB_VMODE_NONINTERLACED,
0,},
1.Before I did not hit the patch to
my kernel, I use the "CLAA-WVGA" mode,I can measured clock pin have
signal ,but if I patch the "L3.0.35_4.1.0_GA_HDMI_Interlaced_Mode_Patch.zip"
to my kernel, I can measured data pin 、vsync
and hsync have signal.but the clock pin don't have signal.How can I
solve?
[Qiang] You need check yout hardware if the correct "MX6Q_PAD_DI0_DISP_CLK" PIN had been measured?
2.I read your patch notes, It is the
support the interlace fo hdmi and lcd, I want the lcd output 1080p,so I
think I don't need this patch,Because the kernel support the 1080p,I only add
the "/* 1920x1080p @ 50 Hz , pixel clk @
148.5MHz */" to my mxc_lcdif.c ,Is that
right?
[Qiang] No, you need apply that patch, because it added the UYVY16 output support.
HI Qiang,I'm sorry to change my problem:
1.Whether or not I have patched my kernel, if I set pixclock as 6734 for 148.5MHZ, the clock pin no signal,but if I set pixclock as 13468 for 74.5MHz,the clock pin have signal. How can I solve?
2.You set the "if=UYVY16" at the bootargs,can I set the "if=YUYV16"?
3.if I set the "fbpix=BGR32", the "bits_per_pixel" is 32. I use the DISP_DAT0----DISP_DAT15 for data line,so I want the bits_per_pixel is 16. I changed the parameters as "video=mxcfb1:dev=lcd,LCD-1080P60,if=YUYV16", Is that right?
Thank you!
1. It should be the hardware board related, maybe you can adjust the PAD_CTRL setting for the pixel clock pin, register IOMUXC_SW_PAD_CTL_PAD_DI0_DISP_CLK.
#define MX6Q_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK \
(_MX6Q_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
2. All of UYVY16, YUYV16, YVYU16, VYUY16 can be supported.
3. The fbpix is the frame buffer data format, it is not related to your 16bits hardware interface(DISP_DAT0----DISP_DAT15). Of cource you can also set fbpix=RGB565 for 16bpp frame buffer, but the video quality will be poor than 32bpp/24bpp when it was converted to YUYV format.
Hi Qiang:
1.I register "MX6Q_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK" at board-mx6q_sabrelite.c, and lcdif_data's ipu_id =0 disp_id =0.but the clock pin not have signal.
2. I change the "MX6Q_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK " to "MX6Q_PAD_DI0_DISP_CLK__IPU2_DI0_DISP_CLK ", and lcdif_data's ipu_id =1 disp_id =0.The situation is the same.
Whether the clock cannot be reached 148.5M?
I mean you need tune setting in register IOMUXC_SW_PAD_CTL_PAD_DI0_DISP_CLK, it is electric related to the PIN.
For example enable pull up, increase drive stregth, set to Fast Slew Rate, MAXIMUM Speed Field ...
You can discuss it with your hardware engineer, I think they can understand it.
HI Qiang:
Thank you for your reply!
Your answer is very good , I reset the IOMUXC_SW_PAD_CTL_PAD_DI0_DISP_CLK, the clock pin have the 148.5MHZ, but the signal have a little wobble.and The amplitude is not big.
I set the Register is 0xB0F1:
bit 0 : 1 ----- FAST Slew Rate
bit 5-3: 110 ---- 40_OHM
bit 7-6: 11 ----MAXIMUM
bit 12: 1 ----Pull/Keeper Enabled
bit 13:1 ----Pull Enabled
bit 15-14:10 ----100K_OHM_PU.
other bit set 0.
I have the wrong place please set the register ?
The IOMUXC_SW_PAD_CTL_PAD_DI0_DISP_CLK register setting was defined in file "linux-3.0.35\arch\arm\plat-mxc\include\mach\iomux-mx6q.h"
#define MX6Q_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK \
(_MX6Q_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
It was used in file "linux-3.0.35\arch\arm\mach-mx6\board-mx6q_sabresd.h".
Thank you answer me these questions! You really very much good!