The meson HDMI encoder calls drm_atomic_helper_connector_reset() during connector creation to allocate an initial connector state needed by drm_connector_attach_max_bpc_property(). However, the driver only needs to allocate a pristine state, which is exactly what atomic_create_state provides.
Convert to drm_atomic_helper_connector_create_state() with proper error handling. Signed-off-by: Maxime Ripard <[email protected]> --- Cc: Jerome Brunet <[email protected]> Cc: Kevin Hilman <[email protected]> Cc: Martin Blumenstingl <[email protected]> Cc: [email protected] --- drivers/gpu/drm/meson/meson_encoder_hdmi.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/meson/meson_encoder_hdmi.c b/drivers/gpu/drm/meson/meson_encoder_hdmi.c index c4355c5cc340..c04e381b2c10 100644 --- a/drivers/gpu/drm/meson/meson_encoder_hdmi.c +++ b/drivers/gpu/drm/meson/meson_encoder_hdmi.c @@ -446,11 +446,21 @@ int meson_encoder_hdmi_probe(struct meson_drm *priv) /* * drm_connector_attach_max_bpc_property() requires the * connector to have a state. */ - drm_atomic_helper_connector_reset(meson_encoder_hdmi->connector); + if (!meson_encoder_hdmi->connector->state) { + struct drm_connector_state *conn_state; + + conn_state = drm_atomic_helper_connector_create_state(meson_encoder_hdmi->connector); + if (IS_ERR(conn_state)) { + ret = PTR_ERR(conn_state); + goto err_put_node; + } + + meson_encoder_hdmi->connector->state = conn_state; + } if (meson_vpu_is_compatible(priv, VPU_COMPATIBLE_GXL) || meson_vpu_is_compatible(priv, VPU_COMPATIBLE_GXM) || meson_vpu_is_compatible(priv, VPU_COMPATIBLE_G12A)) drm_connector_attach_hdr_output_metadata_property(meson_encoder_hdmi->connector); -- 2.55.0
