While RK3328 is capable of 4K resolutions, dw-hdmi driver in u-boot
seems to have some issue with 4K. 1440p or lower works fine.

Limit max resolutions to 2560x1440x60Hz, by filtering the modes with
pixel clock > 297MHz

Fixes: f3ea872970d603 ("video: rockchip: Add rk3328 hdmi support")
Signed-off-by: Vasily Khoruzhick <[email protected]>
---
v2: add a comment that max pixel clock limit is a workaround

drivers/video/rockchip/rk3328_hdmi.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/drivers/video/rockchip/rk3328_hdmi.c 
b/drivers/video/rockchip/rk3328_hdmi.c
index 763669c09be..ff351aaac7c 100644
--- a/drivers/video/rockchip/rk3328_hdmi.c
+++ b/drivers/video/rockchip/rk3328_hdmi.c
@@ -105,9 +105,20 @@ static int rk3328_hdmi_probe(struct udevice *dev)
        return 0;
 }
 
+static bool rk3328_hdmi_mode_valid(struct udevice *dev,
+                                  const struct display_timing *timing)
+{
+       /* Limit pixel clock to 297MHz. While RK3328 support higher rates and it
+        * works in Linux, it doesn't seem to work in u-boot. That limits max
+        * resolution to 1440p
+        */
+       return timing->pixelclock.typ <= 297000000;
+}
+
 static const struct dm_display_ops rk3328_hdmi_ops = {
        .read_edid = rk_hdmi_read_edid,
        .enable = rk3328_hdmi_enable,
+       .mode_valid = rk3328_hdmi_mode_valid,
 };
 
 static const struct udevice_id rk3328_hdmi_ids[] = {
-- 
2.49.0

Reply via email to