Commit e8edae54 authored by Ville Syrjälä's avatar Ville Syrjälä

drm/i915: Unconfuse pipe vs. crtc->index in i915_get_crtc_scanoutpos()

The "pipe" argument passed in by the vblank code is in fact the crtc
index. Don't assume that is the same as the pipe.
Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190821173033.24123-2-ville.syrjala@linux.intel.comReviewed-by: default avatarJani Nikula <jani.nikula@intel.com>
parent d06a79d3
...@@ -942,14 +942,14 @@ static int __intel_get_crtc_scanline(struct intel_crtc *crtc) ...@@ -942,14 +942,14 @@ static int __intel_get_crtc_scanline(struct intel_crtc *crtc)
return (position + crtc->scanline_offset) % vtotal; return (position + crtc->scanline_offset) % vtotal;
} }
bool i915_get_crtc_scanoutpos(struct drm_device *dev, unsigned int pipe, bool i915_get_crtc_scanoutpos(struct drm_device *dev, unsigned int index,
bool in_vblank_irq, int *vpos, int *hpos, bool in_vblank_irq, int *vpos, int *hpos,
ktime_t *stime, ktime_t *etime, ktime_t *stime, ktime_t *etime,
const struct drm_display_mode *mode) const struct drm_display_mode *mode)
{ {
struct drm_i915_private *dev_priv = to_i915(dev); struct drm_i915_private *dev_priv = to_i915(dev);
struct intel_crtc *intel_crtc = intel_get_crtc_for_pipe(dev_priv, struct intel_crtc *crtc = to_intel_crtc(drm_crtc_from_index(dev, index));
pipe); enum pipe pipe = crtc->pipe;
int position; int position;
int vbl_start, vbl_end, hsync_start, htotal, vtotal; int vbl_start, vbl_end, hsync_start, htotal, vtotal;
unsigned long irqflags; unsigned long irqflags;
...@@ -992,7 +992,7 @@ bool i915_get_crtc_scanoutpos(struct drm_device *dev, unsigned int pipe, ...@@ -992,7 +992,7 @@ bool i915_get_crtc_scanoutpos(struct drm_device *dev, unsigned int pipe,
/* No obvious pixelcount register. Only query vertical /* No obvious pixelcount register. Only query vertical
* scanout position from Display scan line register. * scanout position from Display scan line register.
*/ */
position = __intel_get_crtc_scanline(intel_crtc); position = __intel_get_crtc_scanline(crtc);
} else { } else {
/* Have access to pixelcount since start of frame. /* Have access to pixelcount since start of frame.
* We can split this into vertical and horizontal * We can split this into vertical and horizontal
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment