]> git.ipfire.org Git - thirdparty/kernel/stable.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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 18 Dec 2025 12:55:03 +0000 (13:55 +0100)
[ Upstream commit 51023cf6cc5db3423dea6620746d9087e336e024 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/phy/rockchip/phy-rockchip-samsung-hdptx.c

index d287e818fb03cbf54e43ff93516d1ba61863f142..3d0950048ef9613dd86fb317b0eabcbd66f9002e 100644 (file)
@@ -553,13 +553,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),
@@ -572,6 +568,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 bool rk_hdptx_phy_is_rw_reg(struct device *dev, unsigned int reg)