All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] ARM: dts: imx: fix clocks for cspi
@ 2013-05-23 11:38 Jonas Andersson
  2013-05-23 11:57 ` Sascha Hauer
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Jonas Andersson @ 2013-05-23 11:38 UTC (permalink / raw)
  To: linux-arm-kernel

The CSPI controller has only one clock, but the driver spi-imx.c needs clock "per" to calculate bitrate divisor.

Signed-off-by: Jonas Andersson <jonas@microbit.se>
---
 arch/arm/boot/dts/imx25.dtsi | 12 ++++++------
 arch/arm/boot/dts/imx27.dtsi |  6 +++---
 arch/arm/boot/dts/imx51.dtsi |  2 +-
 arch/arm/boot/dts/imx53.dtsi |  2 +-
 4 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/arch/arm/boot/dts/imx25.dtsi b/arch/arm/boot/dts/imx25.dtsi
index d2550e0..7011539 100644
--- a/arch/arm/boot/dts/imx25.dtsi
+++ b/arch/arm/boot/dts/imx25.dtsi
@@ -141,8 +141,8 @@
 				#size-cells = <0>;
 				compatible = "fsl,imx25-cspi", "fsl,imx35-cspi";
 				reg = <0x43fa4000 0x4000>;
-				clocks = <&clks 62>;
-				clock-names = "ipg";
+				clocks = <&clks 62>, <&clks 62>;
+				clock-names = "ipg", "per";
 				interrupts = <14>;
 				status = "disabled";
 			};
@@ -182,8 +182,8 @@
 				compatible = "fsl,imx25-cspi", "fsl,imx35-cspi";
 				reg = <0x50004000 0x4000>;
 				interrupts = <0>;
-				clocks = <&clks 80>;
-				clock-names = "ipg";
+				clocks = <&clks 80>, <&clks 80>;
+				clock-names = "ipg", "per";
 				status = "disabled";
 			};
 
@@ -210,8 +210,8 @@
 				#size-cells = <0>;
 				compatible = "fsl,imx25-cspi", "fsl,imx35-cspi";
 				reg = <0x50010000 0x4000>;
-				clocks = <&clks 79>;
-				clock-names = "ipg";
+				clocks = <&clks 79>, <&clks 79>;
+				clock-names = "ipg", "per";
 				interrupts = <13>;
 				status = "disabled";
 			};
diff --git a/arch/arm/boot/dts/imx27.dtsi b/arch/arm/boot/dts/imx27.dtsi
index ff4bd48..75bd113 100644
--- a/arch/arm/boot/dts/imx27.dtsi
+++ b/arch/arm/boot/dts/imx27.dtsi
@@ -131,7 +131,7 @@
 				compatible = "fsl,imx27-cspi";
 				reg = <0x1000e000 0x1000>;
 				interrupts = <16>;
-				clocks = <&clks 53>, <&clks 0>;
+				clocks = <&clks 53>, <&clks 53>;
 				clock-names = "ipg", "per";
 				status = "disabled";
 			};
@@ -142,7 +142,7 @@
 				compatible = "fsl,imx27-cspi";
 				reg = <0x1000f000 0x1000>;
 				interrupts = <15>;
-				clocks = <&clks 52>, <&clks 0>;
+				clocks = <&clks 52>, <&clks 52>;
 				clock-names = "ipg", "per";
 				status = "disabled";
 			};
@@ -223,7 +223,7 @@
 				compatible = "fsl,imx27-cspi";
 				reg = <0x10017000 0x1000>;
 				interrupts = <6>;
-				clocks = <&clks 51>, <&clks 0>;
+				clocks = <&clks 51>, <&clks 51>;
 				clock-names = "ipg", "per";
 				status = "disabled";
 			};
diff --git a/arch/arm/boot/dts/imx51.dtsi b/arch/arm/boot/dts/imx51.dtsi
index 21bb786..53fdde6 100644
--- a/arch/arm/boot/dts/imx51.dtsi
+++ b/arch/arm/boot/dts/imx51.dtsi
@@ -631,7 +631,7 @@
 				compatible = "fsl,imx51-cspi", "fsl,imx35-cspi";
 				reg = <0x83fc0000 0x4000>;
 				interrupts = <38>;
-				clocks = <&clks 55>, <&clks 0>;
+				clocks = <&clks 55>, <&clks 55>;
 				clock-names = "ipg", "per";
 				status = "disabled";
 			};
diff --git a/arch/arm/boot/dts/imx53.dtsi b/arch/arm/boot/dts/imx53.dtsi
index 845982e..eb83aa0 100644
--- a/arch/arm/boot/dts/imx53.dtsi
+++ b/arch/arm/boot/dts/imx53.dtsi
@@ -714,7 +714,7 @@
 				compatible = "fsl,imx53-cspi", "fsl,imx35-cspi";
 				reg = <0x63fc0000 0x4000>;
 				interrupts = <38>;
-				clocks = <&clks 55>, <&clks 0>;
+				clocks = <&clks 55>, <&clks 55>;
 				clock-names = "ipg", "per";
 				status = "disabled";
 			};
-- 
1.8.1.4

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

* [PATCH] ARM: dts: imx: fix clocks for cspi
  2013-05-23 11:38 [PATCH] ARM: dts: imx: fix clocks for cspi Jonas Andersson
@ 2013-05-23 11:57 ` Sascha Hauer
  2013-05-23 12:01 ` Alexander Shiyan
  2013-05-24  5:42 ` Shawn Guo
  2 siblings, 0 replies; 10+ messages in thread
