Patch "drm/panel: st7703: Pick different reset sequence" has been added to the 5.15-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.15-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.15 subdirectory.

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



commit 145a8c7e6563e5656597ae02750903ac61521b74
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 a2c303e5732c0..f50cc70e6337c 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