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: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20190821173033.24123-2-ville.syrjala@linux.intel.com Reviewed-by: Jani Nikula <jani.nikula@intel.com>
This commit is contained in:
parent
d06a79d33e
commit
e8edae54c5
|
@ -942,14 +942,14 @@ static int __intel_get_crtc_scanline(struct intel_crtc *crtc)
|
|||
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,
|
||||
ktime_t *stime, ktime_t *etime,
|
||||
const struct drm_display_mode *mode)
|
||||
{
|
||||
struct drm_i915_private *dev_priv = to_i915(dev);
|
||||
struct intel_crtc *intel_crtc = intel_get_crtc_for_pipe(dev_priv,
|
||||
pipe);
|
||||
struct intel_crtc *crtc = to_intel_crtc(drm_crtc_from_index(dev, index));
|
||||
enum pipe pipe = crtc->pipe;
|
||||
int position;
|
||||
int vbl_start, vbl_end, hsync_start, htotal, vtotal;
|
||||
unsigned long irqflags;
|
||||
|
@ -992,7 +992,7 @@ bool i915_get_crtc_scanoutpos(struct drm_device *dev, unsigned int pipe,
|
|||
/* No obvious pixelcount register. Only query vertical
|
||||
* scanout position from Display scan line register.
|
||||
*/
|
||||
position = __intel_get_crtc_scanline(intel_crtc);
|
||||
position = __intel_get_crtc_scanline(crtc);
|
||||
} else {
|
||||
/* Have access to pixelcount since start of frame.
|
||||
* We can split this into vertical and horizontal
|
||||
|
|
Loading…
Reference in New Issue