drm/i915: page flip support for Ironlake

This patch adds support for page flipping on Ironlake, which uses
different interrupt bits for triggering flip submit IRQs.

Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
[anholt: hand-resolved for rebasing off of render power saving patch]
Signed-off-by: Eric Anholt <eric@anholt.net>

authored by Jesse Barnes and committed by Eric Anholt 013d5aa2 f034b12d

+15 -4
+15 -4
drivers/gpu/drm/i915/i915_irq.c
··· 309 309 if (de_iir & DE_GSE) 310 310 ironlake_opregion_gse_intr(dev); 311 311 312 - if (de_iir & DE_PIPEA_VBLANK) 313 - drm_handle_vblank(dev, 0); 312 + if (de_iir & DE_PLANEA_FLIP_DONE) 313 + intel_prepare_page_flip(dev, 0); 314 314 315 - if (de_iir & DE_PIPEB_VBLANK) 315 + if (de_iir & DE_PLANEB_FLIP_DONE) 316 + intel_prepare_page_flip(dev, 1); 317 + 318 + if (de_iir & DE_PIPEA_VBLANK) { 319 + drm_handle_vblank(dev, 0); 320 + intel_finish_page_flip(dev, 0); 321 + } 322 + 323 + if (de_iir & DE_PIPEB_VBLANK) { 316 324 drm_handle_vblank(dev, 1); 325 + intel_finish_page_flip(dev, 1); 326 + } 317 327 318 328 /* check event from PCH */ 319 329 if ((de_iir & DE_PCH_EVENT) && ··· 1032 1022 { 1033 1023 drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; 1034 1024 /* enable kind of interrupts always enabled */ 1035 - u32 display_mask = DE_MASTER_IRQ_CONTROL | DE_GSE | DE_PCH_EVENT; 1025 + u32 display_mask = DE_MASTER_IRQ_CONTROL | DE_GSE | DE_PCH_EVENT | 1026 + DE_PLANEA_FLIP_DONE | DE_PLANEB_FLIP_DONE; 1036 1027 u32 render_mask = GT_USER_INTERRUPT; 1037 1028 u32 hotplug_mask = SDE_CRT_HOTPLUG | SDE_PORTB_HOTPLUG | 1038 1029 SDE_PORTC_HOTPLUG | SDE_PORTD_HOTPLUG;