mbox series

[v3,0/9] clk: qoriq fixes and new fsl-flexspi driver

Message ID 20201108185113.31377-1-michael@walle.cc
Headers show
Series clk: qoriq fixes and new fsl-flexspi driver | expand

Message

Michael Walle Nov. 8, 2020, 6:51 p.m. UTC
The first two patches fix clock references for the ENETC and the
FlexSPI on the LS1028A. These are intended to be picked up by the
stable branches.

To circumvent further mistakes, I new device tree constants for
the qoriq binding. This should make it far easier for humans to
read the clockgen nodes.

The 4th patch convert the LS1028A device tree include to use the
new constants.

The last five patches add a clock driver for the FlexSPI
controller on layerscape SoCs. There is a single register which
can control the divider value. Right now the LS1028A and the LX2160A
aren't able to switch the SCK frequency on the FlexSPI interface.

I've included the first four patches in this series, otherwise
there would be merge conflicts, because they depend on the new
qoriq device tree constants.

Michael Walle (9):
  arm64: dts: ls1028a: fix ENETC PTP clock input
  arm64: dts: ls1028a: fix FlexSPI clock input
  clk: qoriq: provide constants for the type
  arm64: dts: ls1028a: use constants in the clockgen phandle
  clk: divider: add devm_clk_hw_register_divider_table()
  dt-bindings: clock: document the fsl-flexspi-clk driver
  clk: fsl-flexspi: new driver
  arm64: dts: ls1028a: fix FlexSPI clock
  arm64: dts: lx2160a: fix FlexSPI clock

 .../bindings/clock/fsl,flexspi-clock.yaml     |  55 ++++++
 .../arm64/boot/dts/freescale/fsl-ls1028a.dtsi | 174 +++++++++++++-----
 .../arm64/boot/dts/freescale/fsl-lx2160a.dtsi |  15 +-
 drivers/clk/Kconfig                           |   8 +
 drivers/clk/Makefile                          |   1 +
 drivers/clk/clk-divider.c                     |  34 ++++
 drivers/clk/clk-fsl-flexspi.c                 | 106 +++++++++++
 drivers/clk/clk-qoriq.c                       |  13 +-
 .../dt-bindings/clock/fsl,qoriq-clockgen.h    |  15 ++
 include/linux/clk-provider.h                  |  27 +++
 10 files changed, 393 insertions(+), 55 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/clock/fsl,flexspi-clock.yaml
 create mode 100644 drivers/clk/clk-fsl-flexspi.c
 create mode 100644 include/dt-bindings/clock/fsl,qoriq-clockgen.h

Comments

Vladimir Oltean Nov. 8, 2020, 9:21 p.m. UTC | #1
On Sun, Nov 08, 2020 at 07:51:13PM +0100, Michael Walle wrote:
> Now that we have a proper driver for the FlexSPI interface use it. This
> will fix SCK frequency switching on Layerscape SoCs.
> 
> Signed-off-by: Michael Walle <michael@walle.cc>
> ---
> Thanks to Vladimir Oltean, this was partially tested on a LX2160A RDB. But
> this patch is marked as RFC nonetheless, because there is too much
> difference in the clock tree between LS1028A and LX2160A. It would be nice
> if someone could test it and add a Tested-by.

You want someone to probe the SCK frequency? I expect that if frequency
switching works on LS1028A, and the lx2160a_flexspi_divs table is
correct (which, based on the documentation for FlexSPICR1[FlexSPI_CLK_DIV],
it is), then it would work on LX2160A too?
Is there a simple test that can be made in order to trivially determine
whether the frequencies are correct?
Michael Walle Nov. 9, 2020, 9:43 a.m. UTC | #2
Am 2020-11-08 22:21, schrieb Vladimir Oltean:
> On Sun, Nov 08, 2020 at 07:51:13PM +0100, Michael Walle wrote:
>> Now that we have a proper driver for the FlexSPI interface use it. 
>> This
>> will fix SCK frequency switching on Layerscape SoCs.
>> 
>> Signed-off-by: Michael Walle <michael@walle.cc>
>> ---
>> Thanks to Vladimir Oltean, this was partially tested on a LX2160A RDB. 
>> But
>> this patch is marked as RFC nonetheless, because there is too much
>> difference in the clock tree between LS1028A and LX2160A. It would be 
>> nice
>> if someone could test it and add a Tested-by.
> 
> You want someone to probe the SCK frequency?

