[v2,1/2] wifi: ath11k: Use platform_get_irq() to get the interrupt

Message ID 20230201084131.v2.1.I69cf3d56c97098287fe3a70084ee515098390b70@changeid
State New
Headers
Series [v2,1/2] wifi: ath11k: Use platform_get_irq() to get the interrupt |

Commit Message

Doug Anderson Feb. 1, 2023, 4:54 p.m. UTC
  As of commit a1a2b7125e10 ("of/platform: Drop static setup of IRQ
resource from DT core"), we need to use platform_get_irq() instead of
platform_get_resource() to get our IRQs because
platform_get_resource() simply won't get them anymore.

This was already fixed in several other Atheros WiFi drivers,
apparently in response to Zeal Robot reports. An example of another
fix is commit 9503a1fc123d ("ath9k: Use platform_get_irq() to get the
interrupt"). ath11k seems to have been missed in this effort, though.

Without this change, WiFi wasn't coming up on my Qualcomm sc7280-based
hardware. Specifically, "platform_get_resource(pdev, IORESOURCE_IRQ,
i)" was failing even for i=0.

Tested-on: WCN6750 hw1.0 AHB WLAN.MSL.1.0.1-00887-QCAMSLSWPLZ-1

Fixes: a1a2b7125e10 ("of/platform: Drop static setup of IRQ resource from DT core")
Fixes: 00402f49d26f ("ath11k: Add support for WCN6750 device")
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Tested-by: Jun Yu <junyuu@chromium.org>
---

Changes in v2:
- Update commit message and point to patch that broke us (Jonas)

 drivers/net/wireless/ath/ath11k/ahb.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
  

Comments

Prabhakar Mahadev Lad Feb. 1, 2023, 8:39 p.m. UTC | #1
Hi Douglas,

Thank you for the patch.

> As of commit a1a2b7125e10 ("of/platform: Drop static setup of IRQ resource from DT core"), we need to
> use platform_get_irq() instead of
> platform_get_resource() to get our IRQs because
> platform_get_resource() simply won't get them anymore.
> 
> This was already fixed in several other Atheros WiFi drivers, apparently in response to Zeal Robot
> reports. An example of another fix is commit 9503a1fc123d ("ath9k: Use platform_get_irq() to get the
> interrupt"). ath11k seems to have been missed in this effort, though.
> 
> Without this change, WiFi wasn't coming up on my Qualcomm sc7280-based hardware. Specifically,
> "platform_get_resource(pdev, IORESOURCE_IRQ, i)" was failing even for i=0.
> 
> Tested-on: WCN6750 hw1.0 AHB WLAN.MSL.1.0.1-00887-QCAMSLSWPLZ-1
> 
> Fixes: a1a2b7125e10 ("of/platform: Drop static setup of IRQ resource from DT core")
> Fixes: 00402f49d26f ("ath11k: Add support for WCN6750 device")
> Signed-off-by: Douglas Anderson <dianders@chromium.org>
> Tested-by: Jun Yu <junyuu@chromium.org>
> ---
> 
> Changes in v2:
> - Update commit message and point to patch that broke us (Jonas)
> 
>  drivers/net/wireless/ath/ath11k/ahb.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
>

Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>

Unrelated to this patch, I think you need to call dma_unamp_resource() in the error path?

Cheers,
Prabhakar
 
> diff --git a/drivers/net/wireless/ath/ath11k/ahb.c b/drivers/net/wireless/ath/ath11k/ahb.c
> index d34a4d6325b2..f70a119bb5c8 100644
> --- a/drivers/net/wireless/ath/ath11k/ahb.c
> +++ b/drivers/net/wireless/ath/ath11k/ahb.c
> @@ -859,11 +859,11 @@ static int ath11k_ahb_setup_msi_resources(struct ath11k_base *ab)
>  	ab->pci.msi.ep_base_data = int_prop + 32;
> 
>  	for (i = 0; i < ab->pci.msi.config->total_vectors; i++) {
> -		res = platform_get_resource(pdev, IORESOURCE_IRQ, i);
> -		if (!res)
> -			return -ENODEV;
> +		ret = platform_get_irq(pdev, i);
> +		if (ret < 0)
> +			return ret;
> 
> -		ab->pci.msi.irqs[i] = res->start;
> +		ab->pci.msi.irqs[i] = ret;
>  	}
> 
>  	set_bit(ATH11K_FLAG_MULTI_MSI_VECTORS, &ab->dev_flags);
> --
> 2.39.1.456.gfc5497dd1b-goog
  
Kalle Valo Feb. 22, 2023, 9:51 a.m. UTC | #2
Douglas Anderson <dianders@chromium.org> wrote:

> As of commit a1a2b7125e10 ("of/platform: Drop static setup of IRQ
> resource from DT core"), we need to use platform_get_irq() instead of
> platform_get_resource() to get our IRQs because
> platform_get_resource() simply won't get them anymore.
> 
> This was already fixed in several other Atheros WiFi drivers,
> apparently in response to Zeal Robot reports. An example of another
> fix is commit 9503a1fc123d ("ath9k: Use platform_get_irq() to get the
> interrupt"). ath11k seems to have been missed in this effort, though.
> 
> Without this change, WiFi wasn't coming up on my Qualcomm sc7280-based
> hardware. Specifically, "platform_get_resource(pdev, IORESOURCE_IRQ,
> i)" was failing even for i=0.
> 
> Tested-on: WCN6750 hw1.0 AHB WLAN.MSL.1.0.1-00887-QCAMSLSWPLZ-1
> 
> Fixes: a1a2b7125e10 ("of/platform: Drop static setup of IRQ resource from DT core")
> Fixes: 00402f49d26f ("ath11k: Add support for WCN6750 device")
> Signed-off-by: Douglas Anderson <dianders@chromium.org>
> Tested-by: Jun Yu <junyuu@chromium.org>
> Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>

2 patches applied to ath-next branch of ath.git, thanks.

f117276638b7 wifi: ath11k: Use platform_get_irq() to get the interrupt
95c95251d054 wifi: ath5k: Use platform_get_irq() to get the interrupt
  

Patch

diff --git a/drivers/net/wireless/ath/ath11k/ahb.c b/drivers/net/wireless/ath/ath11k/ahb.c
index d34a4d6325b2..f70a119bb5c8 100644
--- a/drivers/net/wireless/ath/ath11k/ahb.c
+++ b/drivers/net/wireless/ath/ath11k/ahb.c
@@ -859,11 +859,11 @@  static int ath11k_ahb_setup_msi_resources(struct ath11k_base *ab)
 	ab->pci.msi.ep_base_data = int_prop + 32;
 
 	for (i = 0; i < ab->pci.msi.config->total_vectors; i++) {
-		res = platform_get_resource(pdev, IORESOURCE_IRQ, i);
-		if (!res)
-			return -ENODEV;
+		ret = platform_get_irq(pdev, i);
+		if (ret < 0)
+			return ret;
 
-		ab->pci.msi.irqs[i] = res->start;
+		ab->pci.msi.irqs[i] = ret;
 	}
 
 	set_bit(ATH11K_FLAG_MULTI_MSI_VECTORS, &ab->dev_flags);