From: Sascha Hauer @ 2013-05-23 11:57 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, May 23, 2013 at 01:38:05PM +0200, Jonas Andersson wrote:
> The CSPI controller has only one clock, but the driver spi-imx.c needs clock "per" to calculate bitrate divisor.
> 
> Signed-off-by: Jonas Andersson <jonas@microbit.se>

Acked-by: Sascha Hauer <s.hauer@pengutronix.de>

Sascha

> ---
>  arch/arm/boot/dts/imx25.dtsi | 12 ++++++------
>  arch/arm/boot/dts/imx27.dtsi |  6 +++---
>  arch/arm/boot/dts/imx51.dtsi |  2 +-
>  arch/arm/boot/dts/imx53.dtsi |  2 +-
>  4 files changed, 11 insertions(+), 11 deletions(-)
> 
> diff --git a/arch/arm/boot/dts/imx25.dtsi b/arch/arm/boot/dts/imx25.dtsi
> index d2550e0..7011539 100644
> --- a/arch/arm/boot/dts/imx25.dtsi
> +++ b/arch/arm/boot/dts/imx25.dtsi
> @@ -141,8 +141,8 @@
>  				#size-cells = <0>;
>  				compatible = "fsl,imx25-cspi", "fsl,imx35-cspi";
>  				reg = <0x43fa4000 0x4000>;
> -				clocks = <&clks 62>;
> -				clock-names = "ipg";
> +				clocks = <&clks 62>, <&clks 62>;
> +				clock-names = "ipg", "per";
>  				interrupts = <14>;
>  				status = "disabled";
>  			};
> @@ -182,8 +182,8 @@
>  				compatible = "fsl,imx25-cspi", "fsl,imx35-cspi";
>  				reg = <0x50004000 0x4000>;
>  				interrupts = <0>;
> -				clocks = <&clks 80>;
> -				clock-names = "ipg";
> +				clocks = <&clks 80>, <&clks 80>;
> +				clock-names = "ipg", "per";
>  				status = "disabled";
>  			};
>  
> @@ -210,8 +210,8 @@
>  				#size-cells = <0>;
>  				compatible = "fsl,imx25-cspi", "fsl,imx35-cspi";
>  				reg = <0x50010000 0x4000>;
> -				clocks = <&clks 79>;
> -				clock-names = "ipg";
> +				clocks = <&clks 79>, <&clks 79>;
> +				clock-names = "ipg", "per";
>  				interrupts = <13>;
>  				status = "disabled";
>  			};
> diff --git a/arch/arm/boot/dts/imx27.dtsi b/arch/arm/boot/dts/imx27.dtsi
> index ff4bd48..75bd113 100644
> --- a/arch/arm/boot/dts/imx27.dtsi
> +++ b/arch/arm/boot/dts/imx27.dtsi
> @@ -131,7 +131,7 @@
>  				compatible = "fsl,imx27-cspi";
>  				reg = <0x1000e000 0x1000>;
>  				interrupts = <16>;
> -				clocks = <&clks 53>, <&clks 0>;
> +				clocks = <&clks 53>, <&clks 53>;
>  				clock-names = "ipg", "per";
>  				status = "disabled";
>  			};
> @@ -142,7 +142,7 @@
>  				compatible = "fsl,imx27-cspi";
>  				reg = <0x1000f000 0x1000>;
>  				interrupts = <15>;
> -				clocks = <&clks 52>, <&clks 0>;
> +				clocks = <&clks 52>, <&clks 52>;
>  				clock-names = "ipg", "per";
>  				status = "disabled";
>  			};
> @@ -223,7 +223,7 @@
>  				compatible = "fsl,imx27-cspi";
>  				reg = <0x10017000 0x1000>;
>  				interrupts = <6>;
> -				clocks = <&clks 51>, <&clks 0>;
> +				clocks = <&clks 51>, <&clks 51>;
>  				clock-names = "ipg", "per";
>  				status = "disabled";
>  			};
> diff --git a/arch/arm/boot/dts/imx51.dtsi b/arch/arm/boot/dts/imx51.dtsi
> index 21bb786..53fdde6 100644
> --- a/arch/arm/boot/dts/imx51.dtsi
> +++ b/arch/arm/boot/dts/imx51.dtsi
> @@ -631,7 +631,7 @@
>  				compatible = "fsl,imx51-cspi", "fsl,imx35-cspi";
>  				reg = <0x83fc0000 0x4000>;
>  				interrupts = <38>;
> -				clocks = <&clks 55>, <&clks 0>;
> +				clocks = <&clks 55>, <&clks 55>;
>  				clock-names = "ipg", "per";
>  				status = "disabled";
>  			};
> diff --git a/arch/arm/boot/dts/imx53.dtsi b/arch/arm/boot/dts/imx53.dtsi
> index 845982e..eb83aa0 100644
> --- a/arch/arm/boot/dts/imx53.dtsi
> +++ b/arch/arm/boot/dts/imx53.dtsi
> @@ -714,7 +714,7 @@
>  				compatible = "fsl,imx53-cspi", "fsl,imx35-cspi";
>  				reg = <0x63fc0000 0x4000>;
>  				interrupts = <38>;
> -				clocks = <&clks 55>, <&clks 0>;
> +				clocks = <&clks 55>, <&clks 55>;
>  				clock-names = "ipg", "per";
>  				status = "disabled";
>  			};
> -- 
> 1.8.1.4
> 
> 

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

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

* Re: [PATCH] ARM: dts: imx: fix clocks for cspi
  2013-05-23 11:38 [PATCH] ARM: dts: imx: fix clocks for cspi Jonas Andersson
  2013-05-23 11:57 ` Sascha Hauer
@ 2013-05-23 12:01 ` Alexander Shiyan
  2013-05-23 12:10   ` Re[2]: " Alexander Shiyan
  2013-05-24  5:42 ` Shawn Guo
  2 siblings, 1 reply; 10+ messages in thread
From: Alexander Shiyan @ 2013-05-23 12:01 UTC (permalink / raw)
  To: linux-arm-kernel

> The CSPI controller has only one clock, but the driver spi-imx.c needs clock "per" to calculate bitrate divisor.
> 
> Signed-off-by: Jonas Andersson <jonas@microbit.se>
> ---
>  arch/arm/boot/dts/imx25.dtsi | 12 ++++++------
>  arch/arm/boot/dts/imx27.dtsi |  6 +++---
>  arch/arm/boot/dts/imx51.dtsi |  2 +-
>  arch/arm/boot/dts/imx53.dtsi |  2 +-
>  4 files changed, 11 insertions(+), 11 deletions(-)
> 
> diff --git a/arch/arm/boot/dts/imx25.dtsi b/arch/arm/boot/dts/imx25.dtsi
> index d2550e0..7011539 100644
> --- a/arch/arm/boot/dts/imx25.dtsi
> +++ b/arch/arm/boot/dts/imx25.dtsi
> @@ -141,8 +141,8 @@
>  				#size-cells = <0>;
>  				compatible = "fsl,imx25-cspi", "fsl,imx35-cspi";
>  				reg = <0x43fa4000 0x4000>;
> -				clocks = <&clks 62>;
> -				clock-names = "ipg";
> +				clocks = <&clks 62>, <&clks 62>;
> +				clock-names = "ipg", "per";
>  				interrupts = <14>;
>  				status = "disabled";
>  			};

Why you do not use "dummy" clock for "per" here?
This variant will request/enable one clock two times.

---

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

* Re[2]: [PATCH] ARM: dts: imx: fix clocks for cspi
  2013-05-23 12:01 ` Alexander Shiyan
@ 2013-05-23 12:10   ` Alexander Shiyan
  2013-05-23 12:36     ` Sascha Hauer
  0 siblings, 1 reply; 10+ messages in thread
From: Alexander Shiyan @ 2013-05-23 12:10 UTC (permalink / raw)
  To: linux-arm-kernel

> > The CSPI controller has only one clock, but the driver spi-imx.c needs clock "per" to calculate bitrate divisor.
> > 
> > Signed-off-by: Jonas Andersson <jonas@microbit.se>
> > ---
> >  arch/arm/boot/dts/imx25.dtsi | 12 ++++++------
> >  arch/arm/boot/dts/imx27.dtsi |  6 +++---
> >  arch/arm/boot/dts/imx51.dtsi |  2 +-
> >  arch/arm/boot/dts/imx53.dtsi |  2 +-
> >  4 files changed, 11 insertions(+), 11 deletions(-)
> > 
> > diff --git a/arch/arm/boot/dts/imx25.dtsi b/arch/arm/boot/dts/imx25.dtsi
> > index d2550e0..7011539 100644
> > --- a/arch/arm/boot/dts/imx25.dtsi
> > +++ b/arch/arm/boot/dts/imx25.dtsi
> > @@ -141,8 +141,8 @@
> >  				#size-cells = <0>;
> >  				compatible = "fsl,imx25-cspi", "fsl,imx35-cspi";
> >  				reg = <0x43fa4000 0x4000>;
> > -				clocks = <&clks 62>;
> > -				clock-names = "ipg";
> > +				clocks = <&clks 62>, <&clks 62>;
> > +				clock-names = "ipg", "per";
> >  				interrupts = <14>;
> >  				status = "disabled";
> >  			};

Sorry, typo.

> Why you do not use "dummy" clock for "per" here?

*for "ipg"

> This variant will request/enable one clock two times.
 
---

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

* [PATCH] ARM: dts: imx: fix clocks for cspi
  2013-05-23 12:10   ` Re[2]: " Alexander Shiyan
@ 2013-05-23 12:36     ` Sascha Hauer
  2013-05-23 14:28       ` Re[2]: " Alexander Shiyan
  0 siblings, 1 reply; 10+ messages in thread
From: Sascha Hauer @ 2013-05-23 12:36 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, May 23, 2013 at 04:10:59PM +0400, Alexander Shiyan wrote:
> > > The CSPI controller has only one clock, but the driver spi-imx.c needs clock "per" to calculate bitrate divisor.
> > > 
> > > Signed-off-by: Jonas Andersson <jonas@microbit.se>
> > > ---
> > >  arch/arm/boot/dts/imx25.dtsi | 12 ++++++------
> > >  arch/arm/boot/dts/imx27.dtsi |  6 +++---
> > >  arch/arm/boot/dts/imx51.dtsi |  2 +-
> > >  arch/arm/boot/dts/imx53.dtsi |  2 +-
> > >  4 files changed, 11 insertions(+), 11 deletions(-)
> > > 
> > > diff --git a/arch/arm/boot/dts/imx25.dtsi b/arch/arm/boot/dts/imx25.dtsi
> > > index d2550e0..7011539 100644
> > > --- a/arch/arm/boot/dts/imx25.dtsi
> > > +++ b/arch/arm/boot/dts/imx25.dtsi
> > > @@ -141,8 +141,8 @@
> > >  				#size-cells = <0>;
> > >  				compatible = "fsl,imx25-cspi", "fsl,imx35-cspi";
> > >  				reg = <0x43fa4000 0x4000>;
> > > -				clocks = <&clks 62>;
> > > -				clock-names = "ipg";
> > > +				clocks = <&clks 62>, <&clks 62>;
> > > +				clock-names = "ipg", "per";
> > >  				interrupts = <14>;
> > >  				status = "disabled";
> > >  			};
> 
> Sorry, typo.
> 
> > Why you do not use "dummy" clock for "per" here?
> 
> *for "ipg"

Because the same clock is used for the register clock and the baudrate
clock. You have to enable the ipg clock to access registers.

> 
> > This variant will request/enable one clock two times.

Indeed, but what's the problem with this?

Sascha


-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

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

* Re[2]: [PATCH] ARM: dts: imx: fix clocks for cspi
  2013-05-23 12:36     ` Sascha Hauer
@ 2013-05-23 14:28       ` Alexander Shiyan
  2013-05-23 17:33         ` Sascha Hauer
  0 siblings, 1 reply; 10+ messages in thread
From: Alexander Shiyan @ 2013-05-23 14:28 UTC (permalink / raw)
  To: linux-arm-kernel

> On Thu, May 23, 2013 at 04:10:59PM +0400, Alexander Shiyan wrote:
> > > > The CSPI controller has only one clock, but the driver spi-imx.c needs clock "per" to calculate bitrate divisor.
> > > > 
> > > > Signed-off-by: Jonas Andersson <jonas@microbit.se>
> > > > ---
> > > >  arch/arm/boot/dts/imx25.dtsi | 12 ++++++------
> > > >  arch/arm/boot/dts/imx27.dtsi |  6 +++---
> > > >  arch/arm/boot/dts/imx51.dtsi |  2 +-
> > > >  arch/arm/boot/dts/imx53.dtsi |  2 +-
> > > >  4 files changed, 11 insertions(+), 11 deletions(-)
> > > > 
> > > > diff --git a/arch/arm/boot/dts/imx25.dtsi b/arch/arm/boot/dts/imx25.dtsi
> > > > index d2550e0..7011539 100644
> > > > --- a/arch/arm/boot/dts/imx25.dtsi
> > > > +++ b/arch/arm/boot/dts/imx25.dtsi
> > > > @@ -141,8 +141,8 @@
> > > >  				#size-cells = <0>;
> > > >  				compatible = "fsl,imx25-cspi", "fsl,imx35-cspi";
> > > >  				reg = <0x43fa4000 0x4000>;
> > > > -				clocks = <&clks 62>;
> > > > -				clock-names = "ipg";
> > > > +				clocks = <&clks 62>, <&clks 62>;
> > > > +				clock-names = "ipg", "per";
> > > >  				interrupts = <14>;
> > > >  				status = "disabled";
> > > >  			};
> > 
> > Sorry, typo.
> > 
> > > Why you do not use "dummy" clock for "per" here?
> > 
> > *for "ipg"
> 
> Because the same clock is used for the register clock and the baudrate
> clock. You have to enable the ipg clock to access registers.

I am not see any "ipg" clock usage in the spi driver. If "ipg" clock is
a dependency for "per" clock, it should be registered in ccm as parent.
Is not it?

---

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

* [PATCH] ARM: dts: imx: fix clocks for cspi
  2013-05-23 14:28       ` Re[2]: " Alexander Shiyan
@ 2013-05-23 17:33         ` Sascha Hauer
  2013-05-24  4:16           ` Re[2]: " Alexander Shiyan
  0 siblings, 1 reply; 10+ messages in thread
From: Sascha Hauer @ 2013-05-23 17:33 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, May 23, 2013 at 06:28:10PM +0400, Alexander Shiyan wrote:
> > On Thu, May 23, 2013 at 04:10:59PM +0400, Alexander Shiyan wrote:
> > > > > The CSPI controller has only one clock, but the driver spi-imx.c needs clock "per" to calculate bitrate divisor.
> > > > > 
> > > > > Signed-off-by: Jonas Andersson <jonas@microbit.se>
> > > > > ---
> > > > >  arch/arm/boot/dts/imx25.dtsi | 12 ++++++------
> > > > >  arch/arm/boot/dts/imx27.dtsi |  6 +++---
> > > > >  arch/arm/boot/dts/imx51.dtsi |  2 +-
> > > > >  arch/arm/boot/dts/imx53.dtsi |  2 +-
> > > > >  4 files changed, 11 insertions(+), 11 deletions(-)
> > > > > 
> > > > > diff --git a/arch/arm/boot/dts/imx25.dtsi b/arch/arm/boot/dts/imx25.dtsi
> > > > > index d2550e0..7011539 100644
> > > > > --- a/arch/arm/boot/dts/imx25.dtsi
> > > > > +++ b/arch/arm/boot/dts/imx25.dtsi
> > > > > @@ -141,8 +141,8 @@
> > > > >  				#size-cells = <0>;
> > > > >  				compatible = "fsl,imx25-cspi", "fsl,imx35-cspi";
> > > > >  				reg = <0x43fa4000 0x4000>;
> > > > > -				clocks = <&clks 62>;
> > > > > -				clock-names = "ipg";
> > > > > +				clocks = <&clks 62>, <&clks 62>;
> > > > > +				clock-names = "ipg", "per";
> > > > >  				interrupts = <14>;
> > > > >  				status = "disabled";
> > > > >  			};
> > > 
> > > Sorry, typo.
> > > 
> > > > Why you do not use "dummy" clock for "per" here?
> > > 
> > > *for "ipg"
> > 
> > Because the same clock is used for the register clock and the baudrate
> > clock. You have to enable the ipg clock to access registers.
> 
> I am not see any "ipg" clock usage in the spi driver.

It's the register clock. The driver enables it in order to access the
registers.

> If "ipg" clock is
> a dependency for "per" clock, it should be registered in ccm as parent.

Look, the eCSPI unit has two clock inputs, one for accessing the
registers (ipg) and one for generating the SPI bit clock (per). Now the
CSPI unit only has a single clock input, so the 100% correct way would
be to specify only a single clock for this unit. However, since we
handle both units with the same driver the simplest way to cope with
it is to provide the very same clock twice, once for the register access
and once for generating the SPI bit clock.
And yes, we have to specify the real clock twice and can't replace one
with a dummy clock, because if we specify a dummy clock for the ipg
clock, then the driver couldn't access the registers even if it enabled
the clock. If we would replace the SPI bit clock with a dummy clock then
the device couldn't send data even if the driver enabled the bit clock.
(That of course only becomes relevant when the driver actually
en/disables the clocks during runtime and not only once during probe).

Sascha


-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

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

* Re[2]: [PATCH] ARM: dts: imx: fix clocks for cspi
  2013-05-23 17:33         ` Sascha Hauer
@ 2013-05-24  4:16           ` Alexander Shiyan
  2013-06-25 15:05             ` Michael Grzeschik
  0 siblings, 1 reply; 10+ messages in thread
From: Alexander Shiyan @ 2013-05-24  4:16 UTC (permalink / raw)
  To: linux-arm-kernel

> > > On Thu, May 23, 2013 at 04:10:59PM +0400, Alexander Shiyan wrote:
> > > > > > The CSPI controller has only one clock, but the driver spi-imx.c needs clock "per" to calculate bitrate divisor.
> > > > > > 
> > > > > > Signed-off-by: Jonas Andersson <jonas@microbit.se>
> > > > > > ---
> > > > > >  arch/arm/boot/dts/imx25.dtsi | 12 ++++++------
> > > > > >  arch/arm/boot/dts/imx27.dtsi |  6 +++---
> > > > > >  arch/arm/boot/dts/imx51.dtsi |  2 +-
> > > > > >  arch/arm/boot/dts/imx53.dtsi |  2 +-
> > > > > >  4 files changed, 11 insertions(+), 11 deletions(-)
> > > > > > 
> > > > > > diff --git a/arch/arm/boot/dts/imx25.dtsi b/arch/arm/boot/dts/imx25.dtsi
> > > > > > index d2550e0..7011539 100644
> > > > > > --- a/arch/arm/boot/dts/imx25.dtsi
> > > > > > +++ b/arch/arm/boot/dts/imx25.dtsi
> > > > > > @@ -141,8 +141,8 @@
> > > > > >  				#size-cells = <0>;
> > > > > >  				compatible = "fsl,imx25-cspi", "fsl,imx35-cspi";
> > > > > >  				reg = <0x43fa4000 0x4000>;
> > > > > > -				clocks = <&clks 62>;
> > > > > > -				clock-names = "ipg";
> > > > > > +				clocks = <&clks 62>, <&clks 62>;
> > > > > > +				clock-names = "ipg", "per";
> > > > > >  				interrupts = <14>;
> > > > > >  				status = "disabled";
> > > > > >  			};
> > > > 
> > > > Sorry, typo.
> > > > 
> > > > > Why you do not use "dummy" clock for "per" here?
> > > > 
> > > > *for "ipg"
> > > 
> > > Because the same clock is used for the register clock and the baudrate
> > > clock. You have to enable the ipg clock to access registers.
> > 
> > I am not see any "ipg" clock usage in the spi driver.
> 
> It's the register clock. The driver enables it in order to access the
> registers.
> 
> > If "ipg" clock is
> > a dependency for "per" clock, it should be registered in ccm as parent.
> 
> Look, the eCSPI unit has two clock inputs, one for accessing the
> registers (ipg) and one for generating the SPI bit clock (per). Now the
> CSPI unit only has a single clock input, so the 100% correct way would
> be to specify only a single clock for this unit. However, since we
> handle both units with the same driver the simplest way to cope with
> it is to provide the very same clock twice, once for the register access
> and once for generating the SPI bit clock.
> And yes, we have to specify the real clock twice and can't replace one
> with a dummy clock, because if we specify a dummy clock for the ipg
> clock, then the driver couldn't access the registers even if it enabled
> the clock. If we would replace the SPI bit clock with a dummy clock then
> the device couldn't send data even if the driver enabled the bit clock.
> (That of course only becomes relevant when the driver actually
> en/disables the clocks during runtime and not only once during probe).

Well, I completely forgot about the clock for registers.
Everything looks right then.
However, it would be nice to add a few words about the clocks in the
Documentation/devicetree/bindings/spi/fsl-imx~spi.txt
Thanks for the clarification.

---

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

* [PATCH] ARM: dts: imx: fix clocks for cspi
  2013-05-23 11:38 [PATCH] ARM: dts: imx: fix clocks for cspi Jonas Andersson
  2013-05-23 11:57 ` Sascha Hauer
  2013-05-23 12:01 ` Alexander Shiyan
@ 2013-05-24  5:42 ` Shawn Guo
  2 siblings, 0 replies; 10+ messages in thread
