18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
28c2ecf20Sopenharmony_ci# Copyright (C) 2019 Texas Instruments Incorporated - http://www.ti.com/
38c2ecf20Sopenharmony_ci%YAML 1.2
48c2ecf20Sopenharmony_ci---
58c2ecf20Sopenharmony_ci$id: "http://devicetree.org/schemas/phy/ti,phy-j721e-wiz.yaml#"
68c2ecf20Sopenharmony_ci$schema: "http://devicetree.org/meta-schemas/core.yaml#"
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_cititle: TI J721E WIZ (SERDES Wrapper)
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_cimaintainers:
118c2ecf20Sopenharmony_ci  - Kishon Vijay Abraham I <kishon@ti.com>
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_ciproperties:
148c2ecf20Sopenharmony_ci  compatible:
158c2ecf20Sopenharmony_ci    enum:
168c2ecf20Sopenharmony_ci      - ti,j721e-wiz-16g
178c2ecf20Sopenharmony_ci      - ti,j721e-wiz-10g
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ci  power-domains:
208c2ecf20Sopenharmony_ci    maxItems: 1
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_ci  clocks:
238c2ecf20Sopenharmony_ci    maxItems: 3
248c2ecf20Sopenharmony_ci    description: clock-specifier to represent input to the WIZ
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_ci  clock-names:
278c2ecf20Sopenharmony_ci    items:
288c2ecf20Sopenharmony_ci      - const: fck
298c2ecf20Sopenharmony_ci      - const: core_ref_clk
308c2ecf20Sopenharmony_ci      - const: ext_ref_clk
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ci  num-lanes:
338c2ecf20Sopenharmony_ci    minimum: 1
348c2ecf20Sopenharmony_ci    maximum: 4
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ci  "#address-cells":
378c2ecf20Sopenharmony_ci    const: 1
388c2ecf20Sopenharmony_ci
398c2ecf20Sopenharmony_ci  "#size-cells":
408c2ecf20Sopenharmony_ci    const: 1
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_ci  "#reset-cells":
438c2ecf20Sopenharmony_ci    const: 1
448c2ecf20Sopenharmony_ci
458c2ecf20Sopenharmony_ci  ranges: true
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ci  assigned-clocks:
488c2ecf20Sopenharmony_ci    minItems: 1
498c2ecf20Sopenharmony_ci    maxItems: 2
508c2ecf20Sopenharmony_ci
518c2ecf20Sopenharmony_ci  assigned-clock-parents:
528c2ecf20Sopenharmony_ci    minItems: 1
538c2ecf20Sopenharmony_ci    maxItems: 2
548c2ecf20Sopenharmony_ci
558c2ecf20Sopenharmony_ci  assigned-clock-rates:
568c2ecf20Sopenharmony_ci    minItems: 1
578c2ecf20Sopenharmony_ci    maxItems: 2
588c2ecf20Sopenharmony_ci
598c2ecf20Sopenharmony_ci  typec-dir-gpios:
608c2ecf20Sopenharmony_ci    maxItems: 1
618c2ecf20Sopenharmony_ci    description:
628c2ecf20Sopenharmony_ci      GPIO to signal Type-C cable orientation for lane swap.
638c2ecf20Sopenharmony_ci      If GPIO is active, lane 0 and lane 1 of SERDES will be swapped to
648c2ecf20Sopenharmony_ci      achieve the funtionality of an external type-C plug flip mux.
658c2ecf20Sopenharmony_ci
668c2ecf20Sopenharmony_ci  typec-dir-debounce-ms:
678c2ecf20Sopenharmony_ci    minimum: 100
688c2ecf20Sopenharmony_ci    maximum: 1000
698c2ecf20Sopenharmony_ci    default: 100
708c2ecf20Sopenharmony_ci    description:
718c2ecf20Sopenharmony_ci      Number of milliseconds to wait before sampling typec-dir-gpio.
728c2ecf20Sopenharmony_ci      If not specified, the default debounce of 100ms will be used.
738c2ecf20Sopenharmony_ci      Type-C spec states minimum CC pin debounce of 100 ms and maximum
748c2ecf20Sopenharmony_ci      of 200 ms. However, some solutions might need more than 200 ms.
758c2ecf20Sopenharmony_ci
768c2ecf20Sopenharmony_cipatternProperties:
778c2ecf20Sopenharmony_ci  "^pll[0|1]-refclk$":
788c2ecf20Sopenharmony_ci    type: object
798c2ecf20Sopenharmony_ci    description: |
808c2ecf20Sopenharmony_ci      WIZ node should have subnodes for each of the PLLs present in
818c2ecf20Sopenharmony_ci      the SERDES.
828c2ecf20Sopenharmony_ci    properties:
838c2ecf20Sopenharmony_ci      clocks:
848c2ecf20Sopenharmony_ci        maxItems: 2
858c2ecf20Sopenharmony_ci        description: Phandle to clock nodes representing the two inputs to PLL.
868c2ecf20Sopenharmony_ci
878c2ecf20Sopenharmony_ci      "#clock-cells":
888c2ecf20Sopenharmony_ci        const: 0
898c2ecf20Sopenharmony_ci
908c2ecf20Sopenharmony_ci      assigned-clocks:
918c2ecf20Sopenharmony_ci        maxItems: 1
928c2ecf20Sopenharmony_ci
938c2ecf20Sopenharmony_ci      assigned-clock-parents:
948c2ecf20Sopenharmony_ci        maxItems: 1
958c2ecf20Sopenharmony_ci
968c2ecf20Sopenharmony_ci    required:
978c2ecf20Sopenharmony_ci      - clocks
988c2ecf20Sopenharmony_ci      - "#clock-cells"
998c2ecf20Sopenharmony_ci      - assigned-clocks
1008c2ecf20Sopenharmony_ci      - assigned-clock-parents
1018c2ecf20Sopenharmony_ci
1028c2ecf20Sopenharmony_ci  "^cmn-refclk1?-dig-div$":
1038c2ecf20Sopenharmony_ci    type: object
1048c2ecf20Sopenharmony_ci    description:
1058c2ecf20Sopenharmony_ci      WIZ node should have subnodes for each of the PMA common refclock
1068c2ecf20Sopenharmony_ci      provided by the SERDES.
1078c2ecf20Sopenharmony_ci    properties:
1088c2ecf20Sopenharmony_ci      clocks:
1098c2ecf20Sopenharmony_ci        maxItems: 1
1108c2ecf20Sopenharmony_ci        description: Phandle to the clock node representing the input to the
1118c2ecf20Sopenharmony_ci          divider clock.
1128c2ecf20Sopenharmony_ci
1138c2ecf20Sopenharmony_ci      "#clock-cells":
1148c2ecf20Sopenharmony_ci        const: 0
1158c2ecf20Sopenharmony_ci
1168c2ecf20Sopenharmony_ci    required:
1178c2ecf20Sopenharmony_ci      - clocks
1188c2ecf20Sopenharmony_ci      - "#clock-cells"
1198c2ecf20Sopenharmony_ci
1208c2ecf20Sopenharmony_ci  "^refclk-dig$":
1218c2ecf20Sopenharmony_ci    type: object
1228c2ecf20Sopenharmony_ci    description: |
1238c2ecf20Sopenharmony_ci      WIZ node should have subnode for refclk_dig to select the reference
1248c2ecf20Sopenharmony_ci      clock source for the reference clock used in the PHY and PMA digital
1258c2ecf20Sopenharmony_ci      logic.
1268c2ecf20Sopenharmony_ci    properties:
1278c2ecf20Sopenharmony_ci      clocks:
1288c2ecf20Sopenharmony_ci        minItems: 2
1298c2ecf20Sopenharmony_ci        maxItems: 4
1308c2ecf20Sopenharmony_ci        description: Phandle to two (Torrent) or four (Sierra) clock nodes representing
1318c2ecf20Sopenharmony_ci          the inputs to refclk_dig
1328c2ecf20Sopenharmony_ci
1338c2ecf20Sopenharmony_ci      "#clock-cells":
1348c2ecf20Sopenharmony_ci        const: 0
1358c2ecf20Sopenharmony_ci
1368c2ecf20Sopenharmony_ci      assigned-clocks:
1378c2ecf20Sopenharmony_ci        maxItems: 1
1388c2ecf20Sopenharmony_ci
1398c2ecf20Sopenharmony_ci      assigned-clock-parents:
1408c2ecf20Sopenharmony_ci        maxItems: 1
1418c2ecf20Sopenharmony_ci
1428c2ecf20Sopenharmony_ci    required:
1438c2ecf20Sopenharmony_ci      - clocks
1448c2ecf20Sopenharmony_ci      - "#clock-cells"
1458c2ecf20Sopenharmony_ci      - assigned-clocks
1468c2ecf20Sopenharmony_ci      - assigned-clock-parents
1478c2ecf20Sopenharmony_ci
1488c2ecf20Sopenharmony_ci  "^serdes@[0-9a-f]+$":
1498c2ecf20Sopenharmony_ci    type: object
1508c2ecf20Sopenharmony_ci    description: |
1518c2ecf20Sopenharmony_ci      WIZ node should have '1' subnode for the SERDES. It could be either
1528c2ecf20Sopenharmony_ci      Sierra SERDES or Torrent SERDES. Sierra SERDES should follow the
1538c2ecf20Sopenharmony_ci      bindings specified in
1548c2ecf20Sopenharmony_ci      Documentation/devicetree/bindings/phy/phy-cadence-sierra.txt
1558c2ecf20Sopenharmony_ci      Torrent SERDES should follow the bindings specified in
1568c2ecf20Sopenharmony_ci      Documentation/devicetree/bindings/phy/phy-cadence-torrent.yaml
1578c2ecf20Sopenharmony_ci
1588c2ecf20Sopenharmony_cirequired:
1598c2ecf20Sopenharmony_ci  - compatible
1608c2ecf20Sopenharmony_ci  - power-domains
1618c2ecf20Sopenharmony_ci  - clocks
1628c2ecf20Sopenharmony_ci  - clock-names
1638c2ecf20Sopenharmony_ci  - num-lanes
1648c2ecf20Sopenharmony_ci  - "#address-cells"
1658c2ecf20Sopenharmony_ci  - "#size-cells"
1668c2ecf20Sopenharmony_ci  - "#reset-cells"
1678c2ecf20Sopenharmony_ci  - ranges
1688c2ecf20Sopenharmony_ci
1698c2ecf20Sopenharmony_ciadditionalProperties: false
1708c2ecf20Sopenharmony_ci
1718c2ecf20Sopenharmony_ciexamples:
1728c2ecf20Sopenharmony_ci  - |
1738c2ecf20Sopenharmony_ci    #include <dt-bindings/soc/ti,sci_pm_domain.h>
1748c2ecf20Sopenharmony_ci
1758c2ecf20Sopenharmony_ci    wiz@5000000 {
1768c2ecf20Sopenharmony_ci           compatible = "ti,j721e-wiz-16g";
1778c2ecf20Sopenharmony_ci           #address-cells = <1>;
1788c2ecf20Sopenharmony_ci           #size-cells = <1>;
1798c2ecf20Sopenharmony_ci           power-domains = <&k3_pds 292 TI_SCI_PD_EXCLUSIVE>;
1808c2ecf20Sopenharmony_ci           clocks = <&k3_clks 292 5>, <&k3_clks 292 11>, <&dummy_cmn_refclk>;
1818c2ecf20Sopenharmony_ci           clock-names = "fck", "core_ref_clk", "ext_ref_clk";
1828c2ecf20Sopenharmony_ci           assigned-clocks = <&k3_clks 292 11>, <&k3_clks 292 0>;
1838c2ecf20Sopenharmony_ci           assigned-clock-parents = <&k3_clks 292 15>, <&k3_clks 292 4>;
1848c2ecf20Sopenharmony_ci           num-lanes = <2>;
1858c2ecf20Sopenharmony_ci           #reset-cells = <1>;
1868c2ecf20Sopenharmony_ci           ranges = <0x5000000 0x5000000 0x10000>;
1878c2ecf20Sopenharmony_ci
1888c2ecf20Sopenharmony_ci           pll0-refclk {
1898c2ecf20Sopenharmony_ci                  clocks = <&k3_clks 293 13>, <&dummy_cmn_refclk>;
1908c2ecf20Sopenharmony_ci                  #clock-cells = <0>;
1918c2ecf20Sopenharmony_ci                  assigned-clocks = <&wiz1_pll0_refclk>;
1928c2ecf20Sopenharmony_ci                  assigned-clock-parents = <&k3_clks 293 13>;
1938c2ecf20Sopenharmony_ci           };
1948c2ecf20Sopenharmony_ci
1958c2ecf20Sopenharmony_ci           pll1-refclk {
1968c2ecf20Sopenharmony_ci                  clocks = <&k3_clks 293 0>, <&dummy_cmn_refclk1>;
1978c2ecf20Sopenharmony_ci                  #clock-cells = <0>;
1988c2ecf20Sopenharmony_ci                  assigned-clocks = <&wiz1_pll1_refclk>;
1998c2ecf20Sopenharmony_ci                  assigned-clock-parents = <&k3_clks 293 0>;
2008c2ecf20Sopenharmony_ci           };
2018c2ecf20Sopenharmony_ci
2028c2ecf20Sopenharmony_ci           cmn-refclk-dig-div {
2038c2ecf20Sopenharmony_ci                  clocks = <&wiz1_refclk_dig>;
2048c2ecf20Sopenharmony_ci                  #clock-cells = <0>;
2058c2ecf20Sopenharmony_ci           };
2068c2ecf20Sopenharmony_ci
2078c2ecf20Sopenharmony_ci           cmn-refclk1-dig-div {
2088c2ecf20Sopenharmony_ci                  clocks = <&wiz1_pll1_refclk>;
2098c2ecf20Sopenharmony_ci                  #clock-cells = <0>;
2108c2ecf20Sopenharmony_ci           };
2118c2ecf20Sopenharmony_ci
2128c2ecf20Sopenharmony_ci           refclk-dig {
2138c2ecf20Sopenharmony_ci                  clocks = <&k3_clks 292 11>, <&k3_clks 292 0>,
2148c2ecf20Sopenharmony_ci                          <&dummy_cmn_refclk>, <&dummy_cmn_refclk1>;
2158c2ecf20Sopenharmony_ci                  #clock-cells = <0>;
2168c2ecf20Sopenharmony_ci                  assigned-clocks = <&wiz0_refclk_dig>;
2178c2ecf20Sopenharmony_ci                  assigned-clock-parents = <&k3_clks 292 11>;
2188c2ecf20Sopenharmony_ci           };
2198c2ecf20Sopenharmony_ci
2208c2ecf20Sopenharmony_ci           serdes@5000000 {
2218c2ecf20Sopenharmony_ci                  compatible = "cdns,ti,sierra-phy-t0";
2228c2ecf20Sopenharmony_ci                  reg-names = "serdes";
2238c2ecf20Sopenharmony_ci                  reg = <0x5000000 0x10000>;
2248c2ecf20Sopenharmony_ci                  #address-cells = <1>;
2258c2ecf20Sopenharmony_ci                  #size-cells = <0>;
2268c2ecf20Sopenharmony_ci                  resets = <&serdes_wiz0 0>;
2278c2ecf20Sopenharmony_ci                  reset-names = "sierra_reset";
2288c2ecf20Sopenharmony_ci                  clocks = <&wiz0_cmn_refclk_dig_div>, <&wiz0_cmn_refclk1_dig_div>;
2298c2ecf20Sopenharmony_ci                  clock-names = "cmn_refclk_dig_div", "cmn_refclk1_dig_div";
2308c2ecf20Sopenharmony_ci           };
2318c2ecf20Sopenharmony_ci    };
232