Hi,

On Tue, May 12, 2026 at 03:22:15PM +0200, Javier Martinez Canillas wrote:
> 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);
>  }

Having some part of it in mode_set and some part in enable is still kind
of weird. The best there would be to put everything in enable (and
pre_enable), and drop mode_set entirely.

Maxime

Attachment: signature.asc
Description: PGP signature

Reply via email to