diff mbox series

[v3] drm/bridge: adv7533: Reset DSI receiver logic

Message ID 20241212-adv7533-dsi-reset-v3-1-c6b9a5c524cf@axis.com (mailing list archive)
State New, archived
Headers show
Series [v3] drm/bridge: adv7533: Reset DSI receiver logic | expand

Commit Message

Stefan Ekenberg Dec. 12, 2024, 2:38 p.m. UTC
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.jz@bp.renesas.com>
Fixes: 8501fe4b14a35 ("drm: bridge: adv7511: Add support for ADV7535")
Signed-off-by: Stefan Ekenberg <stefan.ekenberg@axis.com>
---
Changes in v3:
- Add Fixes tag
- Link to v2: https://lore.kernel.org/r/20241119-adv7533-dsi-reset-v2-1-e12cce42e25a@axis.com

Changes in v2:
- Add Tested-by tag
- Link to v1: https://lore.kernel.org/r/20241113-adv7533-dsi-reset-v1-1-6c1069e35fd3@axis.com
---
 drivers/gpu/drm/bridge/adv7511/adv7533.c | 9 +++++++++
 1 file changed, 9 insertions(+)


---
base-commit: 59b723cd2adbac2a34fc8e12c74ae26ae45bf230
change-id: 20241108-adv7533-dsi-reset-488c6fbb5e42

Best regards,

Comments

Frieder Schrempf Jan. 14, 2025, 3:44 p.m. UTC | #1
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.jz@bp.renesas.com>
> Fixes: 8501fe4b14a35 ("drm: bridge: adv7511: Add support for ADV7535")
> Signed-off-by: Stefan Ekenberg <stefan.ekenberg@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.schrempf@kontron.de>
Reviewed-by: Frieder Schrempf <frieder.schrempf@kontron.de>

> ---
> Changes in v3:
> - Add Fixes tag
> - Link to v2: https://lore.kernel.org/r/20241119-adv7533-dsi-reset-v2-1-e12cce42e25a@axis.com
> 
> Changes in v2:
> - Add Tested-by tag
> - Link to v1: https://lore.kernel.org/r/20241113-adv7533-dsi-reset-v1-1-6c1069e35fd3@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,
diff mbox series

Patch

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);