imx8mq hdmi custom resolution 800x600 output no signal

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

imx8mq hdmi custom resolution 800x600 output no signal

Jump to solution
1,471 Views
edward_fu
Contributor III

I need to make a fixed-frequency screen 800x600, the screen works well using LVDS interface in imx6, now I need to port to imx8mq using hdmi interface.

I refered to this Driving a 1080x1920 portrait HDMI screen solution.

So my solution is:

1. add below drm mode in drivers/gpu/drm/imx/hdp/imx-hdp.c

{ DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 40000, 800, 840,
850, 950, 0, 600, 603, 605, 635, 0,
DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
.vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, },

2. uncomment the part of (VESA pixel clock rate support in debuging) in drivers/gpu/drm/imx/hdp/t28hpc_hdmitx_table.c

/* 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},
#if 1 /* VESA pixel clock rate support in debuging */
{ 40000, 1000, 400275, 0x05, 0x1, 0x1, 593, 0x126, 0x127, 80, 0x026, 0x026, 3202200, 1, 1, 1, 1, 1, 200137, 0x3, 40027, 1},
{ 40000, 1250, 500175, 0x05, 0x1, 0x1, 741, 0x170, 0x171, 100, 0x030, 0x030, 4001400, 1, 1, 1, 1, 1, 250087, 0x3, 50017, 1},
{ 40000, 1500, 600075, 0x05, 0x1, 0x1, 889, 0x1BA, 0x1BB, 120, 0x03A, 0x03A, 4800600, 1, 1, 1, 1, 1, 300037, 0x3, 60007, 1},
{ 40000, 2000, 800550, 0x05, 0x1, 0x1, 593, 0x126, 0x127, 80, 0x026, 0x026, 3202200, 1, 1, 1, 1, 1, 400275, 0x2, 80055, 1},
{ 65000, 1000, 650025, 0x05, 0x1, 0x1, 963, 0x1DF, 0x1E0, 80, 0x026, 0x026, 5200200, 1, 1, 1, 1, 1, 325012, 0x3, 65002, 1},
{ 65000, 1250, 812700, 0x05, 0x1, 0x1, 602, 0x12B, 0x12B, 50, 0x017, 0x017, 3250800, 1, 1, 1, 1, 1, 406350, 0x2, 81270, 1},
{ 65000, 1500, 974700, 0x05, 0x1, 0x1, 722, 0x167, 0x167, 60, 0x01C, 0x01C, 3898800, 1, 1, 1, 1, 1, 487350, 0x2, 97470, 1},
{ 65000, 2000, 1300050, 0x05, 0x1, 0x1, 963, 0x1DF, 0x1E0, 80, 0x026, 0x026, 5200200, 1, 1, 1, 1, 1, 650025, 0x2, 130005, 1},
{108000, 1000, 1080000, 0x05, 0x1, 0x1, 800, 0x18E, 0x18E, 40, 0x012, 0x012, 4320000, 1, 1, 1, 1, 1, 540000, 0x2, 108000, 1},
{108000, 1250, 1350000, 0x05, 0x1, 0x1, 1000, 0x1F2, 0x1F2, 50, 0x017, 0x017, 5400000, 1, 1, 1, 1, 1, 675000, 0x2, 135000, 1},
{108000, 1500, 1620000, 0x05, 0x1, 0x1, 600, 0x12A, 0x12A, 30, 0x00D, 0x00D, 3240000, 1, 1, 1, 1, 1, 810000, 0x1, 162000, 1},
{108000, 2000, 2160000, 0x05, 0x1, 0x1, 800, 0x18E, 0x18E, 40, 0x012, 0x012, 4320000, 1, 1, 1, 1, 1, 1080000, 0x1, 216000, 1},
{154000, 1000, 1539000, 0x05, 0x1, 0x1, 570, 0x11B, 0x11B, 20, 0x008, 0x008, 3078000, 1, 1, 1, 1, 1, 769500, 0x1, 153900, 1},
{154000, 1250, 1925100, 0x05, 0x1, 0x1, 713, 0x162, 0x163, 25, 0x00A, 0x00B, 3850200, 1, 1, 1, 1, 1, 962550, 0x1, 192510, 1},
{154000, 1500, 2311200, 0x05, 0x1, 0x1, 856, 0x1AA, 0x1AA, 30, 0x00D, 0x00D, 4622400, 1, 1, 1, 1, 1, 1155600, 0x1, 231120, 1},
{154000, 2000, 3078000, 0x05, 0x1, 0x1, 570, 0x11B, 0x11B, 20, 0x008, 0x008, 3078000, 1, 1, 1, 1, 1, 1539000, 0x0, 307800, 1}
#endif
};

After compling and programing the android image to my board. There is still no signal output.

there is below kernel information:

[ 1.399928] imx-drm display-subsystem: bound 32c00000.hdmi (ops imx_hdp_imx_ops)
[ 1.419216] [drm] Pixel clock frequency: 40000 KHz, character clock frequency: 40000, color depth is 8-bit.
[ 1.419236] [drm] Pixel clock frequency (40000 KHz) is supported in this color depth (8-bit). Settings found in row 31
[ 1.419277] [drm] VCO frequency is 3202200
[ 1.419284] [drm] VCO frequency (3202200 KHz) is supported. Settings found in row 16
[ 1.433709] [drm] CDN_API_General_Write_Register_blocking LANES_CONFIG ret = 0

As far as I know, it indicates 40M pixel clock is generated. But why there is no hdmi signal output?

Can any experts help me? Thanks very much.

There are some points I am doubt:

1.  Is the 40M pixel clock out setting right in t28hpc_hdmitx_clock_control_table_pixel_out?

2. I also refer to the HDMI - pixel clock calculation.xlsx to generate the settings, but it seems the pattens are not the same with t28hpc_hdmitx_clock_control_table_pixel_out.

So how to calculate these settings in t28hpc_hdmitx_clock_control_table_pixel_out. Then how to calculate setting in t28hpc_hdmitx_pll_tuning_table_pixel_out. There are too many variables.

Thnaks.

0 Kudos
1 Solution
1,455 Views
edward_fu
Contributor III

Hi igor,

Thanks for your quick reply.

I have delt with the problem.

Br, 

Edward

View solution in original post

0 Kudos
3 Replies
1,463 Views
igorpadykov
NXP Employee
NXP Employee

Hi Edward

 

what bsp used in the case, recommended to try latest  Linux 5.10.9_1.0.0​

https://www.nxp.com/design/software/embedded-software/i-mx-software/embedded-linux-for-i-mx-applicat...

Hdmi custom resolution example can be found on

https://community.nxp.com/t5/i-MX-Processors/HDMI-DRM-custom-resolution-and-clock-frequency/m-p/1029...

 

Best regards
igor

0 Kudos
1,456 Views
edward_fu
Contributor III

Hi igor,

Thanks for your quick reply.

I have delt with the problem.

Br, 

Edward

0 Kudos
550 Views
casanovas
Contributor I

Hi, 

It would be very kind of you if you could share video timings and modified kernel sources you have included in order to manage a 800x600 @40Mhz HDMI resolution. 

Could you provide us some information about it ? 

 

regards

 

Julien

0 Kudos