diff mbox series

[net-next,v2,7/7] net: ipa: do not enable GSI interrupt for wakeup

Message ID 20200912004532.1386-8-elder@linaro.org
State Superseded
Headers show
Series net: ipa: wake up system on RX available | expand

Commit Message

Alex Elder Sept. 12, 2020, 12:45 a.m. UTC
We now trigger a system resume when we receive an IPA SUSPEND
interrupt.  We should *not* wake up on GSI interrupts.

Signed-off-by: Alex Elder <elder@linaro.org>

---
 drivers/net/ipa/gsi.c | 17 ++++-------------
 drivers/net/ipa/gsi.h |  1 -
 2 files changed, 4 insertions(+), 14 deletions(-)

-- 
2.20.1

Comments

Bjorn Andersson Sept. 13, 2020, 2:50 a.m. UTC | #1
On Fri 11 Sep 19:45 CDT 2020, Alex Elder wrote:

> We now trigger a system resume when we receive an IPA SUSPEND

> interrupt.  We should *not* wake up on GSI interrupts.

> 


Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>


> Signed-off-by: Alex Elder <elder@linaro.org>

> ---

>  drivers/net/ipa/gsi.c | 17 ++++-------------

>  drivers/net/ipa/gsi.h |  1 -

>  2 files changed, 4 insertions(+), 14 deletions(-)

> 

> diff --git a/drivers/net/ipa/gsi.c b/drivers/net/ipa/gsi.c

> index 0e63d35320aaf..cb75f7d540571 100644

> --- a/drivers/net/ipa/gsi.c

> +++ b/drivers/net/ipa/gsi.c

> @@ -1987,31 +1987,26 @@ int gsi_init(struct gsi *gsi, struct platform_device *pdev, bool prefetch,

>  	}

>  	gsi->irq = irq;

>  

> -	ret = enable_irq_wake(gsi->irq);

> -	if (ret)

> -		dev_warn(dev, "error %d enabling gsi wake irq\n", ret);

> -	gsi->irq_wake_enabled = !ret;

> -

>  	/* Get GSI memory range and map it */

>  	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "gsi");

>  	if (!res) {

>  		dev_err(dev, "DT error getting \"gsi\" memory property\n");

>  		ret = -ENODEV;

> -		goto err_disable_irq_wake;

> +		goto err_free_irq;

>  	}

>  

>  	size = resource_size(res);

>  	if (res->start > U32_MAX || size > U32_MAX - res->start) {

>  		dev_err(dev, "DT memory resource \"gsi\" out of range\n");

>  		ret = -EINVAL;

> -		goto err_disable_irq_wake;

> +		goto err_free_irq;

>  	}

>  

>  	gsi->virt = ioremap(res->start, size);

>  	if (!gsi->virt) {

>  		dev_err(dev, "unable to remap \"gsi\" memory\n");

>  		ret = -ENOMEM;

> -		goto err_disable_irq_wake;

> +		goto err_free_irq;

>  	}

>  

>  	ret = gsi_channel_init(gsi, prefetch, count, data, modem_alloc);

> @@ -2025,9 +2020,7 @@ int gsi_init(struct gsi *gsi, struct platform_device *pdev, bool prefetch,

>  

>  err_iounmap:

>  	iounmap(gsi->virt);

> -err_disable_irq_wake:

> -	if (gsi->irq_wake_enabled)

> -		(void)disable_irq_wake(gsi->irq);

> +err_free_irq:

>  	free_irq(gsi->irq, gsi);

>  

>  	return ret;

> @@ -2038,8 +2031,6 @@ void gsi_exit(struct gsi *gsi)

>  {

>  	mutex_destroy(&gsi->mutex);

>  	gsi_channel_exit(gsi);

> -	if (gsi->irq_wake_enabled)

> -		(void)disable_irq_wake(gsi->irq);

>  	free_irq(gsi->irq, gsi);

>  	iounmap(gsi->virt);

>  }

> diff --git a/drivers/net/ipa/gsi.h b/drivers/net/ipa/gsi.h

> index 061312773df09..3f9f29d531c43 100644

> --- a/drivers/net/ipa/gsi.h

> +++ b/drivers/net/ipa/gsi.h

> @@ -150,7 +150,6 @@ struct gsi {

>  	struct net_device dummy_dev;	/* needed for NAPI */

>  	void __iomem *virt;

>  	u32 irq;

> -	bool irq_wake_enabled;

>  	u32 channel_count;

>  	u32 evt_ring_count;

>  	struct gsi_channel channel[GSI_CHANNEL_COUNT_MAX];

> -- 

> 2.20.1

>
diff mbox series

Patch

diff --git a/drivers/net/ipa/gsi.c b/drivers/net/ipa/gsi.c
index 0e63d35320aaf..cb75f7d540571 100644
--- a/drivers/net/ipa/gsi.c
+++ b/drivers/net/ipa/gsi.c
@@ -1987,31 +1987,26 @@  int gsi_init(struct gsi *gsi, struct platform_device *pdev, bool prefetch,
 	}
 	gsi->irq = irq;
 
-	ret = enable_irq_wake(gsi->irq);
-	if (ret)
-		dev_warn(dev, "error %d enabling gsi wake irq\n", ret);
-	gsi->irq_wake_enabled = !ret;
-
 	/* Get GSI memory range and map it */
 	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "gsi");
 	if (!res) {
 		dev_err(dev, "DT error getting \"gsi\" memory property\n");
 		ret = -ENODEV;
-		goto err_disable_irq_wake;
+		goto err_free_irq;
 	}
 
 	size = resource_size(res);
 	if (res->start > U32_MAX || size > U32_MAX - res->start) {
 		dev_err(dev, "DT memory resource \"gsi\" out of range\n");
 		ret = -EINVAL;
-		goto err_disable_irq_wake;
+		goto err_free_irq;
 	}
 
 	gsi->virt = ioremap(res->start, size);
 	if (!gsi->virt) {
 		dev_err(dev, "unable to remap \"gsi\" memory\n");
 		ret = -ENOMEM;
-		goto err_disable_irq_wake;
+		goto err_free_irq;
 	}
 
 	ret = gsi_channel_init(gsi, prefetch, count, data, modem_alloc);
@@ -2025,9 +2020,7 @@  int gsi_init(struct gsi *gsi, struct platform_device *pdev, bool prefetch,
 
 err_iounmap:
 	iounmap(gsi->virt);
-err_disable_irq_wake:
-	if (gsi->irq_wake_enabled)
-		(void)disable_irq_wake(gsi->irq);
+err_free_irq:
 	free_irq(gsi->irq, gsi);
 
 	return ret;
@@ -2038,8 +2031,6 @@  void gsi_exit(struct gsi *gsi)
 {
 	mutex_destroy(&gsi->mutex);
 	gsi_channel_exit(gsi);
-	if (gsi->irq_wake_enabled)
-		(void)disable_irq_wake(gsi->irq);
 	free_irq(gsi->irq, gsi);
 	iounmap(gsi->virt);
 }
diff --git a/drivers/net/ipa/gsi.h b/drivers/net/ipa/gsi.h
index 061312773df09..3f9f29d531c43 100644
--- a/drivers/net/ipa/gsi.h
+++ b/drivers/net/ipa/gsi.h
@@ -150,7 +150,6 @@  struct gsi {
 	struct net_device dummy_dev;	/* needed for NAPI */
 	void __iomem *virt;
 	u32 irq;
-	bool irq_wake_enabled;
 	u32 channel_count;
 	u32 evt_ring_count;
 	struct gsi_channel channel[GSI_CHANNEL_COUNT_MAX];