diff mbox

arm64: dts: r8a7795: enable DMA for I2C

Message ID 1462365303-1664-1-git-send-email-niklas.soderlund+renesas@ragnatech.se (mailing list archive)
State Superseded
Commit f0d3a8bca301ebcbf68bf742d884096a4a054310
Delegated to: Simon Horman
Headers show

Commit Message

Niklas Söderlund May 4, 2016, 12:35 p.m. UTC
Add DMA properties to the I2C nodes.

Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
---
 arch/arm64/boot/dts/renesas/r8a7795.dtsi | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

Comments

Simon Horman May 16, 2016, 8:19 a.m. UTC | #1
On Wed, May 04, 2016 at 02:35:03PM +0200, Niklas Söderlund wrote:
> Add DMA properties to the I2C nodes.
> 
> Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>

Thanks, I have queued this up.
Geert Uytterhoeven May 17, 2016, 8:52 a.m. UTC | #2
On Wed, May 4, 2016 at 2:35 PM, Niklas Söderlund
<niklas.soderlund+renesas@ragnatech.se> wrote:
> Add DMA properties to the I2C nodes.
>
> Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
> ---
>  arch/arm64/boot/dts/renesas/r8a7795.dtsi | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/renesas/r8a7795.dtsi b/arch/arm64/boot/dts/renesas/r8a7795.dtsi
> index a7315eb..49896e4 100644
> --- a/arch/arm64/boot/dts/renesas/r8a7795.dtsi
> +++ b/arch/arm64/boot/dts/renesas/r8a7795.dtsi
> @@ -693,6 +693,8 @@
>                         interrupts = <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>;
>                         clocks = <&cpg CPG_MOD 931>;
>                         power-domains = <&cpg>;
> +                       dmas = <&dmac1 0x91>, <&dmac1 0x90>;
> +                       dma-names = "tx", "rx";
>                         i2c-scl-internal-delay-ns = <110>;
>                         status = "disabled";
>                 };
> @@ -705,6 +707,8 @@
>                         interrupts = <GIC_SPI 288 IRQ_TYPE_LEVEL_HIGH>;
>                         clocks = <&cpg CPG_MOD 930>;
>                         power-domains = <&cpg>;
> +                       dmas = <&dmac1 0x93>, <&dmac1 0x92>;
> +                       dma-names = "tx", "rx";
>                         i2c-scl-internal-delay-ns = <6>;
>                         status = "disabled";
>                 };
> @@ -717,6 +721,8 @@
>                         interrupts = <GIC_SPI 286 IRQ_TYPE_LEVEL_HIGH>;
>                         clocks = <&cpg CPG_MOD 929>;
>                         power-domains = <&cpg>;
> +                       dmas = <&dmac1 0x95>, <&dmac1 0x94>;
> +                       dma-names = "tx", "rx";
>                         i2c-scl-internal-delay-ns = <6>;
>                         status = "disabled";
>                 };

The three above can be used with SYS-DMAC1 (channels 16-31) or with SYS-DMAC2
(channels 32-47).
It should be tested with the latter before adding the corresponding dmas, as
we had issue with SYS-DMAC2 before (they may have been fixed in firmware in the
mean time).

> @@ -729,6 +735,8 @@
>                         interrupts = <GIC_SPI 290 IRQ_TYPE_LEVEL_HIGH>;
>                         clocks = <&cpg CPG_MOD 928>;
>                         power-domains = <&cpg>;
> +                       dmas = <&dmac1 0x97>, <&dmac1 0x96>;

The two phandles above should reference "dmac0", as this i2c module can only be
used with SYS-DMAC0 (channels 0-15), according to the datasheet.

> +                       dma-names = "tx", "rx";
>                         i2c-scl-internal-delay-ns = <110>;
>                         status = "disabled";
>                 };
> @@ -741,6 +749,8 @@
>                         interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
>                         clocks = <&cpg CPG_MOD 927>;
>                         power-domains = <&cpg>;
> +                       dmas = <&dmac1 0x99>, <&dmac1 0x98>;

dmac0

> +                       dma-names = "tx", "rx";
>                         i2c-scl-internal-delay-ns = <110>;
>                         status = "disabled";
>                 };
> @@ -753,6 +763,8 @@
>                         interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
>                         clocks = <&cpg CPG_MOD 919>;
>                         power-domains = <&cpg>;
> +                       dmas = <&dmac1 0x9b>, <&dmac1 0x9a>;

