diff mbox series

[1/2] dt-bindings: mailbox : arm,mhuv2: Allow for more RX interrupts

Message ID 20230329153936.394911-2-cristian.marussi@arm.com (mailing list archive)
State New, archived
Headers show
Series Add MHUv2 support for multiple rx interrupt | expand

Commit Message

Cristian Marussi March 29, 2023, 3:39 p.m. UTC
The ARM MHUv2 Receiver block can indeed support more interrupts, up to the
maximum number of available channels, but anyway no more than the maximum
number of supported interrupt for an AMBA device.

Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
---
Cc: Rob Herring <robh+dt@kernel.org>
Cc: Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
Cc: devicetree@vger.kernel.org

 .../devicetree/bindings/mailbox/arm,mhuv2.yaml      | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

Comments

Sudeep Holla March 29, 2023, 5:44 p.m. UTC | #1
On Wed, Mar 29, 2023 at 04:39:35PM +0100, Cristian Marussi wrote:
> The ARM MHUv2 Receiver block can indeed support more interrupts, up to the
> maximum number of available channels, but anyway no more than the maximum
> number of supported interrupt for an AMBA device.
> 
> Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
> ---
> Cc: Rob Herring <robh+dt@kernel.org>
> Cc: Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
> Cc: devicetree@vger.kernel.org
> 
>  .../devicetree/bindings/mailbox/arm,mhuv2.yaml      | 13 +++++++++----
>  1 file changed, 9 insertions(+), 4 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml b/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml
> index a4f1fe63659a..5a57f4e2a623 100644
> --- a/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml
> +++ b/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml
> @@ -69,10 +69,15 @@ properties:
>  
>    interrupts:
>      description: |
> -      The MHUv2 controller always implements an interrupt in the "receiver"
> -      mode, while the interrupt in the "sender" mode was not available in the
> -      version MHUv2.0, but the later versions do have it.
> -    maxItems: 1
> +      The MHUv2 controller always implements at least an interrupt in the
> +      "receiver" mode, while the interrupt in the "sender" mode was not
> +      available in the version MHUv2.0, but the later versions do have it.
> +      In "receiver" mode, beside a single combined interrupt, there could be
> +      multiple interrupts, up to the number of implemented channels but anyway
> +      no more than the maximum number of interrupts potentially supported by
> +      AMBA.
> +    minItems: 1
> +    maxItems: 9

I am not sure 9 is the correct value here. IIUC it is just what Linux defines
as AMBA_NR_IRQS. Looking at the history it was bumped from 2 to 9 for use
by PL330 DMA driver. I couldn't find anything to relate this 9 in any
AMBA or other related specification.

Ideally I would say we don't know what the max here. We just have a platform
implementing 2 interrupts now. Do we for with 2 for now and change it if some
new users require more in the future ?

I will leave that to the DT maintainers but 9 is simply random based on Linux
code so I would rather choose some other random number with a better reasoning
than 9 as AMBA code in the kernel is limiting it to 9.
Krzysztof Kozlowski March 30, 2023, 7:36 a.m. UTC | #2
On 29/03/2023 17:39, Cristian Marussi wrote:
> The ARM MHUv2 Receiver block can indeed support more interrupts, up to the
> maximum number of available channels, but anyway no more than the maximum
> number of supported interrupt for an AMBA device.
> 
> Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
> ---
> Cc: Rob Herring <robh+dt@kernel.org>
> Cc: Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
> Cc: devicetree@vger.kernel.org
> 
>  .../devicetree/bindings/mailbox/arm,mhuv2.yaml      | 13 +++++++++----
>  1 file changed, 9 insertions(+), 4 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml b/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml
> index a4f1fe63659a..5a57f4e2a623 100644
> --- a/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml
> +++ b/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml
> @@ -69,10 +69,15 @@ properties:
>  
>    interrupts:
>      description: |
> -      The MHUv2 controller always implements an interrupt in the "receiver"
> -      mode, while the interrupt in the "sender" mode was not available in the
> -      version MHUv2.0, but the later versions do have it.
> -    maxItems: 1
> +      The MHUv2 controller always implements at least an interrupt in the
> +      "receiver" mode, while the interrupt in the "sender" mode was not
> +      available in the version MHUv2.0, but the later versions do have it.
> +      In "receiver" mode, beside a single combined interrupt, there could be
> +      multiple interrupts, up to the number of implemented channels but anyway
> +      no more than the maximum number of interrupts potentially supported by
> +      AMBA.

Last sentence indicates that TX mode has something else, e.g. max 1
interrupt. Either correct the sentence or add if:then: narrowing it for TX.


Best regards,
Krzysztof
Krzysztof Kozlowski March 30, 2023, 7:57 a.m. UTC | #3
On 29/03/2023 17:39, Cristian Marussi wrote:
> The ARM MHUv2 Receiver block can indeed support more interrupts, up to the
> maximum number of available channels, but anyway no more than the maximum
> number of supported interrupt for an AMBA device.

Subject: no spaces before colon.

> 
> Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
> ---
> Cc: Rob Herring <robh+dt@kernel.org>
> Cc: Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
> Cc: devicetree@vger.kernel.org



Best regards,
Krzysztof
Cristian Marussi March 30, 2023, 8:29 a.m. UTC | #4
On Wed, Mar 29, 2023 at 06:44:31PM +0100, Sudeep Holla wrote:
> On Wed, Mar 29, 2023 at 04:39:35PM +0100, Cristian Marussi wrote:
> > The ARM MHUv2 Receiver block can indeed support more interrupts, up to the
> > maximum number of available channels, but anyway no more than the maximum
> > number of supported interrupt for an AMBA device.
> > 
> > Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
> > ---
> > Cc: Rob Herring <robh+dt@kernel.org>
> > Cc: Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
> > Cc: devicetree@vger.kernel.org
> > 
> >  .../devicetree/bindings/mailbox/arm,mhuv2.yaml      | 13 +++++++++----
> >  1 file changed, 9 insertions(+), 4 deletions(-)
> > 
> > diff --git a/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml b/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml
> > index a4f1fe63659a..5a57f4e2a623 100644
> > --- a/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml
> > +++ b/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml
> > @@ -69,10 +69,15 @@ properties:
> >  
> >    interrupts:
> >      description: |
> > -      The MHUv2 controller always implements an interrupt in the "receiver"
> > -      mode, while the interrupt in the "sender" mode was not available in the
> > -      version MHUv2.0, but the later versions do have it.
> > -    maxItems: 1
> > +      The MHUv2 controller always implements at least an interrupt in the
> > +      "receiver" mode, while the interrupt in the "sender" mode was not
> > +      available in the version MHUv2.0, but the later versions do have it.
> > +      In "receiver" mode, beside a single combined interrupt, there could be
> > +      multiple interrupts, up to the number of implemented channels but anyway
> > +      no more than the maximum number of interrupts potentially supported by
> > +      AMBA.
> > +    minItems: 1
> > +    maxItems: 9
> 

Hi,

> I am not sure 9 is the correct value here. IIUC it is just what Linux defines
> as AMBA_NR_IRQS. Looking at the history it was bumped from 2 to 9 for use
> by PL330 DMA driver. I couldn't find anything to relate this 9 in any
> AMBA or other related specification.
> 

Yes, I could not find either where the 9 comes from, but it is what
currently each amba device is limited to, at the software level, in terms of
interrupts that can be detected.

> Ideally I would say we don't know what the max here. We just have a platform
> implementing 2 interrupts now. Do we for with 2 for now and change it if some
> new users require more in the future ?
> 

By the spec seems to me that the maximum number of interrupts are equal to
the maximum possible channels (124), or one combined interrupt.

But these in turn, as said, are capped by the AMBA_NR_IRQS and I have
only seen one system using 2. (for which I need this series to work)

> I will leave that to the DT maintainers but 9 is simply random based on Linux
> code so I would rather choose some other random number with a better reasoning
> than 9 as AMBA code in the kernel is limiting it to 9.
> 

Agreed. Aiming to describe any possible hw in the DT, I would say 124 at
this point. (even though implausible not to use the combined interrupt
at that point...)


Thanks,
Cristian
Cristian Marussi March 30, 2023, 8:45 a.m. UTC | #5
On Thu, Mar 30, 2023 at 09:36:06AM +0200, Krzysztof Kozlowski wrote:
> On 29/03/2023 17:39, Cristian Marussi wrote:
> > The ARM MHUv2 Receiver block can indeed support more interrupts, up to the
> > maximum number of available channels, but anyway no more than the maximum
> > number of supported interrupt for an AMBA device.
> > 
> > Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
> > ---
> > Cc: Rob Herring <robh+dt@kernel.org>
> > Cc: Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
> > Cc: devicetree@vger.kernel.org
> > 
> >  .../devicetree/bindings/mailbox/arm,mhuv2.yaml      | 13 +++++++++----
> >  1 file changed, 9 insertions(+), 4 deletions(-)
> > 
> > diff --git a/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml b/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml
> > index a4f1fe63659a..5a57f4e2a623 100644
> > --- a/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml
> > +++ b/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml
> > @@ -69,10 +69,15 @@ properties:
> >  
> >    interrupts:
> >      description: |
> > -      The MHUv2 controller always implements an interrupt in the "receiver"
> > -      mode, while the interrupt in the "sender" mode was not available in the
> > -      version MHUv2.0, but the later versions do have it.
> > -    maxItems: 1
> > +      The MHUv2 controller always implements at least an interrupt in the
> > +      "receiver" mode, while the interrupt in the "sender" mode was not
> > +      available in the version MHUv2.0, but the later versions do have it.
> > +      In "receiver" mode, beside a single combined interrupt, there could be
> > +      multiple interrupts, up to the number of implemented channels but anyway
> > +      no more than the maximum number of interrupts potentially supported by
> > +      AMBA.
> 

Hi,

> Last sentence indicates that TX mode has something else, e.g. max 1
> interrupt. Either correct the sentence or add if:then: narrowing it for TX.
> 

By the spec really you can have up to 124 rx interrupt (one per channel) and
optionally 124 tx interrupt too. At least one RX is mandatory, while the TX
clear channel iterrupt is optional (and not supported at all for spec < 2.1)

In both cases you could just have one single combined interrupt, though,
and this is what the driver did, and still do (I have noot changed this), on
the TX side: it just supports one single combined tx interrupt.

So on the TX side, at the HW level, there could be really 124 interrupts
BUT the driver still only support a single combined one.

So I think my statement above is anyway ambiguos and I'll fix it, but how to
fix it, really depends if we want to describe fully what the HW potentially
supports OR what the driver really can cope with as of now.

Thanks,
Cristian
Rob Herring (Arm) April 12, 2023, 1:15 p.m. UTC | #6
On Thu, Mar 30, 2023 at 09:29:23AM +0100, Cristian Marussi wrote:
> On Wed, Mar 29, 2023 at 06:44:31PM +0100, Sudeep Holla wrote:
> > On Wed, Mar 29, 2023 at 04:39:35PM +0100, Cristian Marussi wrote:
> > > The ARM MHUv2 Receiver block can indeed support more interrupts, up to the
> > > maximum number of available channels, but anyway no more than the maximum
> > > number of supported interrupt for an AMBA device.
> > > 
> > > Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
> > > ---
> > > Cc: Rob Herring <robh+dt@kernel.org>
> > > Cc: Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
> > > Cc: devicetree@vger.kernel.org
> > > 
> > >  .../devicetree/bindings/mailbox/arm,mhuv2.yaml      | 13 +++++++++----
> > >  1 file changed, 9 insertions(+), 4 deletions(-)
> > > 
> > > diff --git a/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml b/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml
> > > index a4f1fe63659a..5a57f4e2a623 100644
> > > --- a/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml
> > > +++ b/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml
> > > @@ -69,10 +69,15 @@ properties:
> > >  
> > >    interrupts:
> > >      description: |
> > > -      The MHUv2 controller always implements an interrupt in the "receiver"
> > > -      mode, while the interrupt in the "sender" mode was not available in the
> > > -      version MHUv2.0, but the later versions do have it.
> > > -    maxItems: 1
> > > +      The MHUv2 controller always implements at least an interrupt in the
> > > +      "receiver" mode, while the interrupt in the "sender" mode was not
> > > +      available in the version MHUv2.0, but the later versions do have it.
> > > +      In "receiver" mode, beside a single combined interrupt, there could be
> > > +      multiple interrupts, up to the number of implemented channels but anyway
> > > +      no more than the maximum number of interrupts potentially supported by
> > > +      AMBA.
> > > +    minItems: 1
> > > +    maxItems: 9
> > 
> 
> Hi,
> 
> > I am not sure 9 is the correct value here. IIUC it is just what Linux defines
> > as AMBA_NR_IRQS. Looking at the history it was bumped from 2 to 9 for use
> > by PL330 DMA driver. I couldn't find anything to relate this 9 in any
> > AMBA or other related specification.
> > 
> 
> Yes, I could not find either where the 9 comes from, but it is what
> currently each amba device is limited to, at the software level, in terms of
> interrupts that can be detected.

IIRC, the PL330 can have an interrupt per context with up to 8 contexts 
and then 1 global interrupt.

> 
> > Ideally I would say we don't know what the max here. We just have a platform
> > implementing 2 interrupts now. Do we for with 2 for now and change it if some
> > new users require more in the future ?
> > 
> 
> By the spec seems to me that the maximum number of interrupts are equal to
> the maximum possible channels (124), or one combined interrupt.
> 
> But these in turn, as said, are capped by the AMBA_NR_IRQS and I have
> only seen one system using 2. (for which I need this series to work)
> 
> > I will leave that to the DT maintainers but 9 is simply random based on Linux
> > code so I would rather choose some other random number with a better reasoning
> > than 9 as AMBA code in the kernel is limiting it to 9.
> > 
> 
> Agreed. Aiming to describe any possible hw in the DT, I would say 124 at
> this point. (even though implausible not to use the combined interrupt
> at that point...)

Then use 124, but please describe how you get that in the description.

