]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
phy: rockchip: samsung-hdptx: Prevent Inter-Pair Skew from exceeding the limits
authorCristian Ciocaltea <cristian.ciocaltea@collabora.com>
Tue, 28 Oct 2025 08:00:56 +0000 (10:00 +0200)
committerVinod Koul <vkoul@kernel.org>
Thu, 20 Nov 2025 17:00:17 +0000 (22:30 +0530)
Fixup PHY deskew FIFO to prevent the phase of D2 lane going ahead of
other lanes.  It's worth noting this might only happen when dealing with
HDMI 2.0 rates.

Fixes: 553be2830c5f ("phy: rockchip: Add Samsung HDMI/eDP Combo PHY driver")
Co-developed-by: Algea Cao <algea.cao@rock-chips.com>
Signed-off-by: Algea Cao <algea.cao@rock-chips.com>
Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://patch.msgid.link/20251028-phy-hdptx-fixes-v1-3-ecc642a59d94@collabora.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/phy/rockchip/phy-rockchip-samsung-hdptx.c

index 8ba9b53c2309b22a496574b7731377049f50068f..29de2f7bdae8a31958e31b0a64281532fd76e64d 100644 (file)
@@ -668,13 +668,9 @@ static const struct reg_sequence rk_hdtpx_common_lane_init_seq[] = {
 
 static const struct reg_sequence rk_hdtpx_tmds_lane_init_seq[] = {
        REG_SEQ0(LANE_REG(0312), 0x00),
-       REG_SEQ0(LANE_REG(031e), 0x00),
        REG_SEQ0(LANE_REG(0412), 0x00),
-       REG_SEQ0(LANE_REG(041e), 0x00),
        REG_SEQ0(LANE_REG(0512), 0x00),
-       REG_SEQ0(LANE_REG(051e), 0x00),
        REG_SEQ0(LANE_REG(0612), 0x00),
-       REG_SEQ0(LANE_REG(061e), 0x08),
        REG_SEQ0(LANE_REG(0303), 0x2f),
        REG_SEQ0(LANE_REG(0403), 0x2f),
        REG_SEQ0(LANE_REG(0503), 0x2f),
@@ -687,6 +683,11 @@ static const struct reg_sequence rk_hdtpx_tmds_lane_init_seq[] = {
        REG_SEQ0(LANE_REG(0406), 0x1c),
        REG_SEQ0(LANE_REG(0506), 0x1c),
        REG_SEQ0(LANE_REG(0606), 0x1c),
+       /* Keep Inter-Pair Skew in the limits */
+       REG_SEQ0(LANE_REG(031e), 0x02),
+       REG_SEQ0(LANE_REG(041e), 0x02),
+       REG_SEQ0(LANE_REG(051e), 0x02),
+       REG_SEQ0(LANE_REG(061e), 0x0a),
 };
 
 static struct tx_drv_ctrl tx_drv_ctrl_rbr[4][4] = {