]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c
drm/sun4i: Add support for H6 DW HDMI controller
[linux.git] / drivers / gpu / drm / sun4i / sun8i_dw_hdmi.c
index 99b878e380e19695238303593102045141e1ea3f..445cca8d9a26b0b10f8c129fe87409d4e56bdb54 100644 (file)
@@ -44,6 +44,17 @@ sun8i_dw_hdmi_mode_valid_a83t(struct drm_connector *connector,
        return MODE_OK;
 }
 
+static enum drm_mode_status
+sun8i_dw_hdmi_mode_valid_h6(struct drm_connector *connector,
+                           const struct drm_display_mode *mode)
+{
+       /* This is max for HDMI 2.0b (4K@60Hz) */
+       if (mode->clock > 594000)
+               return MODE_CLOCK_HIGH;
+
+       return MODE_OK;
+}
+
 static bool sun8i_dw_hdmi_node_is_tcon_top(struct device_node *node)
 {
        return IS_ENABLED(CONFIG_DRM_SUN8I_TCON_TOP) &&
@@ -239,11 +250,19 @@ static const struct sun8i_dw_hdmi_quirks sun8i_a83t_quirks = {
        .set_rate = true,
 };
 
+static const struct sun8i_dw_hdmi_quirks sun50i_h6_quirks = {
+       .mode_valid = sun8i_dw_hdmi_mode_valid_h6,
+};
+
 static const struct of_device_id sun8i_dw_hdmi_dt_ids[] = {
        {
                .compatible = "allwinner,sun8i-a83t-dw-hdmi",
                .data = &sun8i_a83t_quirks,
        },
+       {
+               .compatible = "allwinner,sun50i-h6-dw-hdmi",
+               .data = &sun50i_h6_quirks,
+       },
        { /* sentinel */ },
 };
 MODULE_DEVICE_TABLE(of, sun8i_dw_hdmi_dt_ids);