Re: [PATCH 8/9] drm/rockchip: inno-hdmi: handle unsupported InfoFrames
From: Diederik de Haas <hidden>
Date: 2025-09-27 09:56:31
Also in:
dri-devel, linux-arm-msm, linux-rockchip, linux-sunxi, lkml
On Sat Sep 27, 2025 at 3:04 AM CEST, Dmitry Baryshkov wrote:
quoted hunk ↗ jump to hunk
Make write_hdmi_infoframe() and 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 <redacted> --- drivers/gpu/drm/rockchip/inno_hdmi.c | 46 +++++++++++++++++++++++++++--------- 1 file changed, 35 insertions(+), 11 deletions(-)diff --git a/drivers/gpu/drm/rockchip/inno_hdmi.c b/drivers/gpu/drm/rockchip/inno_hdmi.c index f24827dc1421cf5e0c1be63a80da23d645cf3f24..dc2d68b9c87f7ae7b06ecbeaebc82b9689c1abfd 100644 --- a/drivers/gpu/drm/rockchip/inno_hdmi.c +++ b/drivers/gpu/drm/rockchip/inno_hdmi.c@@ -641,11 +641,8 @@ static int inno_hdmi_disable_frame(struct drm_connector *connector, { struct inno_hdmi *hdmi = connector_to_inno_hdmi(connector); - if (type != HDMI_INFOFRAME_TYPE_AVI) { - drm_err(connector->dev, - "Unsupported infoframe type: %u\n", type); - return 0; - } + if (type != HDMI_INFOFRAME_TYPE_AVI) + return -EOPNOTSUPP; hdmi_writeb(hdmi, HDMI_CONTROL_PACKET_BUF_INDEX, INFOFRAME_AVI);@@ -659,11 +656,8 @@ static int inno_hdmi_upload_frame(struct drm_connector *connector, struct inno_hdmi *hdmi = connector_to_inno_hdmi(connector); ssize_t i; - if (type != HDMI_INFOFRAME_TYPE_AVI) { - drm_err(connector->dev, - "Unsupported infoframe type: %u\n", type); - return 0; - } + if (type != HDMI_INFOFRAME_TYPE_AVI) + return -EOPNOTSUPP; inno_hdmi_disable_frame(connector, type);@@ -673,6 +667,36 @@ static int inno_hdmi_upload_frame(struct drm_connector *connector, return 0; } +static int inno_hdmi_connector_atomic_check(struct drm_connector *connector, + struct drm_atomic_state *state) +{ + struct drm_connector_state *conn_state = + drm_atomic_get_new_connector_state(state, connector); + int ret; + + ret = drm_atomic_helper_connector_hdmi_check(connector, state); + if (ret) + return ret; + + /* not supported by the driver */ + conn_state->hdmi.infoframes.spd.set = false; + + /* FIXME: not supported by the driver */ + conn_state->hdmi.infoframes.hdmi.set = false; + + /* should not happen, HDR support not enabled */ + if (drm_WARN_ON_ONCE(connector->dev, + connector->hdmi.infoframes.audio.set)) + return -EOPNOTSUPP; + + /* should not happen, audio support not enabled */ + if (drm_WARN_ON_ONCE(connector->dev, + conn_state->hdmi.infoframes.hdr_drm.set)) + return -EOPNOTSUPP;
Looks like the comments are on the wrong line? Also in patch 7. Cheers, Diederik
quoted hunk ↗ jump to hunk
+ + return 0; +} + static const struct drm_connector_hdmi_funcs inno_hdmi_hdmi_connector_funcs = { .clear_infoframe = inno_hdmi_disable_frame, .write_infoframe = inno_hdmi_upload_frame,@@ -1029,7 +1053,7 @@ static const struct drm_connector_funcs inno_hdmi_connector_funcs = { }; static struct drm_connector_helper_funcs inno_hdmi_connector_helper_funcs = { - .atomic_check = drm_atomic_helper_connector_hdmi_check, + .atomic_check = inno_hdmi_connector_atomic_check, .get_modes = inno_hdmi_connector_get_modes, .mode_valid = inno_hdmi_connector_mode_valid, };
Attachments
- signature.asc [application/pgp-signature] 228 bytes