18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: "http://devicetree.org/schemas/phy/phy-cadence-torrent.yaml#"
58c2ecf20Sopenharmony_ci$schema: "http://devicetree.org/meta-schemas/core.yaml#"
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: Cadence Torrent SD0801 PHY binding
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cidescription:
108c2ecf20Sopenharmony_ci  This binding describes the Cadence SD0801 PHY (also known as Torrent PHY)
118c2ecf20Sopenharmony_ci  hardware included with the Cadence MHDP DisplayPort controller. Torrent
128c2ecf20Sopenharmony_ci  PHY also supports multilink multiprotocol combinations including protocols
138c2ecf20Sopenharmony_ci  such as PCIe, USB, SGMII, QSGMII etc.
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_cimaintainers:
168c2ecf20Sopenharmony_ci  - Swapnil Jakhade <sjakhade@cadence.com>
178c2ecf20Sopenharmony_ci  - Yuti Amonkar <yamonkar@cadence.com>
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ciproperties:
208c2ecf20Sopenharmony_ci  compatible:
218c2ecf20Sopenharmony_ci    enum:
228c2ecf20Sopenharmony_ci      - cdns,torrent-phy
238c2ecf20Sopenharmony_ci      - ti,j721e-serdes-10g
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ci  '#address-cells':
268c2ecf20Sopenharmony_ci    const: 1
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_ci  '#size-cells':
298c2ecf20Sopenharmony_ci    const: 0
308c2ecf20Sopenharmony_ci
318c2ecf20Sopenharmony_ci  clocks:
328c2ecf20Sopenharmony_ci    maxItems: 1
338c2ecf20Sopenharmony_ci    description:
348c2ecf20Sopenharmony_ci      PHY reference clock. Must contain an entry in clock-names.
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ci  clock-names:
378c2ecf20Sopenharmony_ci    const: refclk
388c2ecf20Sopenharmony_ci
398c2ecf20Sopenharmony_ci  reg:
408c2ecf20Sopenharmony_ci    minItems: 1
418c2ecf20Sopenharmony_ci    maxItems: 2
428c2ecf20Sopenharmony_ci    items:
438c2ecf20Sopenharmony_ci      - description: Offset of the Torrent PHY configuration registers.
448c2ecf20Sopenharmony_ci      - description: Offset of the DPTX PHY configuration registers.
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_ci  reg-names:
478c2ecf20Sopenharmony_ci    minItems: 1
488c2ecf20Sopenharmony_ci    maxItems: 2
498c2ecf20Sopenharmony_ci    items:
508c2ecf20Sopenharmony_ci      - const: torrent_phy
518c2ecf20Sopenharmony_ci      - const: dptx_phy
528c2ecf20Sopenharmony_ci
538c2ecf20Sopenharmony_ci  resets:
548c2ecf20Sopenharmony_ci    minItems: 1
558c2ecf20Sopenharmony_ci    maxItems: 2
568c2ecf20Sopenharmony_ci    items:
578c2ecf20Sopenharmony_ci      - description: Torrent PHY reset.
588c2ecf20Sopenharmony_ci      - description: Torrent APB reset. This is optional.
598c2ecf20Sopenharmony_ci
608c2ecf20Sopenharmony_ci  reset-names:
618c2ecf20Sopenharmony_ci    minItems: 1
628c2ecf20Sopenharmony_ci    maxItems: 2
638c2ecf20Sopenharmony_ci    items:
648c2ecf20Sopenharmony_ci      - const: torrent_reset
658c2ecf20Sopenharmony_ci      - const: torrent_apb
668c2ecf20Sopenharmony_ci
678c2ecf20Sopenharmony_cipatternProperties:
688c2ecf20Sopenharmony_ci  '^phy@[0-3]$':
698c2ecf20Sopenharmony_ci    type: object
708c2ecf20Sopenharmony_ci    description:
718c2ecf20Sopenharmony_ci      Each group of PHY lanes with a single master lane should be represented as a sub-node.
728c2ecf20Sopenharmony_ci    properties:
738c2ecf20Sopenharmony_ci      reg:
748c2ecf20Sopenharmony_ci        description:
758c2ecf20Sopenharmony_ci          The master lane number. This is the lowest numbered lane in the lane group.
768c2ecf20Sopenharmony_ci        minimum: 0
778c2ecf20Sopenharmony_ci        maximum: 3
788c2ecf20Sopenharmony_ci
798c2ecf20Sopenharmony_ci      resets:
808c2ecf20Sopenharmony_ci        minItems: 1
818c2ecf20Sopenharmony_ci        maxItems: 4
828c2ecf20Sopenharmony_ci        description:
838c2ecf20Sopenharmony_ci          Contains list of resets, one per lane, to get all the link lanes out of reset.
848c2ecf20Sopenharmony_ci
858c2ecf20Sopenharmony_ci      "#phy-cells":
868c2ecf20Sopenharmony_ci        const: 0
878c2ecf20Sopenharmony_ci
888c2ecf20Sopenharmony_ci      cdns,phy-type:
898c2ecf20Sopenharmony_ci        description:
908c2ecf20Sopenharmony_ci          Specifies the type of PHY for which the group of PHY lanes is used.
918c2ecf20Sopenharmony_ci          Refer include/dt-bindings/phy/phy.h. Constants from the header should be used.
928c2ecf20Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
938c2ecf20Sopenharmony_ci        minimum: 1
948c2ecf20Sopenharmony_ci        maximum: 9
958c2ecf20Sopenharmony_ci
968c2ecf20Sopenharmony_ci      cdns,num-lanes:
978c2ecf20Sopenharmony_ci        description:
988c2ecf20Sopenharmony_ci          Number of lanes.
998c2ecf20Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
1008c2ecf20Sopenharmony_ci        enum: [1, 2, 3, 4]
1018c2ecf20Sopenharmony_ci        default: 4
1028c2ecf20Sopenharmony_ci
1038c2ecf20Sopenharmony_ci      cdns,ssc-mode:
1048c2ecf20Sopenharmony_ci        description:
1058c2ecf20Sopenharmony_ci          Specifies the Spread Spectrum Clocking mode used. It can be NO_SSC,
1068c2ecf20Sopenharmony_ci          EXTERNAL_SSC or INTERNAL_SSC.
1078c2ecf20Sopenharmony_ci          Refer include/dt-bindings/phy/phy-cadence-torrent.h for the constants to be used.
1088c2ecf20Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
1098c2ecf20Sopenharmony_ci        enum: [0, 1, 2]
1108c2ecf20Sopenharmony_ci        default: 0
1118c2ecf20Sopenharmony_ci
1128c2ecf20Sopenharmony_ci      cdns,max-bit-rate:
1138c2ecf20Sopenharmony_ci        description:
1148c2ecf20Sopenharmony_ci          Maximum DisplayPort link bit rate to use, in Mbps
1158c2ecf20Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
1168c2ecf20Sopenharmony_ci        enum: [2160, 2430, 2700, 3240, 4320, 5400, 8100]
1178c2ecf20Sopenharmony_ci        default: 8100
1188c2ecf20Sopenharmony_ci
1198c2ecf20Sopenharmony_ci    required:
1208c2ecf20Sopenharmony_ci      - reg
1218c2ecf20Sopenharmony_ci      - resets
1228c2ecf20Sopenharmony_ci      - "#phy-cells"
1238c2ecf20Sopenharmony_ci      - cdns,phy-type
1248c2ecf20Sopenharmony_ci      - cdns,num-lanes
1258c2ecf20Sopenharmony_ci
1268c2ecf20Sopenharmony_ci    additionalProperties: false
1278c2ecf20Sopenharmony_ci
1288c2ecf20Sopenharmony_cirequired:
1298c2ecf20Sopenharmony_ci  - compatible
1308c2ecf20Sopenharmony_ci  - "#address-cells"
1318c2ecf20Sopenharmony_ci  - "#size-cells"
1328c2ecf20Sopenharmony_ci  - clocks
1338c2ecf20Sopenharmony_ci  - clock-names
1348c2ecf20Sopenharmony_ci  - reg
1358c2ecf20Sopenharmony_ci  - reg-names
1368c2ecf20Sopenharmony_ci  - resets
1378c2ecf20Sopenharmony_ci  - reset-names
1388c2ecf20Sopenharmony_ci
1398c2ecf20Sopenharmony_ciadditionalProperties: false
1408c2ecf20Sopenharmony_ci
1418c2ecf20Sopenharmony_ciexamples:
1428c2ecf20Sopenharmony_ci  - |
1438c2ecf20Sopenharmony_ci    #include <dt-bindings/phy/phy.h>
1448c2ecf20Sopenharmony_ci
1458c2ecf20Sopenharmony_ci    bus {
1468c2ecf20Sopenharmony_ci        #address-cells = <2>;
1478c2ecf20Sopenharmony_ci        #size-cells = <2>;
1488c2ecf20Sopenharmony_ci
1498c2ecf20Sopenharmony_ci        torrent-phy@f0fb500000 {
1508c2ecf20Sopenharmony_ci            compatible = "cdns,torrent-phy";
1518c2ecf20Sopenharmony_ci            reg = <0xf0 0xfb500000 0x0 0x00100000>,
1528c2ecf20Sopenharmony_ci                  <0xf0 0xfb030a00 0x0 0x00000040>;
1538c2ecf20Sopenharmony_ci            reg-names = "torrent_phy", "dptx_phy";
1548c2ecf20Sopenharmony_ci            resets = <&phyrst 0>;
1558c2ecf20Sopenharmony_ci            reset-names = "torrent_reset";
1568c2ecf20Sopenharmony_ci            clocks = <&ref_clk>;
1578c2ecf20Sopenharmony_ci            clock-names = "refclk";
1588c2ecf20Sopenharmony_ci            #address-cells = <1>;
1598c2ecf20Sopenharmony_ci            #size-cells = <0>;
1608c2ecf20Sopenharmony_ci            phy@0 {
1618c2ecf20Sopenharmony_ci                reg = <0>;
1628c2ecf20Sopenharmony_ci                resets = <&phyrst 1>, <&phyrst 2>,
1638c2ecf20Sopenharmony_ci                         <&phyrst 3>, <&phyrst 4>;
1648c2ecf20Sopenharmony_ci                #phy-cells = <0>;
1658c2ecf20Sopenharmony_ci                cdns,phy-type = <PHY_TYPE_DP>;
1668c2ecf20Sopenharmony_ci                cdns,num-lanes = <4>;
1678c2ecf20Sopenharmony_ci                cdns,max-bit-rate = <8100>;
1688c2ecf20Sopenharmony_ci            };
1698c2ecf20Sopenharmony_ci        };
1708c2ecf20Sopenharmony_ci    };
1718c2ecf20Sopenharmony_ci  - |
1728c2ecf20Sopenharmony_ci    #include <dt-bindings/phy/phy.h>
1738c2ecf20Sopenharmony_ci    #include <dt-bindings/phy/phy-cadence-torrent.h>
1748c2ecf20Sopenharmony_ci
1758c2ecf20Sopenharmony_ci    bus {
1768c2ecf20Sopenharmony_ci        #address-cells = <2>;
1778c2ecf20Sopenharmony_ci        #size-cells = <2>;
1788c2ecf20Sopenharmony_ci
1798c2ecf20Sopenharmony_ci        torrent-phy@f0fb500000 {
1808c2ecf20Sopenharmony_ci            compatible = "cdns,torrent-phy";
1818c2ecf20Sopenharmony_ci            reg = <0xf0 0xfb500000 0x0 0x00100000>;
1828c2ecf20Sopenharmony_ci            reg-names = "torrent_phy";
1838c2ecf20Sopenharmony_ci            resets = <&phyrst 0>, <&phyrst 1>;
1848c2ecf20Sopenharmony_ci            reset-names = "torrent_reset", "torrent_apb";
1858c2ecf20Sopenharmony_ci            clocks = <&ref_clk>;
1868c2ecf20Sopenharmony_ci            clock-names = "refclk";
1878c2ecf20Sopenharmony_ci            #address-cells = <1>;
1888c2ecf20Sopenharmony_ci            #size-cells = <0>;
1898c2ecf20Sopenharmony_ci            phy@0 {
1908c2ecf20Sopenharmony_ci                reg = <0>;
1918c2ecf20Sopenharmony_ci                resets = <&phyrst 2>, <&phyrst 3>;
1928c2ecf20Sopenharmony_ci                #phy-cells = <0>;
1938c2ecf20Sopenharmony_ci                cdns,phy-type = <PHY_TYPE_PCIE>;
1948c2ecf20Sopenharmony_ci                cdns,num-lanes = <2>;
1958c2ecf20Sopenharmony_ci                cdns,ssc-mode = <TORRENT_SERDES_NO_SSC>;
1968c2ecf20Sopenharmony_ci            };
1978c2ecf20Sopenharmony_ci
1988c2ecf20Sopenharmony_ci            phy@2 {
1998c2ecf20Sopenharmony_ci                reg = <2>;
2008c2ecf20Sopenharmony_ci                resets = <&phyrst 4>;
2018c2ecf20Sopenharmony_ci                #phy-cells = <0>;
2028c2ecf20Sopenharmony_ci                cdns,phy-type = <PHY_TYPE_SGMII>;
2038c2ecf20Sopenharmony_ci                cdns,num-lanes = <1>;
2048c2ecf20Sopenharmony_ci                cdns,ssc-mode = <TORRENT_SERDES_NO_SSC>;
2058c2ecf20Sopenharmony_ci            };
2068c2ecf20Sopenharmony_ci        };
2078c2ecf20Sopenharmony_ci    };
2088c2ecf20Sopenharmony_ci...
209