mbox series

[0/2] Allwinner H616 NMI Controller

Message ID 20240414170424.614921-1-macroalpha82@gmail.com
Headers show
Series Allwinner H616 NMI Controller | expand

Message

Chris Morgan April 14, 2024, 5:04 p.m. UTC
From: Chris Morgan <macromorgan@hotmail.com>

Add support for the Allwinner H616 NMI controller, which appears to be
common IP with previous generations of the NMI. The NMI is required to
support interrupts from the PMIC among other functions.

Chris Morgan (2):
  dt-bindings: irq: sun7i-nmi: Add binding for the H616 NMI controller
  arm64: dts: allwinner: h616: Add NMI device node

 .../interrupt-controller/allwinner,sun7i-a20-sc-nmi.yaml | 3 +++
 arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi           | 9 +++++++++
 2 files changed, 12 insertions(+)

Comments

Andre Przywara April 14, 2024, 11:37 p.m. UTC | #1
On Sun, 14 Apr 2024 12:04:24 -0500
Chris Morgan <macroalpha82@gmail.com> wrote:

Hi Chris,

> From: Chris Morgan <macromorgan@hotmail.com>
> 
> Add device node for the H616 Non Maskable Interrupt (NMI) controller.

You might want to mention that the NMI pad is not exposed on the H616 variants, but on
the T507 and H700 packages.

> 
> Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
> ---
>  arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
> index b2e85e52d1a1..1e066f3057be 100644
> --- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
> +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
> @@ -775,6 +775,15 @@ r_ccu: clock@7010000 {
>  			#reset-cells = <1>;
>  		};
>  
> +		nmi_intc: interrupt-controller@7010320 {
> +			compatible = "allwinner,sun50i-h616-nmi",
> +				     "allwinner,sun9i-a80-nmi";
> +			reg = <0x07010320 0xc>;
> +			interrupt-controller;
> +			#interrupt-cells = <2>;
> +			interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
> +		};
> +

I can confirm that this matches the manual, and the registers behave as
described in the A80 manual. I don't have access to a chip with the NMI
pad exposed or used, so I cannot test this fully, but Chris'
experiments with the AXP717 PMIC connected to that pin on on H700
board seem to confirm that it indeed works.

So with that small amendment to the commit message please take my:

Reviewed-by: Andre Przywara <andre.przywara@arm.com>

Cheers,
Andre

