imx8mq evk with not standard HDMI panel

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

imx8mq evk with not standard HDMI panel

4,348 Views
bu0507870
Contributor II

build: imx-4.9.123-2.3.0-8mm_ga.xml / fsl-image-validation-imx

If connect standard HDMI monitor - all works.

I need connect imx to 1440x2560 HDMI panel:

edid decode output:

~~~
Manufacturer: LZT Model 1 Serial Number 0
Made week 12 of 2017
EDID version: 1.3
Digital display
Image size is variable
Gamma: 2.20
Supported color formats: RGB 4:4:4, YCrCb 4:2:2
First detailed timing is preferred timing
Established timings supported:
Standard timings supported:
non-conformant standard timing (0 horiz)
Detailed mode: Clock 204.790 MHz, 90 mm x 160 mm
 1440 1510 1545 1590 hborder 0
 2560 2572 2574 2576 vborder 0
 -hsync -vsync
Serial number: 00000000 Monitor ranges: 23-75HZ vertical, 15-240kHz horizontal, max dotclock 300MHz
~~~

The panel works well when connected to PC.

I found that the function pixel_clock_range_t28hpc (from API_AFE_t28hpc_hdmitx.c) returns 0 for the frequency 204790 KHz.
Therefore, I think that it is necessary to add the row in t28hpc_hdmitx_clock_control_table_pixel_out.

It's right?
If so, how can I get all these magic numbers?
If not, what can I done?

I will be glad to any help

0 Kudos
12 Replies

2,910 Views
cmsd
Contributor III

I have a similar issue.  I need to make a fixed-frequency screen work with a new custom mode line:

{ DRM_MODE("1080x1920", DRM_MODE_TYPE_DRIVER, 137930,
            1080, 1140, 1150, 1185, 0,
            1920, 1928, 1932, 1940, 0,
            DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
            .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, },

in edid_cea_modes[] in imx-hdp.c.

 

My problem is almost identical, there is no 137,930 KHz mode in

/* Table 8. HDMI TX clock control settings (pixel clock is output) */
const u32 t28hpc_hdmitx_clock_control_table_pixel_out[T28HPC_HDMITX_CLOCK_CONTROL_TABLE_ROWS_PIXEL_OUT][T28HPC_HDMITX_CLOCK_CONTROL_TABLE_COLS_PIXEL_OUT] = {
{ 27000, 1000, 270000, 0x03, 0x1, 0x1, 240, 0x0BC, 0x030, 80, 0x026, 0x026, 2160000, 0, 2, 2, 2, 4, 135000, 0x3, 27000, 1},
{ 27000, 1250, 337500, 0x03, 0x1, 0x1, 300, 0x0EC, 0x03C, 100, 0x030, 0x030, 2700000, 0, 2, 2, 2, 4, 168750, 0x3, 33750, 1},
{ 27000, 1500, 405000, 0x03, 0x1, 0x1, 360, 0x11C, 0x048, 120, 0x03A, 0x03A, 3240000, 0, 2, 2, 2, 4, 202500, 0x3, 40500, 1},
{ 27000, 2000, 540000, 0x03, 0x1, 0x1, 240, 0x0BC, 0x030, 80, 0x026, 0x026, 2160000, 0, 2, 2, 2, 4, 270000, 0x2, 54000, 1},
{ 54000, 1000, 540000, 0x03, 0x1, 0x1, 480, 0x17C, 0x060, 80, 0x026, 0x026, 4320000, 1, 2, 2, 2, 4, 270000, 0x3, 54000, 1},
{ 54000, 1250, 675000, 0x04, 0x1, 0x1, 400, 0x13C, 0x050, 50, 0x017, 0x017, 2700000, 0, 1, 1, 2, 4, 337500, 0x2, 67500, 1},
{ 54000, 1500, 810000, 0x04, 0x1, 0x1, 480, 0x17C, 0x060, 60, 0x01C, 0x01C, 3240000, 0, 2, 2, 2, 2, 405000, 0x2, 81000, 1},
{ 54000, 2000, 1080000, 0x03, 0x1, 0x1, 240, 0x0BC, 0x030, 40, 0x012, 0x012, 2160000, 0, 2, 2, 2, 1, 540000, 0x1, 108000, 1},
{ 74250, 1000, 742500, 0x03, 0x1, 0x1, 660, 0x20C, 0x084, 80, 0x026, 0x026, 5940000, 1, 2, 2, 2, 4, 371250, 0x3, 74250, 1},
{ 74250, 1250, 928125, 0x04, 0x1, 0x1, 550, 0x1B4, 0x06E, 50, 0x017, 0x017, 3712500, 1, 1, 1, 2, 4, 464062, 0x2, 92812, 1},
{ 74250, 1500, 1113750, 0x04, 0x1, 0x1, 660, 0x20C, 0x084, 60, 0x01C, 0x01C, 4455000, 1, 2, 2, 2, 2, 556875, 0x2, 111375, 1},
{ 74250, 2000, 1485000, 0x03, 0x1, 0x1, 330, 0x104, 0x042, 40, 0x012, 0x012, 2970000, 0, 2, 2, 2, 1, 742500, 0x1, 148500, 1},
{ 99000, 1000, 990000, 0x03, 0x1, 0x1, 440, 0x15C, 0x058, 40, 0x012, 0x012, 3960000, 1, 2, 2, 2, 2, 495000, 0x2, 99000, 1},
{ 99000, 1250, 1237500, 0x03, 0x1, 0x1, 275, 0x0D8, 0x037, 25, 0x00B, 0x00A, 2475000, 0, 1, 1, 2, 2, 618750, 0x1, 123750, 1},
{ 99000, 1500, 1485000, 0x03, 0x1, 0x1, 330, 0x104, 0x042, 30, 0x00D, 0x00D, 2970000, 0, 2, 2, 2, 1, 742500, 0x1, 148500, 1},
{ 99000, 2000, 1980000, 0x03, 0x1, 0x1, 440, 0x15C, 0x058, 40, 0x012, 0x012, 3960000, 1, 2, 2, 2, 1, 990000, 0x1, 198000, 1},
{148500, 1000, 1485000, 0x03, 0x1, 0x1, 660, 0x20C, 0x084, 40, 0x012, 0x012, 5940000, 1, 2, 2, 2, 2, 742500, 0x2, 148500, 1},
{148500, 1250, 1856250, 0x04, 0x1, 0x1, 550, 0x1B4, 0x06E, 25, 0x00B, 0x00A, 3712500, 1, 1, 1, 2, 2, 928125, 0x1, 185625, 1},
{148500, 1500, 2227500, 0x03, 0x1, 0x1, 495, 0x188, 0x063, 30, 0x00D, 0x00D, 4455000, 1, 1, 1, 2, 2, 1113750, 0x1, 222750, 1},
{148500, 2000, 2970000, 0x03, 0x1, 0x1, 660, 0x20C, 0x084, 40, 0x012, 0x012, 5940000, 1, 2, 2, 2, 1, 1485000, 0x1, 297000, 1},
{198000, 1000, 1980000, 0x03, 0x1, 0x1, 220, 0x0AC, 0x02C, 10, 0x003, 0x003, 1980000, 0, 1, 1, 2, 1, 990000, 0x0, 198000, 1},
{198000, 1250, 2475000, 0x03, 0x1, 0x1, 550, 0x1B4, 0x06E, 25, 0x00B, 0x00A, 4950000, 1, 1, 1, 2, 2, 1237500, 0x1, 247500, 1},
{198000, 1500, 2970000, 0x03, 0x1, 0x1, 330, 0x104, 0x042, 15, 0x006, 0x005, 2970000, 0, 1, 1, 2, 1, 1485000, 0x0, 297000, 1},
{198000, 2000, 3960000, 0x03, 0x1, 0x1, 440, 0x15C, 0x058, 20, 0x008, 0x008, 3960000, 1, 1, 1, 2, 1, 1980000, 0x0, 396000, 1},
{297000, 1000, 2970000, 0x03, 0x1, 0x1, 330, 0x104, 0x042, 10, 0x003, 0x003, 2970000, 0, 1, 1, 2, 1, 1485000, 0x0, 297000, 1},
{297000, 1500, 4455000, 0x03, 0x1, 0x1, 495, 0x188, 0x063, 15, 0x006, 0x005, 4455000, 1, 1, 1, 2, 1, 2227500, 0x0, 445500, 1},
{297000, 2000, 5940000, 0x03, 0x1, 0x1, 660, 0x20C, 0x084, 20, 0x008, 0x008, 5940000, 1, 1, 1, 2, 1, 2970000, 0x0, 594000, 1},
{594000, 1000, 5940000, 0x03, 0x1, 0x1, 660, 0x20C, 0x084, 10, 0x003, 0x003, 5940000, 1, 1, 1, 2, 1, 2970000, 0x0, 594000, 1},
{594000, 750, 4455000, 0x03, 0x1, 0x1, 495, 0x188, 0x063, 10, 0x003, 0x003, 4455000, 1, 1, 1, 2, 1, 2227500, 0x0, 445500, 0},
{594000, 625, 3712500, 0x04, 0x1, 0x1, 550, 0x1B4, 0x06E, 10, 0x003, 0x003, 3712500, 1, 1, 1, 2, 1, 1856250, 0x0, 371250, 0},
{594000, 500, 2970000, 0x03, 0x1, 0x1, 660, 0x20C, 0x084, 10, 0x003, 0x003, 5940000, 1, 1, 1, 2, 2, 1485000, 0x1, 297000, 1},

in t28hpc_hdmitx_table.c.

I need to learn:

1. Is the table the full extent of what the GPU/DCSS can do?  (In which case it can't drive my 1080x1920 portrait screen.)

2. If 137,930 KHz modes are physically supported by the DCSS, where do I get all the other numbers from?  (I assume that they're register settings.)

3,168 Views
diegoadrian
NXP Employee
NXP Employee

Hello,

Can you please try using the fsl-xwayland distro?

I have the understanding that the i.MX8M only works with that distro.

Best Regards,

Diego.

0 Kudos

3,168 Views
bu0507870
Contributor II

Hello

I rebuild image for fsl-xwayland distro

I don't see any changes

> cat /var/log/weston.log
> ...
> [08:57:49.033] DRM: expected property DPMS to not be an enum, but it is; ignoring
> [08:57:49.033] EDID data 'LZT', 'LS060R1SX01 ', '00000000 '
> [08:57:49.033] Registered plugin API 'weston_drm_output_api_v1' of size 24
> [08:57:49.033] no available modes for HDMI-A-1
> [08:57:49.033] Cannot configure an output using weston_drm_output_api.
> ...

0 Kudos

3,168 Views
diegoadrian
NXP Employee
NXP Employee

Hello,

Can you please try to see if the i.MX8 works with another display?

There are some problems with some displays due to the frequency synchronization. If that is the problem, you need to change the driver to make work the new monitor. However, this is not an easy task. I apologize for the inconveniences this could give you.

Best Regards,

Diego.

0 Kudos

3,168 Views
bu0507870
Contributor II

Hello

I checked the build on two FullHD monitors, on one its works, on other not.

But it is important for us to use this particular panel (1440x2560).

If I will changing the driver, can you advise which version is better to use as a base?

0 Kudos

3,168 Views
diegoadrian
NXP Employee
NXP Employee

Hello.

Furthermore, there are some clients that have tested with the 4.9.123 version, and they have the experience that some are more displays that could work with this version. But this is similar to the 4.14.62, this Linux version is still in beta mode and it was made for the i.MX8mm that is a different microprocessor, we cannot provide support or take any responsibilities for the moment if anything goes wrong, this is up to you if you want to test it. I apologize for the inconveniences this could give you.

Best Regards,

Diego.

3,168 Views
diegoadrian
NXP Employee
NXP Employee

Hello,

In my experience, the L4.9.51, is the one that works better in the i.MX8MQ. This is because I have tested the newer version and it has some problems with weston. However, If you go to professional services support, they will help you with the newest Linux version that is L4.14.62 that is still in beta and some problems could be solved. Unfortunately, how this version is still in beta, I cannot guarantee anything. 

Best Regards,

Diego.

3,168 Views
moritz_stoll
Contributor I

I tried the xwayland distro and run into folloing behaviour...

> cat /sys/devices/platform/display-subsystem/drm/card0/card0-HDMI-A-1/modes
> 2560x1440

> .....

> cat /sys/devices/platform/display-subsystem/drm/card0/card0-HDMI-A-1/enabled
> enabled

So, it should basically work? But its not. Am I missing something?

0 Kudos

3,168 Views
diegoadrian
NXP Employee
NXP Employee

Hello,

I am seeing that you are using a BSP for the i.MX8Mmini. I recommend you to use the BSP for the i.MX8MQ, the Linux version 4.9.51 is the one that works better with Weston.

Best Regards,

Diego.

0 Kudos

3,167 Views
bu0507870
Contributor II

Hello

I rebuild image for 4.9.51 kernel:

> repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-morty -m imx-4.9.51-8mq_ga.xml
> ...
> DISTRO=fsl-imx-wayland MACHINE=imx8mqevk source fsl-setup-release.sh -b build-wayland
> ...
> bitbake fsl-image-validation-imx
> ...

No improvement

I do not see anything critical in the logs (see attached log-1440x2560.txt)

I noted:

For 1440x2560 panel:

> cat /sys/devices/platform/display-subsystem/drm/card0/card0-HDMI-A-1/modes
> (empty)
> cat /sys/devices/platform/display-subsystem/drm/card0/card0-HDMI-A-1/enabled
> disabled
> cat /sys/devices/platform/display-subsystem/drm/card0/card0-HDMI-A-1/edid
> (edid in binary format)

The same, if set the kernel parameters 'video=HDMI-A-1:1440x2560-32@50'


For FullHD monitor:
> cat /sys/devices/platform/display-subsystem/drm/card0/card0-HDMI-A-1/modes
> 1920x1080
> (+ all supported modes)

> cat /sys/devices/platform/display-subsystem/drm/card0/card0-HDMI-A-1/enabled
> enabled

+ the image based on BSP 4.9.51 does not work with some our FullHD HDMI monitors,
like BSP 4.9.88 (version 4.9.123 work on all our monitors)

0 Kudos

3,168 Views
moritz_stoll
Contributor I

Hello,

I'm running into a similar problem, but no HDMI Panel works for me. For the main Screen i get:

[    1.116390] [drm] Pixel clock frequency: 241500 kHz, character clock frequency: 241500, color depth is 8-bit.
[    1.116409] [drm:hdmi_phy_init_t28hpc] *ERROR* failed to set phy pclock
[    1.116403] [drm:phy_cfg_t28hpc] *ERROR* This pixel clock frequency (241500 kHz) is not supported.

for my other 1920x1080p screen i get the same error. Furthermore any forme avialable screen gives me the same error msg just with another frequency....

I'm using the IMX8MQ-EVK Board with the L4.9.88_2.0.0_MX8MQ BSP booting via SD.

I'm kinda clueless for about 2 days now, any help is appreciated!

0 Kudos

2,903 Views
miketubby
Contributor II

We are having the same problem.

NXP's answer appears to be "use a supported monitor".  This is wrong because we need to use a custom display for this application.

What is missing here is the documentation and information from NXP to allow us to generate entries for Table 8 in drivers/gpu/drm/imx/hdp/t28hpc_hdmitx_table.c i.e. this stuff:

/* Table 8. HDMI TX clock control settings (pixel clock is output) */
const u32 t28hpc_hdmitx_clock_control_table_pixel_out[T28HPC_HDMITX_CLOCK_CONTROL_TABLE_ROWS_PIXEL_OUT][T28HPC_HDMITX_CLOCK_CONTROL_TABLE_COLS_PIXEL_OUT] = {
{ 27000, 1000, 270000, 0x03, 0x1, 0x1, 240, 0x0BC, 0x030, 80, 0x026, 0x026, 2160000, 0, 2, 2, 2, 4, 135000, 0x3, 27000, 1},
{ 27000, 1250, 337500, 0x03, 0x1, 0x1, 300, 0x0EC, 0x03C, 100, 0x030, 0x030, 2700000, 0, 2, 2, 2, 4, 168750, 0x3, 33750, 1},
<<snip>>
{594000, 500, 2970000, 0x03, 0x1, 0x1, 660, 0x20C, 0x084, 10, 0x003, 0x003, 5940000, 1, 1, 1, 2, 2, 1485000, 0x1, 297000, 1},
 

 

Our custom panel is 1080px (wide) x 1920px (high) i.e. portrait mode like @cmsd said.

The panel and its HDMI adapter produce valid EDID and the panel works correctly in Windows 10 (Intel+NVidia) and works in Ubuntu 18.04 desktop (Intel+AMD) but doesn't work on the iMX8MQ.

We can create the high-level DRM mode for our resolution and it checks out against the EDID data.  The problem is that this results in a pixel clock that is not supported in the low-level T28HPC HDMI TX clock Control table.

This is really bad... even the Raspberry Pi can generate fully custom HDMI modes.

@joanxie @diegoadrian  NXP, please provide some documentation for generating entries for the HDMI TX clock control settings.


Mike