Message ID | 20200912004532.1386-8-elder@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | net: ipa: wake up system on RX available | expand |
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 --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];
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