video: sunxi: Add mode_valid callback to sunxi_dw_hdmi
authorJernej Skrabec <jernej.skrabec@siol.net>
Thu, 22 Apr 2021 00:14:26 +0000 (01:14 +0100)
committerAnatolij Gustschin <agust@denx.de>
Sat, 24 Apr 2021 11:44:28 +0000 (13:44 +0200)
Currently driver accepts all resolution which won't work on 4k screens.
Add validation callback which limits acceptable resolutions to 297 MHz.

Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
drivers/video/sunxi/sunxi_dw_hdmi.c

index 0b8cefc..e3811a2 100644 (file)
@@ -305,6 +305,12 @@ static int sunxi_dw_hdmi_read_edid(struct udevice *dev, u8 *buf, int buf_size)
        return dw_hdmi_read_edid(&priv->hdmi, buf, buf_size);
 }
 
+static bool sunxi_dw_hdmi_mode_valid(struct udevice *dev,
+                                    const struct display_timing *timing)
+{
+       return timing->pixelclock.typ <= 297000000;
+}
+
 static int sunxi_dw_hdmi_enable(struct udevice *dev, int panel_bpp,
                                const struct display_timing *edid)
 {
@@ -388,6 +394,7 @@ static int sunxi_dw_hdmi_probe(struct udevice *dev)
 static const struct dm_display_ops sunxi_dw_hdmi_ops = {
        .read_edid = sunxi_dw_hdmi_read_edid,
        .enable = sunxi_dw_hdmi_enable,
+       .mode_valid = sunxi_dw_hdmi_mode_valid,
 };
 
 U_BOOT_DRIVER(sunxi_dw_hdmi) = {