All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rob Herring <robh@kernel.org>
To: Frank Li <Frank.Li@nxp.com>
Cc: Michael Turquette <mturquette@baylibre.com>,
	Stephen Boyd <sboyd@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	"open list:COMMON CLK FRAMEWORK" <linux-clk@vger.kernel.org>,
	"open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS"
	<devicetree@vger.kernel.org>,
	open list <linux-kernel@vger.kernel.org>,
	imx@lists.linux.dev
Subject: Re: [PATCH 1/1] dt-bindings: clock: qoriq-clock: convert to yaml format
Date: Thu, 27 Jun 2024 14:22:54 -0600	[thread overview]
Message-ID: <20240627202254.GA454755-robh@kernel.org> (raw)
In-Reply-To: <20240617181410.921090-1-Frank.Li@nxp.com>

On Mon, Jun 17, 2024 at 02:14:09PM -0400, Frank Li wrote:
> Convert qoria-clock DT binding to yaml format. Split to two files
> qoriq-clock.yaml and qoriq-clock-legancy.yaml.
> 
> Addtional change:
> - Remove clock consumer part in example
> - Fixed example dts error
> - Deprecated legancy node
> 
> Signed-off-by: Frank Li <Frank.Li@nxp.com>
> ---
>  .../clock/fsl,qoriq-clock-legacy.yaml         |  84 +++++++
>  .../bindings/clock/fsl,qoriq-clock.yaml       | 203 +++++++++++++++++
>  .../devicetree/bindings/clock/qoriq-clock.txt | 212 ------------------
>  3 files changed, 287 insertions(+), 212 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/clock/fsl,qoriq-clock-legacy.yaml
>  create mode 100644 Documentation/devicetree/bindings/clock/fsl,qoriq-clock.yaml
>  delete mode 100644 Documentation/devicetree/bindings/clock/qoriq-clock.txt
> 
> diff --git a/Documentation/devicetree/bindings/clock/fsl,qoriq-clock-legacy.yaml b/Documentation/devicetree/bindings/clock/fsl,qoriq-clock-legacy.yaml
> new file mode 100644
> index 0000000000000..97b96a1a58254
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/clock/fsl,qoriq-clock-legacy.yaml
> @@ -0,0 +1,84 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/clock/fsl,qoriq-clock-legacy.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Legacy Clock Block on Freescale QorIQ Platforms
> +
> +maintainers:
> +  - Frank Li <Frank.Li@nxp.com>
> +
> +description: |
> +  These nodes are deprecated.  Kernels should continue to support
> +  device trees with these nodes, but new device trees should not use them.
> +
> +  Most of the bindings are from the common clock binding[1].
> +  [1] Documentation/devicetree/bindings/clock/clock-bindings.txt
> +
> +properties:
> +  compatible:
> +    enum:
> +      - fsl,qoriq-core-pll-1.0
> +      - fsl,qoriq-core-pll-2.0
> +      - fsl,qoriq-core-mux-1.0
> +      - fsl,qoriq-core-mux-2.0
> +      - fsl,qoriq-sysclk-1.0
> +      - fsl,qoriq-sysclk-2.0
> +      - fsl,qoriq-platform-pll-1.0
> +      - fsl,qoriq-platform-pll-2.0
> +
> +  reg:
> +    maxItems: 1
> +
> +  clocks:
> +    minItems: 1
> +    maxItems: 4
> +
> +  clock-names:
> +    minItems: 1
> +    maxItems: 4
> +
> +  clock-output-names:
> +    minItems: 1
> +    maxItems: 8
> +
> +  '#clock-cells':
> +    minimum: 0
> +    maximum: 1
> +
> +required:
> +  - compatible
> +  - '#clock-cells'
> +
> +additionalProperties: false
> +
> +allOf:
> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            enum:
> +              - fsl,qoriq-sysclk-1.0
> +              - fsl,qoriq-sysclk-2.0
> +    then:
> +      properties:
> +        '#clock-cells':
> +          const: 0
> +
> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            enum:
> +              - fsl,qoriq-core-pll-1.0
> +              - fsl,qoriq-core-pll-2.0
> +    then:
> +      properties:
> +        '#clock-cells':
> +          const: 1
> +          description: |
> +            * 0 - equal to the PLL frequency
> +            * 1 - equal to the PLL frequency divided by 2
> +            * 2 - equal to the PLL frequency divided by 4
> +
> diff --git a/Documentation/devicetree/bindings/clock/fsl,qoriq-clock.yaml b/Documentation/devicetree/bindings/clock/fsl,qoriq-clock.yaml
> new file mode 100644
> index 0000000000000..d641756b04635
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/clock/fsl,qoriq-clock.yaml
> @@ -0,0 +1,203 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/clock/fsl,qoriq-clock.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Clock Block on Freescale QorIQ Platforms
> +
> +maintainers:
> +  - Frank Li <Frank.Li@nxp.com>
> +
> +

Just 1 blank line

> +description: |
> +

drop blank line

> +  Freescale QorIQ chips take primary clocking input from the external
> +  SYSCLK signal. The SYSCLK input (frequency) is multiplied using
> +  multiple phase locked loops (PLL) to create a variety of frequencies
> +  which can then be passed to a variety of internal logic, including
> +  cores and peripheral IP blocks.
> +  Please refer to the Reference Manual for details.
> +
> +  All references to "1.0" and "2.0" refer to the QorIQ chassis version to
> +  which the chip complies.
> +
> +  Chassis Version    Example Chips
> +  ---------------    -------------
> +       1.0      p4080, p5020, p5040
> +       2.0      t4240, b4860
> +
> +  Clock Provider
> +
> +  The clockgen node should act as a clock provider, though in older device
> +  trees the children of the clockgen node are the clock providers.
> +
> +properties:
> +  compatible:
> +    items:
> +      - enum:
> +          - fsl,p2041-clockgen
> +          - fsl,p3041-clockgen
> +          - fsl,p4080-clockgen
> +          - fsl,p5020-clockgen
> +          - fsl,p5040-clockgen
> +          - fsl,t1023-clockgen
> +          - fsl,t1024-clockgen
> +          - fsl,t1040-clockgen
> +          - fsl,t1042-clockgen
> +          - fsl,t2080-clockgen
> +          - fsl,t2081-clockgen
> +          - fsl,t4240-clockgen
> +          - fsl,b4420-clockgen
> +          - fsl,b4860-clockgen

> +          - fsl,ls1012a-clockgen
> +          - fsl,ls1021a-clockgen
> +          - fsl,ls1028a-clockgen
> +          - fsl,ls1043a-clockgen
> +          - fsl,ls1046a-clockgen
> +          - fsl,ls1088a-clockgen
> +          - fsl,ls2080a-clockgen
> +          - fsl,lx2160a-clockgen

It doesn't look to me like these platforms use this binding.

> +      - enum:
> +          - fsl,qoriq-clockgen-1.0
> +          - fsl,qoriq-clockgen-2.0

This allows invalid combinations. You need 2 entries splitting 1.0 and 
2.0.

> +    minItems: 1
> +
> +  reg:
> +    maxItems: 1
> +
> +  ranges: true
> +
> +  '#address-cells':
> +    const: 1
> +
> +  '#size-cells':
> +    const: 1
> +
> +  '#clock-cells':
> +    const: 2
> +    description: |
> +      The first cell of the clock specifier is the clock type, and the
> +      second cell is the clock index for the specified type.
> +
> +        Type#  Name       Index Cell
> +        0  sysclk          must be 0
> +        1  cmux            index (n in CLKCnCSR)
> +        2  hwaccel         index (n in CLKCGnHWACSR)
> +        3  fman            0 for fm1, 1 for fm2
> +        4  platform pll    n=pll/(n+1). For example, when n=1,
> +                          that means output_freq=PLL_freq/2.
> +        5  coreclk         must be 0
> +
> +  clock-frequency:
> +    description: Input system clock frequency (SYSCLK)
> +
> +  clocks:
> +    items:
> +      - description:
> +          sysclk may be provided as an input clock.  Either clock-frequency
> +          or clocks must be provided.
> +      - description:
> +          A second input clock, called "coreclk", may be provided if
> +          core PLLs are based on a different input clock from the
> +          platform PLL.
> +    minItems: 1
> +
> +  clock-names:
> +    items:
> +      - const: sysclk
> +      - const: coreclk
> +
> +patternProperties:
> +  '^mux[0-9]@[a-f0-9]+$':
> +    deprecated: true
> +    $ref: fsl,qoriq-clock-legacy.yaml
> +
> +  '^sysclk+$':

