I have a RockPi 4A and want to use a HDMI-Display (1280x800@60) with a vanilla kernel (5.4.53). The display stays black and I found the following kernel message: “[drm] Cannot find any crts or sizes”.
The reason for this is quite simple. In /drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c there is a table rockchip_mpll_cfg with valid pixel clocks. This table is used in dw_hdmi_rockchip_mode_valid(…) to validate the modesettings. The pixel clock of my display (68.94 MHz) ist not in this table.
To dig deeper I let dw_hdmi_rockchip_mode_valid(…) accept every modesettings (return MODE_OK). Now everything seems to lock fine. Not error message from [drm], /dev/fb0 exists and X11 starts. But the display stays black.
In the kernel messages I found a note, that the pixel clock is set to 66.667 MHz, which explains why the display stays black. In /drivers/gpu/drm/rockchip/rockchip_drm_vop.c I found the function vop_crtc_mode_fixup(…) which calculates the new value for the pixel clock using clk_round_rate(…).
I know, that the Rockchip Kernel 4.4 works fine with this display and uses the correct pixel clock.
Does anybody have an idea, how I can get the display to work with the vanilla kernel? The clock setup is a little bit complicated…