Make hdmi_write_hdmi_infoframe() and hdmi_clear_infoframe() callbacks
return -EOPNOTSUPP for unsupported InfoFrames and make sure that
atomic_check() callback doesn't allow unsupported InfoFrames to be
enabled.

Signed-off-by: Dmitry Baryshkov <[email protected]>
---
 drivers/gpu/drm/bridge/lontium-lt9611.c | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/bridge/lontium-lt9611.c 
b/drivers/gpu/drm/bridge/lontium-lt9611.c
index 
a2d032ee4744715b88eb66883edf69bab4c274b0..9c2c9887d2d66968eb1d50544a257d5999bbdded
 100644
--- a/drivers/gpu/drm/bridge/lontium-lt9611.c
+++ b/drivers/gpu/drm/bridge/lontium-lt9611.c
@@ -869,9 +869,7 @@ static int lt9611_hdmi_clear_infoframe(struct drm_bridge 
*bridge,
                break;
 
        default:
-               drm_dbg_driver(lt9611->bridge.dev, "Unsupported HDMI InfoFrame 
%x\n", type);
-               mask = 0;
-               break;
+               return -EOPNOTSUPP;
        }
 
        if (mask)
@@ -910,9 +908,7 @@ static int lt9611_hdmi_write_infoframe(struct drm_bridge 
*bridge,
                break;
 
        default:
-               drm_dbg_driver(lt9611->bridge.dev, "Unsupported HDMI InfoFrame 
%x\n", type);
-               mask = 0;
-               break;
+               return -EOPNOTSUPP;
        }
 
        if (mask) {
@@ -925,6 +921,19 @@ static int lt9611_hdmi_write_infoframe(struct drm_bridge 
*bridge,
        return 0;
 }
 
+static int lt9611_bridge_atomic_check(struct drm_bridge *bridge,
+                                     struct drm_bridge_state *bridge_state,
+                                     struct drm_crtc_state *crtc_state,
+                                     struct drm_connector_state *conn_state)
+{
+       /* should not happen, HDR support not enabled */
+       if (drm_WARN_ON_ONCE(bridge->encoder->dev,
+                            conn_state->hdmi.infoframes.hdr_drm.set))
+               return -EOPNOTSUPP;
+
+       return 0;
+}
+
 static enum drm_mode_status
 lt9611_hdmi_tmds_char_rate_valid(const struct drm_bridge *bridge,
                                 const struct drm_display_mode *mode,
@@ -993,6 +1002,7 @@ static const struct drm_bridge_funcs lt9611_bridge_funcs = 
{
        .edid_read = lt9611_bridge_edid_read,
        .hpd_enable = lt9611_bridge_hpd_enable,
 
+       .atomic_check = lt9611_bridge_atomic_check,
        .atomic_pre_enable = lt9611_bridge_atomic_pre_enable,
        .atomic_enable = lt9611_bridge_atomic_enable,
        .atomic_disable = lt9611_bridge_atomic_disable,

-- 
2.47.3

Reply via email to