When using the modes that need the highest pixel rate we support (such
as 4k at 60Hz), using a 10 or 12 bpc output will put us over the limit
of what we can achieve.

In such a case, let's force our output to be YUV422 so that we can go
back down under the required clock rate.

Signed-off-by: Maxime Ripard <max...@cerno.tech>
---
 drivers/gpu/drm/vc4/vc4_hdmi.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
index 04eb1ab9dad3..5b8b2688a3f4 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
@@ -1411,8 +1411,15 @@ vc4_hdmi_encoder_compute_config(struct vc4_hdmi 
*vc4_hdmi,
                                             vc4_state, mode,
                                             conn_state->max_bpc,
                                             format);
-       if (ret)
-               return ret;
+       if (ret) {
+               format = VC4_HDMI_OUTPUT_YUV422;
+               ret = vc4_hdmi_encoder_compute_clock(vc4_hdmi,
+                                                    vc4_state, mode,
+                                                    conn_state->max_bpc,
+                                                    format);
+               if (ret)
+                       return ret;
+       }
 
        vc4_state->output_format = format;
        return ret;
-- 
2.33.1

Reply via email to