From: Ville Syrjälä Date: Mon, 27 Mar 2017 18:55:38 +0000 (+0300) Subject: drm/i915: Drop useless posting reads from cursor commit X-Git-Tag: v4.14-rc1~484^2~32^2~87 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=75343a44c901b681328b22ae50bcf5efdf6c988f;p=platform%2Fkernel%2Flinux-rpi.git drm/i915: Drop useless posting reads from cursor commit There should be no need to do posting reads between all the cursor register accessess. Let's just drop them. v2: Rebase due to I915_WRITE_FW() and uncore.lock Signed-off-by: Ville Syrjälä Reviewed-by: Chris Wilson #v1 Link: http://patchwork.freedesktop.org/patch/msgid/20170327185546.2977-8-ville.syrjala@linux.intel.com --- diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 2372b2a..cb20de0 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -9232,30 +9232,28 @@ static void i845_update_cursor(struct intel_plane *plane, * whilst the cursor is disabled. */ I915_WRITE_FW(CURCNTR(PIPE_A), 0); - POSTING_READ_FW(CURCNTR(PIPE_A)); plane->cursor.cntl = 0; } - if (plane->cursor.base != base) { + if (plane->cursor.base != base) I915_WRITE_FW(CURBASE(PIPE_A), base); - plane->cursor.base = base; - } - if (plane->cursor.size != size) { + if (plane->cursor.size != size) I915_WRITE_FW(CURSIZE, size); - plane->cursor.size = size; - } if (cntl) I915_WRITE_FW(CURPOS(PIPE_A), pos); - if (plane->cursor.cntl != cntl) { + if (plane->cursor.cntl != cntl) I915_WRITE_FW(CURCNTR(PIPE_A), cntl); - POSTING_READ_FW(CURCNTR(PIPE_A)); - plane->cursor.cntl = cntl; - } + + POSTING_READ_FW(CURCNTR(PIPE_A)); spin_unlock_irqrestore(&dev_priv->uncore.lock, irqflags); + + plane->cursor.cntl = cntl; + plane->cursor.base = base; + plane->cursor.size = size; } static void i845_disable_cursor(struct intel_plane *plane, @@ -9318,21 +9316,21 @@ static void i9xx_update_cursor(struct intel_plane *plane, spin_lock_irqsave(&dev_priv->uncore.lock, irqflags); - if (plane->cursor.cntl != cntl) { + if (plane->cursor.cntl != cntl) I915_WRITE_FW(CURCNTR(pipe), cntl); - POSTING_READ_FW(CURCNTR(pipe)); - plane->cursor.cntl = cntl; - } if (cntl) I915_WRITE_FW(CURPOS(pipe), pos); - /* and commit changes on next vblank */ - I915_WRITE_FW(CURBASE(pipe), base); + if (plane->cursor.cntl != cntl || + plane->cursor.base != base) + I915_WRITE_FW(CURBASE(pipe), base); + POSTING_READ_FW(CURBASE(pipe)); spin_unlock_irqrestore(&dev_priv->uncore.lock, irqflags); + plane->cursor.cntl = cntl; plane->cursor.base = base; }