Patch "drm/panel: st7703: Pick different reset sequence" has been added to the 5.10-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    drm/panel: st7703: Pick different reset sequence

to the 5.10-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     drm-panel-st7703-pick-different-reset-sequence.patch
and it can be found in the queue-5.10 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit edb0eea1fc0d9cbad63cfc03c33a42d61c632b8a
Author: Ondrej Jirman <megi@xxxxxx>
Date:   Sat Feb 11 18:17:48 2023 +0100

    drm/panel: st7703: Pick different reset sequence
    
    [ Upstream commit d12d635bb03c7cb4830acb641eb176ee9ff2aa89 ]
    
    Switching to a different reset sequence, enabling IOVCC before enabling
    VCC.
    
    There also needs to be a delay after enabling the supplies and before
    deasserting the reset. The datasheet specifies 1ms after the supplies
    reach the required voltage. Use 10-20ms to also give the power supplies
    some time to reach the required voltage, too.
    
    This fixes intermittent panel initialization failures and screen
    corruption during resume from sleep on panel xingbangda,xbd599 (e.g.
    used in PinePhone).
    
    Signed-off-by: Ondrej Jirman <megi@xxxxxx>
    Signed-off-by: Frank Oltmanns <frank@xxxxxxxxxxxx>
    Reported-by: Samuel Holland <samuel@xxxxxxxxxxxx>
    Reviewed-by: Guido Günther <agx@xxxxxxxxxxx>
    Tested-by: Guido Günther <agx@xxxxxxxxxxx>
    Signed-off-by: Guido Günther <agx@xxxxxxxxxxx>
    Link: https://patchwork.freedesktop.org/patch/msgid/20230211171748.36692-2-frank@xxxxxxxxxxxx
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/gpu/drm/panel/panel-sitronix-st7703.c b/drivers/gpu/drm/panel/panel-sitronix-st7703.c
index c22e7c49e0778..67e1da0a7db53 100644
--- a/drivers/gpu/drm/panel/panel-sitronix-st7703.c
+++ b/drivers/gpu/drm/panel/panel-sitronix-st7703.c
@@ -428,29 +428,30 @@ static int st7703_prepare(struct drm_panel *panel)
 		return 0;
 
 	dev_dbg(ctx->dev, "Resetting the panel\n");
-	ret = regulator_enable(ctx->vcc);
+	gpiod_set_value_cansleep(ctx->reset_gpio, 1);
+
+	ret = regulator_enable(ctx->iovcc);
 	if (ret < 0) {
-		dev_err(ctx->dev, "Failed to enable vcc supply: %d\n", ret);
+		dev_err(ctx->dev, "Failed to enable iovcc supply: %d\n", ret);
 		return ret;
 	}
-	ret = regulator_enable(ctx->iovcc);
+
+	ret = regulator_enable(ctx->vcc);
 	if (ret < 0) {
-		dev_err(ctx->dev, "Failed to enable iovcc supply: %d\n", ret);
-		goto disable_vcc;
+		dev_err(ctx->dev, "Failed to enable vcc supply: %d\n", ret);
+		regulator_disable(ctx->iovcc);
+		return ret;
 	}
 
-	gpiod_set_value_cansleep(ctx->reset_gpio, 1);
-	usleep_range(20, 40);
+	/* Give power supplies time to stabilize before deasserting reset. */
+	usleep_range(10000, 20000);
+
 	gpiod_set_value_cansleep(ctx->reset_gpio, 0);
-	msleep(20);
+	usleep_range(15000, 20000);
 
 	ctx->prepared = true;
 
 	return 0;
-
-disable_vcc:
-	regulator_disable(ctx->vcc);
-	return ret;
 }
 
 static int st7703_get_modes(struct drm_panel *panel,



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux