mirror of
https://gitlab.freedesktop.org/mesa/drm.git
synced 2025-12-29 19:40:16 +01:00
[intel] Get vblank pipe from irq_mask_reg instead of hardware enable reg
With the interrupt enable/disable using only the mask register, it was wrong to use the enable register to detect which pipes had vblank detection turned on. Also, as we keep a local copy of the mask register around, and MSI machines smack the hardware during the interrupt handler, it is more efficient and more correct to use the local copy.
This commit is contained in:
parent
e36da6a133
commit
d250a55fc6
1 changed files with 3 additions and 2 deletions
|
|
@ -794,14 +794,15 @@ int i915_vblank_pipe_get(struct drm_device *dev, void *data,
|
|||
{
|
||||
drm_i915_private_t *dev_priv = dev->dev_private;
|
||||
drm_i915_vblank_pipe_t *pipe = data;
|
||||
u16 flag;
|
||||
u32 flag = 0;
|
||||
|
||||
if (!dev_priv) {
|
||||
DRM_ERROR("called with no initialization\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
flag = I915_READ(I915REG_INT_ENABLE_R);
|
||||
if (dev_priv->irq_enabled)
|
||||
flag = ~dev_priv->irq_mask_reg;
|
||||
pipe->pipe = 0;
|
||||
if (flag & I915_DISPLAY_PIPE_A_EVENT_INTERRUPT)
|
||||
pipe->pipe |= DRM_I915_VBLANK_PIPE_A;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue