Configuring Linux for an 8-bit RGB LCD

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

Configuring Linux for an 8-bit RGB LCD

5,405 Views
erezsteinberg
Contributor IV

Hello experts,

I have an LCD display that has an 8-bit interface bus. The display expects to get pixels interleaved, that is -- 8-bit Red, followed by 8-bit Blue, and followed by 8-bit Green.

(The interface has 8-bit data, VSYNC, HSYNC, PCLK)

How do I configure the LCD driver for this kind of configuration? (24-bit RGB with an 8-bit bus)

If I specify if=rgb888 in the kernel commandline, is that a 24-bit or 8-bit bus?

Regards,

Erez

Labels (2)
0 Kudos
Reply
6 Replies

2,588 Views
erezsteinberg
Contributor IV

I continued digging, and I think what I am trying to do isn't supported in the driver.

Looking at mxcfb_option_setup() in mxc_ipuv3_fb.c, I can see that the 'if=' parameter passed to the Linux Kernel on the command-line can support only:

RGB24

BGR24

GBR24

RGB565

RGB666

YUV444

LVDS666

YUYV16

UYVY16

YVYU16

VYUY16

None of these supports 8-bit interface bus.

From what I understand, to add this mode, I would need to add a new format and microcode templates in ipu_disp.c

Any guidelines how to do this? the reference manual isn't very comprehensive on this topic.

0 Kudos
Reply

2,588 Views
igorpadykov
NXP Employee
NXP Employee

Hi Erez,

yes, data can be outputted in several cycles as described in sect.

37.5.334 DC Mapping Configuration Register

37.4.7.5.1 Bus Mapping Unit 37.5.334 DC Mapping Configuration Register IMX6DQRM :

The internal DI format for data and commands is a 24-bits word divided into three byte

components (eight zeroes are added to MSB for 16-bits words from the DC). This word

can be output or input in one, two, three or four cycles of the display clock.

IPU driver outputs all LCD data (for example RGB24) in one clock, outputting in 3 clocks x 8 bits

currently is not supported in BSP and require changes in IPU microcodes.

~igor

0 Kudos
Reply

2,588 Views
erezsteinberg
Contributor IV

Thank Igor,

I found a patch that adds support for BT656 and BT1120 that does that (8-bit bus for YUYV).

Most of the patch has to do with BT656 in-band signaling. I don't think it should be so difficult to change it to support 3 clocks x 8 bits RGB.

But -- there isn't a lot of information about uCode templates and how to use them.

Regards,

Erez

0 Kudos
Reply

2,588 Views
igorpadykov
NXP Employee
NXP Employee

Hi Erez,

below link shows procedure

https://community.freescale.com/message/294603#294603

~igor

0 Kudos
Reply

2,588 Views
igorpadykov
NXP Employee
NXP Employee

Hi Erez

please look below for procedure of adding support for new LCD to linux

AN3974 Different Display Configurations on i.MX35 Linux PDK

MX53UG MX53SUG.book Chapter 18

Supporting the i.MX53 Reference Board DISP0 LCD

Best regards

igor

-----------------------------------------------------------------------------------------------------------------------

Note: If this post answers your question, please click the Correct Answer button. Thank you!

-----------------------------------------------------------------------------------------------------------------------

0 Kudos
Reply

2,588 Views
erezsteinberg
Contributor IV

Hi Igor,

Thank you for the references. I have seen the before, and I couldn't find what I need in them.

To clarify -- I am working on a custom iMX6 Solo board, with Linux 3.0.35.

I currently have an LCD connected, and am able to see an (incorrect) picture.

I need to have a framebuffer (e.g. dev/fb0) configured as 320x240 24bpp (RGB), but to get the IPU to output the data 8-bits at a time.

One option would be to have the IPU treat the image as 960x240 GREY, but setting pix_fmt to GREY or GENERIC didn't change anything.

If I had a monochrome 8-bit display, how would I configure the system?

Any suggestions?

Regards,

Erez

0 Kudos
Reply