On 12.12.24 3:38 PM, Stefan Ekenberg wrote:
> Reset DSI receiver logic during power on. The need for this change was
> discovered when investigating issue with ADV7535. The symptom of the
> problem was that ADV7535 continuously outputs a black image. This
> happened for about 10% of the times that ADV7535 was powered on. The
> rest of the times the image was as expected.
> 
> The solution in this patch (placement of reset and sleep time of 200ms)
> is implemented as outlined by the Analog Devices support team.
> 
> Tested-by: Biju Das <biju.das...@bp.renesas.com>
> Fixes: 8501fe4b14a35 ("drm: bridge: adv7511: Add support for ADV7535")
> Signed-off-by: Stefan Ekenberg <stefan.ekenb...@axis.com>

I can't reproduce the issue with my setup, but I tested this and it
doesn't break anything for me either.

Tested-by: Frieder Schrempf <frieder.schre...@kontron.de>
Reviewed-by: Frieder Schrempf <frieder.schre...@kontron.de>

> ---
> Changes in v3:
> - Add Fixes tag
> - Link to v2: 
> https://lore.kernel.org/r/20241119-adv7533-dsi-reset-v2-1-e12cce42e...@axis.com
> 
> Changes in v2:
> - Add Tested-by tag
> - Link to v1: 
> https://lore.kernel.org/r/20241113-adv7533-dsi-reset-v1-1-6c1069e35...@axis.com
> ---
>  drivers/gpu/drm/bridge/adv7511/adv7533.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/drivers/gpu/drm/bridge/adv7511/adv7533.c 
> b/drivers/gpu/drm/bridge/adv7511/adv7533.c
> index 
> 4481489aaf5ebf164313c86cbf3447d2d7914ab9..93085c2b872ed98f4ee394236dc66c568c0e5ccf
>  100644
> --- a/drivers/gpu/drm/bridge/adv7511/adv7533.c
> +++ b/drivers/gpu/drm/bridge/adv7511/adv7533.c
> @@ -67,6 +67,15 @@ void adv7533_dsi_power_on(struct adv7511 *adv)
>  {
>       struct mipi_dsi_device *dsi = adv->dsi;
>  
> +     /*
> +      * Reset DSI receiver block logic to avoid ADV7535 startup problem.
> +      * Without this reset it sometimes continuously fails to receive
> +      * incoming DSI packets and outputs black image.
> +      */
> +     regmap_write(adv->regmap_cec, 0x26, 0x18);
> +     msleep(200);
> +     regmap_write(adv->regmap_cec, 0x26, 0x38);
> +
>       if (adv->use_timing_gen)
>               adv7511_dsi_config_timing_gen(adv);
>  
> 
> ---
> base-commit: 59b723cd2adbac2a34fc8e12c74ae26ae45bf230
> change-id: 20241108-adv7533-dsi-reset-488c6fbb5e42
> 
> Best regards,

Reply via email to