diff mbox

[1/2] ARM: dts: r8a7793: add CAN clocks

Message ID 1453352981-16104-2-git-send-email-horms+renesas@verge.net.au (mailing list archive)
State Deferred
Delegated to: Simon Horman
Headers show

Commit Message

Simon Horman Jan. 21, 2016, 5:09 a.m. UTC
The R-Car CAN controllers can derive the CAN bus clock not only from their
peripheral clock input (clkp1) but also from the other internal clock
(clkp2) and external clock fed on CAN_CLK pin. Describe those clocks in
the device tree along with  the USB_EXTAL clock from which clkp2 is
derived.

Based on work by Sergei Shtylyov for the r8a7791 SoC.

Cc: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
---
 arch/arm/boot/dts/r8a7793.dtsi | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

Comments

Geert Uytterhoeven Jan. 21, 2016, 8:38 a.m. UTC | #1
Hi Simon,

On Thu, Jan 21, 2016 at 6:09 AM, Simon Horman
<horms+renesas@verge.net.au> wrote:
> The R-Car CAN controllers can derive the CAN bus clock not only from their
> peripheral clock input (clkp1) but also from the other internal clock
> (clkp2) and external clock fed on CAN_CLK pin. Describe those clocks in
> the device tree along with  the USB_EXTAL clock from which clkp2 is
> derived.
>
> Based on work by Sergei Shtylyov for the r8a7791 SoC.
>
> Cc: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
> Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
> ---
>  arch/arm/boot/dts/r8a7793.dtsi | 20 +++++++++++++++++++-
>  1 file changed, 19 insertions(+), 1 deletion(-)
>
> diff --git a/arch/arm/boot/dts/r8a7793.dtsi b/arch/arm/boot/dts/r8a7793.dtsi
> index 0ce7cc420c9d..5d9375fa6759 100644
> --- a/arch/arm/boot/dts/r8a7793.dtsi
> +++ b/arch/arm/boot/dts/r8a7793.dtsi
> @@ -706,12 +706,30 @@
>                         clock-output-names = "extal";
>                 };
>
> +               /* External USB clock - can be overridden by the board */
> +               usb_extal_clk: usb_extal_clk {
> +                       compatible = "fixed-clock";
> +                       #clock-cells = <0>;
> +                       clock-frequency = <48000000>;
> +                       clock-output-names = "usb_extal";
> +               };
> +
> +               /* External CAN clock */
> +               can_clk: can_clk {
> +                       compatible = "fixed-clock";
> +                       #clock-cells = <0>;
> +                       /* This value must be overridden by the board. */
> +                       clock-frequency = <0>;
> +                       clock-output-names = "can_clk";
> +                       status = "disabled";
> +               };
> +
>                 /* Special CPG clocks */
>                 cpg_clocks: cpg_clocks@e6150000 {
>                         compatible = "renesas,r8a7793-cpg-clocks",
>                                      "renesas,rcar-gen2-cpg-clocks";
>                         reg = <0 0xe6150000 0 0x1000>;
> -                       clocks = <&extal_clk>;
> +                       clocks = <&extal_clk &usb_extal_clk>;
>                         #clock-cells = <1>;
>                         clock-output-names = "main", "pll0", "pll1", "pll3",
>                                              "lb", "qspi", "sdh", "sd0", "z",

To create the "rcan" clock, it should be listed in clock-output-names.

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
Simon Horman Jan. 21, 2016, 12:15 p.m. UTC | #2
On ?,  1? 21, 2016 at 09:38:21?? +0100, Geert Uytterhoeven wrote:
> Hi Simon,
> 
> On Thu, Jan 21, 2016 at 6:09 AM, Simon Horman
> <horms+renesas@verge.net.au> wrote:
> > The R-Car CAN controllers can derive the CAN bus clock not only from their
> > peripheral clock input (clkp1) but also from the other internal clock
> > (clkp2) and external clock fed on CAN_CLK pin. Describe those clocks in
> > the device tree along with  the USB_EXTAL clock from which clkp2 is
> > derived.
> >
> > Based on work by Sergei Shtylyov for the r8a7791 SoC.
> >
> > Cc: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
> > Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
> > ---
> >  arch/arm/boot/dts/r8a7793.dtsi | 20 +++++++++++++++++++-
> >  1 file changed, 19 insertions(+), 1 deletion(-)
> >
> > diff --git a/arch/arm/boot/dts/r8a7793.dtsi b/arch/arm/boot/dts/r8a7793.dtsi
> > index 0ce7cc420c9d..5d9375fa6759 100644
> > --- a/arch/arm/boot/dts/r8a7793.dtsi
> > +++ b/arch/arm/boot/dts/r8a7793.dtsi
> > @@ -706,12 +706,30 @@
> >                         clock-output-names = "extal";
> >                 };
> >
> > +               /* External USB clock - can be overridden by the board */
> > +               usb_extal_clk: usb_extal_clk {
> > +                       compatible = "fixed-clock";
> > +                       #clock-cells = <0>;
> > +                       clock-frequency = <48000000>;
> > +                       clock-output-names = "usb_extal";
> > +               };
> > +
> > +               /* External CAN clock */
> > +               can_clk: can_clk {
> > +                       compatible = "fixed-clock";
> > +                       #clock-cells = <0>;
> > +                       /* This value must be overridden by the board. */
> > +                       clock-frequency = <0>;
> > +                       clock-output-names = "can_clk";
> > +                       status = "disabled";
> > +               };
> > +
> >                 /* Special CPG clocks */
> >                 cpg_clocks: cpg_clocks@e6150000 {
> >                         compatible = "renesas,r8a7793-cpg-clocks",
> >                                      "renesas,rcar-gen2-cpg-clocks";
> >                         reg = <0 0xe6150000 0 0x1000>;
> > -                       clocks = <&extal_clk>;
> > +                       clocks = <&extal_clk &usb_extal_clk>;
> >                         #clock-cells = <1>;
> >                         clock-output-names = "main", "pll0", "pll1", "pll3",
> >                                              "lb", "qspi", "sdh", "sd0", "z",
> 
> To create the "rcan" clock, it should be listed in clock-output-names.

Thanks, sorry for missing that.
Simon Horman Jan. 22, 2016, 12:48 a.m. UTC | #3
On Thu, Jan 21, 2016 at 09:15:27PM +0900, Simon Horman wrote:
> On ?,  1? 21, 2016 at 09:38:21?? +0100, Geert Uytterhoeven wrote:
> > Hi Simon,
> > 
> > On Thu, Jan 21, 2016 at 6:09 AM, Simon Horman
> > <horms+renesas@verge.net.au> wrote:
> > > The R-Car CAN controllers can derive the CAN bus clock not only from their
> > > peripheral clock input (clkp1) but also from the other internal clock
> > > (clkp2) and external clock fed on CAN_CLK pin. Describe those clocks in
> > > the device tree along with  the USB_EXTAL clock from which clkp2 is
> > > derived.
> > >
> > > Based on work by Sergei Shtylyov for the r8a7791 SoC.
> > >
> > > Cc: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
> > > Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
> > > ---
> > >  arch/arm/boot/dts/r8a7793.dtsi | 20 +++++++++++++++++++-
> > >  1 file changed, 19 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/arch/arm/boot/dts/r8a7793.dtsi b/arch/arm/boot/dts/r8a7793.dtsi
> > > index 0ce7cc420c9d..5d9375fa6759 100644
> > > --- a/arch/arm/boot/dts/r8a7793.dtsi
> > > +++ b/arch/arm/boot/dts/r8a7793.dtsi
> > > @@ -706,12 +706,30 @@
> > >                         clock-output-names = "extal";
> > >                 };
> > >
> > > +               /* External USB clock - can be overridden by the board */
> > > +               usb_extal_clk: usb_extal_clk {
> > > +                       compatible = "fixed-clock";
> > > +                       #clock-cells = <0>;
> > > +                       clock-frequency = <48000000>;
> > > +                       clock-output-names = "usb_extal";
> > > +               };
> > > +
> > > +               /* External CAN clock */
> > > +               can_clk: can_clk {
> > > +                       compatible = "fixed-clock";
> > > +                       #clock-cells = <0>;
> > > +                       /* This value must be overridden by the board. */
> > > +                       clock-frequency = <0>;
> > > +                       clock-output-names = "can_clk";
> > > +                       status = "disabled";
> > > +               };
> > > +
> > >                 /* Special CPG clocks */
> > >                 cpg_clocks: cpg_clocks@e6150000 {
> > >                         compatible = "renesas,r8a7793-cpg-clocks",
> > >                                      "renesas,rcar-gen2-cpg-clocks";
> > >                         reg = <0 0xe6150000 0 0x1000>;
> > > -                       clocks = <&extal_clk>;
> > > +                       clocks = <&extal_clk &usb_extal_clk>;
> > >                         #clock-cells = <1>;
> > >                         clock-output-names = "main", "pll0", "pll1", "pll3",
> > >                                              "lb", "qspi", "sdh", "sd0", "z",
> > 
> > To create the "rcan" clock, it should be listed in clock-output-names.

Checking this morning I see that it is already there.
The next line of the file is:

					     "rcan", "adsp";
Geert Uytterhoeven Jan. 22, 2016, 7:46 a.m. UTC | #4
On Fri, Jan 22, 2016 at 1:48 AM, Simon Horman <horms@verge.net.au> wrote:
>> > > --- a/arch/arm/boot/dts/r8a7793.dtsi
>> > > +++ b/arch/arm/boot/dts/r8a7793.dtsi
>> > > @@ -706,12 +706,30 @@
>> > >                         clock-output-names = "extal";
>> > >                 };
>> > >
>> > > +               /* External USB clock - can be overridden by the board */
>> > > +               usb_extal_clk: usb_extal_clk {
>> > > +                       compatible = "fixed-clock";
>> > > +                       #clock-cells = <0>;
>> > > +                       clock-frequency = <48000000>;
>> > > +                       clock-output-names = "usb_extal";
>> > > +               };
>> > > +
>> > > +               /* External CAN clock */
>> > > +               can_clk: can_clk {
>> > > +                       compatible = "fixed-clock";
>> > > +                       #clock-cells = <0>;
>> > > +                       /* This value must be overridden by the board. */
>> > > +                       clock-frequency = <0>;
>> > > +                       clock-output-names = "can_clk";
>> > > +                       status = "disabled";
>> > > +               };
>> > > +
>> > >                 /* Special CPG clocks */
>> > >                 cpg_clocks: cpg_clocks@e6150000 {
>> > >                         compatible = "renesas,r8a7793-cpg-clocks",
>> > >                                      "renesas,rcar-gen2-cpg-clocks";
>> > >                         reg = <0 0xe6150000 0 0x1000>;
>> > > -                       clocks = <&extal_clk>;
>> > > +                       clocks = <&extal_clk &usb_extal_clk>;
>> > >                         #clock-cells = <1>;
>> > >                         clock-output-names = "main", "pll0", "pll1", "pll3",
>> > >                                              "lb", "qspi", "sdh", "sd0", "z",
>> >
>> > To create the "rcan" clock, it should be listed in clock-output-names.
>
> Checking this morning I see that it is already there.
> The next line of the file is:
>
>                                              "rcan", "adsp";

I stand corrected.

BTW, that means you saw "failed to register ... rcan" messages
before?

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
Simon Horman Jan. 27, 2016, 9:25 a.m. UTC | #5
On Fri, Jan 22, 2016 at 08:46:37AM +0100, Geert Uytterhoeven wrote:
> On Fri, Jan 22, 2016 at 1:48 AM, Simon Horman <horms@verge.net.au> wrote:
> >> > > --- a/arch/arm/boot/dts/r8a7793.dtsi
> >> > > +++ b/arch/arm/boot/dts/r8a7793.dtsi
> >> > > @@ -706,12 +706,30 @@
> >> > >                         clock-output-names = "extal";
> >> > >                 };
> >> > >
> >> > > +               /* External USB clock - can be overridden by the board */
> >> > > +               usb_extal_clk: usb_extal_clk {
> >> > > +                       compatible = "fixed-clock";
> >> > > +                       #clock-cells = <0>;
> >> > > +                       clock-frequency = <48000000>;
> >> > > +                       clock-output-names = "usb_extal";
> >> > > +               };
> >> > > +
> >> > > +               /* External CAN clock */
> >> > > +               can_clk: can_clk {
> >> > > +                       compatible = "fixed-clock";
> >> > > +                       #clock-cells = <0>;
> >> > > +                       /* This value must be overridden by the board. */
> >> > > +                       clock-frequency = <0>;
> >> > > +                       clock-output-names = "can_clk";
> >> > > +                       status = "disabled";
> >> > > +               };
> >> > > +
> >> > >                 /* Special CPG clocks */
> >> > >                 cpg_clocks: cpg_clocks@e6150000 {
> >> > >                         compatible = "renesas,r8a7793-cpg-clocks",
> >> > >                                      "renesas,rcar-gen2-cpg-clocks";
> >> > >                         reg = <0 0xe6150000 0 0x1000>;
> >> > > -                       clocks = <&extal_clk>;
> >> > > +                       clocks = <&extal_clk &usb_extal_clk>;
> >> > >                         #clock-cells = <1>;
> >> > >                         clock-output-names = "main", "pll0", "pll1", "pll3",
> >> > >                                              "lb", "qspi", "sdh", "sd0", "z",
> >> >
> >> > To create the "rcan" clock, it should be listed in clock-output-names.
> >
> > Checking this morning I see that it is already there.
> > The next line of the file is:
> >
> >                                              "rcan", "adsp";
> 
> I stand corrected.
> 
> BTW, that means you saw "failed to register ... rcan" messages
> before?

Yes, I checked and I see:

rcar_gen2_cpg_clocks_init: failed to register cpg_clocks rcan clock (-12)
diff mbox

Patch

diff --git a/arch/arm/boot/dts/r8a7793.dtsi b/arch/arm/boot/dts/r8a7793.dtsi
index 0ce7cc420c9d..5d9375fa6759 100644
--- a/arch/arm/boot/dts/r8a7793.dtsi
+++ b/arch/arm/boot/dts/r8a7793.dtsi
@@ -706,12 +706,30 @@ 
 			clock-output-names = "extal";
 		};
 
+		/* External USB clock - can be overridden by the board */
+		usb_extal_clk: usb_extal_clk {
+			compatible = "fixed-clock";
+			#clock-cells = <0>;
+			clock-frequency = <48000000>;
+			clock-output-names = "usb_extal";
+		};
+
+		/* External CAN clock */
+		can_clk: can_clk {
+			compatible = "fixed-clock";
+			#clock-cells = <0>;
+			/* This value must be overridden by the board. */
+			clock-frequency = <0>;
+			clock-output-names = "can_clk";
+			status = "disabled";
+		};
+
 		/* Special CPG clocks */
 		cpg_clocks: cpg_clocks@e6150000 {
 			compatible = "renesas,r8a7793-cpg-clocks",
 				     "renesas,rcar-gen2-cpg-clocks";
 			reg = <0 0xe6150000 0 0x1000>;
-			clocks = <&extal_clk>;
+			clocks = <&extal_clk &usb_extal_clk>;
 			#clock-cells = <1>;
 			clock-output-names = "main", "pll0", "pll1", "pll3",
 					     "lb", "qspi", "sdh", "sd0", "z",