On Mon, 19 Dec 2022, Jani Nikula <jani.nikula@xxxxxxxxxxxxxxx> wrote: > On Mon, 19 Dec 2022, Andrzej Hajda <andrzej.hajda@xxxxxxxxx> wrote: >> To update properly bits in the register the mask should be used >> to clear old value and then the result should be or-ed with new >> value, for such updates there is separate helper intel_de_rmw. >> >> Signed-off-by: Andrzej Hajda <andrzej.hajda@xxxxxxxxx> > > Seems like the right thing to do. > > Reviewed-by: Jani Nikula <jani.nikula@xxxxxxxxx> And pushed both to din, thanks for the patches. BR, Jani. > > >> --- >> drivers/gpu/drm/i915/display/vlv_dsi.c | 24 +++++++++--------------- >> 1 file changed, 9 insertions(+), 15 deletions(-) >> >> diff --git a/drivers/gpu/drm/i915/display/vlv_dsi.c b/drivers/gpu/drm/i915/display/vlv_dsi.c >> index 662bdb656aa304..f5268997a3e172 100644 >> --- a/drivers/gpu/drm/i915/display/vlv_dsi.c >> +++ b/drivers/gpu/drm/i915/display/vlv_dsi.c >> @@ -649,23 +649,17 @@ static void intel_dsi_port_enable(struct intel_encoder *encoder, >> enum port port; >> >> if (intel_dsi->dual_link == DSI_DUAL_LINK_FRONT_BACK) { >> - u32 temp; >> + u32 temp = intel_dsi->pixel_overlap; >> + >> if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv)) { >> - for_each_dsi_port(port, intel_dsi->ports) { >> - temp = intel_de_read(dev_priv, >> - MIPI_CTRL(port)); >> - temp &= ~BXT_PIXEL_OVERLAP_CNT_MASK | >> - intel_dsi->pixel_overlap << >> - BXT_PIXEL_OVERLAP_CNT_SHIFT; >> - intel_de_write(dev_priv, MIPI_CTRL(port), >> - temp); >> - } >> + for_each_dsi_port(port, intel_dsi->ports) >> + intel_de_rmw(dev_priv, MIPI_CTRL(port), >> + BXT_PIXEL_OVERLAP_CNT_MASK, >> + temp << BXT_PIXEL_OVERLAP_CNT_SHIFT); >> } else { >> - temp = intel_de_read(dev_priv, VLV_CHICKEN_3); >> - temp &= ~PIXEL_OVERLAP_CNT_MASK | >> - intel_dsi->pixel_overlap << >> - PIXEL_OVERLAP_CNT_SHIFT; >> - intel_de_write(dev_priv, VLV_CHICKEN_3, temp); >> + intel_de_rmw(dev_priv, VLV_CHICKEN_3, >> + PIXEL_OVERLAP_CNT_MASK, >> + temp << PIXEL_OVERLAP_CNT_SHIFT); >> } >> } -- Jani Nikula, Intel Open Source Graphics Center