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> > --- > 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