dt-bindings: mfd: x-powers,axp152: make interrupt optional for more chips

Message ID 20230802141829.522595-1-andre.przywara@arm.com
State New
Headers
Series dt-bindings: mfd: x-powers,axp152: make interrupt optional for more chips |

Commit Message

Andre Przywara Aug. 2, 2023, 2:18 p.m. UTC
  All X-Powers PMICs described by this binding have an IRQ pin, and so
far (almost) all boards connected this to some NMI pin or GPIO on the SoC
they are connected to.
However we start to see boards that omit this connection, and technically
the IRQ pin is not essential to the basic PMIC operation.
The existing Linux driver allows skipping an IRQ pin setup for some
chips already, so update the binding to also make the DT property
optional for these chips, so that we can actually have DTs describing
boards with the PMIC interrupt not wired up.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
---
Hi,

arguably the IRQ functionality is optional for many more PMICs,
especially if a board doesn't use GPIOs or a power key.
So I wonder if the interrupts property should become optional for all?
After all it's more a board designer's decision to wire up the IRQ pin
or not, and nothing that's really related to a particular PMIC.

Cheers,
Andre

 Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
  

Comments

Martin Botka Aug. 2, 2023, 7:07 p.m. UTC | #1
Tested-by: Martin Botka <martin@biqu3d.com>

On 8/2/23 4:18 PM, Andre Przywara wrote:
> All X-Powers PMICs described by this binding have an IRQ pin, and so
> far (almost) all boards connected this to some NMI pin or GPIO on the SoC
> they are connected to.
> However we start to see boards that omit this connection, and technically
> the IRQ pin is not essential to the basic PMIC operation.
> The existing Linux driver allows skipping an IRQ pin setup for some
> chips already, so update the binding to also make the DT property
> optional for these chips, so that we can actually have DTs describing
> boards with the PMIC interrupt not wired up.
>
> Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> ---
> Hi,
>
> arguably the IRQ functionality is optional for many more PMICs,
> especially if a board doesn't use GPIOs or a power key.
> So I wonder if the interrupts property should become optional for all?
> After all it's more a board designer's decision to wire up the IRQ pin
> or not, and nothing that's really related to a particular PMIC.
>
> Cheers,
> Andre
>
>   Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml | 5 ++++-
>   1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml b/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml
> index 9ad55746133b5..06f1779835a1e 100644
> --- a/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml
> +++ b/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml
> @@ -67,7 +67,10 @@ allOf:
>           properties:
>             compatible:
>               contains:
> -              const: x-powers,axp305
> +              enum:
> +                - x-powers,axp15060
> +                - x-powers,axp305
> +                - x-powers,axp313a
>   
>       then:
>         required:
  
Conor Dooley Aug. 3, 2023, 3:55 p.m. UTC | #2
On Wed, Aug 02, 2023 at 03:18:29PM +0100, Andre Przywara wrote:
> All X-Powers PMICs described by this binding have an IRQ pin, and so
> far (almost) all boards connected this to some NMI pin or GPIO on the SoC
> they are connected to.
> However we start to see boards that omit this connection, and technically
> the IRQ pin is not essential to the basic PMIC operation.
> The existing Linux driver allows skipping an IRQ pin setup for some
> chips already, so update the binding to also make the DT property
> optional for these chips, so that we can actually have DTs describing
> boards with the PMIC interrupt not wired up.
> 
> Signed-off-by: Andre Przywara <andre.przywara@arm.com>

Acked-by: Conor Dooley <conor.dooley@microchip.com>

> ---
> Hi,
> 
> arguably the IRQ functionality is optional for many more PMICs,
> especially if a board doesn't use GPIOs or a power key.
> So I wonder if the interrupts property should become optional for all?
> After all it's more a board designer's decision to wire up the IRQ pin
> or not, and nothing that's really related to a particular PMIC.

No ack for this, but if the things function without the interrupts
wired up, it seems like it'd make sense to drop others too.

Cheers,
Conor.

> 
> Cheers,
> Andre
> 
>  Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml b/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml
> index 9ad55746133b5..06f1779835a1e 100644
> --- a/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml
> +++ b/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml
> @@ -67,7 +67,10 @@ allOf:
>          properties:
>            compatible:
>              contains:
> -              const: x-powers,axp305
> +              enum:
> +                - x-powers,axp15060
> +                - x-powers,axp305
> +                - x-powers,axp313a
>  
>      then:
>        required:
> -- 
> 2.25.1
>
  
Rob Herring Aug. 4, 2023, 3:34 p.m. UTC | #3
On Wed, Aug 02, 2023 at 03:18:29PM +0100, Andre Przywara wrote:
> All X-Powers PMICs described by this binding have an IRQ pin, and so
> far (almost) all boards connected this to some NMI pin or GPIO on the SoC
> they are connected to.
> However we start to see boards that omit this connection, and technically
> the IRQ pin is not essential to the basic PMIC operation.
> The existing Linux driver allows skipping an IRQ pin setup for some
> chips already, so update the binding to also make the DT property
> optional for these chips, so that we can actually have DTs describing
> boards with the PMIC interrupt not wired up.
> 
> Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> ---
> Hi,
> 
> arguably the IRQ functionality is optional for many more PMICs,
> especially if a board doesn't use GPIOs or a power key.
> So I wonder if the interrupts property should become optional for all?
> After all it's more a board designer's decision to wire up the IRQ pin
> or not, and nothing that's really related to a particular PMIC.

I would say yes. Particularly if it gets rid of a conditional schema.

Rob
  
Shengyu Qu Aug. 5, 2023, 3:43 p.m. UTC | #4
Hi Andre,

No, you can't only add the binding stuff. The PEK driver would crash when

there's no IRQ config in dts.

Best regards,

Shengyu

> All X-Powers PMICs described by this binding have an IRQ pin, and so
> far (almost) all boards connected this to some NMI pin or GPIO on the SoC
> they are connected to.
> However we start to see boards that omit this connection, and technically
> the IRQ pin is not essential to the basic PMIC operation.
> The existing Linux driver allows skipping an IRQ pin setup for some
> chips already, so update the binding to also make the DT property
> optional for these chips, so that we can actually have DTs describing
> boards with the PMIC interrupt not wired up.
>
> Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> ---
> Hi,
>
> arguably the IRQ functionality is optional for many more PMICs,
> especially if a board doesn't use GPIOs or a power key.
> So I wonder if the interrupts property should become optional for all?
> After all it's more a board designer's decision to wire up the IRQ pin
> or not, and nothing that's really related to a particular PMIC.
>
> Cheers,
> Andre
>
>   Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml | 5 ++++-
>   1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml b/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml
> index 9ad55746133b5..06f1779835a1e 100644
> --- a/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml
> +++ b/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml
> @@ -67,7 +67,10 @@ allOf:
>           properties:
>             compatible:
>               contains:
> -              const: x-powers,axp305
> +              enum:
> +                - x-powers,axp15060
> +                - x-powers,axp305
> +                - x-powers,axp313a
>   
>       then:
>         required:
  
Andre Przywara Aug. 5, 2023, 10:50 p.m. UTC | #5
On Sat, 5 Aug 2023 23:43:35 +0800
Shengyu Qu <wiagn233@outlook.com> wrote:

Hi Shengyu,

> No, you can't only add the binding stuff. The PEK driver would crash when
> there's no IRQ config in dts.

Well, that's strictly speaking a problem of the existing Linux driver
then, which cannot cope with this new updated binding yet. But the
binding needs to be updated first in any case, so this patch needs
to come first.

But yeah, indeed this is missing the extension of the "IRQ > 0"  check
from the 15060 MFD code, I will send a patch shortly to extend this to
the AXP305 and AXP313a.

Thanks for the heads up!

Cheers,
Andre

> Best regards,
> 
> Shengyu
> 
> > All X-Powers PMICs described by this binding have an IRQ pin, and so
> > far (almost) all boards connected this to some NMI pin or GPIO on the SoC
> > they are connected to.
> > However we start to see boards that omit this connection, and technically
> > the IRQ pin is not essential to the basic PMIC operation.
> > The existing Linux driver allows skipping an IRQ pin setup for some
> > chips already, so update the binding to also make the DT property
> > optional for these chips, so that we can actually have DTs describing
> > boards with the PMIC interrupt not wired up.
> >
> > Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> > ---
> > Hi,
> >
> > arguably the IRQ functionality is optional for many more PMICs,
> > especially if a board doesn't use GPIOs or a power key.
> > So I wonder if the interrupts property should become optional for all?
> > After all it's more a board designer's decision to wire up the IRQ pin
> > or not, and nothing that's really related to a particular PMIC.
> >
> > Cheers,
> > Andre
> >
> >   Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml | 5 ++++-
> >   1 file changed, 4 insertions(+), 1 deletion(-)
> >
> > diff --git a/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml b/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml
> > index 9ad55746133b5..06f1779835a1e 100644
> > --- a/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml
> > +++ b/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml
> > @@ -67,7 +67,10 @@ allOf:
> >           properties:
> >             compatible:
> >               contains:
> > -              const: x-powers,axp305
> > +              enum:
> > +                - x-powers,axp15060
> > +                - x-powers,axp305
> > +                - x-powers,axp313a
> >   
> >       then:
> >         required:
  
Andre Przywara Aug. 7, 2023, 1:42 p.m. UTC | #6
On Fri, 4 Aug 2023 09:34:32 -0600
Rob Herring <robh@kernel.org> wrote:

Hi,