This means 'sysclkkkkkkkkkk' is valid.

> +    deprecated: true
> +    $ref: fsl,qoriq-clock-legacy.yaml
> +
> +  '^pll[0-9]@[a-f0-9]+$':
> +    deprecated: true
> +    $ref: fsl,qoriq-clock-legacy.yaml
> +
> +  '^platform\-pll@[a-f0-9]+$':
> +    deprecated: true
> +    $ref: fsl,qoriq-clock-legacy.yaml
> +
> +required:
> +  - compatible
> +  - reg
> +  - '#clock-cells'
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    /* clock provider example */
> +    global-utilities@e1000 {
> +        compatible = "fsl,p5020-clockgen", "fsl,qoriq-clockgen-1.0";
> +        reg = <0xe1000 0x1000>;
> +        clock-frequency = <133333333>;
> +        #clock-cells = <2>;
> +    };
> +
> +  - |
> +    /* Legacy example */
> +    global-utilities@e1000 {
> +        compatible = "fsl,p5020-clockgen", "fsl,qoriq-clockgen-1.0";
> +        reg = <0xe1000 0x1000>;
> +        ranges = <0x0 0xe1000 0x1000>;
> +        clock-frequency = <133333333>;
> +        #address-cells = <1>;
> +        #size-cells = <1>;
> +        #clock-cells = <2>;
> +
> +        sysclk: sysclk {
> +            compatible = "fsl,qoriq-sysclk-1.0";
> +            clock-output-names = "sysclk";
> +            #clock-cells = <0>;
> +        };
> +
> +        pll0: pll0@800 {
> +            compatible = "fsl,qoriq-core-pll-1.0";
> +            reg = <0x800 0x4>;
> +            #clock-cells = <1>;
> +            clocks = <&sysclk>;
> +            clock-output-names = "pll0", "pll0-div2";
> +        };
> +
> +        pll1: pll1@820 {
> +            compatible = "fsl,qoriq-core-pll-1.0";
> +            reg = <0x820 0x4>;
> +            #clock-cells = <1>;
> +            clocks = <&sysclk>;
> +            clock-output-names = "pll1", "pll1-div2";
> +        };
> +
> +        mux0: mux0@0 {
> +            compatible = "fsl,qoriq-core-mux-1.0";
> +            reg = <0x0 0x4>;
> +            #clock-cells = <0>;
> +            clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> +            clock-names = "pll0", "pll0-div2", "pll1", "pll1-div2";
> +            clock-output-names = "cmux0";
> +        };
> +
> +        mux1: mux1@20 {
> +            compatible = "fsl,qoriq-core-mux-1.0";
> +            reg = <0x20 0x4>;
> +            #clock-cells = <0>;
> +            clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>;
> +            clock-names = "pll0", "pll0-div2", "pll1", "pll1-div2";
> +            clock-output-names = "cmux1";
> +        };
> +
> +        platform-pll@c00 {
> +            #clock-cells = <1>;
> +            reg = <0xc00 0x4>;
> +            compatible = "fsl,qoriq-platform-pll-1.0";
> +            clocks = <&sysclk>;
> +            clock-output-names = "platform-pll", "platform-pll-div2";
> +        };
> +    };

  reply	other threads:[~2024-06-27 20:22 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-17 18:14 [PATCH 1/1] dt-bindings: clock: qoriq-clock: convert to yaml format Frank Li
2024-06-27 20:22 ` Rob Herring [this message]
2024-06-28 20:44   ` Frank Li

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240627202254.GA454755-robh@kernel.org \
    --to=robh@kernel.org \
    --cc=Frank.Li@nxp.com \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=imx@lists.linux.dev \
    --cc=krzk+dt@kernel.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mturquette@baylibre.com \
    --cc=sboyd@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.