>  		r_pio: pinctrl@7022000 {
>  			compatible = "allwinner,sun50i-h616-r-pinctrl";
>  			reg = <0x07022000 0x400>;
Chris Morgan April 18, 2024, 3:59 p.m. UTC | #2
On Mon, Apr 15, 2024 at 12:37:40AM +0100, Andre Przywara wrote:
> On Sun, 14 Apr 2024 12:04:24 -0500
> Chris Morgan <macroalpha82@gmail.com> wrote:
> 
> Hi Chris,
> 
> > From: Chris Morgan <macromorgan@hotmail.com>
> > 
> > Add device node for the H616 Non Maskable Interrupt (NMI) controller.
> 
> You might want to mention that the NMI pad is not exposed on the H616 variants, but on
> the T507 and H700 packages.
> 
> > 
> > Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
> > ---
> >  arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi | 9 +++++++++
> >  1 file changed, 9 insertions(+)
> > 
> > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
> > index b2e85e52d1a1..1e066f3057be 100644
> > --- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
> > +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
> > @@ -775,6 +775,15 @@ r_ccu: clock@7010000 {
> >  			#reset-cells = <1>;
> >  		};
> >  
> > +		nmi_intc: interrupt-controller@7010320 {
> > +			compatible = "allwinner,sun50i-h616-nmi",
> > +				     "allwinner,sun9i-a80-nmi";
> > +			reg = <0x07010320 0xc>;
> > +			interrupt-controller;
> > +			#interrupt-cells = <2>;
> > +			interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
> > +		};
> > +
> 
> I can confirm that this matches the manual, and the registers behave as
> described in the A80 manual. I don't have access to a chip with the NMI
> pad exposed or used, so I cannot test this fully, but Chris'
> experiments with the AXP717 PMIC connected to that pin on on H700
> board seem to confirm that it indeed works.
> 
> So with that small amendment to the commit message please take my:
> 
> Reviewed-by: Andre Przywara <andre.przywara@arm.com>
> 
> Cheers,
> Andre
> 
> >  		r_pio: pinctrl@7022000 {
> >  			compatible = "allwinner,sun50i-h616-r-pinctrl";
> >  			reg = <0x07022000 0x400>;
> 

Since the H616 doesn't have this functionality but the T507 and H700
does, should I change the compatible string? It's all the same
silicon die with just a different part number printed on it, but
still...

Thank you.
Chris
Andre Przywara April 18, 2024, 4:19 p.m. UTC | #3
On Thu, 18 Apr 2024 10:59:13 -0500
Chris Morgan <macromorgan@hotmail.com> wrote:

Hi,

> On Mon, Apr 15, 2024 at 12:37:40AM +0100, Andre Przywara wrote:
> > On Sun, 14 Apr 2024 12:04:24 -0500
> > Chris Morgan <macroalpha82@gmail.com> wrote:
> > 
> > Hi Chris,
> >   
> > > From: Chris Morgan <macromorgan@hotmail.com>
> > > 
> > > Add device node for the H616 Non Maskable Interrupt (NMI) controller.  
> > 
> > You might want to mention that the NMI pad is not exposed on the H616 variants, but on
> > the T507 and H700 packages.
> >   
> > > 
> > > Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
> > > ---
> > >  arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi | 9 +++++++++
> > >  1 file changed, 9 insertions(+)
> > > 
> > > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
> > > index b2e85e52d1a1..1e066f3057be 100644
> > > --- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
> > > +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
> > > @@ -775,6 +775,15 @@ r_ccu: clock@7010000 {
> > >  			#reset-cells = <1>;
> > >  		};
> > >  
> > > +		nmi_intc: interrupt-controller@7010320 {
> > > +			compatible = "allwinner,sun50i-h616-nmi",
> > > +				     "allwinner,sun9i-a80-nmi";
> > > +			reg = <0x07010320 0xc>;
> > > +			interrupt-controller;
> > > +			#interrupt-cells = <2>;
> > > +			interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
> > > +		};
> > > +  
> > 
> > I can confirm that this matches the manual, and the registers behave as
> > described in the A80 manual. I don't have access to a chip with the NMI
> > pad exposed or used, so I cannot test this fully, but Chris'
> > experiments with the AXP717 PMIC connected to that pin on on H700
> > board seem to confirm that it indeed works.
> > 
> > So with that small amendment to the commit message please take my:
> > 
> > Reviewed-by: Andre Przywara <andre.przywara@arm.com>
> > 
> > Cheers,
> > Andre
> >   
> > >  		r_pio: pinctrl@7022000 {
> > >  			compatible = "allwinner,sun50i-h616-r-pinctrl";
> > >  			reg = <0x07022000 0x400>;  
> >   
> 
> Since the H616 doesn't have this functionality but the T507 and H700
> does, should I change the compatible string? It's all the same
> silicon die with just a different part number printed on it, but
> still...

I would stick to h616, since we use that for all the other devices. Also
the H616 *has* that NMI controller: I can confirm that the registers exist,
and I can trigger and acknowledge interrupts. So in the interest of
consistency: keep using "allwinner,sun50i-h616-nmi".

Cheers,
Andre
Chris Morgan April 18, 2024, 5:52 p.m. UTC | #4
On Thu, Apr 18, 2024 at 05:19:07PM +0100, Andre Przywara wrote:
> On Thu, 18 Apr 2024 10:59:13 -0500
> Chris Morgan <macromorgan@hotmail.com> wrote:
> 
> Hi,
> 
> > On Mon, Apr 15, 2024 at 12:37:40AM +0100, Andre Przywara wrote:
> > > On Sun, 14 Apr 2024 12:04:24 -0500
> > > Chris Morgan <macroalpha82@gmail.com> wrote:
> > > 
> > > Hi Chris,
> > >   
> > > > From: Chris Morgan <macromorgan@hotmail.com>
> > > > 
> > > > Add device node for the H616 Non Maskable Interrupt (NMI) controller.  
> > > 
> > > You might want to mention that the NMI pad is not exposed on the H616 variants, but on
> > > the T507 and H700 packages.
> > >   
> > > > 
> > > > Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
> > > > ---
> > > >  arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi | 9 +++++++++
> > > >  1 file changed, 9 insertions(+)
> > > > 
> > > > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
> > > > index b2e85e52d1a1..1e066f3057be 100644
> > > > --- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
> > > > +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
> > > > @@ -775,6 +775,15 @@ r_ccu: clock@7010000 {
> > > >  			#reset-cells = <1>;
> > > >  		};
> > > >  
> > > > +		nmi_intc: interrupt-controller@7010320 {
> > > > +			compatible = "allwinner,sun50i-h616-nmi",
> > > > +				     "allwinner,sun9i-a80-nmi";
> > > > +			reg = <0x07010320 0xc>;
> > > > +			interrupt-controller;
> > > > +			#interrupt-cells = <2>;
> > > > +			interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
> > > > +		};
> > > > +  
> > > 
> > > I can confirm that this matches the manual, and the registers behave as
> > > described in the A80 manual. I don't have access to a chip with the NMI
> > > pad exposed or used, so I cannot test this fully, but Chris'
> > > experiments with the AXP717 PMIC connected to that pin on on H700
> > > board seem to confirm that it indeed works.
> > > 
> > > So with that small amendment to the commit message please take my:
> > > 
> > > Reviewed-by: Andre Przywara <andre.przywara@arm.com>
> > > 
> > > Cheers,
> > > Andre
> > >   
> > > >  		r_pio: pinctrl@7022000 {
> > > >  			compatible = "allwinner,sun50i-h616-r-pinctrl";
> > > >  			reg = <0x07022000 0x400>;  
> > >   
> > 
> > Since the H616 doesn't have this functionality but the T507 and H700
> > does, should I change the compatible string? It's all the same
> > silicon die with just a different part number printed on it, but
> > still...
> 
> I would stick to h616, since we use that for all the other devices. Also
> the H616 *has* that NMI controller: I can confirm that the registers exist,
> and I can trigger and acknowledge interrupts. So in the interest of
> consistency: keep using "allwinner,sun50i-h616-nmi".
> 
> Cheers,
> Andre

Okay, and I'll just resubmit then with the notes you mentioned and
your tags.

Thank you.