Declare which infoframes are supported via the .hdmi_write_infoframe() interface. Return -EOPNOTSUPP if the driver is asked to write or clear the unsupported InfoFrame.
Reviewed-by: Liu Ying <victor....@nxp.com> Acked-by: Daniel Stone <dani...@collabora.com> Signed-off-by: Dmitry Baryshkov <dmitry.barysh...@oss.qualcomm.com> --- drivers/gpu/drm/rockchip/rk3066_hdmi.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/rockchip/rk3066_hdmi.c b/drivers/gpu/drm/rockchip/rk3066_hdmi.c index ae4a5ac2299a93a49f87df7604752f6b651c839c..6ac854c0fe4d155b351821782a6d8bbd550de656 100644 --- a/drivers/gpu/drm/rockchip/rk3066_hdmi.c +++ b/drivers/gpu/drm/rockchip/rk3066_hdmi.c @@ -164,7 +164,7 @@ static int rk3066_hdmi_bridge_clear_infoframe(struct drm_bridge *bridge, if (type != HDMI_INFOFRAME_TYPE_AVI) { drm_err(bridge->dev, "Unsupported infoframe type: %u\n", type); - return 0; + return -EOPNOTSUPP; } hdmi_writeb(hdmi, HDMI_CP_BUF_INDEX, HDMI_INFOFRAME_AVI); @@ -182,7 +182,7 @@ rk3066_hdmi_bridge_write_infoframe(struct drm_bridge *bridge, if (type != HDMI_INFOFRAME_TYPE_AVI) { drm_err(bridge->dev, "Unsupported infoframe type: %u\n", type); - return 0; + return -EOPNOTSUPP; } rk3066_hdmi_bridge_clear_infoframe(bridge, type); @@ -696,6 +696,8 @@ rk3066_hdmi_register(struct drm_device *drm, struct rk3066_hdmi *hdmi) hdmi->bridge.type = DRM_MODE_CONNECTOR_HDMIA; hdmi->bridge.vendor = "Rockchip"; hdmi->bridge.product = "RK3066 HDMI"; + hdmi->bridge.supported_infoframes = + DRM_CONNECTOR_INFOFRAME_AVI; hdmi->bridge.ddc = rk3066_hdmi_i2c_adapter(hdmi); if (IS_ERR(hdmi->bridge.ddc)) -- 2.47.3