diff options
Diffstat (limited to 'target/linux/bcm27xx/patches-5.4/950-0612-drm-vc4-Alter-the-HDMI-state-machine-clock-calc-to-a.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-5.4/950-0612-drm-vc4-Alter-the-HDMI-state-machine-clock-calc-to-a.patch | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.4/950-0612-drm-vc4-Alter-the-HDMI-state-machine-clock-calc-to-a.patch b/target/linux/bcm27xx/patches-5.4/950-0612-drm-vc4-Alter-the-HDMI-state-machine-clock-calc-to-a.patch new file mode 100644 index 0000000000..f576b8624e --- /dev/null +++ b/target/linux/bcm27xx/patches-5.4/950-0612-drm-vc4-Alter-the-HDMI-state-machine-clock-calc-to-a.patch @@ -0,0 +1,46 @@ +From 37b204f22778f51cad7bdf678d7574ff6d7508a6 Mon Sep 17 00:00:00 2001 +From: Dave Stevenson <dave.stevenson@raspberrypi.com> +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 <dave.stevenson@raspberrypi.com> +--- + 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); +@@ -1730,7 +1731,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, |