diff options
Diffstat (limited to 'drivers/gpu/drm/i915/i915_irq.c')
| -rw-r--r-- | drivers/gpu/drm/i915/i915_irq.c | 156 | 
1 files changed, 74 insertions, 82 deletions
| diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c index 95042879bec4..191ed8bb1d9c 100644 --- a/drivers/gpu/drm/i915/i915_irq.c +++ b/drivers/gpu/drm/i915/i915_irq.c @@ -33,6 +33,7 @@  #include <drm/drm_drv.h> +#include "display/intel_display_core.h"  #include "display/intel_display_irq.h"  #include "display/intel_hotplug.h"  #include "display/intel_hotplug_irq.h" @@ -230,7 +231,7 @@ out:  static irqreturn_t valleyview_irq_handler(int irq, void *arg)  {  	struct drm_i915_private *dev_priv = arg; -	struct intel_display *display = &dev_priv->display; +	struct intel_display *display = dev_priv->display;  	irqreturn_t ret = IRQ_NONE;  	if (!intel_irqs_enabled(dev_priv)) @@ -324,7 +325,7 @@ static irqreturn_t valleyview_irq_handler(int irq, void *arg)  static irqreturn_t cherryview_irq_handler(int irq, void *arg)  {  	struct drm_i915_private *dev_priv = arg; -	struct intel_display *display = &dev_priv->display; +	struct intel_display *display = dev_priv->display;  	irqreturn_t ret = IRQ_NONE;  	if (!intel_irqs_enabled(dev_priv)) @@ -418,7 +419,7 @@ static irqreturn_t cherryview_irq_handler(int irq, void *arg)  static irqreturn_t ilk_irq_handler(int irq, void *arg)  {  	struct drm_i915_private *i915 = arg; -	struct intel_display *display = &i915->display; +	struct intel_display *display = i915->display;  	void __iomem * const regs = intel_uncore_regs(&i915->uncore);  	u32 de_iir, gt_iir, de_ier, sde_ier = 0;  	irqreturn_t ret = IRQ_NONE; @@ -507,7 +508,7 @@ static inline void gen8_master_intr_enable(void __iomem * const regs)  static irqreturn_t gen8_irq_handler(int irq, void *arg)  {  	struct drm_i915_private *dev_priv = arg; -	struct intel_display *display = &dev_priv->display; +	struct intel_display *display = dev_priv->display;  	void __iomem * const regs = intel_uncore_regs(&dev_priv->uncore);  	u32 master_ctl; @@ -558,7 +559,7 @@ static inline void gen11_master_intr_enable(void __iomem * const regs)  static irqreturn_t gen11_irq_handler(int irq, void *arg)  {  	struct drm_i915_private *i915 = arg; -	struct intel_display *display = &i915->display; +	struct intel_display *display = i915->display;  	void __iomem * const regs = intel_uncore_regs(&i915->uncore);  	struct intel_gt *gt = to_gt(i915);  	u32 master_ctl; @@ -616,7 +617,7 @@ static inline void dg1_master_intr_enable(void __iomem * const regs)  static irqreturn_t dg1_irq_handler(int irq, void *arg)  {  	struct drm_i915_private * const i915 = arg; -	struct intel_display *display = &i915->display; +	struct intel_display *display = i915->display;  	struct intel_gt *gt = to_gt(i915);  	void __iomem * const regs = intel_uncore_regs(gt->uncore);  	u32 master_tile_ctl, master_ctl; @@ -660,7 +661,7 @@ static irqreturn_t dg1_irq_handler(int irq, void *arg)  static void ilk_irq_reset(struct drm_i915_private *dev_priv)  { -	struct intel_display *display = &dev_priv->display; +	struct intel_display *display = dev_priv->display;  	struct intel_uncore *uncore = &dev_priv->uncore;  	gen2_irq_reset(uncore, DE_IRQ_REGS); @@ -681,7 +682,7 @@ static void ilk_irq_reset(struct drm_i915_private *dev_priv)  static void valleyview_irq_reset(struct drm_i915_private *dev_priv)  { -	struct intel_display *display = &dev_priv->display; +	struct intel_display *display = dev_priv->display;  	intel_uncore_write(&dev_priv->uncore, VLV_MASTER_IER, 0);  	intel_uncore_posting_read(&dev_priv->uncore, VLV_MASTER_IER); @@ -693,7 +694,7 @@ static void valleyview_irq_reset(struct drm_i915_private *dev_priv)  static void gen8_irq_reset(struct drm_i915_private *dev_priv)  { -	struct intel_display *display = &dev_priv->display; +	struct intel_display *display = dev_priv->display;  	struct intel_uncore *uncore = &dev_priv->uncore;  	gen8_master_intr_disable(intel_uncore_regs(uncore)); @@ -705,7 +706,7 @@ static void gen8_irq_reset(struct drm_i915_private *dev_priv)  static void gen11_irq_reset(struct drm_i915_private *dev_priv)  { -	struct intel_display *display = &dev_priv->display; +	struct intel_display *display = dev_priv->display;  	struct intel_gt *gt = to_gt(dev_priv);  	struct intel_uncore *uncore = gt->uncore; @@ -720,7 +721,7 @@ static void gen11_irq_reset(struct drm_i915_private *dev_priv)  static void dg1_irq_reset(struct drm_i915_private *dev_priv)  { -	struct intel_display *display = &dev_priv->display; +	struct intel_display *display = dev_priv->display;  	struct intel_uncore *uncore = &dev_priv->uncore;  	struct intel_gt *gt;  	unsigned int i; @@ -740,7 +741,7 @@ static void dg1_irq_reset(struct drm_i915_private *dev_priv)  static void cherryview_irq_reset(struct drm_i915_private *dev_priv)  { -	struct intel_display *display = &dev_priv->display; +	struct intel_display *display = dev_priv->display;  	struct intel_uncore *uncore = &dev_priv->uncore;  	intel_uncore_write(uncore, GEN8_MASTER_IRQ, 0); @@ -755,7 +756,7 @@ static void cherryview_irq_reset(struct drm_i915_private *dev_priv)  static void ilk_irq_postinstall(struct drm_i915_private *dev_priv)  { -	struct intel_display *display = &dev_priv->display; +	struct intel_display *display = dev_priv->display;  	gen5_gt_irq_postinstall(to_gt(dev_priv)); @@ -764,7 +765,7 @@ static void ilk_irq_postinstall(struct drm_i915_private *dev_priv)  static void valleyview_irq_postinstall(struct drm_i915_private *dev_priv)  { -	struct intel_display *display = &dev_priv->display; +	struct intel_display *display = dev_priv->display;  	gen5_gt_irq_postinstall(to_gt(dev_priv)); @@ -776,7 +777,7 @@ static void valleyview_irq_postinstall(struct drm_i915_private *dev_priv)  static void gen8_irq_postinstall(struct drm_i915_private *dev_priv)  { -	struct intel_display *display = &dev_priv->display; +	struct intel_display *display = dev_priv->display;  	gen8_gt_irq_postinstall(to_gt(dev_priv));  	gen8_de_irq_postinstall(display); @@ -786,7 +787,7 @@ static void gen8_irq_postinstall(struct drm_i915_private *dev_priv)  static void gen11_irq_postinstall(struct drm_i915_private *dev_priv)  { -	struct intel_display *display = &dev_priv->display; +	struct intel_display *display = dev_priv->display;  	struct intel_gt *gt = to_gt(dev_priv);  	struct intel_uncore *uncore = gt->uncore;  	u32 gu_misc_masked = GEN11_GU_MISC_GSE; @@ -802,7 +803,7 @@ static void gen11_irq_postinstall(struct drm_i915_private *dev_priv)  static void dg1_irq_postinstall(struct drm_i915_private *dev_priv)  { -	struct intel_display *display = &dev_priv->display; +	struct intel_display *display = dev_priv->display;  	struct intel_uncore *uncore = &dev_priv->uncore;  	u32 gu_misc_masked = GEN11_GU_MISC_GSE;  	struct intel_gt *gt; @@ -821,7 +822,7 @@ static void dg1_irq_postinstall(struct drm_i915_private *dev_priv)  static void cherryview_irq_postinstall(struct drm_i915_private *dev_priv)  { -	struct intel_display *display = &dev_priv->display; +	struct intel_display *display = dev_priv->display;  	gen8_gt_irq_postinstall(to_gt(dev_priv)); @@ -894,7 +895,7 @@ static void i9xx_error_irq_handler(struct drm_i915_private *dev_priv,  static void i915_irq_reset(struct drm_i915_private *dev_priv)  { -	struct intel_display *display = &dev_priv->display; +	struct intel_display *display = dev_priv->display;  	struct intel_uncore *uncore = &dev_priv->uncore;  	i9xx_display_irq_reset(display); @@ -906,7 +907,7 @@ static void i915_irq_reset(struct drm_i915_private *dev_priv)  static void i915_irq_postinstall(struct drm_i915_private *dev_priv)  { -	struct intel_display *display = &dev_priv->display; +	struct intel_display *display = dev_priv->display;  	struct intel_uncore *uncore = &dev_priv->uncore;  	u32 enable_mask; @@ -941,7 +942,7 @@ static void i915_irq_postinstall(struct drm_i915_private *dev_priv)  static irqreturn_t i915_irq_handler(int irq, void *arg)  {  	struct drm_i915_private *dev_priv = arg; -	struct intel_display *display = &dev_priv->display; +	struct intel_display *display = dev_priv->display;  	irqreturn_t ret = IRQ_NONE;  	if (!intel_irqs_enabled(dev_priv)) @@ -996,7 +997,7 @@ static irqreturn_t i915_irq_handler(int irq, void *arg)  static void i965_irq_reset(struct drm_i915_private *dev_priv)  { -	struct intel_display *display = &dev_priv->display; +	struct intel_display *display = dev_priv->display;  	struct intel_uncore *uncore = &dev_priv->uncore;  	i9xx_display_irq_reset(display); @@ -1027,7 +1028,7 @@ static u32 i965_error_mask(struct drm_i915_private *i915)  static void i965_irq_postinstall(struct drm_i915_private *dev_priv)  { -	struct intel_display *display = &dev_priv->display; +	struct intel_display *display = dev_priv->display;  	struct intel_uncore *uncore = &dev_priv->uncore;  	u32 enable_mask; @@ -1059,7 +1060,7 @@ static void i965_irq_postinstall(struct drm_i915_private *dev_priv)  static irqreturn_t i965_irq_handler(int irq, void *arg)  {  	struct drm_i915_private *dev_priv = arg; -	struct intel_display *display = &dev_priv->display; +	struct intel_display *display = dev_priv->display;  	irqreturn_t ret = IRQ_NONE;  	if (!intel_irqs_enabled(dev_priv)) @@ -1152,71 +1153,62 @@ void intel_irq_fini(struct drm_i915_private *i915)  static irq_handler_t intel_irq_handler(struct drm_i915_private *dev_priv)  { -	if (HAS_GMCH(dev_priv)) { -		if (IS_CHERRYVIEW(dev_priv)) -			return cherryview_irq_handler; -		else if (IS_VALLEYVIEW(dev_priv)) -			return valleyview_irq_handler; -		else if (GRAPHICS_VER(dev_priv) == 4) -			return i965_irq_handler; -		else -			return i915_irq_handler; -	} else { -		if (GRAPHICS_VER_FULL(dev_priv) >= IP_VER(12, 10)) -			return dg1_irq_handler; -		else if (GRAPHICS_VER(dev_priv) >= 11) -			return gen11_irq_handler; -		else if (GRAPHICS_VER(dev_priv) >= 8) -			return gen8_irq_handler; -		else -			return ilk_irq_handler; -	} +	if (GRAPHICS_VER_FULL(dev_priv) >= IP_VER(12, 10)) +		return dg1_irq_handler; +	else if (GRAPHICS_VER(dev_priv) >= 11) +		return gen11_irq_handler; +	else if (IS_CHERRYVIEW(dev_priv)) +		return cherryview_irq_handler; +	else if (GRAPHICS_VER(dev_priv) >= 8) +		return gen8_irq_handler; +	else if (IS_VALLEYVIEW(dev_priv)) +		return valleyview_irq_handler; +	else if (GRAPHICS_VER(dev_priv) >= 5) +		return ilk_irq_handler; +	else if (GRAPHICS_VER(dev_priv) == 4) +		return i965_irq_handler; +	else +		return i915_irq_handler;  }  static void intel_irq_reset(struct drm_i915_private *dev_priv)  { -	if (HAS_GMCH(dev_priv)) { -		if (IS_CHERRYVIEW(dev_priv)) -			cherryview_irq_reset(dev_priv); -		else if (IS_VALLEYVIEW(dev_priv)) -			valleyview_irq_reset(dev_priv); -		else if (GRAPHICS_VER(dev_priv) == 4) -			i965_irq_reset(dev_priv); -		else -			i915_irq_reset(dev_priv); -	} else { -		if (GRAPHICS_VER_FULL(dev_priv) >= IP_VER(12, 10)) -			dg1_irq_reset(dev_priv); -		else if (GRAPHICS_VER(dev_priv) >= 11) -			gen11_irq_reset(dev_priv); -		else if (GRAPHICS_VER(dev_priv) >= 8) -			gen8_irq_reset(dev_priv); -		else -			ilk_irq_reset(dev_priv); -	} +	if (GRAPHICS_VER_FULL(dev_priv) >= IP_VER(12, 10)) +		dg1_irq_reset(dev_priv); +	else if (GRAPHICS_VER(dev_priv) >= 11) +		gen11_irq_reset(dev_priv); +	else if (IS_CHERRYVIEW(dev_priv)) +		cherryview_irq_reset(dev_priv); +	else if (GRAPHICS_VER(dev_priv) >= 8) +		gen8_irq_reset(dev_priv); +	else if (IS_VALLEYVIEW(dev_priv)) +		valleyview_irq_reset(dev_priv); +	else if (GRAPHICS_VER(dev_priv) >= 5) +		ilk_irq_reset(dev_priv); +	else if (GRAPHICS_VER(dev_priv) == 4) +		i965_irq_reset(dev_priv); +	else +		i915_irq_reset(dev_priv);  }  static void intel_irq_postinstall(struct drm_i915_private *dev_priv)  { -	if (HAS_GMCH(dev_priv)) { -		if (IS_CHERRYVIEW(dev_priv)) -			cherryview_irq_postinstall(dev_priv); -		else if (IS_VALLEYVIEW(dev_priv)) -			valleyview_irq_postinstall(dev_priv); -		else if (GRAPHICS_VER(dev_priv) == 4) -			i965_irq_postinstall(dev_priv); -		else -			i915_irq_postinstall(dev_priv); -	} else { -		if (GRAPHICS_VER_FULL(dev_priv) >= IP_VER(12, 10)) -			dg1_irq_postinstall(dev_priv); -		else if (GRAPHICS_VER(dev_priv) >= 11) -			gen11_irq_postinstall(dev_priv); -		else if (GRAPHICS_VER(dev_priv) >= 8) -			gen8_irq_postinstall(dev_priv); -		else -			ilk_irq_postinstall(dev_priv); -	} +	if (GRAPHICS_VER_FULL(dev_priv) >= IP_VER(12, 10)) +		dg1_irq_postinstall(dev_priv); +	else if (GRAPHICS_VER(dev_priv) >= 11) +		gen11_irq_postinstall(dev_priv); +	else if (IS_CHERRYVIEW(dev_priv)) +		cherryview_irq_postinstall(dev_priv); +	else if (GRAPHICS_VER(dev_priv) >= 8) +		gen8_irq_postinstall(dev_priv); +	else if (IS_VALLEYVIEW(dev_priv)) +		valleyview_irq_postinstall(dev_priv); +	else if (GRAPHICS_VER(dev_priv) >= 5) +		ilk_irq_postinstall(dev_priv); +	else if (GRAPHICS_VER(dev_priv) == 4) +		i965_irq_postinstall(dev_priv); +	else +		i915_irq_postinstall(dev_priv);  }  /** @@ -1265,7 +1257,7 @@ int intel_irq_install(struct drm_i915_private *dev_priv)   */  void intel_irq_uninstall(struct drm_i915_private *dev_priv)  { -	struct intel_display *display = &dev_priv->display; +	struct intel_display *display = dev_priv->display;  	int irq = to_pci_dev(dev_priv->drm.dev)->irq;  	if (drm_WARN_ON(&dev_priv->drm, !dev_priv->irqs_enabled)) | 
