Patch "drm/bridge: parade-ps8640: Wait for HPD when doing an AUX transfer" 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: parade-ps8640: Wait for HPD when doing an AUX transfer

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-parade-ps8640-wait-for-hpd-when-doing-an-.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 889de70ac23fa629524339b86b92b51f6df6a7cc
Author: Douglas Anderson <dianders@xxxxxxxxxxxx>
Date:   Thu Dec 21 13:55:48 2023 -0800

    drm/bridge: parade-ps8640: Wait for HPD when doing an AUX transfer
    
    [ Upstream commit 024b32db43a359e0ded3fcc6cd86247cbbed4224 ]
    
    Unlike what is claimed in commit f5aa7d46b0ee ("drm/bridge:
    parade-ps8640: Provide wait_hpd_asserted() in struct drm_dp_aux"), if
    someone manually tries to do an AUX transfer (like via `i2cdump ${bus}
    0x50 i`) while the panel is off we don't just get a simple transfer
    error. Instead, the whole ps8640 gets thrown for a loop and goes into
    a bad state.
    
    Let's put the function to wait for the HPD (and the magical 50 ms
    after first reset) back in when we're doing an AUX transfer. This
    shouldn't actually make things much slower (assuming the panel is on)
    because we should immediately poll and see the HPD high. Mostly this
    is just an extra i2c transfer to the bridge.
    
    Fixes: f5aa7d46b0ee ("drm/bridge: parade-ps8640: Provide wait_hpd_asserted() in struct drm_dp_aux")
    Tested-by: Pin-yen Lin <treapking@xxxxxxxxxxxx>
    Reviewed-by: Pin-yen Lin <treapking@xxxxxxxxxxxx>
    Signed-off-by: Douglas Anderson <dianders@xxxxxxxxxxxx>
    Link: https://patchwork.freedesktop.org/patch/msgid/20231221135548.1.I10f326a9305d57ad32cee7f8d9c60518c8be20fb@changeid
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/gpu/drm/bridge/parade-ps8640.c b/drivers/gpu/drm/bridge/parade-ps8640.c
index 541e4f5afc4c..fb5e9ae9ad81 100644
--- a/drivers/gpu/drm/bridge/parade-ps8640.c
+++ b/drivers/gpu/drm/bridge/parade-ps8640.c
@@ -346,6 +346,11 @@ static ssize_t ps8640_aux_transfer(struct drm_dp_aux *aux,
 	int ret;
 
 	pm_runtime_get_sync(dev);
+	ret = _ps8640_wait_hpd_asserted(ps_bridge, 200 * 1000);
+	if (ret) {
+		pm_runtime_put_sync_suspend(dev);
+		return ret;
+	}
 	ret = ps8640_aux_transfer_msg(aux, msg);
 	pm_runtime_mark_last_busy(dev);
 	pm_runtime_put_autosuspend(dev);




[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