Rob
Cristian Marussi April 12, 2023, 1:20 p.m. UTC | #7
On Wed, Apr 12, 2023 at 08:15:21AM -0500, Rob Herring wrote:
> On Thu, Mar 30, 2023 at 09:29:23AM +0100, Cristian Marussi wrote:
> > On Wed, Mar 29, 2023 at 06:44:31PM +0100, Sudeep Holla wrote:
> > > On Wed, Mar 29, 2023 at 04:39:35PM +0100, Cristian Marussi wrote:
> > > > The ARM MHUv2 Receiver block can indeed support more interrupts, up to the
> > > > maximum number of available channels, but anyway no more than the maximum
> > > > number of supported interrupt for an AMBA device.
> > > > 
> > > > Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
> > > > ---
> > > > Cc: Rob Herring <robh+dt@kernel.org>
> > > > Cc: Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
> > > > Cc: devicetree@vger.kernel.org
> > > > 
> > > >  .../devicetree/bindings/mailbox/arm,mhuv2.yaml      | 13 +++++++++----
> > > >  1 file changed, 9 insertions(+), 4 deletions(-)
> > > > 
> > > > diff --git a/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml b/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml
> > > > index a4f1fe63659a..5a57f4e2a623 100644
> > > > --- a/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml
> > > > +++ b/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml
> > > > @@ -69,10 +69,15 @@ properties:
> > > >  
> > > >    interrupts:
> > > >      description: |
> > > > -      The MHUv2 controller always implements an interrupt in the "receiver"
> > > > -      mode, while the interrupt in the "sender" mode was not available in the
> > > > -      version MHUv2.0, but the later versions do have it.
> > > > -    maxItems: 1
> > > > +      The MHUv2 controller always implements at least an interrupt in the
> > > > +      "receiver" mode, while the interrupt in the "sender" mode was not
> > > > +      available in the version MHUv2.0, but the later versions do have it.
> > > > +      In "receiver" mode, beside a single combined interrupt, there could be
> > > > +      multiple interrupts, up to the number of implemented channels but anyway
> > > > +      no more than the maximum number of interrupts potentially supported by
> > > > +      AMBA.
> > > > +    minItems: 1
> > > > +    maxItems: 9
> > > 
> > 
> > Hi,
> > 
> > > I am not sure 9 is the correct value here. IIUC it is just what Linux defines
> > > as AMBA_NR_IRQS. Looking at the history it was bumped from 2 to 9 for use
> > > by PL330 DMA driver. I couldn't find anything to relate this 9 in any
> > > AMBA or other related specification.
> > > 
> > 
> > Yes, I could not find either where the 9 comes from, but it is what
> > currently each amba device is limited to, at the software level, in terms of
> > interrupts that can be detected.
> 
> IIRC, the PL330 can have an interrupt per context with up to 8 contexts 
> and then 1 global interrupt.
> 
> > 
> > > Ideally I would say we don't know what the max here. We just have a platform
> > > implementing 2 interrupts now. Do we for with 2 for now and change it if some
> > > new users require more in the future ?
> > > 
> > 
> > By the spec seems to me that the maximum number of interrupts are equal to
> > the maximum possible channels (124), or one combined interrupt.
> > 
> > But these in turn, as said, are capped by the AMBA_NR_IRQS and I have
> > only seen one system using 2. (for which I need this series to work)
> > 
> > > I will leave that to the DT maintainers but 9 is simply random based on Linux
> > > code so I would rather choose some other random number with a better reasoning
> > > than 9 as AMBA code in the kernel is limiting it to 9.
> > > 
> > 
> > Agreed. Aiming to describe any possible hw in the DT, I would say 124 at
> > this point. (even though implausible not to use the combined interrupt
> > at that point...)
> 
> Then use 124, but please describe how you get that in the description.
> 

Ok, thanks, I'll do.
Cristian
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml b/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml
index a4f1fe63659a..5a57f4e2a623 100644
--- a/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml
+++ b/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml
@@ -69,10 +69,15 @@  properties:
 
   interrupts:
     description: |
-      The MHUv2 controller always implements an interrupt in the "receiver"
-      mode, while the interrupt in the "sender" mode was not available in the
-      version MHUv2.0, but the later versions do have it.
-    maxItems: 1
+      The MHUv2 controller always implements at least an interrupt in the
+      "receiver" mode, while the interrupt in the "sender" mode was not
+      available in the version MHUv2.0, but the later versions do have it.
+      In "receiver" mode, beside a single combined interrupt, there could be
+      multiple interrupts, up to the number of implemented channels but anyway
+      no more than the maximum number of interrupts potentially supported by
+      AMBA.
+    minItems: 1
+    maxItems: 9
 
   clocks:
     maxItems: 1