diff options
Diffstat (limited to 'drivers/gpu/drm/vc4/vc4_irq.c')
| -rw-r--r-- | drivers/gpu/drm/vc4/vc4_irq.c | 16 | 
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/gpu/drm/vc4/vc4_irq.c b/drivers/gpu/drm/vc4/vc4_irq.c index 4342fb43e8c1..2eacfb6773d2 100644 --- a/drivers/gpu/drm/vc4/vc4_irq.c +++ b/drivers/gpu/drm/vc4/vc4_irq.c @@ -265,6 +265,9 @@ vc4_irq_enable(struct drm_device *dev)  {  	struct vc4_dev *vc4 = to_vc4_dev(dev); +	if (WARN_ON_ONCE(vc4->is_vc5)) +		return; +  	if (!vc4->v3d)  		return; @@ -279,6 +282,9 @@ vc4_irq_disable(struct drm_device *dev)  {  	struct vc4_dev *vc4 = to_vc4_dev(dev); +	if (WARN_ON_ONCE(vc4->is_vc5)) +		return; +  	if (!vc4->v3d)  		return; @@ -296,8 +302,12 @@ vc4_irq_disable(struct drm_device *dev)  int vc4_irq_install(struct drm_device *dev, int irq)  { +	struct vc4_dev *vc4 = to_vc4_dev(dev);  	int ret; +	if (WARN_ON_ONCE(vc4->is_vc5)) +		return -ENODEV; +  	if (irq == IRQ_NOTCONNECTED)  		return -ENOTCONN; @@ -316,6 +326,9 @@ void vc4_irq_uninstall(struct drm_device *dev)  {  	struct vc4_dev *vc4 = to_vc4_dev(dev); +	if (WARN_ON_ONCE(vc4->is_vc5)) +		return; +  	vc4_irq_disable(dev);  	free_irq(vc4->irq, dev);  } @@ -326,6 +339,9 @@ void vc4_irq_reset(struct drm_device *dev)  	struct vc4_dev *vc4 = to_vc4_dev(dev);  	unsigned long irqflags; +	if (WARN_ON_ONCE(vc4->is_vc5)) +		return; +  	/* Acknowledge any stale IRQs. */  	V3D_WRITE(V3D_INTCTL, V3D_DRIVER_IRQS);  | 
