From: Imre Deak <[email protected]>

The PHY_C20_VDR_HDMI_RATE registers 7:2 bits are reserved and they are
not specified as a must-be-zero field. Accordingly this reserved field
shouldn't be zeroed; to ensure that use an RMW to update the
PHY_C20_HDMI_RATE field (which is bits 1:0 of the register).

Reviewed-by: Luca Coelho <[email protected]>
Signed-off-by: Imre Deak <[email protected]>
Signed-off-by: Mika Kahola <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_cx0_phy.c      | 7 ++++---
 drivers/gpu/drm/i915/display/intel_cx0_phy_regs.h | 2 ++
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_cx0_phy.c 
b/drivers/gpu/drm/i915/display/intel_cx0_phy.c
index 6e49659d2f17..f8c1338f9053 100644
--- a/drivers/gpu/drm/i915/display/intel_cx0_phy.c
+++ b/drivers/gpu/drm/i915/display/intel_cx0_phy.c
@@ -2714,9 +2714,10 @@ static void intel_c20_pll_program(struct intel_display 
*display,
                      MB_WRITE_COMMITTED);
 
        if (!is_dp)
-               intel_cx0_write(encoder, INTEL_CX0_BOTH_LANES, 
PHY_C20_VDR_HDMI_RATE,
-                               intel_c20_get_hdmi_rate(port_clock),
-                               MB_WRITE_COMMITTED);
+               intel_cx0_rmw(encoder, INTEL_CX0_BOTH_LANES, 
PHY_C20_VDR_HDMI_RATE,
+                             PHY_C20_HDMI_RATE_MASK,
+                             intel_c20_get_hdmi_rate(port_clock),
+                             MB_WRITE_COMMITTED);
 
        /*
         * 7. Write Vendor specific registers to toggle context setting to load
diff --git a/drivers/gpu/drm/i915/display/intel_cx0_phy_regs.h 
b/drivers/gpu/drm/i915/display/intel_cx0_phy_regs.h
index 0743a3e2d15f..86e2e1c7babf 100644
--- a/drivers/gpu/drm/i915/display/intel_cx0_phy_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_cx0_phy_regs.h
@@ -304,6 +304,8 @@
 #define   PHY_C20_DP_RATE(val)         REG_FIELD_PREP8(PHY_C20_DP_RATE_MASK, 
val)
 #define   PHY_C20_CONTEXT_TOGGLE       REG_BIT8(0)
 #define PHY_C20_VDR_HDMI_RATE          0xD01
+#define   PHY_C20_HDMI_RATE_MASK       REG_GENMASK8(1, 0)
+#define   PHY_C20_HDMI_RATE(val)       REG_FIELD_PREP8(PHY_C20_HDMI_RATE_MASK, 
val)
 #define PHY_C20_VDR_CUSTOM_WIDTH       0xD02
 #define   PHY_C20_CUSTOM_WIDTH_MASK    REG_GENMASK(1, 0)
 #define   PHY_C20_CUSTOM_WIDTH(val)    
REG_FIELD_PREP8(PHY_C20_CUSTOM_WIDTH_MASK, val)
-- 
2.34.1

Reply via email to