From: Ville Syrjälä <ville.syrj...@linux.intel.com>

Make life easier for drivers by filtering out unwanted YCbCr 4:2:0
only modes prior to calling the connector->mode_valid() hook.
Currently drivers will still see YCbCr 4:2:0 only modes in said
hook, which will likely come as a suprise when the driver has
declared no support for such modes (via setting
connector->ycbcr_420_allowed to false).

Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10992
Signed-off-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
---
 drivers/gpu/drm/drm_probe_helper.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/drm_probe_helper.c 
b/drivers/gpu/drm/drm_probe_helper.c
index 4f75a1cfd820..249c8c2cb319 100644
--- a/drivers/gpu/drm/drm_probe_helper.c
+++ b/drivers/gpu/drm/drm_probe_helper.c
@@ -474,6 +474,10 @@ static int __drm_helper_update_and_validate(struct 
drm_connector *connector,
                if (mode->status != MODE_OK)
                        continue;
 
+               mode->status = drm_mode_validate_ycbcr420(mode, connector);
+               if (mode->status != MODE_OK)
+                       continue;
+
                ret = drm_mode_validate_pipeline(mode, connector, ctx,
                                                 &mode->status);
                if (ret) {
@@ -486,10 +490,6 @@ static int __drm_helper_update_and_validate(struct 
drm_connector *connector,
                        else
                                return -EDEADLK;
                }
-
-               if (mode->status != MODE_OK)
-                       continue;
-               mode->status = drm_mode_validate_ycbcr420(mode, connector);
        }
 
        return 0;
-- 
2.44.1

Reply via email to