No not really, just a thorough test.

> I expect that if frequency
> switching works on LS1028A, and the lx2160a_flexspi_divs table is
> correct (which, based on the documentation for 
> FlexSPICR1[FlexSPI_CLK_DIV],
> it is), then it would work on LX2160A too?

The switching should work. Finding out wether it is correct can be 
checked
by reading the raw register value, i.e. 01E0_0900h. But the parent clock 
is
what is bothering me a little. Getting that wrong would lead to a wrong 
SCK
output frequency albeit the divider is set to a correct value.

> Is there a simple test that can be made in order to trivially determine
> whether the frequencies are correct?

We already found out that there seems to be kind of a saturation with
higher frequencies, i.e. octal SPI bus is capable of a much higher
throughput but we only achieve 50MB/s. I'd have expected a much higher
datarate (I mean it is advertised as high performance and it uses a 8 
bit
wide databus..). But anyway, it might make sense to go the other way, 
i.e.
find out the max datathroughput at lower frequencies and look if it 
makes
sense. Assuming no DDR, the throughput should be around your frequency. 
For
example, having 4 MHz should result in 4MB/s data throughput.

OTOH we already saw that after linux booted - with the current device 
tree
which has a setting of 50MHz max SCK frequency - the programmed divider 
by
my driver is the same as the former setting (0x13, div-by-32); so this 
series
doesn't change the SCK frequency.

-michael
Ashish Kumar Nov. 20, 2020, 9:25 a.m. UTC | #3
HI Michael,

> -----Original Message-----
> From: Michael Walle <michael@walle.cc>
> Sent: Monday, November 9, 2020 12:21 AM
> To: linux-clk@vger.kernel.org; devicetree@vger.kernel.org; linux-
> kernel@vger.kernel.org; linux-arm-kernel@lists.infradead.org
> Cc: Michael Turquette <mturquette@baylibre.com>; Stephen Boyd
> <sboyd@kernel.org>; Rob Herring <robh+dt@kernel.org>; Shawn Guo
> <shawnguo@kernel.org>; Leo Li <leoyang.li@nxp.com>; Y.b. Lu
> <yangbo.lu@nxp.com>; Xiaowei Bao <xiaowei.bao@nxp.com>; Ashish Kumar
> <ashish.kumar@nxp.com>; Vladimir Oltean <vladimir.oltean@nxp.com>;
> Michael Walle <michael@walle.cc>
> Subject: [EXT] [PATCH v3 4/9] arm64: dts: ls1028a: use constants in the clockgen
> phandle
> 
> Caution: EXT Email
> 
> Now that we have constants, use them. This is just a mechanical change.
> 
> Signed-off-by: Michael Walle <michael@walle.cc>
> ---
> Changes since v2:
>  - new patch

I am not able to apply this patch cleanly, does it have any dependency patch that I have missed?
My assumption is that this patch series is superset of 
Series 1: [1/4]  dt-bindings: clock: document the fsl-flexspi-clk driver
And 
Series 2:  [v2,1/5] clk: divider: add devm_clk_hw_register_divider_table()

Regards
Ashish 
> 
>  .../arm64/boot/dts/freescale/fsl-ls1028a.dtsi | 162 +++++++++++++-----
>  1 file changed, 116 insertions(+), 46 deletions(-)
> 
> diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
> b/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
> index 2f60a6ba7e14..055da2c710c3 100644
> --- a/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
> +++ b/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
> @@ -8,6 +8,7 @@
>   *
>   */
> 
> +#include <dt-bindings/clock/fsl,qoriq-clockgen.h>
>  #include <dt-bindings/interrupt-controller/arm-gic.h>
>  #include <dt-bindings/thermal/thermal.h>
> 
> @@ -32,7 +33,7 @@
>                         compatible = "arm,cortex-a72";
>                         reg = <0x0>;
>                         enable-method = "psci";
> -                       clocks = <&clockgen 1 0>;
> +                       clocks = <&clockgen QORIQ_CLK_CMUX 0>;
>                         next-level-cache = <&l2>;
>                         cpu-idle-states = <&CPU_PW20>;
>                         #cooling-cells = <2>; @@ -43,7 +44,7 @@
>                         compatible = "arm,cortex-a72";
>                         reg = <0x1>;
>                         enable-method = "psci";
> -                       clocks = <&clockgen 1 0>;
> +                       clocks = <&clockgen QORIQ_CLK_CMUX 0>;
>                         next-level-cache = <&l2>;
>                         cpu-idle-states = <&CPU_PW20>;
>                         #cooling-cells = <2>; @@ -236,7 +237,8 @@
>                         #size-cells = <0>;
>                         reg = <0x0 0x2000000 0x0 0x10000>;
>                         interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
> -                       clocks = <&clockgen 4 3>;
> +                       clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(4)>;
>                         status = "disabled";
>                 };
> 
> @@ -246,7 +248,8 @@
>                         #size-cells = <0>;
>                         reg = <0x0 0x2010000 0x0 0x10000>;
>                         interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
> -                       clocks = <&clockgen 4 3>;
> +                       clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(4)>;
>                         status = "disabled";
>                 };
> 
> @@ -256,7 +259,8 @@
>                         #size-cells = <0>;
>                         reg = <0x0 0x2020000 0x0 0x10000>;
>                         interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
> -                       clocks = <&clockgen 4 3>;
> +                       clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(4)>;
>                         status = "disabled";
>                 };
> 
> @@ -266,7 +270,8 @@
>                         #size-cells = <0>;
>                         reg = <0x0 0x2030000 0x0 0x10000>;
>                         interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
> -                       clocks = <&clockgen 4 3>;
> +                       clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(4)>;
>                         status = "disabled";
>                 };
> 
> @@ -276,7 +281,8 @@
>                         #size-cells = <0>;
>                         reg = <0x0 0x2040000 0x0 0x10000>;
>                         interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
> -                       clocks = <&clockgen 4 3>;
> +                       clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(4)>;
>                         status = "disabled";
>                 };
> 
> @@ -286,7 +292,8 @@
>                         #size-cells = <0>;
>                         reg = <0x0 0x2050000 0x0 0x10000>;
>                         interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
> -                       clocks = <&clockgen 4 3>;
> +                       clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(4)>;
>                         status = "disabled";
>                 };
> 
> @@ -296,7 +303,8 @@
>                         #size-cells = <0>;
>                         reg = <0x0 0x2060000 0x0 0x10000>;
>                         interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
> -                       clocks = <&clockgen 4 3>;
> +                       clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(4)>;
>                         status = "disabled";
>                 };
> 
> @@ -306,7 +314,8 @@
>                         #size-cells = <0>;
>                         reg = <0x0 0x2070000 0x0 0x10000>;
>                         interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
> -                       clocks = <&clockgen 4 3>;
> +                       clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(4)>;
>                         status = "disabled";
>                 };
> 
> @@ -318,7 +327,8 @@
>                               <0x0 0x20000000 0x0 0x10000000>;
>                         reg-names = "fspi_base", "fspi_mmap";
>                         interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
> -                       clocks = <&clockgen 2 0>, <&clockgen 2 0>;
> +                       clocks = <&clockgen QORIQ_CLK_HWACCEL 0>,
> +                                <&clockgen QORIQ_CLK_HWACCEL 0>;
>                         clock-names = "fspi_en", "fspi";
>                         status = "disabled";
>                 };
> @@ -330,7 +340,8 @@
>                         reg = <0x0 0x2100000 0x0 0x10000>;
>                         interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
>                         clock-names = "dspi";
> -                       clocks = <&clockgen 4 1>;
> +                       clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>;
>                         dmas = <&edma0 0 62>, <&edma0 0 60>;
>                         dma-names = "tx", "rx";
>                         spi-num-chipselects = <4>; @@ -345,7 +356,8 @@
>                         reg = <0x0 0x2110000 0x0 0x10000>;
>                         interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
>                         clock-names = "dspi";
> -                       clocks = <&clockgen 4 1>;
> +                       clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>;
>                         dmas = <&edma0 0 58>, <&edma0 0 56>;
>                         dma-names = "tx", "rx";
>                         spi-num-chipselects = <4>; @@ -360,7 +372,8 @@
>                         reg = <0x0 0x2120000 0x0 0x10000>;
>                         interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
>                         clock-names = "dspi";
> -                       clocks = <&clockgen 4 1>;
> +                       clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>;
>                         dmas = <&edma0 0 54>, <&edma0 0 2>;
>                         dma-names = "tx", "rx";
>                         spi-num-chipselects = <3>; @@ -373,7 +386,7 @@
>                         reg = <0x0 0x2140000 0x0 0x10000>;
>                         interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
>                         clock-frequency = <0>; /* fixed up by bootloader */
> -                       clocks = <&clockgen 2 1>;
> +                       clocks = <&clockgen QORIQ_CLK_HWACCEL 1>;
>                         voltage-ranges = <1800 1800 3300 3300>;
>                         sdhci,auto-cmd12;
>                         little-endian;
> @@ -386,7 +399,7 @@
>                         reg = <0x0 0x2150000 0x0 0x10000>;
>                         interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
>                         clock-frequency = <0>; /* fixed up by bootloader */
> -                       clocks = <&clockgen 2 1>;
> +                       clocks = <&clockgen QORIQ_CLK_HWACCEL 1>;
>                         voltage-ranges = <1800 1800 3300 3300>;
>                         sdhci,auto-cmd12;
>                         broken-cd;
> @@ -399,7 +412,8 @@
>                         compatible = "fsl,ls1028ar1-flexcan", "fsl,lx2160ar1-flexcan";
>                         reg = <0x0 0x2180000 0x0 0x10000>;
>                         interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
> -                       clocks = <&sysclk>, <&clockgen 4 1>;
> +                       clocks = <&sysclk>, <&clockgen QORIQ_CLK_PLATFORM_PLL
> +
> + QORIQ_CLK_PLL_DIV(2)>;
>                         clock-names = "ipg", "per";
>                         status = "disabled";
>                 };
> @@ -408,7 +422,8 @@
>                         compatible = "fsl,ls1028ar1-flexcan", "fsl,lx2160ar1-flexcan";
>                         reg = <0x0 0x2190000 0x0 0x10000>;
>                         interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
> -                       clocks = <&sysclk>, <&clockgen 4 1>;
> +                       clocks = <&sysclk>, <&clockgen QORIQ_CLK_PLATFORM_PLL
> +
> + QORIQ_CLK_PLL_DIV(2)>;
>                         clock-names = "ipg", "per";
>                         status = "disabled";
>                 };
> @@ -417,7 +432,8 @@
>                         compatible = "fsl,ns16550", "ns16550a";
>                         reg = <0x00 0x21c0500 0x0 0x100>;
>                         interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
> -                       clocks = <&clockgen 4 1>;
> +                       clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>;
>                         status = "disabled";
>                 };
> 
> @@ -425,7 +441,8 @@
>                         compatible = "fsl,ns16550", "ns16550a";
>                         reg = <0x00 0x21c0600 0x0 0x100>;
>                         interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
> -                       clocks = <&clockgen 4 1>;
> +                       clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>;
>                         status = "disabled";
>                 };
> 
> @@ -434,7 +451,8 @@
>                         compatible = "fsl,ls1028a-lpuart";
>                         reg = <0x0 0x2260000 0x0 0x1000>;
>                         interrupts = <GIC_SPI 232 IRQ_TYPE_LEVEL_HIGH>;
> -                       clocks = <&clockgen 4 1>;
> +                       clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>;
>                         clock-names = "ipg";
>                         dma-names = "rx","tx";
>                         dmas = <&edma0 1 32>, @@ -446,7 +464,8 @@
>                         compatible = "fsl,ls1028a-lpuart";
>                         reg = <0x0 0x2270000 0x0 0x1000>;
>                         interrupts = <GIC_SPI 233 IRQ_TYPE_LEVEL_HIGH>;
> -                       clocks = <&clockgen 4 1>;
> +                       clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>;
>                         clock-names = "ipg";
>                         dma-names = "rx","tx";
>                         dmas = <&edma0 1 30>, @@ -458,7 +477,8 @@
>                         compatible = "fsl,ls1028a-lpuart";
>                         reg = <0x0 0x2280000 0x0 0x1000>;
>                         interrupts = <GIC_SPI 234 IRQ_TYPE_LEVEL_HIGH>;
> -                       clocks = <&clockgen 4 1>;
> +                       clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>;
>                         clock-names = "ipg";
>                         dma-names = "rx","tx";
>                         dmas = <&edma0 1 28>, @@ -470,7 +490,8 @@
>                         compatible = "fsl,ls1028a-lpuart";
>                         reg = <0x0 0x2290000 0x0 0x1000>;
>                         interrupts = <GIC_SPI 235 IRQ_TYPE_LEVEL_HIGH>;
> -                       clocks = <&clockgen 4 1>;
> +                       clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>;
>                         clock-names = "ipg";
>                         dma-names = "rx","tx";
>                         dmas = <&edma0 1 26>, @@ -482,7 +503,8 @@
>                         compatible = "fsl,ls1028a-lpuart";
>                         reg = <0x0 0x22a0000 0x0 0x1000>;
>                         interrupts = <GIC_SPI 236 IRQ_TYPE_LEVEL_HIGH>;
> -                       clocks = <&clockgen 4 1>;
> +                       clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>;
>                         clock-names = "ipg";
>                         dma-names = "rx","tx";
>                         dmas = <&edma0 1 24>, @@ -494,7 +516,8 @@
>                         compatible = "fsl,ls1028a-lpuart";
>                         reg = <0x0 0x22b0000 0x0 0x1000>;
>                         interrupts = <GIC_SPI 237 IRQ_TYPE_LEVEL_HIGH>;
> -                       clocks = <&clockgen 4 1>;
> +                       clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>;
>                         clock-names = "ipg";
>                         dma-names = "rx","tx";
>                         dmas = <&edma0 1 22>, @@ -513,8 +536,10 @@
>                         interrupt-names = "edma-tx", "edma-err";
>                         dma-channels = <32>;
>                         clock-names = "dmamux0", "dmamux1";
> -                       clocks = <&clockgen 4 1>,
> -                                <&clockgen 4 1>;
> +                       clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>,
> +                                <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>;
>                 };
> 
>                 gpio1: gpio@2300000 {
> @@ -576,7 +601,8 @@
>                                 <0x7 0x100520 0x0 0x4>;
>                         reg-names = "ahci", "sata-ecc";
>                         interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
> -                       clocks = <&clockgen 4 1>;
> +                       clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>;
>                         status = "disabled";
>                 };
> 
> @@ -748,14 +774,20 @@
>                 cluster1_core0_watchdog: watchdog@c000000 {
>                         compatible = "arm,sp805", "arm,primecell";
>                         reg = <0x0 0xc000000 0x0 0x1000>;
> -                       clocks = <&clockgen 4 15>, <&clockgen 4 15>;
> +                       clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(16)>,
> +                                <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(16)>;
>                         clock-names = "wdog_clk", "apb_pclk";
>                 };
> 
>                 cluster1_core1_watchdog: watchdog@c010000 {
>                         compatible = "arm,sp805", "arm,primecell";
>                         reg = <0x0 0xc010000 0x0 0x1000>;
> -                       clocks = <&clockgen 4 15>, <&clockgen 4 15>;
> +                       clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(16)>,
> +                                <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(16)>;
>                         clock-names = "wdog_clk", "apb_pclk";
>                 };
> 
> @@ -764,8 +796,14 @@
>                         compatible = "fsl,vf610-sai";
>                         reg = <0x0 0xf100000 0x0 0x10000>;
>                         interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
> -                       clocks = <&clockgen 4 1>, <&clockgen 4 1>,
> -                                <&clockgen 4 1>, <&clockgen 4 1>;
> +                       clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>,
> +                                <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>,
> +                                <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>,
> +                                <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>;
>                         clock-names = "bus", "mclk1", "mclk2", "mclk3";
>                         dma-names = "tx", "rx";
>                         dmas = <&edma0 1 4>, @@ -779,8 +817,14 @@
>                         compatible = "fsl,vf610-sai";
>                         reg = <0x0 0xf110000 0x0 0x10000>;
>                         interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
> -                       clocks = <&clockgen 4 1>, <&clockgen 4 1>,
> -                                <&clockgen 4 1>, <&clockgen 4 1>;
> +                       clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>,
> +                                <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>,
> +                                <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>,
> +                                <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>;
>                         clock-names = "bus", "mclk1", "mclk2", "mclk3";
>                         dma-names = "tx", "rx";
>                         dmas = <&edma0 1 6>, @@ -794,8 +838,14 @@
>                         compatible = "fsl,vf610-sai";
>                         reg = <0x0 0xf120000 0x0 0x10000>;
>                         interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
> -                       clocks = <&clockgen 4 1>, <&clockgen 4 1>,
> -                                <&clockgen 4 1>, <&clockgen 4 1>;
> +                       clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>,
> +                                <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>,
> +                                <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>,
> +                                <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>;
>                         clock-names = "bus", "mclk1", "mclk2", "mclk3";
>                         dma-names = "tx", "rx";
>                         dmas = <&edma0 1 8>, @@ -809,8 +859,14 @@
>                         compatible = "fsl,vf610-sai";
>                         reg = <0x0 0xf130000 0x0 0x10000>;
>                         interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
> -                       clocks = <&clockgen 4 1>, <&clockgen 4 1>,
> -                                <&clockgen 4 1>, <&clockgen 4 1>;
> +                       clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>,
> +                                <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>,
> +                                <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>,
> +                                <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>;
>                         clock-names = "bus", "mclk1", "mclk2", "mclk3";
>                         dma-names = "tx", "rx";
>                         dmas = <&edma0 1 10>, @@ -824,8 +880,14 @@
>                         compatible = "fsl,vf610-sai";
>                         reg = <0x0 0xf140000 0x0 0x10000>;
>                         interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
> -                       clocks = <&clockgen 4 1>, <&clockgen 4 1>,
> -                                <&clockgen 4 1>, <&clockgen 4 1>;
> +                       clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>,
> +                                <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>,
> +                                <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>,
> +                                <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>;
>                         clock-names = "bus", "mclk1", "mclk2", "mclk3";
>                         dma-names = "tx", "rx";
>                         dmas = <&edma0 1 12>, @@ -839,8 +901,14 @@
>                         compatible = "fsl,vf610-sai";
>                         reg = <0x0 0xf150000 0x0 0x10000>;
>                         interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
> -                       clocks = <&clockgen 4 1>, <&clockgen 4 1>,
> -                                <&clockgen 4 1>, <&clockgen 4 1>;
> +                       clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>,
> +                                <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>,
> +                                <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>,
> +                                <&clockgen QORIQ_CLK_PLATFORM_PLL
> +                                           QORIQ_CLK_PLL_DIV(2)>;
>                         clock-names = "bus", "mclk1", "mclk2", "mclk3";
>                         dma-names = "tx", "rx";
>                         dmas = <&edma0 1 14>, @@ -961,7 +1029,7 @@
>                         ethernet@0,4 {
>                                 compatible = "fsl,enetc-ptp";
>                                 reg = <0x000400 0 0 0 0>;
> -                               clocks = <&clockgen 2 3>;
> +                               clocks = <&clockgen QORIQ_CLK_HWACCEL
> + 3>;
>                                 little-endian;
>                                 fsl,extts-fifo;
>                         };
> @@ -1056,8 +1124,10 @@
>                 interrupts = <0 222 IRQ_TYPE_LEVEL_HIGH>,
>                              <0 223 IRQ_TYPE_LEVEL_HIGH>;
>                 interrupt-names = "DE", "SE";
> -               clocks = <&dpclk>, <&clockgen 2 2>, <&clockgen 2 2>,
> -                        <&clockgen 2 2>;
> +               clocks = <&dpclk>,
> +                        <&clockgen QORIQ_CLK_HWACCEL 2>,
> +                        <&clockgen QORIQ_CLK_HWACCEL 2>,
> +                        <&clockgen QORIQ_CLK_HWACCEL 2>;
>                 clock-names = "pxlclk", "mclk", "aclk", "pclk";
>                 arm,malidp-output-port-lines = /bits/ 8 <8 8 8>;
>                 arm,malidp-arqos-value = <0xd000d000>;
> --
> 2.20.1
Michael Walle Nov. 20, 2020, 9:38 a.m. UTC | #4
Hi Ashish,

Am 2020-11-20 10:25, schrieb Ashish Kumar:
> I am not able to apply this patch cleanly, does it have any dependency
> patch that I have missed?

What is your base? I've just tried to apply this series (stand-alone) 
onto
linux-next and it applied cleanly.

> My assumption is that this patch series is superset of
> Series 1: [1/4]  dt-bindings: clock: document the fsl-flexspi-clk 
> driver
> And
> Series 2:  [v2,1/5] clk: divider: add 
> devm_clk_hw_register_divider_table()

That is correct.

-michael
Ashish Kumar Nov. 20, 2020, 9:51 a.m. UTC | #5
Hi Michelle,

> -----Original Message-----
> From: Michael Walle <michael@walle.cc>
> Sent: Friday, November 20, 2020 3:09 PM
> To: Ashish Kumar <ashish.kumar@nxp.com>
> Cc: linux-clk@vger.kernel.org; devicetree@vger.kernel.org; linux-
> kernel@vger.kernel.org; linux-arm-kernel@lists.infradead.org; Michael
> Turquette <mturquette@baylibre.com>; Stephen Boyd <sboyd@kernel.org>;
> Rob Herring <robh+dt@kernel.org>; Shawn Guo <shawnguo@kernel.org>; Leo
> Li <leoyang.li@nxp.com>; Y.b. Lu <yangbo.lu@nxp.com>; Xiaowei Bao
> <xiaowei.bao@nxp.com>; Vladimir Oltean <vladimir.oltean@nxp.com>
> Subject: [EXT] Re: [PATCH v3 4/9] arm64: dts: ls1028a: use constants in the
> clockgen phandle
> 
> Caution: EXT Email
> 
> Hi Ashish,
> 
> Am 2020-11-20 10:25, schrieb Ashish Kumar:
> > I am not able to apply this patch cleanly, does it have any dependency
> > patch that I have missed?
> 
> What is your base? I've just tried to apply this series (stand-alone) onto linux-
> next and it applied cleanly.
I used https://github.com/torvalds/linux.git should I try this git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git ?

