diff mbox series

[PATCHv2] wifi: ath9k: ahb: do ioremap resource in one step

Message ID 20250421040044.44887-1-rosenp@gmail.com
State New
Headers show
Series [PATCHv2] wifi: ath9k: ahb: do ioremap resource in one step | expand

Commit Message

Rosen Penev April 21, 2025, 4 a.m. UTC
Simplifies probe slightly and adds extra error codes.

Switching from devm_ioremap to the platform variant ends up calling
devm_request_mem_region, which reserves the memory region for the
various wmacs. Per board, there is only one wmac and after some fairly
thorough analysis, there are no overlapping memory regions between wmacs
and other devices on the ahb.

Tested on a TP-Link Archer C7v2.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
 v2: remove wrong devm irq conversion.
 drivers/net/wireless/ath/ath9k/ahb.c | 13 +++----------
 1 file changed, 3 insertions(+), 10 deletions(-)

Comments

Rosen Penev April 22, 2025, 9:34 p.m. UTC | #1
On Tue, Apr 22, 2025 at 5:35 AM Toke Høiland-Jørgensen <toke@toke.dk> wrote:
>
> Rosen Penev <rosenp@gmail.com> writes:
>
> > Simplifies probe slightly and adds extra error codes.
> >
> > Switching from devm_ioremap to the platform variant ends up calling
> > devm_request_mem_region, which reserves the memory region for the
> > various wmacs. Per board, there is only one wmac and after some fairly
> > thorough analysis, there are no overlapping memory regions between wmacs
> > and other devices on the ahb.
> >
> > Tested on a TP-Link Archer C7v2.
> >
> > Signed-off-by: Rosen Penev <rosenp@gmail.com>
> > ---
> >  v2: remove wrong devm irq conversion.
> >  drivers/net/wireless/ath/ath9k/ahb.c | 13 +++----------
> >  1 file changed, 3 insertions(+), 10 deletions(-)
>
> Is there any benefit from this other than code simplification? Because,
> TBH, I'm not sure saving 7 lines of code is worth the risk of changing
> something we know works already...
It's the same API calls fundamentally. This change has already been
done treewide across various drivers.
>
> -Toke
Toke Høiland-Jørgensen May 1, 2025, 4:20 p.m. UTC | #2
Rosen Penev <rosenp@gmail.com> writes:

> On Tue, Apr 22, 2025 at 5:35 AM Toke Høiland-Jørgensen <toke@toke.dk> wrote:
>>
>> Rosen Penev <rosenp@gmail.com> writes:
>>
>> > Simplifies probe slightly and adds extra error codes.
>> >
>> > Switching from devm_ioremap to the platform variant ends up calling
>> > devm_request_mem_region, which reserves the memory region for the
>> > various wmacs. Per board, there is only one wmac and after some fairly
>> > thorough analysis, there are no overlapping memory regions between wmacs
>> > and other devices on the ahb.
>> >
>> > Tested on a TP-Link Archer C7v2.
>> >
>> > Signed-off-by: Rosen Penev <rosenp@gmail.com>
>> > ---
>> >  v2: remove wrong devm irq conversion.
>> >  drivers/net/wireless/ath/ath9k/ahb.c | 13 +++----------
>> >  1 file changed, 3 insertions(+), 10 deletions(-)
>>
>> Is there any benefit from this other than code simplification? Because,
>> TBH, I'm not sure saving 7 lines of code is worth the risk of changing
>> something we know works already...
> It's the same API calls fundamentally. This change has already been
> done treewide across various drivers.

Hmm, alright, let's give it a shot...

-Toke
Toke Høiland-Jørgensen May 2, 2025, 9:29 a.m. UTC | #3
Rosen Penev <rosenp@gmail.com> writes:

> Simplifies probe slightly and adds extra error codes.
>
> Switching from devm_ioremap to the platform variant ends up calling
> devm_request_mem_region, which reserves the memory region for the
> various wmacs. Per board, there is only one wmac and after some fairly
> thorough analysis, there are no overlapping memory regions between wmacs
> and other devices on the ahb.
>
> Tested on a TP-Link Archer C7v2.
>
> Signed-off-by: Rosen Penev <rosenp@gmail.com>

Acked-by: Toke Høiland-Jørgensen <toke@toke.dk>
diff mbox series

Patch

diff --git a/drivers/net/wireless/ath/ath9k/ahb.c b/drivers/net/wireless/ath/ath9k/ahb.c
index d4805e02b927..49b7ab26c477 100644
--- a/drivers/net/wireless/ath/ath9k/ahb.c
+++ b/drivers/net/wireless/ath/ath9k/ahb.c
@@ -74,7 +74,6 @@  static int ath_ahb_probe(struct platform_device *pdev)
 	void __iomem *mem;
 	struct ath_softc *sc;
 	struct ieee80211_hw *hw;
-	struct resource *res;
 	const struct platform_device_id *id = platform_get_device_id(pdev);
 	int irq;
 	int ret = 0;
@@ -86,16 +85,10 @@  static int ath_ahb_probe(struct platform_device *pdev)
 		return -EINVAL;
 	}
 
-	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	if (res == NULL) {
-		dev_err(&pdev->dev, "no memory resource found\n");
-		return -ENXIO;
-	}
-
-	mem = devm_ioremap(&pdev->dev, res->start, resource_size(res));
-	if (mem == NULL) {
+	mem = devm_platform_ioremap_resource(pdev, 0);
+	if (IS_ERR(mem)) {
 		dev_err(&pdev->dev, "ioremap failed\n");
-		return -ENOMEM;
+		return PTR_ERR(mem);
 	}
 
 	irq = platform_get_irq(pdev, 0);