* [PATCH 1/7] drm/i915: Don't set cursor pipe select bits on g4x+ @ 2018-01-30 20:38 Ville Syrjala 2018-01-30 20:38 ` [PATCH 2/7] drm/i915: Set the primary plane pipe select bits on gen4 Ville Syrjala ` (9 more replies) 0 siblings, 10 replies; 20+ messages in thread From: Ville Syrjala @ 2018-01-30 20:38 UTC (permalink / raw) To: intel-gfx From: Ville Syrjälä <ville.syrjala@linux.intel.com> G4x cursor control registers still allow us to write to the pipe select bits even though cursors are supposed to be fixed to a specific pipe. Bspec tells us that we should only ever write 0 to these bits. Let's follow that recommendation. On ilk+ the bits become hardwired to 0. Also looks like ICL repurposes these bits for some other use, so we had better stop setting them to bogus values there. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> --- drivers/gpu/drm/i915/intel_display.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index af659d25943b..cccc1126f1d5 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -9532,7 +9532,8 @@ static u32 i9xx_cursor_ctl(const struct intel_crtc_state *crtc_state, if (HAS_DDI(dev_priv)) cntl |= CURSOR_PIPE_CSC_ENABLE; - cntl |= MCURSOR_PIPE_SELECT(crtc->pipe); + if (INTEL_GEN(dev_priv) < 5 && !IS_G4X(dev_priv)) + cntl |= MCURSOR_PIPE_SELECT(crtc->pipe); switch (plane_state->base.crtc_w) { case 64: -- 2.13.6 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 2/7] drm/i915: Set the primary plane pipe select bits on gen4 2018-01-30 20:38 [PATCH 1/7] drm/i915: Don't set cursor pipe select bits on g4x+ Ville Syrjala @ 2018-01-30 20:38 ` Ville Syrjala 2018-02-02 9:15 ` Mika Kahola 2018-01-30 20:38 ` [PATCH 3/7] drm/i915: Have plane->get_hw_state() return the current pipe Ville Syrjala ` (8 subsequent siblings) 9 siblings, 1 reply; 20+ messages in thread From: Ville Syrjala @ 2018-01-30 20:38 UTC (permalink / raw) To: intel-gfx From: Ville Syrjälä <ville.syrjala@linux.intel.com> i965 and g4x still have the pipe select bits in the plane control registers, they're just hardcoded to select a specific pipe. However plane C on i965 can still move between the pipes, thus we should program the pipe select bits on i965 if we want to expose plane C some day. Since there is no harm in programming the bits on any plane on i965/g4x let's just always set them. This will also make our pre-computed register value match what the hardware register would read, should we want to cross check the two. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> --- drivers/gpu/drm/i915/intel_display.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index cccc1126f1d5..6ffc1d088d7a 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -3163,7 +3163,7 @@ static u32 i9xx_plane_ctl(const struct intel_crtc_state *crtc_state, if (IS_HASWELL(dev_priv) || IS_BROADWELL(dev_priv)) dspcntr |= DISPPLANE_PIPE_CSC_ENABLE; - if (INTEL_GEN(dev_priv) < 4) + if (INTEL_GEN(dev_priv) < 5) dspcntr |= DISPPLANE_SEL_PIPE(crtc->pipe); switch (fb->format->format) { -- 2.13.6 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH 2/7] drm/i915: Set the primary plane pipe select bits on gen4 2018-01-30 20:38 ` [PATCH 2/7] drm/i915: Set the primary plane pipe select bits on gen4 Ville Syrjala @ 2018-02-02 9:15 ` Mika Kahola 0 siblings, 0 replies; 20+ messages in thread From: Mika Kahola @ 2018-02-02 9:15 UTC (permalink / raw) To: Ville Syrjala, intel-gfx On Tue, 2018-01-30 at 22:38 +0200, Ville Syrjala wrote: > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > i965 and g4x still have the pipe select bits in the plane control > registers, they're just hardcoded to select a specific pipe. However > plane C on i965 can still move between the pipes, thus we should > program the pipe select bits on i965 if we want to expose plane C > some day. > > Since there is no harm in programming the bits on any plane on > i965/g4x let's just always set them. This will also make our > pre-computed register value match what the hardware register > would read, should we want to cross check the two. > Reviewed-by: Mika Kahola <mika.kahola@intel.com> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > --- > drivers/gpu/drm/i915/intel_display.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/intel_display.c > b/drivers/gpu/drm/i915/intel_display.c > index cccc1126f1d5..6ffc1d088d7a 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -3163,7 +3163,7 @@ static u32 i9xx_plane_ctl(const struct > intel_crtc_state *crtc_state, > if (IS_HASWELL(dev_priv) || IS_BROADWELL(dev_priv)) > dspcntr |= DISPPLANE_PIPE_CSC_ENABLE; > > - if (INTEL_GEN(dev_priv) < 4) > + if (INTEL_GEN(dev_priv) < 5) > dspcntr |= DISPPLANE_SEL_PIPE(crtc->pipe); > > switch (fb->format->format) { -- Mika Kahola - Intel OTC _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH 3/7] drm/i915: Have plane->get_hw_state() return the current pipe 2018-01-30 20:38 [PATCH 1/7] drm/i915: Don't set cursor pipe select bits on g4x+ Ville Syrjala 2018-01-30 20:38 ` [PATCH 2/7] drm/i915: Set the primary plane pipe select bits on gen4 Ville Syrjala @ 2018-01-30 20:38 ` Ville Syrjala 2018-06-01 8:38 ` Mika Kahola 2018-01-30 20:38 ` [PATCH 4/7] drm/i915: Clean up cursor defines Ville Syrjala ` (7 subsequent siblings) 9 siblings, 1 reply; 20+ messages in thread From: Ville Syrjala @ 2018-01-30 20:38 UTC (permalink / raw) To: intel-gfx From: Ville Syrjälä <ville.syrjala@linux.intel.com> Like we do for encoder let's make the plane->get_hw_state() return the pipe to which the plane is currently attached. We don't currently allow planes to move between the pipes, but perhaps one day we will. In either case this makes the code more uniform and perhaps makes intel_plane_mapping_ok() slightly more clear. Note that for i965 and g4x planes A and B still have pipe select bits but they're hardwired to pipe A and B respectively. This means we can safely interpret those bits just like on gen2/3. This allows the same readout code work for plane C (which can still be assigned to eiter pipe on i965) should we ever expose it. g4x no longer allows moving the cursor planes between the pipes, but the pipe select bits can still be set in the register. Thus we have to ignore those bits. OTOH i965 still allows the cursors to move between pipes thus we have to trust the bits there. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> --- drivers/gpu/drm/i915/i915_reg.h | 2 + drivers/gpu/drm/i915/intel_display.c | 71 ++++++++++++++++++++++++++---------- drivers/gpu/drm/i915/intel_drv.h | 4 +- drivers/gpu/drm/i915/intel_sprite.c | 40 ++++++++++++-------- 4 files changed, 79 insertions(+), 38 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h index 64933fd74cb6..ebb41f279134 100644 --- a/drivers/gpu/drm/i915/i915_reg.h +++ b/drivers/gpu/drm/i915/i915_reg.h @@ -5908,6 +5908,8 @@ enum { #define CURSOR_MODE_128_ARGB_AX ((1 << 5) | CURSOR_MODE_128_32B_AX) #define CURSOR_MODE_256_ARGB_AX ((1 << 5) | CURSOR_MODE_256_32B_AX) #define CURSOR_MODE_64_ARGB_AX ((1 << 5) | CURSOR_MODE_64_32B_AX) +#define MCURSOR_PIPE_SELECT_MASK (0x3 << 28) +#define MCURSOR_PIPE_SELECT_SHIFT 28 #define MCURSOR_PIPE_SELECT(pipe) ((pipe) << 28) #define MCURSOR_GAMMA_ENABLE (1 << 26) #define CURSOR_ROTATE_180 (1<<15) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 6ffc1d088d7a..feae6bd51a44 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -1224,7 +1224,10 @@ void assert_pipe(struct drm_i915_private *dev_priv, static void assert_plane(struct intel_plane *plane, bool state) { - bool cur_state = plane->get_hw_state(plane); + enum pipe pipe; + bool cur_state; + + cur_state = plane->get_hw_state(plane, &pipe); I915_STATE_WARN(cur_state != state, "%s assertion failure (expected %s, current %s)\n", @@ -3326,24 +3329,33 @@ static void i9xx_disable_plane(struct intel_plane *plane, spin_unlock_irqrestore(&dev_priv->uncore.lock, irqflags); } -static bool i9xx_plane_get_hw_state(struct intel_plane *plane) +static bool i9xx_plane_get_hw_state(struct intel_plane *plane, + enum pipe *pipe) { struct drm_i915_private *dev_priv = to_i915(plane->base.dev); enum intel_display_power_domain power_domain; enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; - enum pipe pipe = plane->pipe; bool ret; + u32 val; /* * Not 100% correct for planes that can move between pipes, * but that's only the case for gen2-4 which don't have any * display power wells. */ - power_domain = POWER_DOMAIN_PIPE(pipe); + power_domain = POWER_DOMAIN_PIPE(plane->pipe); if (!intel_display_power_get_if_enabled(dev_priv, power_domain)) return false; - ret = I915_READ(DSPCNTR(i9xx_plane)) & DISPLAY_PLANE_ENABLE; + val = I915_READ(DSPCNTR(i9xx_plane)); + + ret = val & DISPLAY_PLANE_ENABLE; + + if (INTEL_GEN(dev_priv) >= 5) + *pipe = plane->pipe; + else + *pipe = (val & DISPPLANE_SEL_PIPE_MASK) >> + DISPPLANE_SEL_PIPE_SHIFT; intel_display_power_put(dev_priv, power_domain); @@ -7482,16 +7494,18 @@ i9xx_get_initial_plane_config(struct intel_crtc *crtc, struct drm_i915_private *dev_priv = to_i915(dev); struct intel_plane *plane = to_intel_plane(crtc->base.primary); enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; - enum pipe pipe = crtc->pipe; + enum pipe pipe; u32 val, base, offset; int fourcc, pixel_format; unsigned int aligned_height; struct drm_framebuffer *fb; struct intel_framebuffer *intel_fb; - if (!plane->get_hw_state(plane)) + if (!plane->get_hw_state(plane, &pipe)) return; + WARN_ON(pipe != crtc->pipe); + intel_fb = kzalloc(sizeof(*intel_fb), GFP_KERNEL); if (!intel_fb) { DRM_DEBUG_KMS("failed to alloc fb\n"); @@ -8512,16 +8526,18 @@ skylake_get_initial_plane_config(struct intel_crtc *crtc, struct drm_i915_private *dev_priv = to_i915(dev); struct intel_plane *plane = to_intel_plane(crtc->base.primary); enum plane_id plane_id = plane->id; - enum pipe pipe = crtc->pipe; + enum pipe pipe; u32 val, base, offset, stride_mult, tiling, alpha; int fourcc, pixel_format; unsigned int aligned_height; struct drm_framebuffer *fb; struct intel_framebuffer *intel_fb; - if (!plane->get_hw_state(plane)) + if (!plane->get_hw_state(plane, &pipe)) return; + WARN_ON(pipe != crtc->pipe); + intel_fb = kzalloc(sizeof(*intel_fb), GFP_KERNEL); if (!intel_fb) { DRM_DEBUG_KMS("failed to alloc fb\n"); @@ -9502,7 +9518,8 @@ static void i845_disable_cursor(struct intel_plane *plane, i845_update_cursor(plane, NULL, NULL); } -static bool i845_cursor_get_hw_state(struct intel_plane *plane) +static bool i845_cursor_get_hw_state(struct intel_plane *plane, + enum pipe *pipe) { struct drm_i915_private *dev_priv = to_i915(plane->base.dev); enum intel_display_power_domain power_domain; @@ -9514,6 +9531,8 @@ static bool i845_cursor_get_hw_state(struct intel_plane *plane) ret = I915_READ(CURCNTR(PIPE_A)) & CURSOR_ENABLE; + *pipe = PIPE_A; + intel_display_power_put(dev_priv, power_domain); return ret; @@ -9713,23 +9732,32 @@ static void i9xx_disable_cursor(struct intel_plane *plane, i9xx_update_cursor(plane, NULL, NULL); } -static bool i9xx_cursor_get_hw_state(struct intel_plane *plane) +static bool i9xx_cursor_get_hw_state(struct intel_plane *plane, + enum pipe *pipe) { struct drm_i915_private *dev_priv = to_i915(plane->base.dev); enum intel_display_power_domain power_domain; - enum pipe pipe = plane->pipe; bool ret; + u32 val; /* * Not 100% correct for planes that can move between pipes, * but that's only the case for gen2-3 which don't have any * display power wells. */ - power_domain = POWER_DOMAIN_PIPE(pipe); + power_domain = POWER_DOMAIN_PIPE(plane->pipe); if (!intel_display_power_get_if_enabled(dev_priv, power_domain)) return false; - ret = I915_READ(CURCNTR(pipe)) & CURSOR_MODE; + val = I915_READ(CURCNTR(plane->pipe)); + + ret = val & CURSOR_MODE; + + if (INTEL_GEN(dev_priv) >= 5 || IS_G4X(dev_priv)) + *pipe = plane->pipe; + else + *pipe = (val & MCURSOR_PIPE_SELECT_MASK) >> + MCURSOR_PIPE_SELECT_SHIFT; intel_display_power_put(dev_priv, power_domain); @@ -14755,12 +14783,12 @@ void i830_disable_pipe(struct drm_i915_private *dev_priv, enum pipe pipe) static bool intel_plane_mapping_ok(struct intel_crtc *crtc, struct intel_plane *plane) { - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); - enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; - u32 val = I915_READ(DSPCNTR(i9xx_plane)); + enum pipe pipe; - return (val & DISPLAY_PLANE_ENABLE) == 0 || - (val & DISPPLANE_SEL_PIPE_MASK) == DISPPLANE_SEL_PIPE(crtc->pipe); + if (!plane->get_hw_state(plane, &pipe)) + return true; + + return pipe == crtc->pipe; } static void @@ -14959,7 +14987,10 @@ static void readout_plane_state(struct intel_crtc *crtc) for_each_intel_plane_on_crtc(&dev_priv->drm, crtc, plane) { struct intel_plane_state *plane_state = to_intel_plane_state(plane->base.state); - bool visible = plane->get_hw_state(plane); + enum pipe pipe; + bool visible; + + visible = plane->get_hw_state(plane, &pipe); intel_set_plane_visible(crtc_state, plane_state, visible); } diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index 8335d27f4156..d80eae7a69ba 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h @@ -946,7 +946,7 @@ struct intel_plane { const struct intel_plane_state *plane_state); void (*disable_plane)(struct intel_plane *plane, struct intel_crtc *crtc); - bool (*get_hw_state)(struct intel_plane *plane); + bool (*get_hw_state)(struct intel_plane *plane, enum pipe *pipe); int (*check_plane)(struct intel_plane *plane, struct intel_crtc_state *crtc_state, struct intel_plane_state *state); @@ -2023,7 +2023,7 @@ void skl_update_plane(struct intel_plane *plane, const struct intel_crtc_state *crtc_state, const struct intel_plane_state *plane_state); void skl_disable_plane(struct intel_plane *plane, struct intel_crtc *crtc); -bool skl_plane_get_hw_state(struct intel_plane *plane); +bool skl_plane_get_hw_state(struct intel_plane *plane, enum pipe *pipe); bool skl_plane_has_ccs(struct drm_i915_private *dev_priv, enum pipe pipe, enum plane_id plane_id); diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c index aea21a9abf6c..86a31535fce3 100644 --- a/drivers/gpu/drm/i915/intel_sprite.c +++ b/drivers/gpu/drm/i915/intel_sprite.c @@ -326,19 +326,21 @@ skl_disable_plane(struct intel_plane *plane, struct intel_crtc *crtc) } bool -skl_plane_get_hw_state(struct intel_plane *plane) +skl_plane_get_hw_state(struct intel_plane *plane, + enum pipe *pipe) { struct drm_i915_private *dev_priv = to_i915(plane->base.dev); enum intel_display_power_domain power_domain; enum plane_id plane_id = plane->id; - enum pipe pipe = plane->pipe; bool ret; - power_domain = POWER_DOMAIN_PIPE(pipe); + power_domain = POWER_DOMAIN_PIPE(plane->pipe); if (!intel_display_power_get_if_enabled(dev_priv, power_domain)) return false; - ret = I915_READ(PLANE_CTL(pipe, plane_id)) & PLANE_CTL_ENABLE; + ret = I915_READ(PLANE_CTL(plane->pipe, plane_id)) & PLANE_CTL_ENABLE; + + *pipe = plane->pipe; intel_display_power_put(dev_priv, power_domain); @@ -523,19 +525,21 @@ vlv_disable_plane(struct intel_plane *plane, struct intel_crtc *crtc) } static bool -vlv_plane_get_hw_state(struct intel_plane *plane) +vlv_plane_get_hw_state(struct intel_plane *plane, + enum pipe *pipe) { struct drm_i915_private *dev_priv = to_i915(plane->base.dev); enum intel_display_power_domain power_domain; enum plane_id plane_id = plane->id; - enum pipe pipe = plane->pipe; bool ret; - power_domain = POWER_DOMAIN_PIPE(pipe); + power_domain = POWER_DOMAIN_PIPE(plane->pipe); if (!intel_display_power_get_if_enabled(dev_priv, power_domain)) return false; - ret = I915_READ(SPCNTR(pipe, plane_id)) & SP_ENABLE; + ret = I915_READ(SPCNTR(plane->pipe, plane_id)) & SP_ENABLE; + + *pipe = plane->pipe; intel_display_power_put(dev_priv, power_domain); @@ -683,18 +687,20 @@ ivb_disable_plane(struct intel_plane *plane, struct intel_crtc *crtc) } static bool -ivb_plane_get_hw_state(struct intel_plane *plane) +ivb_plane_get_hw_state(struct intel_plane *plane, + enum pipe *pipe) { struct drm_i915_private *dev_priv = to_i915(plane->base.dev); enum intel_display_power_domain power_domain; - enum pipe pipe = plane->pipe; bool ret; - power_domain = POWER_DOMAIN_PIPE(pipe); + power_domain = POWER_DOMAIN_PIPE(plane->pipe); if (!intel_display_power_get_if_enabled(dev_priv, power_domain)) return false; - ret = I915_READ(SPRCTL(pipe)) & SPRITE_ENABLE; + ret = I915_READ(SPRCTL(plane->pipe)) & SPRITE_ENABLE; + + *pipe = plane->pipe; intel_display_power_put(dev_priv, power_domain); @@ -833,18 +839,20 @@ g4x_disable_plane(struct intel_plane *plane, struct intel_crtc *crtc) } static bool -g4x_plane_get_hw_state(struct intel_plane *plane) +g4x_plane_get_hw_state(struct intel_plane *plane, + enum pipe *pipe) { struct drm_i915_private *dev_priv = to_i915(plane->base.dev); enum intel_display_power_domain power_domain; - enum pipe pipe = plane->pipe; bool ret; - power_domain = POWER_DOMAIN_PIPE(pipe); + power_domain = POWER_DOMAIN_PIPE(plane->pipe); if (!intel_display_power_get_if_enabled(dev_priv, power_domain)) return false; - ret = I915_READ(DVSCNTR(pipe)) & DVS_ENABLE; + ret = I915_READ(DVSCNTR(plane->pipe)) & DVS_ENABLE; + + *pipe = plane->pipe; intel_display_power_put(dev_priv, power_domain); -- 2.13.6 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH 3/7] drm/i915: Have plane->get_hw_state() return the current pipe 2018-01-30 20:38 ` [PATCH 3/7] drm/i915: Have plane->get_hw_state() return the current pipe Ville Syrjala @ 2018-06-01 8:38 ` Mika Kahola 0 siblings, 0 replies; 20+ messages in thread From: Mika Kahola @ 2018-06-01 8:38 UTC (permalink / raw) To: Ville Syrjala, intel-gfx On Tue, 2018-01-30 at 22:38 +0200, Ville Syrjala wrote: > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Like we do for encoder let's make the plane->get_hw_state() return > the pipe to which the plane is currently attached. We don't currently > allow planes to move between the pipes, but perhaps one day we will. > > In either case this makes the code more uniform and perhaps makes > intel_plane_mapping_ok() slightly more clear. > > Note that for i965 and g4x planes A and B still have pipe select bits > but they're hardwired to pipe A and B respectively. This means we can > safely interpret those bits just like on gen2/3. This allows the > same readout code work for plane C (which can still be assigned > to eiter pipe on i965) should we ever expose it. > > g4x no longer allows moving the cursor planes between the pipes, > but the pipe select bits can still be set in the register. Thus > we have to ignore those bits. OTOH i965 still allows the cursors > to move between pipes thus we have to trust the bits there. > Reviewed-by: Mika Kahola <mika.kahola@intel.com> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > --- > drivers/gpu/drm/i915/i915_reg.h | 2 + > drivers/gpu/drm/i915/intel_display.c | 71 > ++++++++++++++++++++++++++---------- > drivers/gpu/drm/i915/intel_drv.h | 4 +- > drivers/gpu/drm/i915/intel_sprite.c | 40 ++++++++++++-------- > 4 files changed, 79 insertions(+), 38 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_reg.h > b/drivers/gpu/drm/i915/i915_reg.h > index 64933fd74cb6..ebb41f279134 100644 > --- a/drivers/gpu/drm/i915/i915_reg.h > +++ b/drivers/gpu/drm/i915/i915_reg.h > @@ -5908,6 +5908,8 @@ enum { > #define CURSOR_MODE_128_ARGB_AX ((1 << 5) | > CURSOR_MODE_128_32B_AX) > #define CURSOR_MODE_256_ARGB_AX ((1 << 5) | > CURSOR_MODE_256_32B_AX) > #define CURSOR_MODE_64_ARGB_AX ((1 << 5) | CURSOR_MODE_64_32B_AX) > +#define MCURSOR_PIPE_SELECT_MASK (0x3 << 28) > +#define MCURSOR_PIPE_SELECT_SHIFT 28 > #define MCURSOR_PIPE_SELECT(pipe) ((pipe) << 28) > #define MCURSOR_GAMMA_ENABLE (1 << 26) > #define CURSOR_ROTATE_180 (1<<15) > diff --git a/drivers/gpu/drm/i915/intel_display.c > b/drivers/gpu/drm/i915/intel_display.c > index 6ffc1d088d7a..feae6bd51a44 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -1224,7 +1224,10 @@ void assert_pipe(struct drm_i915_private > *dev_priv, > > static void assert_plane(struct intel_plane *plane, bool state) > { > - bool cur_state = plane->get_hw_state(plane); > + enum pipe pipe; > + bool cur_state; > + > + cur_state = plane->get_hw_state(plane, &pipe); > > I915_STATE_WARN(cur_state != state, > "%s assertion failure (expected %s, current > %s)\n", > @@ -3326,24 +3329,33 @@ static void i9xx_disable_plane(struct > intel_plane *plane, > spin_unlock_irqrestore(&dev_priv->uncore.lock, irqflags); > } > > -static bool i9xx_plane_get_hw_state(struct intel_plane *plane) > +static bool i9xx_plane_get_hw_state(struct intel_plane *plane, > + enum pipe *pipe) > { > struct drm_i915_private *dev_priv = to_i915(plane- > >base.dev); > enum intel_display_power_domain power_domain; > enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; > - enum pipe pipe = plane->pipe; > bool ret; > + u32 val; > > /* > * Not 100% correct for planes that can move between pipes, > * but that's only the case for gen2-4 which don't have any > * display power wells. > */ > - power_domain = POWER_DOMAIN_PIPE(pipe); > + power_domain = POWER_DOMAIN_PIPE(plane->pipe); > if (!intel_display_power_get_if_enabled(dev_priv, > power_domain)) > return false; > > - ret = I915_READ(DSPCNTR(i9xx_plane)) & DISPLAY_PLANE_ENABLE; > + val = I915_READ(DSPCNTR(i9xx_plane)); > + > + ret = val & DISPLAY_PLANE_ENABLE; > + > + if (INTEL_GEN(dev_priv) >= 5) > + *pipe = plane->pipe; > + else > + *pipe = (val & DISPPLANE_SEL_PIPE_MASK) >> > + DISPPLANE_SEL_PIPE_SHIFT; > > intel_display_power_put(dev_priv, power_domain); > > @@ -7482,16 +7494,18 @@ i9xx_get_initial_plane_config(struct > intel_crtc *crtc, > struct drm_i915_private *dev_priv = to_i915(dev); > struct intel_plane *plane = to_intel_plane(crtc- > >base.primary); > enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; > - enum pipe pipe = crtc->pipe; > + enum pipe pipe; > u32 val, base, offset; > int fourcc, pixel_format; > unsigned int aligned_height; > struct drm_framebuffer *fb; > struct intel_framebuffer *intel_fb; > > - if (!plane->get_hw_state(plane)) > + if (!plane->get_hw_state(plane, &pipe)) > return; > > + WARN_ON(pipe != crtc->pipe); > + > intel_fb = kzalloc(sizeof(*intel_fb), GFP_KERNEL); > if (!intel_fb) { > DRM_DEBUG_KMS("failed to alloc fb\n"); > @@ -8512,16 +8526,18 @@ skylake_get_initial_plane_config(struct > intel_crtc *crtc, > struct drm_i915_private *dev_priv = to_i915(dev); > struct intel_plane *plane = to_intel_plane(crtc- > >base.primary); > enum plane_id plane_id = plane->id; > - enum pipe pipe = crtc->pipe; > + enum pipe pipe; > u32 val, base, offset, stride_mult, tiling, alpha; > int fourcc, pixel_format; > unsigned int aligned_height; > struct drm_framebuffer *fb; > struct intel_framebuffer *intel_fb; > > - if (!plane->get_hw_state(plane)) > + if (!plane->get_hw_state(plane, &pipe)) > return; > > + WARN_ON(pipe != crtc->pipe); > + > intel_fb = kzalloc(sizeof(*intel_fb), GFP_KERNEL); > if (!intel_fb) { > DRM_DEBUG_KMS("failed to alloc fb\n"); > @@ -9502,7 +9518,8 @@ static void i845_disable_cursor(struct > intel_plane *plane, > i845_update_cursor(plane, NULL, NULL); > } > > -static bool i845_cursor_get_hw_state(struct intel_plane *plane) > +static bool i845_cursor_get_hw_state(struct intel_plane *plane, > + enum pipe *pipe) > { > struct drm_i915_private *dev_priv = to_i915(plane- > >base.dev); > enum intel_display_power_domain power_domain; > @@ -9514,6 +9531,8 @@ static bool i845_cursor_get_hw_state(struct > intel_plane *plane) > > ret = I915_READ(CURCNTR(PIPE_A)) & CURSOR_ENABLE; > > + *pipe = PIPE_A; > + > intel_display_power_put(dev_priv, power_domain); > > return ret; > @@ -9713,23 +9732,32 @@ static void i9xx_disable_cursor(struct > intel_plane *plane, > i9xx_update_cursor(plane, NULL, NULL); > } > > -static bool i9xx_cursor_get_hw_state(struct intel_plane *plane) > +static bool i9xx_cursor_get_hw_state(struct intel_plane *plane, > + enum pipe *pipe) > { > struct drm_i915_private *dev_priv = to_i915(plane- > >base.dev); > enum intel_display_power_domain power_domain; > - enum pipe pipe = plane->pipe; > bool ret; > + u32 val; > > /* > * Not 100% correct for planes that can move between pipes, > * but that's only the case for gen2-3 which don't have any > * display power wells. > */ > - power_domain = POWER_DOMAIN_PIPE(pipe); > + power_domain = POWER_DOMAIN_PIPE(plane->pipe); > if (!intel_display_power_get_if_enabled(dev_priv, > power_domain)) > return false; > > - ret = I915_READ(CURCNTR(pipe)) & CURSOR_MODE; > + val = I915_READ(CURCNTR(plane->pipe)); > + > + ret = val & CURSOR_MODE; > + > + if (INTEL_GEN(dev_priv) >= 5 || IS_G4X(dev_priv)) > + *pipe = plane->pipe; > + else > + *pipe = (val & MCURSOR_PIPE_SELECT_MASK) >> > + MCURSOR_PIPE_SELECT_SHIFT; > > intel_display_power_put(dev_priv, power_domain); > > @@ -14755,12 +14783,12 @@ void i830_disable_pipe(struct > drm_i915_private *dev_priv, enum pipe pipe) > static bool intel_plane_mapping_ok(struct intel_crtc *crtc, > struct intel_plane *plane) > { > - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); > - enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; > - u32 val = I915_READ(DSPCNTR(i9xx_plane)); > + enum pipe pipe; > > - return (val & DISPLAY_PLANE_ENABLE) == 0 || > - (val & DISPPLANE_SEL_PIPE_MASK) == > DISPPLANE_SEL_PIPE(crtc->pipe); > + if (!plane->get_hw_state(plane, &pipe)) > + return true; > + > + return pipe == crtc->pipe; > } > > static void > @@ -14959,7 +14987,10 @@ static void readout_plane_state(struct > intel_crtc *crtc) > for_each_intel_plane_on_crtc(&dev_priv->drm, crtc, plane) { > struct intel_plane_state *plane_state = > to_intel_plane_state(plane->base.state); > - bool visible = plane->get_hw_state(plane); > + enum pipe pipe; > + bool visible; > + > + visible = plane->get_hw_state(plane, &pipe); > > intel_set_plane_visible(crtc_state, plane_state, > visible); > } > diff --git a/drivers/gpu/drm/i915/intel_drv.h > b/drivers/gpu/drm/i915/intel_drv.h > index 8335d27f4156..d80eae7a69ba 100644 > --- a/drivers/gpu/drm/i915/intel_drv.h > +++ b/drivers/gpu/drm/i915/intel_drv.h > @@ -946,7 +946,7 @@ struct intel_plane { > const struct intel_plane_state > *plane_state); > void (*disable_plane)(struct intel_plane *plane, > struct intel_crtc *crtc); > - bool (*get_hw_state)(struct intel_plane *plane); > + bool (*get_hw_state)(struct intel_plane *plane, enum pipe > *pipe); > int (*check_plane)(struct intel_plane *plane, > struct intel_crtc_state *crtc_state, > struct intel_plane_state *state); > @@ -2023,7 +2023,7 @@ void skl_update_plane(struct intel_plane > *plane, > const struct intel_crtc_state *crtc_state, > const struct intel_plane_state *plane_state); > void skl_disable_plane(struct intel_plane *plane, struct intel_crtc > *crtc); > -bool skl_plane_get_hw_state(struct intel_plane *plane); > +bool skl_plane_get_hw_state(struct intel_plane *plane, enum pipe > *pipe); > bool skl_plane_has_ccs(struct drm_i915_private *dev_priv, > enum pipe pipe, enum plane_id plane_id); > > diff --git a/drivers/gpu/drm/i915/intel_sprite.c > b/drivers/gpu/drm/i915/intel_sprite.c > index aea21a9abf6c..86a31535fce3 100644 > --- a/drivers/gpu/drm/i915/intel_sprite.c > +++ b/drivers/gpu/drm/i915/intel_sprite.c > @@ -326,19 +326,21 @@ skl_disable_plane(struct intel_plane *plane, > struct intel_crtc *crtc) > } > > bool > -skl_plane_get_hw_state(struct intel_plane *plane) > +skl_plane_get_hw_state(struct intel_plane *plane, > + enum pipe *pipe) > { > struct drm_i915_private *dev_priv = to_i915(plane- > >base.dev); > enum intel_display_power_domain power_domain; > enum plane_id plane_id = plane->id; > - enum pipe pipe = plane->pipe; > bool ret; > > - power_domain = POWER_DOMAIN_PIPE(pipe); > + power_domain = POWER_DOMAIN_PIPE(plane->pipe); > if (!intel_display_power_get_if_enabled(dev_priv, > power_domain)) > return false; > > - ret = I915_READ(PLANE_CTL(pipe, plane_id)) & > PLANE_CTL_ENABLE; > + ret = I915_READ(PLANE_CTL(plane->pipe, plane_id)) & > PLANE_CTL_ENABLE; > + > + *pipe = plane->pipe; > > intel_display_power_put(dev_priv, power_domain); > > @@ -523,19 +525,21 @@ vlv_disable_plane(struct intel_plane *plane, > struct intel_crtc *crtc) > } > > static bool > -vlv_plane_get_hw_state(struct intel_plane *plane) > +vlv_plane_get_hw_state(struct intel_plane *plane, > + enum pipe *pipe) > { > struct drm_i915_private *dev_priv = to_i915(plane- > >base.dev); > enum intel_display_power_domain power_domain; > enum plane_id plane_id = plane->id; > - enum pipe pipe = plane->pipe; > bool ret; > > - power_domain = POWER_DOMAIN_PIPE(pipe); > + power_domain = POWER_DOMAIN_PIPE(plane->pipe); > if (!intel_display_power_get_if_enabled(dev_priv, > power_domain)) > return false; > > - ret = I915_READ(SPCNTR(pipe, plane_id)) & SP_ENABLE; > + ret = I915_READ(SPCNTR(plane->pipe, plane_id)) & SP_ENABLE; > + > + *pipe = plane->pipe; > > intel_display_power_put(dev_priv, power_domain); > > @@ -683,18 +687,20 @@ ivb_disable_plane(struct intel_plane *plane, > struct intel_crtc *crtc) > } > > static bool > -ivb_plane_get_hw_state(struct intel_plane *plane) > +ivb_plane_get_hw_state(struct intel_plane *plane, > + enum pipe *pipe) > { > struct drm_i915_private *dev_priv = to_i915(plane- > >base.dev); > enum intel_display_power_domain power_domain; > - enum pipe pipe = plane->pipe; > bool ret; > > - power_domain = POWER_DOMAIN_PIPE(pipe); > + power_domain = POWER_DOMAIN_PIPE(plane->pipe); > if (!intel_display_power_get_if_enabled(dev_priv, > power_domain)) > return false; > > - ret = I915_READ(SPRCTL(pipe)) & SPRITE_ENABLE; > + ret = I915_READ(SPRCTL(plane->pipe)) & SPRITE_ENABLE; > + > + *pipe = plane->pipe; > > intel_display_power_put(dev_priv, power_domain); > > @@ -833,18 +839,20 @@ g4x_disable_plane(struct intel_plane *plane, > struct intel_crtc *crtc) > } > > static bool > -g4x_plane_get_hw_state(struct intel_plane *plane) > +g4x_plane_get_hw_state(struct intel_plane *plane, > + enum pipe *pipe) > { > struct drm_i915_private *dev_priv = to_i915(plane- > >base.dev); > enum intel_display_power_domain power_domain; > - enum pipe pipe = plane->pipe; > bool ret; > > - power_domain = POWER_DOMAIN_PIPE(pipe); > + power_domain = POWER_DOMAIN_PIPE(plane->pipe); > if (!intel_display_power_get_if_enabled(dev_priv, > power_domain)) > return false; > > - ret = I915_READ(DVSCNTR(pipe)) & DVS_ENABLE; > + ret = I915_READ(DVSCNTR(plane->pipe)) & DVS_ENABLE; > + > + *pipe = plane->pipe; > > intel_display_power_put(dev_priv, power_domain); > -- Mika Kahola - Intel OTC _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH 4/7] drm/i915: Clean up cursor defines 2018-01-30 20:38 [PATCH 1/7] drm/i915: Don't set cursor pipe select bits on g4x+ Ville Syrjala 2018-01-30 20:38 ` [PATCH 2/7] drm/i915: Set the primary plane pipe select bits on gen4 Ville Syrjala 2018-01-30 20:38 ` [PATCH 3/7] drm/i915: Have plane->get_hw_state() return the current pipe Ville Syrjala @ 2018-01-30 20:38 ` Ville Syrjala 2018-01-31 14:37 ` [PATCH v2 " Ville Syrjala 2018-01-30 20:38 ` [PATCH 5/7] drm/i915: Disable trickle feed for SNB/IVB cursors Ville Syrjala ` (6 subsequent siblings) 9 siblings, 1 reply; 20+ messages in thread From: Ville Syrjala @ 2018-01-30 20:38 UTC (permalink / raw) To: intel-gfx From: Ville Syrjälä <ville.syrjala@linux.intel.com> Use MCURSOR_ instead of CURSOR_ as the prefix for the non-845/865 cursor defines consistently, and move the pipe CSC enable bit next to the other non-845/865 cursor defines. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> --- drivers/gpu/drm/i915/i915_reg.h | 22 +++++++++++----------- drivers/gpu/drm/i915/intel_display.c | 16 ++++++++-------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h index ebb41f279134..dbcb4de92a63 100644 --- a/drivers/gpu/drm/i915/i915_reg.h +++ b/drivers/gpu/drm/i915/i915_reg.h @@ -5891,7 +5891,6 @@ enum { #define CURSOR_GAMMA_ENABLE 0x40000000 #define CURSOR_STRIDE_SHIFT 28 #define CURSOR_STRIDE(x) ((ffs(x)-9) << CURSOR_STRIDE_SHIFT) /* 256,512,1k,2k */ -#define CURSOR_PIPE_CSC_ENABLE (1<<24) #define CURSOR_FORMAT_SHIFT 24 #define CURSOR_FORMAT_MASK (0x07 << CURSOR_FORMAT_SHIFT) #define CURSOR_FORMAT_2C (0x00 << CURSOR_FORMAT_SHIFT) @@ -5900,20 +5899,21 @@ enum { #define CURSOR_FORMAT_ARGB (0x04 << CURSOR_FORMAT_SHIFT) #define CURSOR_FORMAT_XRGB (0x05 << CURSOR_FORMAT_SHIFT) /* New style CUR*CNTR flags */ -#define CURSOR_MODE 0x27 -#define CURSOR_MODE_DISABLE 0x00 -#define CURSOR_MODE_128_32B_AX 0x02 -#define CURSOR_MODE_256_32B_AX 0x03 -#define CURSOR_MODE_64_32B_AX 0x07 -#define CURSOR_MODE_128_ARGB_AX ((1 << 5) | CURSOR_MODE_128_32B_AX) -#define CURSOR_MODE_256_ARGB_AX ((1 << 5) | CURSOR_MODE_256_32B_AX) -#define CURSOR_MODE_64_ARGB_AX ((1 << 5) | CURSOR_MODE_64_32B_AX) +#define MCURSOR_MODE 0x27 +#define MCURSOR_MODE_DISABLE 0x00 +#define MCURSOR_MODE_128_32B_AX 0x02 +#define MCURSOR_MODE_256_32B_AX 0x03 +#define MCURSOR_MODE_64_32B_AX 0x07 +#define MCURSOR_MODE_128_ARGB_AX ((1 << 5) | MCURSOR_MODE_128_32B_AX) +#define MCURSOR_MODE_256_ARGB_AX ((1 << 5) | MCURSOR_MODE_256_32B_AX) +#define MCURSOR_MODE_64_ARGB_AX ((1 << 5) | MCURSOR_MODE_64_32B_AX) #define MCURSOR_PIPE_SELECT_MASK (0x3 << 28) #define MCURSOR_PIPE_SELECT_SHIFT 28 #define MCURSOR_PIPE_SELECT(pipe) ((pipe) << 28) #define MCURSOR_GAMMA_ENABLE (1 << 26) -#define CURSOR_ROTATE_180 (1<<15) -#define CURSOR_TRICKLE_FEED_DISABLE (1 << 14) +#define MCURSOR_PIPE_CSC_ENABLE (1<<24) +#define MCURSOR_ROTATE_180 (1<<15) +#define MCURSOR_TRICKLE_FEED_DISABLE (1 << 14) #define _CURABASE 0x70084 #define _CURAPOS 0x70088 #define CURSOR_POS_MASK 0x007FF diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index feae6bd51a44..0cf02f226fd4 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -9549,20 +9549,20 @@ static u32 i9xx_cursor_ctl(const struct intel_crtc_state *crtc_state, cntl = MCURSOR_GAMMA_ENABLE; if (HAS_DDI(dev_priv)) - cntl |= CURSOR_PIPE_CSC_ENABLE; + cntl |= MCURSOR_PIPE_CSC_ENABLE; if (INTEL_GEN(dev_priv) < 5 && !IS_G4X(dev_priv)) cntl |= MCURSOR_PIPE_SELECT(crtc->pipe); switch (plane_state->base.crtc_w) { case 64: - cntl |= CURSOR_MODE_64_ARGB_AX; + cntl |= MCURSOR_MODE_64_ARGB_AX; break; case 128: - cntl |= CURSOR_MODE_128_ARGB_AX; + cntl |= MCURSOR_MODE_128_ARGB_AX; break; case 256: - cntl |= CURSOR_MODE_256_ARGB_AX; + cntl |= MCURSOR_MODE_256_ARGB_AX; break; default: MISSING_CASE(plane_state->base.crtc_w); @@ -9570,7 +9570,7 @@ static u32 i9xx_cursor_ctl(const struct intel_crtc_state *crtc_state, } if (plane_state->base.rotation & DRM_MODE_ROTATE_180) - cntl |= CURSOR_ROTATE_180; + cntl |= MCURSOR_ROTATE_180; return cntl; } @@ -9751,7 +9751,7 @@ static bool i9xx_cursor_get_hw_state(struct intel_plane *plane, val = I915_READ(CURCNTR(plane->pipe)); - ret = val & CURSOR_MODE; + ret = val & MCURSOR_MODE; if (INTEL_GEN(dev_priv) >= 5 || IS_G4X(dev_priv)) *pipe = plane->pipe; @@ -14768,8 +14768,8 @@ void i830_disable_pipe(struct drm_i915_private *dev_priv, enum pipe pipe) WARN_ON(I915_READ(DSPCNTR(PLANE_A)) & DISPLAY_PLANE_ENABLE); WARN_ON(I915_READ(DSPCNTR(PLANE_B)) & DISPLAY_PLANE_ENABLE); WARN_ON(I915_READ(DSPCNTR(PLANE_C)) & DISPLAY_PLANE_ENABLE); - WARN_ON(I915_READ(CURCNTR(PIPE_A)) & CURSOR_MODE); - WARN_ON(I915_READ(CURCNTR(PIPE_B)) & CURSOR_MODE); + WARN_ON(I915_READ(CURCNTR(PIPE_A)) & MCURSOR_MODE); + WARN_ON(I915_READ(CURCNTR(PIPE_B)) & MCURSOR_MODE); I915_WRITE(PIPECONF(pipe), 0); POSTING_READ(PIPECONF(pipe)); -- 2.13.6 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v2 4/7] drm/i915: Clean up cursor defines 2018-01-30 20:38 ` [PATCH 4/7] drm/i915: Clean up cursor defines Ville Syrjala @ 2018-01-31 14:37 ` Ville Syrjala 2018-06-01 8:42 ` Mika Kahola 0 siblings, 1 reply; 20+ messages in thread From: Ville Syrjala @ 2018-01-31 14:37 UTC (permalink / raw) To: intel-gfx From: Ville Syrjälä <ville.syrjala@linux.intel.com> Use MCURSOR_ instead of CURSOR_ as the prefix for the non-845/865 cursor defines consistently, and move the pipe CSC enable bit next to the other non-845/865 cursor defines. v2: Take care of gvt uses as well Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> --- drivers/gpu/drm/i915/gvt/fb_decoder.c | 12 ++++++------ drivers/gpu/drm/i915/i915_reg.h | 22 +++++++++++----------- drivers/gpu/drm/i915/intel_display.c | 16 ++++++++-------- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/drivers/gpu/drm/i915/gvt/fb_decoder.c b/drivers/gpu/drm/i915/gvt/fb_decoder.c index 6b50fe78dc1b..73c0c2096a62 100644 --- a/drivers/gpu/drm/i915/gvt/fb_decoder.c +++ b/drivers/gpu/drm/i915/gvt/fb_decoder.c @@ -303,16 +303,16 @@ static int cursor_mode_to_drm(int mode) int cursor_pixel_formats_index = 4; switch (mode) { - case CURSOR_MODE_128_ARGB_AX: + case MCURSOR_MODE_128_ARGB_AX: cursor_pixel_formats_index = 0; break; - case CURSOR_MODE_256_ARGB_AX: + case MCURSOR_MODE_256_ARGB_AX: cursor_pixel_formats_index = 1; break; - case CURSOR_MODE_64_ARGB_AX: + case MCURSOR_MODE_64_ARGB_AX: cursor_pixel_formats_index = 2; break; - case CURSOR_MODE_64_32B_AX: + case MCURSOR_MODE_64_32B_AX: cursor_pixel_formats_index = 3; break; @@ -345,8 +345,8 @@ int intel_vgpu_decode_cursor_plane(struct intel_vgpu *vgpu, return -ENODEV; val = vgpu_vreg_t(vgpu, CURCNTR(pipe)); - mode = val & CURSOR_MODE; - plane->enabled = (mode != CURSOR_MODE_DISABLE); + mode = val & MCURSOR_MODE; + plane->enabled = (mode != MCURSOR_MODE_DISABLE); if (!plane->enabled) return -ENODEV; diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h index ebb41f279134..dbcb4de92a63 100644 --- a/drivers/gpu/drm/i915/i915_reg.h +++ b/drivers/gpu/drm/i915/i915_reg.h @@ -5891,7 +5891,6 @@ enum { #define CURSOR_GAMMA_ENABLE 0x40000000 #define CURSOR_STRIDE_SHIFT 28 #define CURSOR_STRIDE(x) ((ffs(x)-9) << CURSOR_STRIDE_SHIFT) /* 256,512,1k,2k */ -#define CURSOR_PIPE_CSC_ENABLE (1<<24) #define CURSOR_FORMAT_SHIFT 24 #define CURSOR_FORMAT_MASK (0x07 << CURSOR_FORMAT_SHIFT) #define CURSOR_FORMAT_2C (0x00 << CURSOR_FORMAT_SHIFT) @@ -5900,20 +5899,21 @@ enum { #define CURSOR_FORMAT_ARGB (0x04 << CURSOR_FORMAT_SHIFT) #define CURSOR_FORMAT_XRGB (0x05 << CURSOR_FORMAT_SHIFT) /* New style CUR*CNTR flags */ -#define CURSOR_MODE 0x27 -#define CURSOR_MODE_DISABLE 0x00 -#define CURSOR_MODE_128_32B_AX 0x02 -#define CURSOR_MODE_256_32B_AX 0x03 -#define CURSOR_MODE_64_32B_AX 0x07 -#define CURSOR_MODE_128_ARGB_AX ((1 << 5) | CURSOR_MODE_128_32B_AX) -#define CURSOR_MODE_256_ARGB_AX ((1 << 5) | CURSOR_MODE_256_32B_AX) -#define CURSOR_MODE_64_ARGB_AX ((1 << 5) | CURSOR_MODE_64_32B_AX) +#define MCURSOR_MODE 0x27 +#define MCURSOR_MODE_DISABLE 0x00 +#define MCURSOR_MODE_128_32B_AX 0x02 +#define MCURSOR_MODE_256_32B_AX 0x03 +#define MCURSOR_MODE_64_32B_AX 0x07 +#define MCURSOR_MODE_128_ARGB_AX ((1 << 5) | MCURSOR_MODE_128_32B_AX) +#define MCURSOR_MODE_256_ARGB_AX ((1 << 5) | MCURSOR_MODE_256_32B_AX) +#define MCURSOR_MODE_64_ARGB_AX ((1 << 5) | MCURSOR_MODE_64_32B_AX) #define MCURSOR_PIPE_SELECT_MASK (0x3 << 28) #define MCURSOR_PIPE_SELECT_SHIFT 28 #define MCURSOR_PIPE_SELECT(pipe) ((pipe) << 28) #define MCURSOR_GAMMA_ENABLE (1 << 26) -#define CURSOR_ROTATE_180 (1<<15) -#define CURSOR_TRICKLE_FEED_DISABLE (1 << 14) +#define MCURSOR_PIPE_CSC_ENABLE (1<<24) +#define MCURSOR_ROTATE_180 (1<<15) +#define MCURSOR_TRICKLE_FEED_DISABLE (1 << 14) #define _CURABASE 0x70084 #define _CURAPOS 0x70088 #define CURSOR_POS_MASK 0x007FF diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index feae6bd51a44..0cf02f226fd4 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -9549,20 +9549,20 @@ static u32 i9xx_cursor_ctl(const struct intel_crtc_state *crtc_state, cntl = MCURSOR_GAMMA_ENABLE; if (HAS_DDI(dev_priv)) - cntl |= CURSOR_PIPE_CSC_ENABLE; + cntl |= MCURSOR_PIPE_CSC_ENABLE; if (INTEL_GEN(dev_priv) < 5 && !IS_G4X(dev_priv)) cntl |= MCURSOR_PIPE_SELECT(crtc->pipe); switch (plane_state->base.crtc_w) { case 64: - cntl |= CURSOR_MODE_64_ARGB_AX; + cntl |= MCURSOR_MODE_64_ARGB_AX; break; case 128: - cntl |= CURSOR_MODE_128_ARGB_AX; + cntl |= MCURSOR_MODE_128_ARGB_AX; break; case 256: - cntl |= CURSOR_MODE_256_ARGB_AX; + cntl |= MCURSOR_MODE_256_ARGB_AX; break; default: MISSING_CASE(plane_state->base.crtc_w); @@ -9570,7 +9570,7 @@ static u32 i9xx_cursor_ctl(const struct intel_crtc_state *crtc_state, } if (plane_state->base.rotation & DRM_MODE_ROTATE_180) - cntl |= CURSOR_ROTATE_180; + cntl |= MCURSOR_ROTATE_180; return cntl; } @@ -9751,7 +9751,7 @@ static bool i9xx_cursor_get_hw_state(struct intel_plane *plane, val = I915_READ(CURCNTR(plane->pipe)); - ret = val & CURSOR_MODE; + ret = val & MCURSOR_MODE; if (INTEL_GEN(dev_priv) >= 5 || IS_G4X(dev_priv)) *pipe = plane->pipe; @@ -14768,8 +14768,8 @@ void i830_disable_pipe(struct drm_i915_private *dev_priv, enum pipe pipe) WARN_ON(I915_READ(DSPCNTR(PLANE_A)) & DISPLAY_PLANE_ENABLE); WARN_ON(I915_READ(DSPCNTR(PLANE_B)) & DISPLAY_PLANE_ENABLE); WARN_ON(I915_READ(DSPCNTR(PLANE_C)) & DISPLAY_PLANE_ENABLE); - WARN_ON(I915_READ(CURCNTR(PIPE_A)) & CURSOR_MODE); - WARN_ON(I915_READ(CURCNTR(PIPE_B)) & CURSOR_MODE); + WARN_ON(I915_READ(CURCNTR(PIPE_A)) & MCURSOR_MODE); + WARN_ON(I915_READ(CURCNTR(PIPE_B)) & MCURSOR_MODE); I915_WRITE(PIPECONF(pipe), 0); POSTING_READ(PIPECONF(pipe)); -- 2.13.6 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH v2 4/7] drm/i915: Clean up cursor defines 2018-01-31 14:37 ` [PATCH v2 " Ville Syrjala @ 2018-06-01 8:42 ` Mika Kahola 0 siblings, 0 replies; 20+ messages in thread From: Mika Kahola @ 2018-06-01 8:42 UTC (permalink / raw) To: Ville Syrjala, intel-gfx On Wed, 2018-01-31 at 16:37 +0200, Ville Syrjala wrote: > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Use MCURSOR_ instead of CURSOR_ as the prefix for the non-845/865 > cursor defines consistently, and move the pipe CSC enable bit next > to the other non-845/865 cursor defines. > > v2: Take care of gvt uses as well > Reviewed-by: Mika Kahola <mika.kahola@intel.com> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > --- > drivers/gpu/drm/i915/gvt/fb_decoder.c | 12 ++++++------ > drivers/gpu/drm/i915/i915_reg.h | 22 +++++++++++----------- > drivers/gpu/drm/i915/intel_display.c | 16 ++++++++-------- > 3 files changed, 25 insertions(+), 25 deletions(-) > > diff --git a/drivers/gpu/drm/i915/gvt/fb_decoder.c > b/drivers/gpu/drm/i915/gvt/fb_decoder.c > index 6b50fe78dc1b..73c0c2096a62 100644 > --- a/drivers/gpu/drm/i915/gvt/fb_decoder.c > +++ b/drivers/gpu/drm/i915/gvt/fb_decoder.c > @@ -303,16 +303,16 @@ static int cursor_mode_to_drm(int mode) > int cursor_pixel_formats_index = 4; > > switch (mode) { > - case CURSOR_MODE_128_ARGB_AX: > + case MCURSOR_MODE_128_ARGB_AX: > cursor_pixel_formats_index = 0; > break; > - case CURSOR_MODE_256_ARGB_AX: > + case MCURSOR_MODE_256_ARGB_AX: > cursor_pixel_formats_index = 1; > break; > - case CURSOR_MODE_64_ARGB_AX: > + case MCURSOR_MODE_64_ARGB_AX: > cursor_pixel_formats_index = 2; > break; > - case CURSOR_MODE_64_32B_AX: > + case MCURSOR_MODE_64_32B_AX: > cursor_pixel_formats_index = 3; > break; > > @@ -345,8 +345,8 @@ int intel_vgpu_decode_cursor_plane(struct > intel_vgpu *vgpu, > return -ENODEV; > > val = vgpu_vreg_t(vgpu, CURCNTR(pipe)); > - mode = val & CURSOR_MODE; > - plane->enabled = (mode != CURSOR_MODE_DISABLE); > + mode = val & MCURSOR_MODE; > + plane->enabled = (mode != MCURSOR_MODE_DISABLE); > if (!plane->enabled) > return -ENODEV; > > diff --git a/drivers/gpu/drm/i915/i915_reg.h > b/drivers/gpu/drm/i915/i915_reg.h > index ebb41f279134..dbcb4de92a63 100644 > --- a/drivers/gpu/drm/i915/i915_reg.h > +++ b/drivers/gpu/drm/i915/i915_reg.h > @@ -5891,7 +5891,6 @@ enum { > #define CURSOR_GAMMA_ENABLE 0x40000000 > #define CURSOR_STRIDE_SHIFT 28 > #define CURSOR_STRIDE(x) ((ffs(x)-9) << > CURSOR_STRIDE_SHIFT) /* 256,512,1k,2k */ > -#define CURSOR_PIPE_CSC_ENABLE (1<<24) > #define CURSOR_FORMAT_SHIFT 24 > #define CURSOR_FORMAT_MASK (0x07 << CURSOR_FORMAT_SHIFT) > #define CURSOR_FORMAT_2C (0x00 << CURSOR_FORMAT_SHIFT) > @@ -5900,20 +5899,21 @@ enum { > #define CURSOR_FORMAT_ARGB (0x04 << CURSOR_FORMAT_SHIFT) > #define CURSOR_FORMAT_XRGB (0x05 << CURSOR_FORMAT_SHIFT) > /* New style CUR*CNTR flags */ > -#define CURSOR_MODE 0x27 > -#define CURSOR_MODE_DISABLE 0x00 > -#define CURSOR_MODE_128_32B_AX 0x02 > -#define CURSOR_MODE_256_32B_AX 0x03 > -#define CURSOR_MODE_64_32B_AX 0x07 > -#define CURSOR_MODE_128_ARGB_AX ((1 << 5) | > CURSOR_MODE_128_32B_AX) > -#define CURSOR_MODE_256_ARGB_AX ((1 << 5) | > CURSOR_MODE_256_32B_AX) > -#define CURSOR_MODE_64_ARGB_AX ((1 << 5) | CURSOR_MODE_64_32B_AX) > +#define MCURSOR_MODE 0x27 > +#define MCURSOR_MODE_DISABLE 0x00 > +#define MCURSOR_MODE_128_32B_AX 0x02 > +#define MCURSOR_MODE_256_32B_AX 0x03 > +#define MCURSOR_MODE_64_32B_AX 0x07 > +#define MCURSOR_MODE_128_ARGB_AX ((1 << 5) | > MCURSOR_MODE_128_32B_AX) > +#define MCURSOR_MODE_256_ARGB_AX ((1 << 5) | > MCURSOR_MODE_256_32B_AX) > +#define MCURSOR_MODE_64_ARGB_AX ((1 << 5) | > MCURSOR_MODE_64_32B_AX) > #define MCURSOR_PIPE_SELECT_MASK (0x3 << 28) > #define MCURSOR_PIPE_SELECT_SHIFT 28 > #define MCURSOR_PIPE_SELECT(pipe) ((pipe) << 28) > #define MCURSOR_GAMMA_ENABLE (1 << 26) > -#define CURSOR_ROTATE_180 (1<<15) > -#define CURSOR_TRICKLE_FEED_DISABLE (1 << 14) > +#define MCURSOR_PIPE_CSC_ENABLE (1<<24) > +#define MCURSOR_ROTATE_180 (1<<15) > +#define MCURSOR_TRICKLE_FEED_DISABLE (1 << 14) > #define _CURABASE 0x70084 > #define _CURAPOS 0x70088 > #define CURSOR_POS_MASK 0x007FF > diff --git a/drivers/gpu/drm/i915/intel_display.c > b/drivers/gpu/drm/i915/intel_display.c > index feae6bd51a44..0cf02f226fd4 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -9549,20 +9549,20 @@ static u32 i9xx_cursor_ctl(const struct > intel_crtc_state *crtc_state, > cntl = MCURSOR_GAMMA_ENABLE; > > if (HAS_DDI(dev_priv)) > - cntl |= CURSOR_PIPE_CSC_ENABLE; > + cntl |= MCURSOR_PIPE_CSC_ENABLE; > > if (INTEL_GEN(dev_priv) < 5 && !IS_G4X(dev_priv)) > cntl |= MCURSOR_PIPE_SELECT(crtc->pipe); > > switch (plane_state->base.crtc_w) { > case 64: > - cntl |= CURSOR_MODE_64_ARGB_AX; > + cntl |= MCURSOR_MODE_64_ARGB_AX; > break; > case 128: > - cntl |= CURSOR_MODE_128_ARGB_AX; > + cntl |= MCURSOR_MODE_128_ARGB_AX; > break; > case 256: > - cntl |= CURSOR_MODE_256_ARGB_AX; > + cntl |= MCURSOR_MODE_256_ARGB_AX; > break; > default: > MISSING_CASE(plane_state->base.crtc_w); > @@ -9570,7 +9570,7 @@ static u32 i9xx_cursor_ctl(const struct > intel_crtc_state *crtc_state, > } > > if (plane_state->base.rotation & DRM_MODE_ROTATE_180) > - cntl |= CURSOR_ROTATE_180; > + cntl |= MCURSOR_ROTATE_180; > > return cntl; > } > @@ -9751,7 +9751,7 @@ static bool i9xx_cursor_get_hw_state(struct > intel_plane *plane, > > val = I915_READ(CURCNTR(plane->pipe)); > > - ret = val & CURSOR_MODE; > + ret = val & MCURSOR_MODE; > > if (INTEL_GEN(dev_priv) >= 5 || IS_G4X(dev_priv)) > *pipe = plane->pipe; > @@ -14768,8 +14768,8 @@ void i830_disable_pipe(struct > drm_i915_private *dev_priv, enum pipe pipe) > WARN_ON(I915_READ(DSPCNTR(PLANE_A)) & DISPLAY_PLANE_ENABLE); > WARN_ON(I915_READ(DSPCNTR(PLANE_B)) & DISPLAY_PLANE_ENABLE); > WARN_ON(I915_READ(DSPCNTR(PLANE_C)) & DISPLAY_PLANE_ENABLE); > - WARN_ON(I915_READ(CURCNTR(PIPE_A)) & CURSOR_MODE); > - WARN_ON(I915_READ(CURCNTR(PIPE_B)) & CURSOR_MODE); > + WARN_ON(I915_READ(CURCNTR(PIPE_A)) & MCURSOR_MODE); > + WARN_ON(I915_READ(CURCNTR(PIPE_B)) & MCURSOR_MODE); > > I915_WRITE(PIPECONF(pipe), 0); > POSTING_READ(PIPECONF(pipe)); -- Mika Kahola - Intel OTC _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH 5/7] drm/i915: Disable trickle feed for SNB/IVB cursors 2018-01-30 20:38 [PATCH 1/7] drm/i915: Don't set cursor pipe select bits on g4x+ Ville Syrjala ` (2 preceding siblings ...) 2018-01-30 20:38 ` [PATCH 4/7] drm/i915: Clean up cursor defines Ville Syrjala @ 2018-01-30 20:38 ` Ville Syrjala 2018-06-01 10:25 ` Mika Kahola 2018-01-30 20:38 ` [PATCH 6/7] drm/i915: Drop WaDoubleCursorLP3Latency:ivb Ville Syrjala ` (5 subsequent siblings) 9 siblings, 1 reply; 20+ messages in thread From: Ville Syrjala @ 2018-01-30 20:38 UTC (permalink / raw) To: intel-gfx From: Ville Syrjälä <ville.syrjala@linux.intel.com> We disable trickle feed whenever possible, except for the cursors on SNB/IVB. Let's try disabling it there too if for no other reason than consistency. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> --- drivers/gpu/drm/i915/intel_display.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 0cf02f226fd4..ab2402c225c7 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -9548,6 +9548,9 @@ static u32 i9xx_cursor_ctl(const struct intel_crtc_state *crtc_state, cntl = MCURSOR_GAMMA_ENABLE; + if (IS_GEN6(dev_priv) || IS_IVYBRIDGE(dev_priv)) + cntl |= MCURSOR_TRICKLE_FEED_DISABLE; + if (HAS_DDI(dev_priv)) cntl |= MCURSOR_PIPE_CSC_ENABLE; -- 2.13.6 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH 5/7] drm/i915: Disable trickle feed for SNB/IVB cursors 2018-01-30 20:38 ` [PATCH 5/7] drm/i915: Disable trickle feed for SNB/IVB cursors Ville Syrjala @ 2018-06-01 10:25 ` Mika Kahola 0 siblings, 0 replies; 20+ messages in thread From: Mika Kahola @ 2018-06-01 10:25 UTC (permalink / raw) To: Ville Syrjala, intel-gfx On Tue, 2018-01-30 at 22:38 +0200, Ville Syrjala wrote: > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > We disable trickle feed whenever possible, except for the cursors > on SNB/IVB. Let's try disabling it there too if for no other reason > than consistency. > Reviewed-by: Mika Kahola <mika.kahola@intel.com> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > --- > drivers/gpu/drm/i915/intel_display.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/gpu/drm/i915/intel_display.c > b/drivers/gpu/drm/i915/intel_display.c > index 0cf02f226fd4..ab2402c225c7 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -9548,6 +9548,9 @@ static u32 i9xx_cursor_ctl(const struct > intel_crtc_state *crtc_state, > > cntl = MCURSOR_GAMMA_ENABLE; > > + if (IS_GEN6(dev_priv) || IS_IVYBRIDGE(dev_priv)) > + cntl |= MCURSOR_TRICKLE_FEED_DISABLE; > + > if (HAS_DDI(dev_priv)) > cntl |= MCURSOR_PIPE_CSC_ENABLE; > -- Mika Kahola - Intel OTC _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH 6/7] drm/i915: Drop WaDoubleCursorLP3Latency:ivb 2018-01-30 20:38 [PATCH 1/7] drm/i915: Don't set cursor pipe select bits on g4x+ Ville Syrjala ` (3 preceding siblings ...) 2018-01-30 20:38 ` [PATCH 5/7] drm/i915: Disable trickle feed for SNB/IVB cursors Ville Syrjala @ 2018-01-30 20:38 ` Ville Syrjala 2018-01-31 14:10 ` Mika Kahola 2018-01-30 20:38 ` [PATCH 7/7] drm/i915: s/plane/i9xx_plane/ Ville Syrjala ` (4 subsequent siblings) 9 siblings, 1 reply; 20+ messages in thread From: Ville Syrjala @ 2018-01-30 20:38 UTC (permalink / raw) To: intel-gfx From: Ville Syrjälä <ville.syrjala@linux.intel.com> WaDoubleCursorLP3Latency was meant for pre-production hardware. Drop it. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> --- drivers/gpu/drm/i915/intel_pm.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c index 0b92ea1dbd40..8eac3895ea9a 100644 --- a/drivers/gpu/drm/i915/intel_pm.c +++ b/drivers/gpu/drm/i915/intel_pm.c @@ -2916,10 +2916,6 @@ static void intel_fixup_cur_wm_latency(struct drm_i915_private *dev_priv, /* ILK cursor LP0 latency is 1300 ns */ if (IS_GEN5(dev_priv)) wm[0] = 13; - - /* WaDoubleCursorLP3Latency:ivb */ - if (IS_IVYBRIDGE(dev_priv)) - wm[3] *= 2; } int ilk_wm_max_level(const struct drm_i915_private *dev_priv) -- 2.13.6 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH 6/7] drm/i915: Drop WaDoubleCursorLP3Latency:ivb 2018-01-30 20:38 ` [PATCH 6/7] drm/i915: Drop WaDoubleCursorLP3Latency:ivb Ville Syrjala @ 2018-01-31 14:10 ` Mika Kahola 2018-02-20 19:01 ` Ville Syrjälä 0 siblings, 1 reply; 20+ messages in thread From: Mika Kahola @ 2018-01-31 14:10 UTC (permalink / raw) To: Ville Syrjala, intel-gfx On Tue, 2018-01-30 at 22:38 +0200, Ville Syrjala wrote: > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > WaDoubleCursorLP3Latency was meant for pre-production hardware. > Drop it. > Reviewed-by: Mika Kahola <mika.kahola@intel.com> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > --- > drivers/gpu/drm/i915/intel_pm.c | 4 ---- > 1 file changed, 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_pm.c > b/drivers/gpu/drm/i915/intel_pm.c > index 0b92ea1dbd40..8eac3895ea9a 100644 > --- a/drivers/gpu/drm/i915/intel_pm.c > +++ b/drivers/gpu/drm/i915/intel_pm.c > @@ -2916,10 +2916,6 @@ static void intel_fixup_cur_wm_latency(struct > drm_i915_private *dev_priv, > /* ILK cursor LP0 latency is 1300 ns */ > if (IS_GEN5(dev_priv)) > wm[0] = 13; > - > - /* WaDoubleCursorLP3Latency:ivb */ > - if (IS_IVYBRIDGE(dev_priv)) > - wm[3] *= 2; > } > > int ilk_wm_max_level(const struct drm_i915_private *dev_priv) -- Mika Kahola - Intel OTC _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 6/7] drm/i915: Drop WaDoubleCursorLP3Latency:ivb 2018-01-31 14:10 ` Mika Kahola @ 2018-02-20 19:01 ` Ville Syrjälä 0 siblings, 0 replies; 20+ messages in thread From: Ville Syrjälä @ 2018-02-20 19:01 UTC (permalink / raw) To: Mika Kahola; +Cc: intel-gfx On Wed, Jan 31, 2018 at 04:10:10PM +0200, Mika Kahola wrote: > On Tue, 2018-01-30 at 22:38 +0200, Ville Syrjala wrote: > > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > > WaDoubleCursorLP3Latency was meant for pre-production hardware. > > Drop it. > > > Reviewed-by: Mika Kahola <mika.kahola@intel.com> Patches 1,2,6 pushed to dinq. Thanks for the review. > > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > > --- > > drivers/gpu/drm/i915/intel_pm.c | 4 ---- > > 1 file changed, 4 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/intel_pm.c > > b/drivers/gpu/drm/i915/intel_pm.c > > index 0b92ea1dbd40..8eac3895ea9a 100644 > > --- a/drivers/gpu/drm/i915/intel_pm.c > > +++ b/drivers/gpu/drm/i915/intel_pm.c > > @@ -2916,10 +2916,6 @@ static void intel_fixup_cur_wm_latency(struct > > drm_i915_private *dev_priv, > > /* ILK cursor LP0 latency is 1300 ns */ > > if (IS_GEN5(dev_priv)) > > wm[0] = 13; > > - > > - /* WaDoubleCursorLP3Latency:ivb */ > > - if (IS_IVYBRIDGE(dev_priv)) > > - wm[3] *= 2; > > } > > > > int ilk_wm_max_level(const struct drm_i915_private *dev_priv) > -- > Mika Kahola - Intel OTC -- Ville Syrjälä Intel OTC _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH 7/7] drm/i915: s/plane/i9xx_plane/ 2018-01-30 20:38 [PATCH 1/7] drm/i915: Don't set cursor pipe select bits on g4x+ Ville Syrjala ` (4 preceding siblings ...) 2018-01-30 20:38 ` [PATCH 6/7] drm/i915: Drop WaDoubleCursorLP3Latency:ivb Ville Syrjala @ 2018-01-30 20:38 ` Ville Syrjala 2018-06-01 10:29 ` Mika Kahola 2018-01-30 21:03 ` ✗ Fi.CI.BAT: failure for series starting with [1/7] drm/i915: Don't set cursor pipe select bits on g4x+ Patchwork ` (3 subsequent siblings) 9 siblings, 1 reply; 20+ messages in thread From: Ville Syrjala @ 2018-01-30 20:38 UTC (permalink / raw) To: intel-gfx; +Cc: Hans de Goede From: Ville Syrjälä <ville.syrjala@linux.intel.com> Call the enum i9xx_plane_id variable i9xx_plane like we do elsewhere. Cc: Hans de Goede <j.w.r.degoede@gmail.com> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> --- drivers/gpu/drm/i915/intel_dsi.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c index 51a1d6868b1e..9f378aa2dc5b 100644 --- a/drivers/gpu/drm/i915/intel_dsi.c +++ b/drivers/gpu/drm/i915/intel_dsi.c @@ -1665,16 +1665,16 @@ static int intel_dsi_get_panel_orientation(struct intel_connector *connector) { struct drm_i915_private *dev_priv = to_i915(connector->base.dev); int orientation = DRM_MODE_PANEL_ORIENTATION_NORMAL; - enum i9xx_plane_id plane; + enum i9xx_plane_id i9xx_plane; u32 val; if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) { if (connector->encoder->crtc_mask == BIT(PIPE_B)) - plane = PLANE_B; + i9xx_plane = PLANE_B; else - plane = PLANE_A; + i9xx_plane = PLANE_A; - val = I915_READ(DSPCNTR(plane)); + val = I915_READ(DSPCNTR(i9xx_plane)); if (val & DISPPLANE_ROTATE_180) orientation = DRM_MODE_PANEL_ORIENTATION_BOTTOM_UP; } -- 2.13.6 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH 7/7] drm/i915: s/plane/i9xx_plane/ 2018-01-30 20:38 ` [PATCH 7/7] drm/i915: s/plane/i9xx_plane/ Ville Syrjala @ 2018-06-01 10:29 ` Mika Kahola 2018-06-01 15:52 ` Ville Syrjälä 0 siblings, 1 reply; 20+ messages in thread From: Mika Kahola @ 2018-06-01 10:29 UTC (permalink / raw) To: Ville Syrjala, intel-gfx; +Cc: Hans de Goede On Tue, 2018-01-30 at 22:38 +0200, Ville Syrjala wrote: > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Call the enum i9xx_plane_id variable i9xx_plane like we do elsewhere. > > Cc: Hans de Goede <j.w.r.degoede@gmail.com> Reviewed-by: Mika Kahola <mika.kahola@intel.com> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > --- > drivers/gpu/drm/i915/intel_dsi.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_dsi.c > b/drivers/gpu/drm/i915/intel_dsi.c > index 51a1d6868b1e..9f378aa2dc5b 100644 > --- a/drivers/gpu/drm/i915/intel_dsi.c > +++ b/drivers/gpu/drm/i915/intel_dsi.c > @@ -1665,16 +1665,16 @@ static int > intel_dsi_get_panel_orientation(struct intel_connector *connector) > { > struct drm_i915_private *dev_priv = to_i915(connector- > >base.dev); > int orientation = DRM_MODE_PANEL_ORIENTATION_NORMAL; > - enum i9xx_plane_id plane; > + enum i9xx_plane_id i9xx_plane; > u32 val; > > if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) { > if (connector->encoder->crtc_mask == BIT(PIPE_B)) > - plane = PLANE_B; > + i9xx_plane = PLANE_B; > else > - plane = PLANE_A; > + i9xx_plane = PLANE_A; > > - val = I915_READ(DSPCNTR(plane)); > + val = I915_READ(DSPCNTR(i9xx_plane)); > if (val & DISPPLANE_ROTATE_180) > orientation = > DRM_MODE_PANEL_ORIENTATION_BOTTOM_UP; > } -- Mika Kahola - Intel OTC _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 7/7] drm/i915: s/plane/i9xx_plane/ 2018-06-01 10:29 ` Mika Kahola @ 2018-06-01 15:52 ` Ville Syrjälä 0 siblings, 0 replies; 20+ messages in thread From: Ville Syrjälä @ 2018-06-01 15:52 UTC (permalink / raw) To: Mika Kahola; +Cc: intel-gfx, Hans de Goede On Fri, Jun 01, 2018 at 01:29:12PM +0300, Mika Kahola wrote: > On Tue, 2018-01-30 at 22:38 +0200, Ville Syrjala wrote: > > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > > Call the enum i9xx_plane_id variable i9xx_plane like we do elsewhere. > > > > Cc: Hans de Goede <j.w.r.degoede@gmail.com> > > Reviewed-by: Mika Kahola <mika.kahola@intel.com> Thanks. Remainder of the series pushed. > > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > > --- > > drivers/gpu/drm/i915/intel_dsi.c | 8 ++++---- > > 1 file changed, 4 insertions(+), 4 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/intel_dsi.c > > b/drivers/gpu/drm/i915/intel_dsi.c > > index 51a1d6868b1e..9f378aa2dc5b 100644 > > --- a/drivers/gpu/drm/i915/intel_dsi.c > > +++ b/drivers/gpu/drm/i915/intel_dsi.c > > @@ -1665,16 +1665,16 @@ static int > > intel_dsi_get_panel_orientation(struct intel_connector *connector) > > { > > struct drm_i915_private *dev_priv = to_i915(connector- > > >base.dev); > > int orientation = DRM_MODE_PANEL_ORIENTATION_NORMAL; > > - enum i9xx_plane_id plane; > > + enum i9xx_plane_id i9xx_plane; > > u32 val; > > > > if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) { > > if (connector->encoder->crtc_mask == BIT(PIPE_B)) > > - plane = PLANE_B; > > + i9xx_plane = PLANE_B; > > else > > - plane = PLANE_A; > > + i9xx_plane = PLANE_A; > > > > - val = I915_READ(DSPCNTR(plane)); > > + val = I915_READ(DSPCNTR(i9xx_plane)); > > if (val & DISPPLANE_ROTATE_180) > > orientation = > > DRM_MODE_PANEL_ORIENTATION_BOTTOM_UP; > > } > -- > Mika Kahola - Intel OTC -- Ville Syrjälä Intel _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 20+ messages in thread
* ✗ Fi.CI.BAT: failure for series starting with [1/7] drm/i915: Don't set cursor pipe select bits on g4x+ 2018-01-30 20:38 [PATCH 1/7] drm/i915: Don't set cursor pipe select bits on g4x+ Ville Syrjala ` (5 preceding siblings ...) 2018-01-30 20:38 ` [PATCH 7/7] drm/i915: s/plane/i9xx_plane/ Ville Syrjala @ 2018-01-30 21:03 ` Patchwork 2018-01-31 14:55 ` ✓ Fi.CI.BAT: success for series starting with [1/7] drm/i915: Don't set cursor pipe select bits on g4x+ (rev2) Patchwork ` (2 subsequent siblings) 9 siblings, 0 replies; 20+ messages in thread From: Patchwork @ 2018-01-30 21:03 UTC (permalink / raw) To: Ville Syrjälä; +Cc: intel-gfx == Series Details == Series: series starting with [1/7] drm/i915: Don't set cursor pipe select bits on g4x+ URL : https://patchwork.freedesktop.org/series/37362/ State : failure == Summary == CHK include/config/kernel.release CHK include/generated/uapi/linux/version.h CHK include/generated/utsrelease.h CHK include/generated/bounds.h CHK include/generated/timeconst.h CHK include/generated/asm-offsets.h CALL scripts/checksyscalls.sh DESCEND objtool CHK scripts/mod/devicetable-offsets.h CHK include/generated/compile.h CHK kernel/config_data.h CC [M] drivers/gpu/drm/i915/gvt/fb_decoder.o drivers/gpu/drm/i915/gvt/fb_decoder.c: In function ‘cursor_mode_to_drm’: drivers/gpu/drm/i915/gvt/fb_decoder.c:306:7: error: ‘CURSOR_MODE_128_ARGB_AX’ undeclared (first use in this function) case CURSOR_MODE_128_ARGB_AX: ^~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/i915/gvt/fb_decoder.c:306:7: note: each undeclared identifier is reported only once for each function it appears in drivers/gpu/drm/i915/gvt/fb_decoder.c:309:7: error: ‘CURSOR_MODE_256_ARGB_AX’ undeclared (first use in this function) case CURSOR_MODE_256_ARGB_AX: ^~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/i915/gvt/fb_decoder.c:312:7: error: ‘CURSOR_MODE_64_ARGB_AX’ undeclared (first use in this function) case CURSOR_MODE_64_ARGB_AX: ^~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/i915/gvt/fb_decoder.c:315:7: error: ‘CURSOR_MODE_64_32B_AX’ undeclared (first use in this function) case CURSOR_MODE_64_32B_AX: ^~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/i915/gvt/fb_decoder.c: In function ‘intel_vgpu_decode_cursor_plane’: drivers/gpu/drm/i915/gvt/fb_decoder.c:348:15: error: ‘CURSOR_MODE’ undeclared (first use in this function) mode = val & CURSOR_MODE; ^~~~~~~~~~~ drivers/gpu/drm/i915/gvt/fb_decoder.c:349:28: error: ‘CURSOR_MODE_DISABLE’ undeclared (first use in this function) plane->enabled = (mode != CURSOR_MODE_DISABLE); ^~~~~~~~~~~~~~~~~~~ scripts/Makefile.build:316: recipe for target 'drivers/gpu/drm/i915/gvt/fb_decoder.o' failed make[4]: *** [drivers/gpu/drm/i915/gvt/fb_decoder.o] Error 1 scripts/Makefile.build:575: recipe for target 'drivers/gpu/drm/i915' failed make[3]: *** [drivers/gpu/drm/i915] Error 2 scripts/Makefile.build:575: recipe for target 'drivers/gpu/drm' failed make[2]: *** [drivers/gpu/drm] Error 2 scripts/Makefile.build:575: recipe for target 'drivers/gpu' failed make[1]: *** [drivers/gpu] Error 2 Makefile:1018: recipe for target 'drivers' failed make: *** [drivers] Error 2 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 20+ messages in thread
* ✓ Fi.CI.BAT: success for series starting with [1/7] drm/i915: Don't set cursor pipe select bits on g4x+ (rev2) 2018-01-30 20:38 [PATCH 1/7] drm/i915: Don't set cursor pipe select bits on g4x+ Ville Syrjala ` (6 preceding siblings ...) 2018-01-30 21:03 ` ✗ Fi.CI.BAT: failure for series starting with [1/7] drm/i915: Don't set cursor pipe select bits on g4x+ Patchwork @ 2018-01-31 14:55 ` Patchwork 2018-01-31 17:18 ` ✓ Fi.CI.IGT: " Patchwork 2018-02-01 13:32 ` [PATCH 1/7] drm/i915: Don't set cursor pipe select bits on g4x+ Mika Kahola 9 siblings, 0 replies; 20+ messages in thread From: Patchwork @ 2018-01-31 14:55 UTC (permalink / raw) To: Ville Syrjala; +Cc: intel-gfx == Series Details == Series: series starting with [1/7] drm/i915: Don't set cursor pipe select bits on g4x+ (rev2) URL : https://patchwork.freedesktop.org/series/37362/ State : success == Summary == Series 37362v2 series starting with [1/7] drm/i915: Don't set cursor pipe select bits on g4x+ https://patchwork.freedesktop.org/api/1.0/series/37362/revisions/2/mbox/ Test gem_exec_suspend: Subgroup basic-s4-devices: pass -> INCOMPLETE (fi-bdw-5557u) fdo#104162 Test kms_pipe_crc_basic: Subgroup suspend-read-crc-pipe-b: incomplete -> PASS (fi-snb-2520m) fdo#103713 fdo#104162 https://bugs.freedesktop.org/show_bug.cgi?id=104162 fdo#103713 https://bugs.freedesktop.org/show_bug.cgi?id=103713 fi-bdw-5557u total:109 pass:105 dwarn:0 dfail:0 fail:0 skip:3 fi-bdw-gvtdvm total:288 pass:264 dwarn:0 dfail:0 fail:0 skip:24 time:422s fi-blb-e6850 total:288 pass:223 dwarn:1 dfail:0 fail:0 skip:64 time:370s fi-bsw-n3050 total:288 pass:242 dwarn:0 dfail:0 fail:0 skip:46 time:490s fi-bwr-2160 total:288 pass:183 dwarn:0 dfail:0 fail:0 skip:105 time:283s fi-bxt-dsi total:288 pass:258 dwarn:0 dfail:0 fail:0 skip:30 time:478s fi-bxt-j4205 total:288 pass:259 dwarn:0 dfail:0 fail:0 skip:29 time:487s fi-byt-j1900 total:288 pass:253 dwarn:0 dfail:0 fail:0 skip:35 time:471s fi-byt-n2820 total:288 pass:249 dwarn:0 dfail:0 fail:0 skip:39 time:454s fi-cfl-s2 total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:573s fi-elk-e7500 total:224 pass:168 dwarn:10 dfail:0 fail:0 skip:45 fi-gdg-551 total:288 pass:179 dwarn:0 dfail:0 fail:1 skip:108 time:286s fi-glk-1 total:288 pass:260 dwarn:0 dfail:0 fail:0 skip:28 time:514s fi-hsw-4770 total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:397s fi-hsw-4770r total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:399s fi-ilk-650 total:288 pass:228 dwarn:0 dfail:0 fail:0 skip:60 time:416s fi-ivb-3520m total:288 pass:259 dwarn:0 dfail:0 fail:0 skip:29 time:449s fi-ivb-3770 total:288 pass:255 dwarn:0 dfail:0 fail:0 skip:33 time:411s fi-kbl-7500u total:288 pass:263 dwarn:1 dfail:0 fail:0 skip:24 time:463s fi-kbl-7560u total:288 pass:269 dwarn:0 dfail:0 fail:0 skip:19 time:496s fi-kbl-7567u total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:450s fi-kbl-r total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:502s fi-pnv-d510 total:288 pass:222 dwarn:1 dfail:0 fail:0 skip:65 time:583s fi-skl-6260u total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:438s fi-skl-6600u total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:509s fi-skl-6700hq total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:525s fi-skl-6700k2 total:288 pass:264 dwarn:0 dfail:0 fail:0 skip:24 time:494s fi-skl-6770hq total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:475s fi-skl-guc total:288 pass:260 dwarn:0 dfail:0 fail:0 skip:28 time:417s fi-skl-gvtdvm total:288 pass:265 dwarn:0 dfail:0 fail:0 skip:23 time:430s fi-snb-2520m total:288 pass:248 dwarn:0 dfail:0 fail:0 skip:40 time:522s fi-snb-2600 total:288 pass:248 dwarn:0 dfail:0 fail:0 skip:40 time:403s Blacklisted hosts: fi-glk-dsi total:288 pass:258 dwarn:0 dfail:0 fail:0 skip:30 time:472s badc0398a06018a07f6f50a1ff5a5fd8a30b9944 drm-tip: 2018y-01m-31d-12h-17m-12s UTC integration manifest a6b40df641b0 drm/i915: s/plane/i9xx_plane/ 309c54212a22 drm/i915: Drop WaDoubleCursorLP3Latency:ivb ab266dd84d7a drm/i915: Disable trickle feed for SNB/IVB cursors 45da2273b46f drm/i915: Clean up cursor defines 8948a9152607 drm/i915: Have plane->get_hw_state() return the current pipe db3c2d0815ab drm/i915: Set the primary plane pipe select bits on gen4 45bad81fbb4c drm/i915: Don't set cursor pipe select bits on g4x+ == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_7839/issues.html _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 20+ messages in thread
* ✓ Fi.CI.IGT: success for series starting with [1/7] drm/i915: Don't set cursor pipe select bits on g4x+ (rev2) 2018-01-30 20:38 [PATCH 1/7] drm/i915: Don't set cursor pipe select bits on g4x+ Ville Syrjala ` (7 preceding siblings ...) 2018-01-31 14:55 ` ✓ Fi.CI.BAT: success for series starting with [1/7] drm/i915: Don't set cursor pipe select bits on g4x+ (rev2) Patchwork @ 2018-01-31 17:18 ` Patchwork 2018-02-01 13:32 ` [PATCH 1/7] drm/i915: Don't set cursor pipe select bits on g4x+ Mika Kahola 9 siblings, 0 replies; 20+ messages in thread From: Patchwork @ 2018-01-31 17:18 UTC (permalink / raw) To: Ville Syrjälä; +Cc: intel-gfx == Series Details == Series: series starting with [1/7] drm/i915: Don't set cursor pipe select bits on g4x+ (rev2) URL : https://patchwork.freedesktop.org/series/37362/ State : success == Summary == Test perf_pmu: Subgroup semaphore-wait-bcs0: fail -> PASS (shard-apl) fdo#104829 Test kms_sysfs_edid_timing: pass -> WARN (shard-apl) fdo#100047 fdo#104829 https://bugs.freedesktop.org/show_bug.cgi?id=104829 fdo#100047 https://bugs.freedesktop.org/show_bug.cgi?id=100047 shard-apl total:2838 pass:1749 dwarn:1 dfail:0 fail:23 skip:1064 time:12633s shard-hsw total:2838 pass:1736 dwarn:1 dfail:0 fail:10 skip:1090 time:11990s shard-snb total:2838 pass:1330 dwarn:1 dfail:0 fail:10 skip:1497 time:6629s == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_7839/shards.html _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 1/7] drm/i915: Don't set cursor pipe select bits on g4x+ 2018-01-30 20:38 [PATCH 1/7] drm/i915: Don't set cursor pipe select bits on g4x+ Ville Syrjala ` (8 preceding siblings ...) 2018-01-31 17:18 ` ✓ Fi.CI.IGT: " Patchwork @ 2018-02-01 13:32 ` Mika Kahola 9 siblings, 0 replies; 20+ messages in thread From: Mika Kahola @ 2018-02-01 13:32 UTC (permalink / raw) To: Ville Syrjala, intel-gfx On Tue, 2018-01-30 at 22:38 +0200, Ville Syrjala wrote: > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > G4x cursor control registers still allow us to write to the pipe > select > bits even though cursors are supposed to be fixed to a specific pipe. > Bspec tells us that we should only ever write 0 to these bits. Let's > follow that recommendation. On ilk+ the bits become hardwired to 0. > > Also looks like ICL repurposes these bits for some other use, so > we had better stop setting them to bogus values there. > Reviewed-by: Mika Kahola <mika.kahola@intel.com> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > --- > drivers/gpu/drm/i915/intel_display.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/intel_display.c > b/drivers/gpu/drm/i915/intel_display.c > index af659d25943b..cccc1126f1d5 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -9532,7 +9532,8 @@ static u32 i9xx_cursor_ctl(const struct > intel_crtc_state *crtc_state, > if (HAS_DDI(dev_priv)) > cntl |= CURSOR_PIPE_CSC_ENABLE; > > - cntl |= MCURSOR_PIPE_SELECT(crtc->pipe); > + if (INTEL_GEN(dev_priv) < 5 && !IS_G4X(dev_priv)) > + cntl |= MCURSOR_PIPE_SELECT(crtc->pipe); > > switch (plane_state->base.crtc_w) { > case 64: -- Mika Kahola - Intel OTC _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2018-06-01 15:52 UTC | newest] Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2018-01-30 20:38 [PATCH 1/7] drm/i915: Don't set cursor pipe select bits on g4x+ Ville Syrjala 2018-01-30 20:38 ` [PATCH 2/7] drm/i915: Set the primary plane pipe select bits on gen4 Ville Syrjala 2018-02-02 9:15 ` Mika Kahola 2018-01-30 20:38 ` [PATCH 3/7] drm/i915: Have plane->get_hw_state() return the current pipe Ville Syrjala 2018-06-01 8:38 ` Mika Kahola 2018-01-30 20:38 ` [PATCH 4/7] drm/i915: Clean up cursor defines Ville Syrjala 2018-01-31 14:37 ` [PATCH v2 " Ville Syrjala 2018-06-01 8:42 ` Mika Kahola 2018-01-30 20:38 ` [PATCH 5/7] drm/i915: Disable trickle feed for SNB/IVB cursors Ville Syrjala 2018-06-01 10:25 ` Mika Kahola 2018-01-30 20:38 ` [PATCH 6/7] drm/i915: Drop WaDoubleCursorLP3Latency:ivb Ville Syrjala 2018-01-31 14:10 ` Mika Kahola 2018-02-20 19:01 ` Ville Syrjälä 2018-01-30 20:38 ` [PATCH 7/7] drm/i915: s/plane/i9xx_plane/ Ville Syrjala 2018-06-01 10:29 ` Mika Kahola 2018-06-01 15:52 ` Ville Syrjälä 2018-01-30 21:03 ` ✗ Fi.CI.BAT: failure for series starting with [1/7] drm/i915: Don't set cursor pipe select bits on g4x+ Patchwork 2018-01-31 14:55 ` ✓ Fi.CI.BAT: success for series starting with [1/7] drm/i915: Don't set cursor pipe select bits on g4x+ (rev2) Patchwork 2018-01-31 17:18 ` ✓ Fi.CI.IGT: " Patchwork 2018-02-01 13:32 ` [PATCH 1/7] drm/i915: Don't set cursor pipe select bits on g4x+ Mika Kahola
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.