Regards
Ashish 
> 
> > My assumption is that this patch series is superset of Series 1: [1/4]
> > dt-bindings: clock: document the fsl-flexspi-clk driver And Series 2:
> > [v2,1/5] clk: divider: add
> > devm_clk_hw_register_divider_table()
> 
> That is correct.
> 
> -michael
Michael Walle Nov. 20, 2020, 10:05 a.m. UTC | #6
Hi Ashish,

Am 2020-11-20 10:51, schrieb Ashish Kumar:
>> -----Original Message-----
>> From: Michael Walle <michael@walle.cc>
>> Sent: Friday, November 20, 2020 3:09 PM
>> To: Ashish Kumar <ashish.kumar@nxp.com>
>> Cc: linux-clk@vger.kernel.org; devicetree@vger.kernel.org; linux-
>> kernel@vger.kernel.org; linux-arm-kernel@lists.infradead.org; Michael
>> Turquette <mturquette@baylibre.com>; Stephen Boyd <sboyd@kernel.org>;
>> Rob Herring <robh+dt@kernel.org>; Shawn Guo <shawnguo@kernel.org>; Leo
>> Li <leoyang.li@nxp.com>; Y.b. Lu <yangbo.lu@nxp.com>; Xiaowei Bao
>> <xiaowei.bao@nxp.com>; Vladimir Oltean <vladimir.oltean@nxp.com>
>> Subject: [EXT] Re: [PATCH v3 4/9] arm64: dts: ls1028a: use constants 
>> in the
>> clockgen phandle
>> 
>> Caution: EXT Email
>> 
>> Hi Ashish,
>> 
>> Am 2020-11-20 10:25, schrieb Ashish Kumar:
>> > I am not able to apply this patch cleanly, does it have any dependency
>> > patch that I have missed?
>> 
>> What is your base? I've just tried to apply this series (stand-alone) 
>> onto linux-
>> next and it applied cleanly.
> I used https://github.com/torvalds/linux.git should I try this
> git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git ?

Mh, I just tried clk-next. clk-next is missing some device tree changes. 
So,
parts of this series should go through the soc tree (shawnguo) and some 
through
clk-next (or acked by Stephen Boyd).

If you want to apply it, use the for-next branch of the soc tree:
git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git

-michael
Shawn Guo Nov. 30, 2020, 9:20 a.m. UTC | #7
On Sun, Nov 08, 2020 at 07:51:05PM +0100, Michael Walle wrote:
> On the LS1028A the ENETC reference clock is connected to 4th HWA output,
> see Figure 7 "Clock subsystem block diagram".
> 
> The PHC may run with a wrong frequency. ptp_qoriq_auto_config() will read
> the clock speed of the clock given in the device tree. It is likely that,
> on the reference board this wasn't noticed because both clocks have the
> same frequency. But this must not be always the case. Fix it.
> 
> Fixes: 49401003e260 ("arm64: dts: fsl: ls1028a: add ENETC 1588 timer node")
> Signed-off-by: Michael Walle <michael@walle.cc>

Applied, thanks.
Shawn Guo Nov. 30, 2020, 9:21 a.m. UTC | #8
On Sun, Nov 08, 2020 at 07:51:06PM +0100, Michael Walle wrote:
> On the LS1028A the FlexSPI clock is connected to the first HWA output,
> see Figure 7 "Clock subsystem block diagram".
> 
> Fixes: c77fae5ba09a ("arm64: dts: ls1028a: Add FlexSPI support")
> Signed-off-by: Michael Walle <michael@walle.cc>

Applied, thanks.