Commit 4fc30c2c authored by Dmitry Baryshkov's avatar Dmitry Baryshkov
Browse files

drm/display: hdmi_state_helper: don't generate unsupported InfoFrames



There is little point in generating InfoFrames which are not supported
by the driver. Skip generating the unsupported InfoFrames, making sure
that the kernel never tries to write the unsupported frame. As there are
no remaining usecases, change write_infoframe / clear_infoframe helpers
return an error if the corresponding callback is NULL.

Acked-by: default avatarMaxime Ripard <mripard@kernel.org>
Link: https://patch.msgid.link/20260107-limit-infoframes-2-v4-8-213d0d3bd490@oss.qualcomm.com


Signed-off-by: default avatarDmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
parent 1d8847f4
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -718,6 +718,9 @@ static int hdmi_generate_spd_infoframe(const struct drm_connector *connector,

	infoframe->set = false;

	if (!connector->hdmi.funcs->spd.write_infoframe)
		return 0;

	ret = hdmi_spd_infoframe_init(frame,
				      connector->hdmi.vendor,
				      connector->hdmi.product);
@@ -742,6 +745,9 @@ static int hdmi_generate_hdr_infoframe(const struct drm_connector *connector,

	infoframe->set = false;

	if (!connector->hdmi.funcs->hdr_drm.write_infoframe)
		return 0;

	if (connector->max_bpc < 10)
		return 0;

@@ -902,7 +908,7 @@ static int clear_infoframe(struct drm_connector *connector,

	if (!funcs->clear_infoframe) {
		drm_dbg_kms(dev, "Function not implemented, bailing.\n");
		return 0;
		return -EOPNOTSUPP;
	}

	ret = funcs->clear_infoframe(connector);
@@ -928,7 +934,7 @@ static int write_infoframe(struct drm_connector *connector,

	if (!funcs->write_infoframe) {
		drm_dbg_kms(dev, "Function not implemented, bailing.\n");
		return 0; /* XXX: temporal until we stop generating unsupported frames */
		return -EOPNOTSUPP;
	}

	len = hdmi_infoframe_pack(&new_frame->data, buffer, sizeof(buffer));