The HDMI transmission mode set and AVI infoframes enable are done in the .mode_set callback, but it is more correct to do this in .atomic_enable.
Because the information about the sink type is in the struct drm_connector display_info.is_hdmi and this might not be available when the .mode_set callback is executed. Currently the driver is not checking display info to determine whether the mode has to be set to HDMI or DVI, but this is a bug that will be fixed by a follow-up change. Signed-off-by: Javier Martinez Canillas <[email protected]> --- (no changes since v1) drivers/gpu/drm/bridge/ite-it66121.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/ite-it66121.c index 19a027d75b61..648ca50712df 100644 --- a/drivers/gpu/drm/bridge/ite-it66121.c +++ b/drivers/gpu/drm/bridge/ite-it66121.c @@ -669,6 +669,22 @@ static int it66121_set_mute(struct it66121_ctx *ctx, bool mute) IT66121_PKT_GEN_CTRL_ON | IT66121_PKT_GEN_CTRL_RPT); } +static void it66121_set_tx_mode(struct it66121_ctx *ctx) +{ + mutex_lock(&ctx->lock); + + /* Enable AVI infoframe */ + if (regmap_write(ctx->regmap, IT66121_AVI_INFO_PKT_REG, + IT66121_AVI_INFO_PKT_ON | IT66121_AVI_INFO_PKT_RPT)) + goto unlock; + + /* Set TX mode to HDMI */ + regmap_write(ctx->regmap, IT66121_HDMI_MODE_REG, IT66121_HDMI_MODE_HDMI); + +unlock: + mutex_unlock(&ctx->lock); +} + #define MAX_OUTPUT_SEL_FORMATS 1 static u32 *it66121_bridge_atomic_get_output_bus_fmts(struct drm_bridge *bridge, @@ -729,6 +745,8 @@ static void it66121_bridge_enable(struct drm_bridge *bridge, ctx->connector = drm_atomic_get_new_connector_for_encoder(state, bridge->encoder); it66121_set_mute(ctx, false); + + it66121_set_tx_mode(ctx); } static void it66121_bridge_disable(struct drm_bridge *bridge, -- 2.54.0
