Patch "drm/bridge: it6505: Fix inverted reset polarity" has been added to the 6.6-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/bridge: it6505: Fix inverted reset polarity

to the 6.6-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-bridge-it6505-fix-inverted-reset-polarity.patch
and it can be found in the queue-6.6 subdirectory.

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



commit 6d2e02bd1251f26dc78b83d6ffe7c38933d8c763
Author: Chen-Yu Tsai <wenst@xxxxxxxxxxxx>
Date:   Tue Oct 29 17:54:10 2024 +0800

    drm/bridge: it6505: Fix inverted reset polarity
    
    [ Upstream commit c5f3f21728b069412e8072b8b1d0a3d9d3ab0265 ]
    
    The IT6505 bridge chip has a active low reset line. Since it is a
    "reset" and not an "enable" line, the GPIO should be asserted to
    put it in reset and deasserted to bring it out of reset during
    the power on sequence.
    
    The polarity was inverted when the driver was first introduced, likely
    because the device family that was targeted had an inverting level
    shifter on the reset line.
    
    The MT8186 Corsola devices already have the IT6505 in their device tree,
    but the whole display pipeline is actually disabled and won't be enabled
    until some remaining issues are sorted out. The other known user is
    the MT8183 Kukui / Jacuzzi family; their device trees currently do not
    have the IT6505 included.
    
    Fix the polarity in the driver while there are no actual users.
    
    Fixes: b5c84a9edcd4 ("drm/bridge: add it6505 driver")
    Cc: stable@xxxxxxxxxxxxxxx
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx>
    Reviewed-by: Neil Armstrong <neil.armstrong@xxxxxxxxxx>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241029095411.657616-1-wenst@xxxxxxxxxxxx
    Signed-off-by: Chen-Yu Tsai <wenst@xxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/gpu/drm/bridge/ite-it6505.c b/drivers/gpu/drm/bridge/ite-it6505.c
index fda2c565fdb31..2a7c620626a03 100644
--- a/drivers/gpu/drm/bridge/ite-it6505.c
+++ b/drivers/gpu/drm/bridge/ite-it6505.c
@@ -2611,9 +2611,9 @@ static int it6505_poweron(struct it6505 *it6505)
 	/* time interval between OVDD and SYSRSTN at least be 10ms */
 	if (pdata->gpiod_reset) {
 		usleep_range(10000, 20000);
-		gpiod_set_value_cansleep(pdata->gpiod_reset, 0);
-		usleep_range(1000, 2000);
 		gpiod_set_value_cansleep(pdata->gpiod_reset, 1);
+		usleep_range(1000, 2000);
+		gpiod_set_value_cansleep(pdata->gpiod_reset, 0);
 		usleep_range(25000, 35000);
 	}
 
@@ -2640,7 +2640,7 @@ static int it6505_poweroff(struct it6505 *it6505)
 	}
 
 	if (pdata->gpiod_reset)
-		gpiod_set_value_cansleep(pdata->gpiod_reset, 0);
+		gpiod_set_value_cansleep(pdata->gpiod_reset, 1);
 
 	if (pdata->pwr18) {
 		err = regulator_disable(pdata->pwr18);
@@ -3132,7 +3132,7 @@ static int it6505_init_pdata(struct it6505 *it6505)
 		return PTR_ERR(pdata->ovdd);
 	}
 
-	pdata->gpiod_reset = devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW);
+	pdata->gpiod_reset = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH);
 	if (IS_ERR(pdata->gpiod_reset)) {
 		dev_err(dev, "gpiod_reset gpio not found");
 		return PTR_ERR(pdata->gpiod_reset);




[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