From: Shawn Guo @ 2013-05-24  5:42 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, May 23, 2013 at 01:38:05PM +0200, Jonas Andersson wrote:
> The CSPI controller has only one clock, but the driver spi-imx.c needs clock "per" to calculate bitrate divisor.
> 
> Signed-off-by: Jonas Andersson <jonas@microbit.se>

Applied, thanks.

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

* [PATCH] ARM: dts: imx: fix clocks for cspi
  2013-05-24  4:16           ` Re[2]: " Alexander Shiyan
@ 2013-06-25 15:05             ` Michael Grzeschik
  0 siblings, 0 replies; 10+ messages in thread
From: Michael Grzeschik @ 2013-06-25 15:05 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

On Fri, May 24, 2013 at 08:16:42AM +0400, Alexander Shiyan wrote:
> > > > On Thu, May 23, 2013 at 04:10:59PM +0400, Alexander Shiyan wrote:
> > > > > > > The CSPI controller has only one clock, but the driver spi-imx.c needs clock "per" to calculate bitrate divisor.
> > > > > > > 
> > > > > > > Signed-off-by: Jonas Andersson <jonas@microbit.se>
> > > > > > > ---
> > > > > > >  arch/arm/boot/dts/imx25.dtsi | 12 ++++++------
> > > > > > >  arch/arm/boot/dts/imx27.dtsi |  6 +++---
> > > > > > >  arch/arm/boot/dts/imx51.dtsi |  2 +-
> > > > > > >  arch/arm/boot/dts/imx53.dtsi |  2 +-
> > > > > > >  4 files changed, 11 insertions(+), 11 deletions(-)
> > > > > > > 
> > > > > > > diff --git a/arch/arm/boot/dts/imx25.dtsi b/arch/arm/boot/dts/imx25.dtsi
> > > > > > > index d2550e0..7011539 100644
> > > > > > > --- a/arch/arm/boot/dts/imx25.dtsi
> > > > > > > +++ b/arch/arm/boot/dts/imx25.dtsi
> > > > > > > @@ -141,8 +141,8 @@
> > > > > > >  				#size-cells = <0>;
> > > > > > >  				compatible = "fsl,imx25-cspi", "fsl,imx35-cspi";
> > > > > > >  				reg = <0x43fa4000 0x4000>;
> > > > > > > -				clocks = <&clks 62>;
> > > > > > > -				clock-names = "ipg";
> > > > > > > +				clocks = <&clks 62>, <&clks 62>;
> > > > > > > +				clock-names = "ipg", "per";
> > > > > > >  				interrupts = <14>;
> > > > > > >  				status = "disabled";
> > > > > > >  			};
> > > > > 
> > > > > Sorry, typo.
> > > > > 
> > > > > > Why you do not use "dummy" clock for "per" here?
> > > > > 
> > > > > *for "ipg"
> > > > 
> > > > Because the same clock is used for the register clock and the baudrate
> > > > clock. You have to enable the ipg clock to access registers.
> > > 
> > > I am not see any "ipg" clock usage in the spi driver.
> > 
> > It's the register clock. The driver enables it in order to access the
> > registers.
> > 
> > > If "ipg" clock is
> > > a dependency for "per" clock, it should be registered in ccm as parent.
> > 
> > Look, the eCSPI unit has two clock inputs, one for accessing the
> > registers (ipg) and one for generating the SPI bit clock (per). Now the
> > CSPI unit only has a single clock input, so the 100% correct way would
> > be to specify only a single clock for this unit. However, since we
> > handle both units with the same driver the simplest way to cope with
> > it is to provide the very same clock twice, once for the register access
> > and once for generating the SPI bit clock.
> > And yes, we have to specify the real clock twice and can't replace one
> > with a dummy clock, because if we specify a dummy clock for the ipg
> > clock, then the driver couldn't access the registers even if it enabled
> > the clock. If we would replace the SPI bit clock with a dummy clock then
> > the device couldn't send data even if the driver enabled the bit clock.
> > (That of course only becomes relevant when the driver actually
> > en/disables the clocks during runtime and not only once during probe).
> 
> Well, I completely forgot about the clock for registers.
> Everything looks right then.
> However, it would be nice to add a few words about the clocks in the
> Documentation/devicetree/bindings/spi/fsl-imx~spi.txt
> Thanks for the clarification.

the spi device i got, only keeps working if having the per2_gate
enabled.

It also seems that we lost that dependency, as the file
arch/arm/mach-imx/clk-imx27.c contains this:

clk_register_clkdev(clk[per2_gate], "per", "imx27-cspi.0");
clk_register_clkdev(clk[cspi1_ipg_gate], "ipg", "imx27-cspi.0");
clk_register_clkdev(clk[per2_gate], "per", "imx27-cspi.1");
clk_register_clkdev(clk[cspi2_ipg_gate], "ipg", "imx27-cspi.1");
clk_register_clkdev(clk[per2_gate], "per", "imx27-cspi.2");
clk_register_clkdev(clk[cspi3_ipg_gate], "ipg", "imx27-cspi.2");

So my suggestion is as follows:

From: Michael Grzeschik <m.grzeschik@pengutronix.de>
Subject: [PATCH] ARM: dts: imx: fix clocks for cspi

The CSPI controller needs the per2_gate clock to work.

Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de>
---
 arch/arm/boot/dts/imx27.dtsi | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/arm/boot/dts/imx27.dtsi b/arch/arm/boot/dts/imx27.dtsi
index 7f7d4a5..14683c3 100644
--- a/arch/arm/boot/dts/imx27.dtsi
+++ b/arch/arm/boot/dts/imx27.dtsi
@@ -169,7 +169,7 @@
 				compatible = "fsl,imx27-cspi";
 				reg = <0x1000e000 0x1000>;
 				interrupts = <16>;
-				clocks = <&clks 53>, <&clks 53>;
+				clocks = <&clks 53>, <&clks 60>;
 				clock-names = "ipg", "per";
 				status = "disabled";
 			};
@@ -180,7 +180,7 @@
 				compatible = "fsl,imx27-cspi";
 				reg = <0x1000f000 0x1000>;
 				interrupts = <15>;
-				clocks = <&clks 52>, <&clks 52>;
+				clocks = <&clks 52>, <&clks 60>;
 				clock-names = "ipg", "per";
 				status = "disabled";
 			};
@@ -345,7 +345,7 @@
 				compatible = "fsl,imx27-cspi";
 				reg = <0x10017000 0x1000>;
 				interrupts = <6>;
-				clocks = <&clks 51>, <&clks 51>;
+				clocks = <&clks 51>, <&clks 60>;
 				clock-names = "ipg", "per";
 				status = "disabled";
 			};
-- 
1.8.3.1

Thanks,
Michael

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

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

end of thread, other threads:[~2013-06-25 15:05 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-05-23 11:38 [PATCH] ARM: dts: imx: fix clocks for cspi Jonas Andersson
2013-05-23 11:57 ` Sascha Hauer
2013-05-23 12:01 ` Alexander Shiyan
2013-05-23 12:10   ` Re[2]: " Alexander Shiyan
2013-05-23 12:36     ` Sascha Hauer
2013-05-23 14:28       ` Re[2]: " Alexander Shiyan
2013-05-23 17:33         ` Sascha Hauer
2013-05-24  4:16           ` Re[2]: " Alexander Shiyan
2013-06-25 15:05             ` Michael Grzeschik
2013-05-24  5:42 ` Shawn Guo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.