From 37b204f22778f51cad7bdf678d7574ff6d7508a6 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 25 Mar 2020 18:22:40 +0000 Subject: [PATCH] drm/vc4: Alter the HDMI state machine clock calc to allow for 1920x1200 Whilst the documentation for BCM2835 states that the HDMI state machine clock needs to be 108% of the pixel clock, other documentation says that it only has to be greater than the pixel clock. The firmware uses 101%, and that allows 1920x1200@60Hz to work within the constraint of the HSM clock being < 163.68MHz. Adopt 101%, and increase the maximum pixel clock for vc4 to 162MHz so that it too supports 1920x1200@60. Signed-off-by: Dave Stevenson --- drivers/gpu/drm/vc4/vc4_hdmi.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) --- a/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c @@ -581,10 +581,11 @@ static void vc4_hdmi_encoder_enable(stru } /* - * The HSM rate needs to be at 108% of the pixel clock, with a - * minimum of 108MHz. + * The HSM rate needs to be slightly greater than the pixel clock, with + * a minimum of 108MHz. + * Use 101% as this is what the firmware uses. */ - hsm_rate = max_t(unsigned long, 108000000, (pixel_rate / 100) * 108); + hsm_rate = max_t(unsigned long, 108000000, (pixel_rate / 100) * 101); ret = clk_set_rate(vc4_hdmi->hsm_clock, hsm_rate); if (ret) { DRM_ERROR("Failed to set HSM clock rate: %d\n", ret); @@ -1731,7 +1732,7 @@ static int vc4_hdmi_dev_remove(struct pl } static const struct vc4_hdmi_variant bcm2835_variant = { - .max_pixel_clock = 148500000, + .max_pixel_clock = 162000000, .audio_available = true, .cec_available = true, .registers = vc4_hdmi_fields,