devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] arm64: dts: ls1028a: put SAIs into async mode
@ 2019-11-29 21:09 Michael Walle
  2019-12-09  9:08 ` Shawn Guo
  2019-12-11  9:20 ` Shawn Guo
  0 siblings, 2 replies; 6+ messages in thread
From: Michael Walle @ 2019-11-29 21:09 UTC (permalink / raw)
  To: linux-arm-kernel, devicetree, linux-kernel
  Cc: Shawn Guo, Li Yang, Rob Herring, Mark Rutland, Michael Walle

The LS1028A SoC has only unidirectional SAIs. Therefore, it doesn't make
sense to have the RX and TX part synchronous. Even worse, the RX part
wont work out of the box because by default it is configured as
synchronous to the TX part. And as said before, the pinmux of the SoC
can only be configured to route either the RX or the TX signals to the
SAI but never both at the same time. Thus configure the asynchronous
mode by default.

Signed-off-by: Michael Walle <michael@walle.cc>
---
 arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi b/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
index 379913756e90..9be33426e5ce 100644
--- a/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
+++ b/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
@@ -637,6 +637,7 @@
 			dma-names = "tx", "rx";
 			dmas = <&edma0 1 4>,
 			       <&edma0 1 3>;
+			fsl,sai-asynchronous;
 			status = "disabled";
 		};
 
@@ -651,6 +652,7 @@
 			dma-names = "tx", "rx";
 			dmas = <&edma0 1 6>,
 			       <&edma0 1 5>;
+			fsl,sai-asynchronous;
 			status = "disabled";
 		};
 
@@ -665,6 +667,7 @@
 			dma-names = "tx", "rx";
 			dmas = <&edma0 1 8>,
 			       <&edma0 1 7>;
+			fsl,sai-asynchronous;
 			status = "disabled";
 		};
 
@@ -679,6 +682,7 @@
 			dma-names = "tx", "rx";
 			dmas = <&edma0 1 10>,
 			       <&edma0 1 9>;
+			fsl,sai-asynchronous;
 			status = "disabled";
 		};
 
@@ -693,6 +697,7 @@
 			dma-names = "tx", "rx";
 			dmas = <&edma0 1 12>,
 			       <&edma0 1 11>;
+			fsl,sai-asynchronous;
 			status = "disabled";
 		};
 
@@ -707,6 +712,7 @@
 			dma-names = "tx", "rx";
 			dmas = <&edma0 1 14>,
 			       <&edma0 1 13>;
+			fsl,sai-asynchronous;
 			status = "disabled";
 		};
 
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] arm64: dts: ls1028a: put SAIs into async mode
  2019-11-29 21:09 [PATCH] arm64: dts: ls1028a: put SAIs into async mode Michael Walle
@ 2019-12-09  9:08 ` Shawn Guo
  2019-12-10  5:35   ` [EXT] " Alison Wang
  2019-12-11  9:20 ` Shawn Guo
  1 sibling, 1 reply; 6+ messages in thread
From: Shawn Guo @ 2019-12-09  9:08 UTC (permalink / raw)
  To: Michael Walle, Alison Wang
  Cc: linux-arm-kernel, devicetree, linux-kernel, Li Yang, Rob Herring,
	Mark Rutland

+ Alison Wang

On Fri, Nov 29, 2019 at 10:09:37PM +0100, Michael Walle wrote:
> The LS1028A SoC has only unidirectional SAIs. Therefore, it doesn't make
> sense to have the RX and TX part synchronous. Even worse, the RX part
> wont work out of the box because by default it is configured as
> synchronous to the TX part. And as said before, the pinmux of the SoC
> can only be configured to route either the RX or the TX signals to the
> SAI but never both at the same time. Thus configure the asynchronous
> mode by default.
> 
> Signed-off-by: Michael Walle <michael@walle.cc>

Alison, Leo,

Looks good to you?

Shawn

> ---
>  arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi b/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
> index 379913756e90..9be33426e5ce 100644
> --- a/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
> +++ b/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
> @@ -637,6 +637,7 @@
>  			dma-names = "tx", "rx";
>  			dmas = <&edma0 1 4>,
>  			       <&edma0 1 3>;
> +			fsl,sai-asynchronous;
>  			status = "disabled";
>  		};
>  
> @@ -651,6 +652,7 @@
>  			dma-names = "tx", "rx";
>  			dmas = <&edma0 1 6>,
>  			       <&edma0 1 5>;
> +			fsl,sai-asynchronous;
>  			status = "disabled";
>  		};
>  
> @@ -665,6 +667,7 @@
>  			dma-names = "tx", "rx";
>  			dmas = <&edma0 1 8>,
>  			       <&edma0 1 7>;
> +			fsl,sai-asynchronous;
>  			status = "disabled";
>  		};
>  
> @@ -679,6 +682,7 @@
>  			dma-names = "tx", "rx";
>  			dmas = <&edma0 1 10>,
>  			       <&edma0 1 9>;
> +			fsl,sai-asynchronous;
>  			status = "disabled";
>  		};
>  
> @@ -693,6 +697,7 @@
>  			dma-names = "tx", "rx";
>  			dmas = <&edma0 1 12>,
>  			       <&edma0 1 11>;
> +			fsl,sai-asynchronous;
>  			status = "disabled";
>  		};
>  
> @@ -707,6 +712,7 @@
>  			dma-names = "tx", "rx";
>  			dmas = <&edma0 1 14>,
>  			       <&edma0 1 13>;
> +			fsl,sai-asynchronous;
>  			status = "disabled";
>  		};
>  
> -- 
> 2.20.1
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* RE: [EXT] Re: [PATCH] arm64: dts: ls1028a: put SAIs into async mode
  2019-12-09  9:08 ` Shawn Guo
@ 2019-12-10  5:35   ` Alison Wang
  2019-12-10  8:46     ` Michael Walle
  0 siblings, 1 reply; 6+ messages in thread
From: Alison Wang @ 2019-12-10  5:35 UTC (permalink / raw)
  To: Shawn Guo, Michael Walle
  Cc: linux-arm-kernel, devicetree, linux-kernel, Leo Li, Rob Herring,
	Mark Rutland

Hi, Michael,

In most of our cases, TX and RX are using the same BCLK and SYNC clocks. So the default synchronous mode (sync Rx with Tx) is used, which means both transmitter and receiver will send and receive data by following clocks of transmitter. It is verified on our boards.


Best Regards,
Alison Wang

> -----Original Message-----
> From: Shawn Guo <shawnguo@kernel.org>
> Sent: Monday, December 9, 2019 5:09 PM
> To: Michael Walle <michael@walle.cc>; Alison Wang <alison.wang@nxp.com>
> Cc: linux-arm-kernel@lists.infradead.org; devicetree@vger.kernel.org;
> linux-kernel@vger.kernel.org; Leo Li <leoyang.li@nxp.com>; Rob Herring
> <robh+dt@kernel.org>; Mark Rutland <mark.rutland@arm.com>
> Subject: [EXT] Re: [PATCH] arm64: dts: ls1028a: put SAIs into async mode
> 
> Caution: EXT Email
> 
> + Alison Wang
> 
> On Fri, Nov 29, 2019 at 10:09:37PM +0100, Michael Walle wrote:
> > The LS1028A SoC has only unidirectional SAIs. Therefore, it doesn't
> > make sense to have the RX and TX part synchronous. Even worse, the RX
> > part wont work out of the box because by default it is configured as
> > synchronous to the TX part. And as said before, the pinmux of the SoC
> > can only be configured to route either the RX or the TX signals to the
> > SAI but never both at the same time. Thus configure the asynchronous
> > mode by default.
> >
> > Signed-off-by: Michael Walle <michael@walle.cc>
> 
> Alison, Leo,
> 
> Looks good to you?
> 
> Shawn
> 
> > ---
> >  arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi | 6 ++++++
> >  1 file changed, 6 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
> > b/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
> > index 379913756e90..9be33426e5ce 100644
> > --- a/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
> > +++ b/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
> > @@ -637,6 +637,7 @@
> >                       dma-names = "tx", "rx";
> >                       dmas = <&edma0 1 4>,
> >                              <&edma0 1 3>;
> > +                     fsl,sai-asynchronous;
> >                       status = "disabled";
> >               };
> >
> > @@ -651,6 +652,7 @@
> >                       dma-names = "tx", "rx";
> >                       dmas = <&edma0 1 6>,
> >                              <&edma0 1 5>;
> > +                     fsl,sai-asynchronous;
> >                       status = "disabled";
> >               };
> >
> > @@ -665,6 +667,7 @@
> >                       dma-names = "tx", "rx";
> >                       dmas = <&edma0 1 8>,
> >                              <&edma0 1 7>;
> > +                     fsl,sai-asynchronous;
> >                       status = "disabled";
> >               };
> >
> > @@ -679,6 +682,7 @@
> >                       dma-names = "tx", "rx";
> >                       dmas = <&edma0 1 10>,
> >                              <&edma0 1 9>;
> > +                     fsl,sai-asynchronous;
> >                       status = "disabled";
> >               };
> >
> > @@ -693,6 +697,7 @@
> >                       dma-names = "tx", "rx";
> >                       dmas = <&edma0 1 12>,
> >                              <&edma0 1 11>;
> > +                     fsl,sai-asynchronous;
> >                       status = "disabled";
> >               };
> >
> > @@ -707,6 +712,7 @@
> >                       dma-names = "tx", "rx";
> >                       dmas = <&edma0 1 14>,
> >                              <&edma0 1 13>;
> > +                     fsl,sai-asynchronous;
> >                       status = "disabled";
> >               };
> >
> > --
> > 2.20.1
> >

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [EXT] Re: [PATCH] arm64: dts: ls1028a: put SAIs into async mode
  2019-12-10  5:35   ` [EXT] " Alison Wang
@ 2019-12-10  8:46     ` Michael Walle
  2019-12-10  9:13       ` Alison Wang
  0 siblings, 1 reply; 6+ messages in thread
From: Michael Walle @ 2019-12-10  8:46 UTC (permalink / raw)
  To: Alison Wang
  Cc: Shawn Guo, linux-arm-kernel, devicetree, linux-kernel, Leo Li,
	Rob Herring, Mark Rutland


Hi Alison,

Am 2019-12-10 06:35, schrieb Alison Wang:
> Hi, Michael,
> 
> In most of our cases, TX and RX are using the same BCLK and SYNC
> clocks. So the default synchronous mode (sync Rx with Tx) is used,
> which means both transmitter and receiver will send and receive data
> by following clocks of transmitter. It is verified on our boards.


I get that, but it doesn't make sense for the LS1028A SoC because, there
is no way you have have the TX data and the RX clocks or vice versa. The
hardware of the SoC doesn't allow that. I cannot speak of the QDS 
variant
of the SoC, but the LS1028ARDB only has a transmitter. So there is no
problem, because it will default to the TX clock. But as soon as you 
also
have a receiver you have to use the clock of the receiver block. You 
could
say, use fsl,sai-synchronous-rx, but that will only work if the SAI is
used in RX mode. fsl,sai-asynchronous mode works for both on the other
hand and can therefore be the default mode.

-michael


> 
> 
> Best Regards,
> Alison Wang
> 
>> -----Original Message-----
>> From: Shawn Guo <shawnguo@kernel.org>
>> Sent: Monday, December 9, 2019 5:09 PM
>> To: Michael Walle <michael@walle.cc>; Alison Wang 
>> <alison.wang@nxp.com>
>> Cc: linux-arm-kernel@lists.infradead.org; devicetree@vger.kernel.org;
>> linux-kernel@vger.kernel.org; Leo Li <leoyang.li@nxp.com>; Rob Herring
>> <robh+dt@kernel.org>; Mark Rutland <mark.rutland@arm.com>
>> Subject: [EXT] Re: [PATCH] arm64: dts: ls1028a: put SAIs into async 
>> mode
>> 
>> Caution: EXT Email
>> 
>> + Alison Wang
>> 
>> On Fri, Nov 29, 2019 at 10:09:37PM +0100, Michael Walle wrote:
>> > The LS1028A SoC has only unidirectional SAIs. Therefore, it doesn't
>> > make sense to have the RX and TX part synchronous. Even worse, the RX
>> > part wont work out of the box because by default it is configured as
>> > synchronous to the TX part. And as said before, the pinmux of the SoC
>> > can only be configured to route either the RX or the TX signals to the
>> > SAI but never both at the same time. Thus configure the asynchronous
>> > mode by default.
>> >
>> > Signed-off-by: Michael Walle <michael@walle.cc>
>> 
>> Alison, Leo,
>> 
>> Looks good to you?
>> 
>> Shawn
>> 
>> > ---
>> >  arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi | 6 ++++++
>> >  1 file changed, 6 insertions(+)
>> >
>> > diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
>> > b/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
>> > index 379913756e90..9be33426e5ce 100644
>> > --- a/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
>> > +++ b/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
>> > @@ -637,6 +637,7 @@
>> >                       dma-names = "tx", "rx";
>> >                       dmas = <&edma0 1 4>,
>> >                              <&edma0 1 3>;
>> > +                     fsl,sai-asynchronous;
>> >                       status = "disabled";
>> >               };
>> >
>> > @@ -651,6 +652,7 @@
>> >                       dma-names = "tx", "rx";
>> >                       dmas = <&edma0 1 6>,
>> >                              <&edma0 1 5>;
>> > +                     fsl,sai-asynchronous;
>> >                       status = "disabled";
>> >               };
>> >
>> > @@ -665,6 +667,7 @@
>> >                       dma-names = "tx", "rx";
>> >                       dmas = <&edma0 1 8>,
>> >                              <&edma0 1 7>;
>> > +                     fsl,sai-asynchronous;
>> >                       status = "disabled";
>> >               };
>> >
>> > @@ -679,6 +682,7 @@
>> >                       dma-names = "tx", "rx";
>> >                       dmas = <&edma0 1 10>,
>> >                              <&edma0 1 9>;
>> > +                     fsl,sai-asynchronous;
>> >                       status = "disabled";
>> >               };
>> >
>> > @@ -693,6 +697,7 @@
>> >                       dma-names = "tx", "rx";
>> >                       dmas = <&edma0 1 12>,
>> >                              <&edma0 1 11>;
>> > +                     fsl,sai-asynchronous;
>> >                       status = "disabled";
>> >               };
>> >
>> > @@ -707,6 +712,7 @@
>> >                       dma-names = "tx", "rx";
>> >                       dmas = <&edma0 1 14>,
>> >                              <&edma0 1 13>;
>> > +                     fsl,sai-asynchronous;
>> >                       status = "disabled";
>> >               };
>> >
>> > --
>> > 2.20.1
>> >

^ permalink raw reply	[flat|nested] 6+ messages in thread

* RE: [EXT] Re: [PATCH] arm64: dts: ls1028a: put SAIs into async mode
  2019-12-10  8:46     ` Michael Walle
@ 2019-12-10  9:13       ` Alison Wang
  0 siblings, 0 replies; 6+ messages in thread
From: Alison Wang @ 2019-12-10  9:13 UTC (permalink / raw)
  To: Michael Walle
  Cc: Shawn Guo, linux-arm-kernel, devicetree, linux-kernel, Leo Li,
	Rob Herring, Mark Rutland

Hi, Michael,

> Caution: EXT Email
> 
> Hi Alison,
> 
> Am 2019-12-10 06:35, schrieb Alison Wang:
> > Hi, Michael,
> >
> > In most of our cases, TX and RX are using the same BCLK and SYNC
> > clocks. So the default synchronous mode (sync Rx with Tx) is used,
> > which means both transmitter and receiver will send and receive data
> > by following clocks of transmitter. It is verified on our boards.
> 
> 
> I get that, but it doesn't make sense for the LS1028A SoC because, there is no
> way you have have the TX data and the RX clocks or vice versa. The hardware
> of the SoC doesn't allow that. I cannot speak of the QDS variant of the SoC, but
> the LS1028ARDB only has a transmitter. So there is no problem, because it will
> default to the TX clock. But as soon as you also have a receiver you have to use
> the clock of the receiver block. You could say, use fsl,sai-synchronous-rx, but
> that will only work if the SAI is used in RX mode. fsl,sai-asynchronous mode
> works for both on the other hand and can therefore be the default mode.
> 
> -michael
[Alison] Your explanation is reasonable. LS1028A SoC is a specific one. Using fsl,sai-asynchronous
mode is the preferred choice.

Acked-by: Alison Wang <alison.wang@nxp.com>


Best Regards,
Alison Wang

> 
> 
> >
> >
> > Best Regards,
> > Alison Wang
> >
> >> -----Original Message-----
> >> From: Shawn Guo <shawnguo@kernel.org>
> >> Sent: Monday, December 9, 2019 5:09 PM
> >> To: Michael Walle <michael@walle.cc>; Alison Wang
> >> <alison.wang@nxp.com>
> >> Cc: linux-arm-kernel@lists.infradead.org; devicetree@vger.kernel.org;
> >> linux-kernel@vger.kernel.org; Leo Li <leoyang.li@nxp.com>; Rob
> >> Herring <robh+dt@kernel.org>; Mark Rutland <mark.rutland@arm.com>
> >> Subject: [EXT] Re: [PATCH] arm64: dts: ls1028a: put SAIs into async
> >> mode
> >>
> >> Caution: EXT Email
> >>
> >> + Alison Wang
> >>
> >> On Fri, Nov 29, 2019 at 10:09:37PM +0100, Michael Walle wrote:
> >> > The LS1028A SoC has only unidirectional SAIs. Therefore, it doesn't
> >> > make sense to have the RX and TX part synchronous. Even worse, the
> >> > RX part wont work out of the box because by default it is
> >> > configured as synchronous to the TX part. And as said before, the
> >> > pinmux of the SoC can only be configured to route either the RX or
> >> > the TX signals to the SAI but never both at the same time. Thus
> >> > configure the asynchronous mode by default.
> >> >
> >> > Signed-off-by: Michael Walle <michael@walle.cc>
> >>
> >> Alison, Leo,
> >>
> >> Looks good to you?
> >>
> >> Shawn
> >>
> >> > ---
> >> >  arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi | 6 ++++++
> >> >  1 file changed, 6 insertions(+)
> >> >
> >> > diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
> >> > b/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
> >> > index 379913756e90..9be33426e5ce 100644
> >> > --- a/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
> >> > +++ b/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
> >> > @@ -637,6 +637,7 @@
> >> >                       dma-names = "tx", "rx";
> >> >                       dmas = <&edma0 1 4>,
> >> >                              <&edma0 1 3>;
> >> > +                     fsl,sai-asynchronous;
> >> >                       status = "disabled";
> >> >               };
> >> >
> >> > @@ -651,6 +652,7 @@
> >> >                       dma-names = "tx", "rx";
> >> >                       dmas = <&edma0 1 6>,
> >> >                              <&edma0 1 5>;
> >> > +                     fsl,sai-asynchronous;
> >> >                       status = "disabled";
> >> >               };
> >> >
> >> > @@ -665,6 +667,7 @@
> >> >                       dma-names = "tx", "rx";
> >> >                       dmas = <&edma0 1 8>,
> >> >                              <&edma0 1 7>;
> >> > +                     fsl,sai-asynchronous;
> >> >                       status = "disabled";
> >> >               };
> >> >
> >> > @@ -679,6 +682,7 @@
> >> >                       dma-names = "tx", "rx";
> >> >                       dmas = <&edma0 1 10>,
> >> >                              <&edma0 1 9>;
> >> > +                     fsl,sai-asynchronous;
> >> >                       status = "disabled";
> >> >               };
> >> >
> >> > @@ -693,6 +697,7 @@
> >> >                       dma-names = "tx", "rx";
> >> >                       dmas = <&edma0 1 12>,
> >> >                              <&edma0 1 11>;
> >> > +                     fsl,sai-asynchronous;
> >> >                       status = "disabled";
> >> >               };
> >> >
> >> > @@ -707,6 +712,7 @@
> >> >                       dma-names = "tx", "rx";
> >> >                       dmas = <&edma0 1 14>,
> >> >                              <&edma0 1 13>;
> >> > +                     fsl,sai-asynchronous;
> >> >                       status = "disabled";
> >> >               };
> >> >
> >> > --
> >> > 2.20.1
> >> >

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] arm64: dts: ls1028a: put SAIs into async mode
  2019-11-29 21:09 [PATCH] arm64: dts: ls1028a: put SAIs into async mode Michael Walle
  2019-12-09  9:08 ` Shawn Guo
@ 2019-12-11  9:20 ` Shawn Guo
  1 sibling, 0 replies; 6+ messages in thread
From: Shawn Guo @ 2019-12-11  9:20 UTC (permalink / raw)
  To: Michael Walle
  Cc: linux-arm-kernel, devicetree, linux-kernel, Li Yang, Rob Herring,
	Mark Rutland

On Fri, Nov 29, 2019 at 10:09:37PM +0100, Michael Walle wrote:
> The LS1028A SoC has only unidirectional SAIs. Therefore, it doesn't make
> sense to have the RX and TX part synchronous. Even worse, the RX part
> wont work out of the box because by default it is configured as
> synchronous to the TX part. And as said before, the pinmux of the SoC
> can only be configured to route either the RX or the TX signals to the
> SAI but never both at the same time. Thus configure the asynchronous
> mode by default.
> 
> Signed-off-by: Michael Walle <michael@walle.cc>

Applied, thanks.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2019-12-11  9:21 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-29 21:09 [PATCH] arm64: dts: ls1028a: put SAIs into async mode Michael Walle
2019-12-09  9:08 ` Shawn Guo
2019-12-10  5:35   ` [EXT] " Alison Wang
2019-12-10  8:46     ` Michael Walle
2019-12-10  9:13       ` Alison Wang
2019-12-11  9:20 ` Shawn Guo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).