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

Commit fae7043c authored by Dave Airlie's avatar Dave Airlie
Browse files

drm/radeon: don't actually enable the IRQ regs until irq is enabled



vblank can try and enable the IRQ registers before we've set the interrupt
handler up.

Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent 218d11a8
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -299,7 +299,6 @@ typedef struct drm_radeon_private {
	atomic_t swi_emitted;
	int vblank_crtc;
	uint32_t irq_enable_reg;
	int irq_enabled;
	uint32_t r500_disp_irq_reg;

	struct radeon_surface surfaces[RADEON_MAX_SURFACES];
+4 −4
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ void radeon_irq_set_state(struct drm_device *dev, u32 mask, int state)
	else
		dev_priv->irq_enable_reg &= ~mask;

	if (!dev->irq_enabled)
		RADEON_WRITE(RADEON_GEN_INT_CNTL, dev_priv->irq_enable_reg);
}

@@ -56,6 +57,7 @@ static void r500_vbl_irq_set_state(struct drm_device *dev, u32 mask, int state)
	else
		dev_priv->r500_disp_irq_reg &= ~mask;

	if (!dev->irq_enabled)
		RADEON_WRITE(R500_DxMODE_INT_MASK, dev_priv->r500_disp_irq_reg);
}

@@ -355,8 +357,6 @@ void radeon_driver_irq_uninstall(struct drm_device * dev)
	if (!dev_priv)
		return;

	dev_priv->irq_enabled = 0;

	if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_RS690)
		RADEON_WRITE(R500_DxMODE_INT_MASK, 0);
	/* Disable *all* interrupts */