> On Wed, Aug 02, 2023 at 03:18:29PM +0100, Andre Przywara wrote:
> > All X-Powers PMICs described by this binding have an IRQ pin, and so
> > far (almost) all boards connected this to some NMI pin or GPIO on the SoC
> > they are connected to.
> > However we start to see boards that omit this connection, and technically
> > the IRQ pin is not essential to the basic PMIC operation.
> > The existing Linux driver allows skipping an IRQ pin setup for some
> > chips already, so update the binding to also make the DT property
> > optional for these chips, so that we can actually have DTs describing
> > boards with the PMIC interrupt not wired up.
> > 
> > Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> > ---
> > Hi,
> > 
> > arguably the IRQ functionality is optional for many more PMICs,
> > especially if a board doesn't use GPIOs or a power key.
> > So I wonder if the interrupts property should become optional for all?
> > After all it's more a board designer's decision to wire up the IRQ pin
> > or not, and nothing that's really related to a particular PMIC.  
> 
> I would say yes. Particularly if it gets rid of a conditional schema.

I see your point, and we might get there, but after some digging extending
this to more/all PMICs needs more work, see below.
Given that I was wondering if we can merge this patch now, as this
blocks multiple DTs from being merged (and Connor already ACKed it).
I sent an MFD driver fix to make this actually work for the AXP313a:
https://lore.kernel.org/lkml/20230807133930.94309-1-andre.przywara@arm.com/

For supporting this on more PMICs:
Currently many Linux (sub-)drivers registered by the MFD driver crash when
there is no valid interrupt registered, and we so far just special cased
the very simple PMICs to skip just the power key driver registration,
which works for those chips. However this affects more drivers (I tested
ac-power-supply), so it's not clear if that's really something useful for
the other PMICs providing more functionality. I guess we can postpone this
until either there is actually a use case for those other PMICs (boards
without the IRQ line connected), or when this list of exceptions grows too
large.

Cheers,
Andre
  
Chen-Yu Tsai Aug. 7, 2023, 4:34 p.m. UTC | #7
On Mon, Aug 7, 2023 at 9:42 PM Andre Przywara <andre.przywara@arm.com> wrote:
>
> On Fri, 4 Aug 2023 09:34:32 -0600
> Rob Herring <robh@kernel.org> wrote:
>
> Hi,
>
> > On Wed, Aug 02, 2023 at 03:18:29PM +0100, Andre Przywara wrote:
> > > All X-Powers PMICs described by this binding have an IRQ pin, and so
> > > far (almost) all boards connected this to some NMI pin or GPIO on the SoC
> > > they are connected to.
> > > However we start to see boards that omit this connection, and technically
> > > the IRQ pin is not essential to the basic PMIC operation.
> > > The existing Linux driver allows skipping an IRQ pin setup for some
> > > chips already, so update the binding to also make the DT property
> > > optional for these chips, so that we can actually have DTs describing
> > > boards with the PMIC interrupt not wired up.
> > >
> > > Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> > > ---
> > > Hi,
> > >
> > > arguably the IRQ functionality is optional for many more PMICs,
> > > especially if a board doesn't use GPIOs or a power key.
> > > So I wonder if the interrupts property should become optional for all?
> > > After all it's more a board designer's decision to wire up the IRQ pin
> > > or not, and nothing that's really related to a particular PMIC.
> >
> > I would say yes. Particularly if it gets rid of a conditional schema.
>
> I see your point, and we might get there, but after some digging extending
> this to more/all PMICs needs more work, see below.
> Given that I was wondering if we can merge this patch now, as this
> blocks multiple DTs from being merged (and Connor already ACKed it).
> I sent an MFD driver fix to make this actually work for the AXP313a:
> https://lore.kernel.org/lkml/20230807133930.94309-1-andre.przywara@arm.com/

Question is which tree we merge it through. We can't merge the DTs without
this guaranteed to go in the same cycle without causing DT validation
errors.

ChenYu

> For supporting this on more PMICs:
> Currently many Linux (sub-)drivers registered by the MFD driver crash when
> there is no valid interrupt registered, and we so far just special cased
> the very simple PMICs to skip just the power key driver registration,
> which works for those chips. However this affects more drivers (I tested
> ac-power-supply), so it's not clear if that's really something useful for
> the other PMICs providing more functionality. I guess we can postpone this
> until either there is actually a use case for those other PMICs (boards
> without the IRQ line connected), or when this list of exceptions grows too
> large.
>
> Cheers,
> Andre
  

Patch

diff --git a/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml b/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml
index 9ad55746133b5..06f1779835a1e 100644
--- a/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml
+++ b/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml
@@ -67,7 +67,10 @@  allOf:
         properties:
           compatible:
             contains:
-              const: x-powers,axp305
+              enum:
+                - x-powers,axp15060
+                - x-powers,axp305
+                - x-powers,axp313a
 
     then:
       required: