drm/i915: kill Ivybridge vblank irq vfuncs
The IVB funtions are exactly the same as the ILK ones, with the exception of the bit register. So add IVB/HSW support to ironlake_enable_vblank and ironlake_disable_vblank, then kill the ivybridge functions. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com> Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
		
							parent
							
								
									f1af8fc10c
								
							
						
					
					
						commit
						b518421f5f
					
				| @ -1658,29 +1658,14 @@ static int ironlake_enable_vblank(struct drm_device *dev, int pipe) | ||||
| { | ||||
| 	drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; | ||||
| 	unsigned long irqflags; | ||||
| 	uint32_t bit = (INTEL_INFO(dev)->gen >= 7) ? DE_PIPE_VBLANK_IVB(pipe) : | ||||
| 						     DE_PIPE_VBLANK_ILK(pipe); | ||||
| 
 | ||||
| 	if (!i915_pipe_enabled(dev, pipe)) | ||||
| 		return -EINVAL; | ||||
| 
 | ||||
| 	spin_lock_irqsave(&dev_priv->irq_lock, irqflags); | ||||
| 	ironlake_enable_display_irq(dev_priv, (pipe == 0) ? | ||||
| 				    DE_PIPEA_VBLANK : DE_PIPEB_VBLANK); | ||||
| 	spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| static int ivybridge_enable_vblank(struct drm_device *dev, int pipe) | ||||
| { | ||||
| 	drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; | ||||
| 	unsigned long irqflags; | ||||
| 
 | ||||
| 	if (!i915_pipe_enabled(dev, pipe)) | ||||
| 		return -EINVAL; | ||||
| 
 | ||||
| 	spin_lock_irqsave(&dev_priv->irq_lock, irqflags); | ||||
| 	ironlake_enable_display_irq(dev_priv, | ||||
| 				    DE_PIPEA_VBLANK_IVB << (5 * pipe)); | ||||
| 	ironlake_enable_display_irq(dev_priv, bit); | ||||
| 	spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); | ||||
| 
 | ||||
| 	return 0; | ||||
| @ -1731,21 +1716,11 @@ static void ironlake_disable_vblank(struct drm_device *dev, int pipe) | ||||
| { | ||||
| 	drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; | ||||
| 	unsigned long irqflags; | ||||
| 	uint32_t bit = (INTEL_INFO(dev)->gen >= 7) ? DE_PIPE_VBLANK_IVB(pipe) : | ||||
| 						     DE_PIPE_VBLANK_ILK(pipe); | ||||
| 
 | ||||
| 	spin_lock_irqsave(&dev_priv->irq_lock, irqflags); | ||||
| 	ironlake_disable_display_irq(dev_priv, (pipe == 0) ? | ||||
| 				     DE_PIPEA_VBLANK : DE_PIPEB_VBLANK); | ||||
| 	spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); | ||||
| } | ||||
| 
 | ||||
| static void ivybridge_disable_vblank(struct drm_device *dev, int pipe) | ||||
| { | ||||
| 	drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; | ||||
| 	unsigned long irqflags; | ||||
| 
 | ||||
| 	spin_lock_irqsave(&dev_priv->irq_lock, irqflags); | ||||
| 	ironlake_disable_display_irq(dev_priv, | ||||
| 				     DE_PIPEA_VBLANK_IVB << (pipe * 5)); | ||||
| 	ironlake_disable_display_irq(dev_priv, bit); | ||||
| 	spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); | ||||
| } | ||||
| 
 | ||||
| @ -3071,8 +3046,8 @@ void intel_irq_init(struct drm_device *dev) | ||||
| 		dev->driver->irq_preinstall = ironlake_irq_preinstall; | ||||
| 		dev->driver->irq_postinstall = ivybridge_irq_postinstall; | ||||
| 		dev->driver->irq_uninstall = ironlake_irq_uninstall; | ||||
| 		dev->driver->enable_vblank = ivybridge_enable_vblank; | ||||
| 		dev->driver->disable_vblank = ivybridge_disable_vblank; | ||||
| 		dev->driver->enable_vblank = ironlake_enable_vblank; | ||||
| 		dev->driver->disable_vblank = ironlake_disable_vblank; | ||||
| 		dev_priv->display.hpd_irq_setup = ibx_hpd_irq_setup; | ||||
| 	} else if (HAS_PCH_SPLIT(dev)) { | ||||
| 		dev->driver->irq_handler = ironlake_irq_handler; | ||||
|  | ||||
| @ -3787,6 +3787,9 @@ | ||||
| #define DE_PLANEA_FLIP_DONE_IVB		(1<<3) | ||||
| #define DE_PIPEA_VBLANK_IVB		(1<<0) | ||||
| 
 | ||||
| #define DE_PIPE_VBLANK_ILK(pipe)	(1 << ((pipe * 8) + 7)) | ||||
| #define DE_PIPE_VBLANK_IVB(pipe)	(1 << (pipe * 5)) | ||||
| 
 | ||||
| #define VLV_MASTER_IER			0x4400c /* Gunit master IER */ | ||||
| #define   MASTER_INTERRUPT_ENABLE	(1<<31) | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user