Register the vrr_capable property on the connector for RK3588, where VRR is implemented.
In the encoder's atomic_check callback, the vrr_capable property, if present, is then set to true if the sink supports VRR. Signed-off-by: Nicolas Frattaroli <[email protected]> --- drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c index 9c4cf68d79d5..2b9432aa8c54 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c @@ -192,6 +192,7 @@ dw_hdmi_qp_rockchip_encoder_atomic_check(struct drm_encoder *encoder, struct drm_crtc_state *crtc_state, struct drm_connector_state *conn_state) { + struct drm_connector *connector = conn_state->connector; struct rockchip_crtc_state *s = to_rockchip_crtc_state(crtc_state); struct rockchip_hdmi_qp *hdmi = to_rockchip_hdmi_qp(encoder); union phy_configure_opts phy_cfg = {}; @@ -238,6 +239,10 @@ dw_hdmi_qp_rockchip_encoder_atomic_check(struct drm_encoder *encoder, dev_err(hdmi->dev, "Failed to configure phy: %d\n", ret); } + if (connector->vrr_capable_property) + drm_connector_set_vrr_capable_property(connector, + drm_display_info_is_vrr_capable(&connector->display_info)); + return ret; } @@ -515,6 +520,7 @@ struct rockchip_hdmi_qp_cfg { unsigned int port_ids[MAX_HDMI_PORT_NUM]; const struct rockchip_hdmi_qp_ctrl_ops *ctrl_ops; const struct dw_hdmi_qp_phy_ops *phy_ops; + bool supports_vrr; }; static const struct rockchip_hdmi_qp_cfg rk3576_hdmi_cfg = { @@ -534,6 +540,7 @@ static const struct rockchip_hdmi_qp_cfg rk3588_hdmi_cfg = { }, .ctrl_ops = &rk3588_hdmi_ctrl_ops, .phy_ops = &rk3588_hdmi_phy_ops, + .supports_vrr = true, }; static const struct of_device_id dw_hdmi_qp_rockchip_dt_ids[] = { @@ -695,6 +702,13 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, return dev_err_probe(hdmi->dev, PTR_ERR(connector), "Failed to init bridge connector\n"); + if (cfg->supports_vrr) { + ret = drm_connector_attach_vrr_capable_property(connector); + if (ret) + return dev_err_probe(hdmi->dev, ret, + "Failed to attach 'vrr_capable' property\n"); + } + return 0; } -- 2.55.0