dmac0

> +                       dma-names = "tx", "rx";
>                         i2c-scl-internal-delay-ns = <110>;
>                         status = "disabled";
>                 };
> @@ -765,6 +777,8 @@
>                         interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
>                         clocks = <&cpg CPG_MOD 918>;
>                         power-domains = <&cpg>;
> +                       dmas = <&dmac1 0x9d>, <&dmac1 0x9c>;

dmac0

> +                       dma-names = "tx", "rx";
>                         i2c-scl-internal-delay-ns = <6>;
>                         status = "disabled";
>                 };

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
Niklas Söderlund May 17, 2016, 10:13 a.m. UTC | #3
On 2016-05-17 10:52:08 +0200, Geert Uytterhoeven wrote:
> On Wed, May 4, 2016 at 2:35 PM, Niklas Söderlund
> <niklas.soderlund+renesas@ragnatech.se> wrote:
> > Add DMA properties to the I2C nodes.
> >
> > Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
> > ---
> >  arch/arm64/boot/dts/renesas/r8a7795.dtsi | 14 ++++++++++++++
> >  1 file changed, 14 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/renesas/r8a7795.dtsi b/arch/arm64/boot/dts/renesas/r8a7795.dtsi
> > index a7315eb..49896e4 100644
> > --- a/arch/arm64/boot/dts/renesas/r8a7795.dtsi
> > +++ b/arch/arm64/boot/dts/renesas/r8a7795.dtsi
> > @@ -693,6 +693,8 @@
> >                         interrupts = <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>;
> >                         clocks = <&cpg CPG_MOD 931>;
> >                         power-domains = <&cpg>;
> > +                       dmas = <&dmac1 0x91>, <&dmac1 0x90>;
> > +                       dma-names = "tx", "rx";
> >                         i2c-scl-internal-delay-ns = <110>;
> >                         status = "disabled";
> >                 };
> > @@ -705,6 +707,8 @@
> >                         interrupts = <GIC_SPI 288 IRQ_TYPE_LEVEL_HIGH>;
> >                         clocks = <&cpg CPG_MOD 930>;
> >                         power-domains = <&cpg>;
> > +                       dmas = <&dmac1 0x93>, <&dmac1 0x92>;
> > +                       dma-names = "tx", "rx";
> >                         i2c-scl-internal-delay-ns = <6>;
> >                         status = "disabled";
> >                 };
> > @@ -717,6 +721,8 @@
> >                         interrupts = <GIC_SPI 286 IRQ_TYPE_LEVEL_HIGH>;
> >                         clocks = <&cpg CPG_MOD 929>;
> >                         power-domains = <&cpg>;
> > +                       dmas = <&dmac1 0x95>, <&dmac1 0x94>;
> > +                       dma-names = "tx", "rx";
> >                         i2c-scl-internal-delay-ns = <6>;
> >                         status = "disabled";
> >                 };
> 
> The three above can be used with SYS-DMAC1 (channels 16-31) or with SYS-DMAC2
> (channels 32-47).
> It should be tested with the latter before adding the corresponding dmas, as
> we had issue with SYS-DMAC2 before (they may have been fixed in firmware in the
> mean time).

I tested with firmware v270-4core and you are correct, looks like dmac2 
is not working for i2c.

> 
> > @@ -729,6 +735,8 @@
> >                         interrupts = <GIC_SPI 290 IRQ_TYPE_LEVEL_HIGH>;
> >                         clocks = <&cpg CPG_MOD 928>;
> >                         power-domains = <&cpg>;
> > +                       dmas = <&dmac1 0x97>, <&dmac1 0x96>;
> 
> The two phandles above should reference "dmac0", as this i2c module can only be
> used with SYS-DMAC0 (channels 0-15), according to the datasheet.

Thanks for pointing this out! I will fix it.

