Re: [PATCH 1/9] dt-bindings: phy: cadence-sierra: Add bindings for the PLLs within SERDES
From: Rob Herring
Date: Thu Nov 05 2020 - 13:03:14 EST
On Tue, Nov 03, 2020 at 09:25:48AM +0530, Kishon Vijay Abraham I wrote:
> Add binding for the PLLs within SERDES.
>
> Signed-off-by: Kishon Vijay Abraham I <kishon@xxxxxx>
> ---
> .../bindings/phy/phy-cadence-sierra.yaml | 89 ++++++++++++++++++-
> 1 file changed, 86 insertions(+), 3 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/phy/phy-cadence-sierra.yaml b/Documentation/devicetree/bindings/phy/phy-cadence-sierra.yaml
> index d210843863df..f574b8ed358c 100644
> --- a/Documentation/devicetree/bindings/phy/phy-cadence-sierra.yaml
> +++ b/Documentation/devicetree/bindings/phy/phy-cadence-sierra.yaml
> @@ -49,12 +49,14 @@ properties:
> const: serdes
>
> clocks:
> - maxItems: 2
> + maxItems: 4
>
> clock-names:
> items:
> - const: cmn_refclk_dig_div
> - const: cmn_refclk1_dig_div
> + - const: pll_cmnlc
> + - const: pll_cmnlc1
>
> cdns,autoconf:
> type: boolean
> @@ -107,6 +109,58 @@ patternProperties:
>
> additionalProperties: false
>
> + "^refrcv1?$":
> + type: object
> + description: |
> + Reference receivers that enables routing external clocks to the alternate
> + PLLCMNLC.
> + properties:
> + clocks:
> + maxItems: 1
> + description: Phandle to clock nodes representing the input to the
> + reference receiver.
> +
> + clock-names:
> + items:
> + - const: pll_refclk
> +
> + "#clock-cells":
> + const: 0
> +
> + required:
> + - clocks
> + - "#clock-cells"
> +
> + "^pll_cmnlc1?$":
> + type: object
> + description: |
> + SERDES node should have subnodes for each of the PLLs present in
> + the SERDES.
> + properties:
> + clocks:
> + maxItems: 2
> + description: Phandle to clock nodes representing the two inputs to PLL.
> +
> + clock-names:
> + items:
> + - const: pll_refclk
> + - const: refrcv
> +
> + "#clock-cells":
> + const: 0
> +
> + assigned-clocks:
> + maxItems: 1
> +
> + assigned-clock-parents:
> + maxItems: 1
> +
> + required:
> + - clocks
> + - "#clock-cells"
> + - assigned-clocks
> + - assigned-clock-parents
> +
> required:
> - compatible
> - "#address-cells"
> @@ -130,10 +184,39 @@ examples:
> reg = <0x0 0xfd240000 0x0 0x40000>;
> resets = <&phyrst 0>, <&phyrst 1>;
> reset-names = "sierra_reset", "sierra_apb";
> - clocks = <&cmn_refclk_dig_div>, <&cmn_refclk1_dig_div>;
> - clock-names = "cmn_refclk_dig_div", "cmn_refclk1_dig_div";
> + clocks = <&cmn_refclk_dig_div>, <&cmn_refclk1_dig_div>, <&serdes_pll_cmnlc>, <&serdes_pll_cmnlc1>;
> + clock-names = "cmn_refclk_dig_div", "cmn_refclk1_dig_div", "pll_cmnlc", "pll_cmnlc1";
> #address-cells = <1>;
> #size-cells = <0>;
> +
> + serdes_refrcv: refrcv {
> + clocks = <&pll0_refclk>;
> + clock-names = "pll_refclk";
> + #clock-cells = <0>;
> + };
> +
> + serdes_refrcv1: refrcv1 {
> + clocks = <&pll1_refclk>;
> + clock-names = "pll_refclk";
> + #clock-cells = <0>;
> + };
> +
> + serdes_pll_cmnlc: pll_cmnlc {
> + clocks = <&pll0_refclk>, <&serdes_refrcv1>;
> + clock-names = "pll_refclk", "refrcv";
> + #clock-cells = <0>;
> + assigned-clocks = <&serdes_pll_cmnlc>;
Isn't assigned-clocks supposed to be one of the clocks in 'clocks'?
> + assigned-clock-parents = <&pll0_refclk>;
And this should not be a clock in 'clocks'...
More generally, why do we need to expose all these details in DT?
Rob