Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 013d5aa2 authored by Jesse Barnes's avatar Jesse Barnes Committed by Eric Anholt
Browse files

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: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
[anholt: hand-resolved for rebasing off of render power saving patch]
Signed-off-by: default avatarEric Anholt <eric@anholt.net>
parent f034b12d
Loading
Loading
Loading
Loading
+14 −3
Original line number Original line Diff line number Diff line
@@ -309,11 +309,21 @@ irqreturn_t ironlake_irq_handler(struct drm_device *dev)
	if (de_iir & DE_GSE)
	if (de_iir & DE_GSE)
		ironlake_opregion_gse_intr(dev);
		ironlake_opregion_gse_intr(dev);


	if (de_iir & DE_PIPEA_VBLANK)
	if (de_iir & DE_PLANEA_FLIP_DONE)
		intel_prepare_page_flip(dev, 0);

	if (de_iir & DE_PLANEB_FLIP_DONE)
		intel_prepare_page_flip(dev, 1);

	if (de_iir & DE_PIPEA_VBLANK) {
		drm_handle_vblank(dev, 0);
		drm_handle_vblank(dev, 0);
		intel_finish_page_flip(dev, 0);
	}


	if (de_iir & DE_PIPEB_VBLANK)
	if (de_iir & DE_PIPEB_VBLANK) {
		drm_handle_vblank(dev, 1);
		drm_handle_vblank(dev, 1);
		intel_finish_page_flip(dev, 1);
	}


	/* check event from PCH */
	/* check event from PCH */
	if ((de_iir & DE_PCH_EVENT) &&
	if ((de_iir & DE_PCH_EVENT) &&
@@ -1022,7 +1032,8 @@ static int ironlake_irq_postinstall(struct drm_device *dev)
{
{
	drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
	drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
	/* enable kind of interrupts always enabled */
	/* enable kind of interrupts always enabled */
	u32 display_mask = DE_MASTER_IRQ_CONTROL | DE_GSE | DE_PCH_EVENT;
	u32 display_mask = DE_MASTER_IRQ_CONTROL | DE_GSE | DE_PCH_EVENT |
			   DE_PLANEA_FLIP_DONE | DE_PLANEB_FLIP_DONE;
	u32 render_mask = GT_USER_INTERRUPT;
	u32 render_mask = GT_USER_INTERRUPT;
	u32 hotplug_mask = SDE_CRT_HOTPLUG | SDE_PORTB_HOTPLUG |
	u32 hotplug_mask = SDE_CRT_HOTPLUG | SDE_PORTB_HOTPLUG |
			   SDE_PORTC_HOTPLUG | SDE_PORTD_HOTPLUG;
			   SDE_PORTC_HOTPLUG | SDE_PORTD_HOTPLUG;