> 
> > +                       dma-names = "tx", "rx";
> >                         i2c-scl-internal-delay-ns = <110>;
> >                         status = "disabled";
> >                 };
> > @@ -741,6 +749,8 @@
> >                         interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
> >                         clocks = <&cpg CPG_MOD 927>;
> >                         power-domains = <&cpg>;
> > +                       dmas = <&dmac1 0x99>, <&dmac1 0x98>;
> 
> dmac0
> 
> > +                       dma-names = "tx", "rx";
> >                         i2c-scl-internal-delay-ns = <110>;
> >                         status = "disabled";
> >                 };
> > @@ -753,6 +763,8 @@
> >                         interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
> >                         clocks = <&cpg CPG_MOD 919>;
> >                         power-domains = <&cpg>;
> > +                       dmas = <&dmac1 0x9b>, <&dmac1 0x9a>;
> 
> dmac0
> 
> > +                       dma-names = "tx", "rx";
> >                         i2c-scl-internal-delay-ns = <110>;
> >                         status = "disabled";
> >                 };
> > @@ -765,6 +777,8 @@
> >                         interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
> >                         clocks = <&cpg CPG_MOD 918>;
> >                         power-domains = <&cpg>;
> > +                       dmas = <&dmac1 0x9d>, <&dmac1 0x9c>;
> 
> dmac0
> 
> > +                       dma-names = "tx", "rx";
> >                         i2c-scl-internal-delay-ns = <6>;
> >                         status = "disabled";
> >                 };
> 
> Gr{oetje,eeting}s,
> 
>                         Geert
> 
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
> 
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
>                                 -- Linus Torvalds
diff mbox

Patch

diff --git a/arch/arm64/boot/dts/renesas/r8a7795.dtsi b/arch/arm64/boot/dts/renesas/r8a7795.dtsi
index a7315eb..49896e4 100644
--- a/arch/arm64/boot/dts/renesas/r8a7795.dtsi
+++ b/arch/arm64/boot/dts/renesas/r8a7795.dtsi
@@ -693,6 +693,8 @@ 
 			interrupts = <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>;
 			clocks = <&cpg CPG_MOD 931>;
 			power-domains = <&cpg>;
+			dmas = <&dmac1 0x91>, <&dmac1 0x90>;
+			dma-names = "tx", "rx";
 			i2c-scl-internal-delay-ns = <110>;
 			status = "disabled";
 		};
@@ -705,6 +707,8 @@ 
 			interrupts = <GIC_SPI 288 IRQ_TYPE_LEVEL_HIGH>;
 			clocks = <&cpg CPG_MOD 930>;
 			power-domains = <&cpg>;
+			dmas = <&dmac1 0x93>, <&dmac1 0x92>;
+			dma-names = "tx", "rx";
 			i2c-scl-internal-delay-ns = <6>;
 			status = "disabled";
 		};
@@ -717,6 +721,8 @@ 
 			interrupts = <GIC_SPI 286 IRQ_TYPE_LEVEL_HIGH>;
 			clocks = <&cpg CPG_MOD 929>;
 			power-domains = <&cpg>;
+			dmas = <&dmac1 0x95>, <&dmac1 0x94>;
+			dma-names = "tx", "rx";
 			i2c-scl-internal-delay-ns = <6>;
 			status = "disabled";
 		};
@@ -729,6 +735,8 @@ 
 			interrupts = <GIC_SPI 290 IRQ_TYPE_LEVEL_HIGH>;
 			clocks = <&cpg CPG_MOD 928>;
 			power-domains = <&cpg>;
+			dmas = <&dmac1 0x97>, <&dmac1 0x96>;
+			dma-names = "tx", "rx";
 			i2c-scl-internal-delay-ns = <110>;
 			status = "disabled";
 		};
@@ -741,6 +749,8 @@ 
 			interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
 			clocks = <&cpg CPG_MOD 927>;
 			power-domains = <&cpg>;
+			dmas = <&dmac1 0x99>, <&dmac1 0x98>;
+			dma-names = "tx", "rx";
 			i2c-scl-internal-delay-ns = <110>;
 			status = "disabled";
 		};
@@ -753,6 +763,8 @@ 
 			interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
 			clocks = <&cpg CPG_MOD 919>;
 			power-domains = <&cpg>;
+			dmas = <&dmac1 0x9b>, <&dmac1 0x9a>;
+			dma-names = "tx", "rx";
 			i2c-scl-internal-delay-ns = <110>;
 			status = "disabled";
 		};
@@ -765,6 +777,8 @@ 
 			interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
 			clocks = <&cpg CPG_MOD 918>;
 			power-domains = <&cpg>;
+			dmas = <&dmac1 0x9d>, <&dmac1 0x9c>;
+			dma-names = "tx", "rx";
 			i2c-scl-internal-delay-ns = <6>;
 			status = "disabled";
 		};