* [PATCH] wifi: brcmfmac: of: Support interrupts-extended
@ 2024-06-21 22:55 Alex Bee
2024-06-22 13:38 ` Arend Van Spriel
0 siblings, 1 reply; 7+ messages in thread
From: Alex Bee @ 2024-06-21 22:55 UTC (permalink / raw)
To: Arend van Spriel, Kalle Valo, linux-wireless, brcm80211,
brcm80211-dev-list.pdl, linux-kernel
Cc: Alex Bee
This "new" version of defining external interrupts is around for a very
long time now and supported and preferred by irq_of_parse_and_map
respectively of_irq_parse_one.
Support it in brcmfmac as well by checking if either "interrupts" or
"interrupts-extended" property exists as indication if irq_of_parse_and_map
should be called.
Signed-off-by: Alex Bee <knaerzche@gmail.com>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
index e406e11481a6..6cdc941552e3 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
@@ -129,7 +129,8 @@ void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type,
sdio->drive_strength = val;
/* make sure there are interrupts defined in the node */
- if (!of_property_present(np, "interrupts"))
+ if (!of_property_present(np, "interrupts") &&
+ !of_property_present(np, "interrupts-extended"))
return;
irq = irq_of_parse_and_map(np, 0);
--
2.45.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] wifi: brcmfmac: of: Support interrupts-extended
2024-06-21 22:55 [PATCH] wifi: brcmfmac: of: Support interrupts-extended Alex Bee
@ 2024-06-22 13:38 ` Arend Van Spriel
2024-06-22 13:49 ` Arend Van Spriel
0 siblings, 1 reply; 7+ messages in thread
From: Arend Van Spriel @ 2024-06-22 13:38 UTC (permalink / raw)
To: Alex Bee, Kalle Valo, linux-wireless, brcm80211,
brcm80211-dev-list.pdl, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 609 bytes --]
On June 22, 2024 12:56:02 AM Alex Bee <knaerzche@gmail.com> wrote:
> This "new" version of defining external interrupts is around for a very
> long time now and supported and preferred by irq_of_parse_and_map
> respectively of_irq_parse_one.
>
> Support it in brcmfmac as well by checking if either "interrupts" or
> "interrupts-extended" property exists as indication if irq_of_parse_and_map
> should be called.
All very interesting, but why should we add code for something that is not
specified in the bindings documentation?
NAK (for now). Feel free to update the bindings document.
Regards,
Arend
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 4219 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] wifi: brcmfmac: of: Support interrupts-extended
2024-06-22 13:38 ` Arend Van Spriel
@ 2024-06-22 13:49 ` Arend Van Spriel
2024-06-22 14:07 ` Alex Bee
0 siblings, 1 reply; 7+ messages in thread
From: Arend Van Spriel @ 2024-06-22 13:49 UTC (permalink / raw)
To: Alex Bee, Kalle Valo, linux-wireless, brcm80211,
brcm80211-dev-list.pdl, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 1195 bytes --]
On June 22, 2024 3:38:32 PM Arend Van Spriel <arend.vanspriel@broadcom.com>
wrote:
> On June 22, 2024 12:56:02 AM Alex Bee <knaerzche@gmail.com> wrote:
>
>> This "new" version of defining external interrupts is around for a very
>> long time now and supported and preferred by irq_of_parse_and_map
>> respectively of_irq_parse_one.
>>
>> Support it in brcmfmac as well by checking if either "interrupts" or
>> "interrupts-extended" property exists as indication if irq_of_parse_and_map
>> should be called.
>
> All very interesting, but why should we add code for something that is not
> specified in the bindings documentation?
>
> NAK (for now). Feel free to update the bindings document.
So looked up the interrupts-extended definition:
The "interrupts-extended" property is a special form; useful when a node needs
to reference multiple interrupt parents or a different interrupt parent than
the inherited one. Each entry in this property contains both the parent phandle
and the interrupt specifier.
Given that brcmfmac device will only have one interrupt item defined there
is no need to use it. If someone can give a good argument to support it
please chime in.
Regards,
Arend
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 4219 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] wifi: brcmfmac: of: Support interrupts-extended
2024-06-22 13:49 ` Arend Van Spriel
@ 2024-06-22 14:07 ` Alex Bee
2024-06-22 14:40 ` Alex Bee
2024-06-22 17:46 ` Arend Van Spriel
0 siblings, 2 replies; 7+ messages in thread
From: Alex Bee @ 2024-06-22 14:07 UTC (permalink / raw)
To: Arend Van Spriel, Kalle Valo, linux-wireless, brcm80211,
brcm80211-dev-list.pdl, linux-kernel
Am 22.06.24 um 15:49 schrieb Arend Van Spriel:
> On June 22, 2024 3:38:32 PM Arend Van Spriel
> <arend.vanspriel@broadcom.com> wrote:
>
>> On June 22, 2024 12:56:02 AM Alex Bee <knaerzche@gmail.com> wrote:
>>
>>> This "new" version of defining external interrupts is around for a very
>>> long time now and supported and preferred by irq_of_parse_and_map
>>> respectively of_irq_parse_one.
>>>
>>> Support it in brcmfmac as well by checking if either "interrupts" or
>>> "interrupts-extended" property exists as indication if
>>> irq_of_parse_and_map
>>> should be called.
>>
>> All very interesting, but why should we add code for something that
>> is not
>> specified in the bindings documentation?
>>
>> NAK (for now). Feel free to update the bindings document.
>
Sure, if you insist on it, I can update the bindings document. So far not
many (no) users did that, as it is clearly specified as an alternative in
devicetree/bindings/interrupt-controller/interrupts.txt (sure, it's not yet
converted to yaml yet).
> So looked up the interrupts-extended definition:
>
> The "interrupts-extended" property is a special form; useful when a
> node needs
> to reference multiple interrupt parents or a different interrupt
> parent than
> the inherited one. Each entry in this property contains both the
> parent phandle
> and the interrupt specifier.
>
They point in this particular case is not how many interrupts exsist, but
"... or a different interrupt parent than
the inherited ..." which is almost always the case for brcmfmac, as it
usually specifies a gpio controller as interrupt parent. So:
...
interrupt-parent = <&gpio0>;
interrupts = <RK_PA0 IRQ_TYPE_LEVEL_HIGH>;
...
gets to (a single line):
...
interrupts-extended: = <&gpio0 RK_PA0 IRQ_TYPE_LEVEL_HIGH>;
...
Which is a much nicer form, imho.
And by the way for instance
arch/arm/boot/dts/qcom/qcom-apq8026-lg-lenok.dts already uses it that way
and the interrupt will currently not picked up (at least not by this
driver).
Alex
> Given that brcmfmac device will only have one interrupt item defined
> there is no need to use it. If someone can give a good argument to
> support it please chime in.
>
> Regards,
> Arend
>
>
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] wifi: brcmfmac: of: Support interrupts-extended
2024-06-22 14:07 ` Alex Bee
@ 2024-06-22 14:40 ` Alex Bee
2024-06-22 17:46 ` Arend Van Spriel
1 sibling, 0 replies; 7+ messages in thread
From: Alex Bee @ 2024-06-22 14:40 UTC (permalink / raw)
To: Arend Van Spriel
Cc: Kalle Valo, linux-wireless, brcm80211, brcm80211-dev-list.pdl,
linux-kernel
Am 22.06.24 um 16:07 schrieb Alex Bee:
>
> Am 22.06.24 um 15:49 schrieb Arend Van Spriel:
>> On June 22, 2024 3:38:32 PM Arend Van Spriel
>> <arend.vanspriel@broadcom.com> wrote:
>>
>>> On June 22, 2024 12:56:02 AM Alex Bee <knaerzche@gmail.com> wrote:
>>>
>>>> This "new" version of defining external interrupts is around for a
>>>> very
>>>> long time now and supported and preferred by irq_of_parse_and_map
>>>> respectively of_irq_parse_one.
>>>>
>>>> Support it in brcmfmac as well by checking if either "interrupts" or
>>>> "interrupts-extended" property exists as indication if
>>>> irq_of_parse_and_map
>>>> should be called.
>>>
>>> All very interesting, but why should we add code for something that
>>> is not
>>> specified in the bindings documentation?
>>>
>>> NAK (for now). Feel free to update the bindings document.
>>
> Sure, if you insist on it, I can update the bindings document. So far not
> many (no) users did that, as it is clearly specified as an alternative in
> devicetree/bindings/interrupt-controller/interrupts.txt (sure, it's
> not yet
> converted to yaml yet).
If you are worried about schema validation: Some magic will accept both
"interrupts" and "interrupts-extended" if only "interrupts" is specified in
the binding. Not sure that happens.
>> So looked up the interrupts-extended definition:
>>
>> The "interrupts-extended" property is a special form; useful when a
>> node needs
>> to reference multiple interrupt parents or a different interrupt
>> parent than
>> the inherited one. Each entry in this property contains both the
>> parent phandle
>> and the interrupt specifier.
>>
> They point in this particular case is not how many interrupts exsist, but
> "... or a different interrupt parent than
> the inherited ..." which is almost always the case for brcmfmac, as it
> usually specifies a gpio controller as interrupt parent. So:
>
Maybe I should resend with a verbosity-increased commit message?
> ...
> interrupt-parent = <&gpio0>;
> interrupts = <RK_PA0 IRQ_TYPE_LEVEL_HIGH>;
> ...
>
> gets to (a single line):
> ...
> interrupts-extended: = <&gpio0 RK_PA0 IRQ_TYPE_LEVEL_HIGH>;
> ...
>
> Which is a much nicer form, imho.
> And by the way for instance
> arch/arm/boot/dts/qcom/qcom-apq8026-lg-lenok.dts already uses it that way
> and the interrupt will currently not picked up (at least not by this
> driver).
>
> Alex
>
>> Given that brcmfmac device will only have one interrupt item defined
>> there is no need to use it. If someone can give a good argument to
>> support it please chime in.
>>
>> Regards,
>> Arend
>>
>>
>>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] wifi: brcmfmac: of: Support interrupts-extended
2024-06-22 14:07 ` Alex Bee
2024-06-22 14:40 ` Alex Bee
@ 2024-06-22 17:46 ` Arend Van Spriel
2024-06-22 20:57 ` Alex Bee
1 sibling, 1 reply; 7+ messages in thread
From: Arend Van Spriel @ 2024-06-22 17:46 UTC (permalink / raw)
To: Alex Bee, Kalle Valo, linux-wireless, brcm80211,
brcm80211-dev-list.pdl, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 1870 bytes --]
On June 22, 2024 4:07:40 PM Alex Bee <knaerzche@gmail.com> wrote:
> Am 22.06.24 um 15:49 schrieb Arend Van Spriel:
>> On June 22, 2024 3:38:32 PM Arend Van Spriel
>> <arend.vanspriel@broadcom.com> wrote:
>>
>>> On June 22, 2024 12:56:02 AM Alex Bee <knaerzche@gmail.com> wrote:
>>>
>>>> This "new" version of defining external interrupts is around for a very
>>>> long time now and supported and preferred by irq_of_parse_and_map
>>>> respectively of_irq_parse_one.
>>>>
>>>> Support it in brcmfmac as well by checking if either "interrupts" or
>>>> "interrupts-extended" property exists as indication if
>>>> irq_of_parse_and_map
>>>> should be called.
>>>
>>> All very interesting, but why should we add code for something that
>>> is not
>>> specified in the bindings documentation?
>>>
>>> NAK (for now). Feel free to update the bindings document.
> Sure, if you insist on it, I can update the bindings document. So far not
> many (no) users did that, as it is clearly specified as an alternative in
> devicetree/bindings/interrupt-controller/interrupts.txt (sure, it's not yet
> converted to yaml yet).
Right. So in my opinion that should be handled by the interrupt subsystem.
Hence I dived into irq_of_parse_and_map(). I would suggest to open code that:
/* make sure there are interrupts defined in the node */
- if (!of_property_present(np, "interrupts"))
+ if (of_irq_parse_one(...))
return;
irq = irq_create_of_mapping(...);
> Which is a much nicer form, imho.
> And by the way for instance
> arch/arm/boot/dts/qcom/qcom-apq8026-lg-lenok.dts already uses it that way
> and the interrupt will currently not picked up (at least not by this
> driver).
I expected the "nicer" argument would be thrown in at some point. Esthetics
are never a technical argument, but let's not debate that ;-) Hopefully you
can agree with my suggestion.
Regards,
Arend
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 4219 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] wifi: brcmfmac: of: Support interrupts-extended
2024-06-22 17:46 ` Arend Van Spriel
@ 2024-06-22 20:57 ` Alex Bee
0 siblings, 0 replies; 7+ messages in thread
From: Alex Bee @ 2024-06-22 20:57 UTC (permalink / raw)
To: Arend Van Spriel, Kalle Valo, linux-wireless, brcm80211,
brcm80211-dev-list.pdl, linux-kernel
Am 22.06.24 um 19:46 schrieb Arend Van Spriel:
> On June 22, 2024 4:07:40 PM Alex Bee <knaerzche@gmail.com> wrote:
>
>> Am 22.06.24 um 15:49 schrieb Arend Van Spriel:
>>> On June 22, 2024 3:38:32 PM Arend Van Spriel
>>> <arend.vanspriel@broadcom.com> wrote:
>>>
>>>> On June 22, 2024 12:56:02 AM Alex Bee <knaerzche@gmail.com> wrote:
>>>>
>>>>> This "new" version of defining external interrupts is around for a
>>>>> very
>>>>> long time now and supported and preferred by irq_of_parse_and_map
>>>>> respectively of_irq_parse_one.
>>>>>
>>>>> Support it in brcmfmac as well by checking if either "interrupts" or
>>>>> "interrupts-extended" property exists as indication if
>>>>> irq_of_parse_and_map
>>>>> should be called.
>>>>
>>>> All very interesting, but why should we add code for something that
>>>> is not
>>>> specified in the bindings documentation?
>>>>
>>>> NAK (for now). Feel free to update the bindings document.
>> Sure, if you insist on it, I can update the bindings document. So far
>> not
>> many (no) users did that, as it is clearly specified as an
>> alternative in
>> devicetree/bindings/interrupt-controller/interrupts.txt (sure, it's
>> not yet
>> converted to yaml yet).
>
> Right. So in my opinion that should be handled by the interrupt
> subsystem. Hence I dived into irq_of_parse_and_map(). I would suggest
> to open code that:
>
And as you can see: It's already handled by the interrupt subsystem - all
what prevents it from working in it's intended behavior is this strange
of_property_present check.
> /* make sure there are interrupts defined in the node */
> - if (!of_property_present(np, "interrupts"))
> + if (of_irq_parse_one(...))
> return;
>
Agreed. That's even better - I also didn't fully understand why this
of_property_present was chosen in the first place. Actually I wanted to
send something similar first with only calling of_irq_parse_one and return
early if it fails, but the result doesn't allow to differentiate between
"no interrupt defined" and "interrupt mapping failed" - so open coding it
seems required, unfortunately..
> irq = irq_create_of_mapping(...);
>
>> Which is a much nicer form, imho.
>> And by the way for instance
>> arch/arm/boot/dts/qcom/qcom-apq8026-lg-lenok.dts already uses it that
>> way
>> and the interrupt will currently not picked up (at least not by this
>> driver).
>
> I expected the "nicer" argument would be thrown in at some point.
> Esthetics are never a technical argument, but let's not debate that
> ;-) Hopefully you can agree with my suggestion.
>
I wouldn't want the 'nicer'-argument to be an argument, as I don't like
that either: so sorry for that. My point was: Why wouldn’t we support it
in brcmfmac also?
So will resend with you suggestion applied: Remove !of_property_present
check completely and do the two steps of_irq_parse_one and
irq_create_of_mapping separately.
Alex
> Regards,
> Arend
>
>
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2024-06-22 20:57 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-21 22:55 [PATCH] wifi: brcmfmac: of: Support interrupts-extended Alex Bee
2024-06-22 13:38 ` Arend Van Spriel
2024-06-22 13:49 ` Arend Van Spriel
2024-06-22 14:07 ` Alex Bee
2024-06-22 14:40 ` Alex Bee
2024-06-22 17:46 ` Arend Van Spriel
2024-06-22 20:57 ` Alex Bee
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox