Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/i915/dvo: Use intel_de_rmw() for DVO enable/disable

Replace the hand rolled RMW with intel_de_rmw() in the DVO
port enable/disable functions. Also switch to intel_de_posting_read()
for the posting read (though maybe it should be just be nuked...).

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20221122120825.26338-9-ville.syrjala@linux.intel.com
Reviewed-by: Jani Nikula <jani.nikula@intel.com>

+5 -6
+5 -6
drivers/gpu/drm/i915/display/intel_dvo.c
··· 185 185 struct drm_i915_private *i915 = to_i915(encoder->base.dev); 186 186 struct intel_dvo *intel_dvo = enc_to_dvo(encoder); 187 187 enum port port = encoder->port; 188 - u32 temp = intel_de_read(i915, DVO(port)); 189 188 190 189 intel_dvo->dev.dev_ops->dpms(&intel_dvo->dev, false); 191 - intel_de_write(i915, DVO(port), temp & ~DVO_ENABLE); 192 - intel_de_read(i915, DVO(port)); 190 + 191 + intel_de_rmw(i915, DVO(port), DVO_ENABLE, 0); 192 + intel_de_posting_read(i915, DVO(port)); 193 193 } 194 194 195 195 static void intel_enable_dvo(struct intel_atomic_state *state, ··· 200 200 struct drm_i915_private *i915 = to_i915(encoder->base.dev); 201 201 struct intel_dvo *intel_dvo = enc_to_dvo(encoder); 202 202 enum port port = encoder->port; 203 - u32 temp = intel_de_read(i915, DVO(port)); 204 203 205 204 intel_dvo->dev.dev_ops->mode_set(&intel_dvo->dev, 206 205 &pipe_config->hw.mode, 207 206 &pipe_config->hw.adjusted_mode); 208 207 209 - intel_de_write(i915, DVO(port), temp | DVO_ENABLE); 210 - intel_de_read(i915, DVO(port)); 208 + intel_de_rmw(i915, DVO(port), 0, DVO_ENABLE); 209 + intel_de_posting_read(i915, DVO(port)); 211 210 212 211 intel_dvo->dev.dev_ops->dpms(&intel_dvo->dev, true); 213 212 }