1*ba2bf1f0SSwapnil Jakhade# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2*ba2bf1f0SSwapnil Jakhade%YAML 1.2
3*ba2bf1f0SSwapnil Jakhade---
4*ba2bf1f0SSwapnil Jakhade$id: "http://devicetree.org/schemas/phy/phy-cadence-sierra.yaml#"
5*ba2bf1f0SSwapnil Jakhade$schema: "http://devicetree.org/meta-schemas/core.yaml#"
6*ba2bf1f0SSwapnil Jakhade
7*ba2bf1f0SSwapnil Jakhadetitle: Cadence Sierra PHY binding
8*ba2bf1f0SSwapnil Jakhade
9*ba2bf1f0SSwapnil Jakhadedescription:
10*ba2bf1f0SSwapnil Jakhade  This binding describes the Cadence Sierra PHY. Sierra PHY supports multilink
11*ba2bf1f0SSwapnil Jakhade  multiprotocol combinations including protocols such as PCIe, USB etc.
12*ba2bf1f0SSwapnil Jakhade
13*ba2bf1f0SSwapnil Jakhademaintainers:
14*ba2bf1f0SSwapnil Jakhade  - Swapnil Jakhade <sjakhade@cadence.com>
15*ba2bf1f0SSwapnil Jakhade  - Yuti Amonkar <yamonkar@cadence.com>
16*ba2bf1f0SSwapnil Jakhade
17*ba2bf1f0SSwapnil Jakhadeproperties:
18*ba2bf1f0SSwapnil Jakhade  compatible:
19*ba2bf1f0SSwapnil Jakhade    enum:
20*ba2bf1f0SSwapnil Jakhade      - cdns,sierra-phy-t0
21*ba2bf1f0SSwapnil Jakhade      - ti,sierra-phy-t0
22*ba2bf1f0SSwapnil Jakhade
23*ba2bf1f0SSwapnil Jakhade  '#address-cells':
24*ba2bf1f0SSwapnil Jakhade    const: 1
25*ba2bf1f0SSwapnil Jakhade
26*ba2bf1f0SSwapnil Jakhade  '#size-cells':
27*ba2bf1f0SSwapnil Jakhade    const: 0
28*ba2bf1f0SSwapnil Jakhade
29*ba2bf1f0SSwapnil Jakhade  resets:
30*ba2bf1f0SSwapnil Jakhade    minItems: 1
31*ba2bf1f0SSwapnil Jakhade    maxItems: 2
32*ba2bf1f0SSwapnil Jakhade    items:
33*ba2bf1f0SSwapnil Jakhade      - description: Sierra PHY reset.
34*ba2bf1f0SSwapnil Jakhade      - description: Sierra APB reset. This is optional.
35*ba2bf1f0SSwapnil Jakhade
36*ba2bf1f0SSwapnil Jakhade  reset-names:
37*ba2bf1f0SSwapnil Jakhade    minItems: 1
38*ba2bf1f0SSwapnil Jakhade    maxItems: 2
39*ba2bf1f0SSwapnil Jakhade    items:
40*ba2bf1f0SSwapnil Jakhade      - const: sierra_reset
41*ba2bf1f0SSwapnil Jakhade      - const: sierra_apb
42*ba2bf1f0SSwapnil Jakhade
43*ba2bf1f0SSwapnil Jakhade  reg:
44*ba2bf1f0SSwapnil Jakhade    maxItems: 1
45*ba2bf1f0SSwapnil Jakhade    description:
46*ba2bf1f0SSwapnil Jakhade      Offset of the Sierra PHY configuration registers.
47*ba2bf1f0SSwapnil Jakhade
48*ba2bf1f0SSwapnil Jakhade  reg-names:
49*ba2bf1f0SSwapnil Jakhade    const: serdes
50*ba2bf1f0SSwapnil Jakhade
51*ba2bf1f0SSwapnil Jakhade  clocks:
52*ba2bf1f0SSwapnil Jakhade    maxItems: 2
53*ba2bf1f0SSwapnil Jakhade
54*ba2bf1f0SSwapnil Jakhade  clock-names:
55*ba2bf1f0SSwapnil Jakhade    items:
56*ba2bf1f0SSwapnil Jakhade      - const: cmn_refclk_dig_div
57*ba2bf1f0SSwapnil Jakhade      - const: cmn_refclk1_dig_div
58*ba2bf1f0SSwapnil Jakhade
59*ba2bf1f0SSwapnil Jakhade  cdns,autoconf:
60*ba2bf1f0SSwapnil Jakhade    type: boolean
61*ba2bf1f0SSwapnil Jakhade    description:
62*ba2bf1f0SSwapnil Jakhade      A boolean property whose presence indicates that the PHY registers will be
63*ba2bf1f0SSwapnil Jakhade      configured by hardware. If not present, all sub-node optional properties
64*ba2bf1f0SSwapnil Jakhade      must be provided.
65*ba2bf1f0SSwapnil Jakhade
66*ba2bf1f0SSwapnil JakhadepatternProperties:
67*ba2bf1f0SSwapnil Jakhade  '^phy@[0-9a-f]$':
68*ba2bf1f0SSwapnil Jakhade    type: object
69*ba2bf1f0SSwapnil Jakhade    description:
70*ba2bf1f0SSwapnil Jakhade      Each group of PHY lanes with a single master lane should be represented as
71*ba2bf1f0SSwapnil Jakhade      a sub-node. Note that the actual configuration of each lane is determined
72*ba2bf1f0SSwapnil Jakhade      by hardware strapping, and must match the configuration specified here.
73*ba2bf1f0SSwapnil Jakhade    properties:
74*ba2bf1f0SSwapnil Jakhade      reg:
75*ba2bf1f0SSwapnil Jakhade        description:
76*ba2bf1f0SSwapnil Jakhade          The master lane number. This is the lowest numbered lane in the lane group.
77*ba2bf1f0SSwapnil Jakhade        minimum: 0
78*ba2bf1f0SSwapnil Jakhade        maximum: 15
79*ba2bf1f0SSwapnil Jakhade
80*ba2bf1f0SSwapnil Jakhade      resets:
81*ba2bf1f0SSwapnil Jakhade        minItems: 1
82*ba2bf1f0SSwapnil Jakhade        maxItems: 4
83*ba2bf1f0SSwapnil Jakhade        description:
84*ba2bf1f0SSwapnil Jakhade          Contains list of resets, one per lane, to get all the link lanes out of reset.
85*ba2bf1f0SSwapnil Jakhade
86*ba2bf1f0SSwapnil Jakhade      "#phy-cells":
87*ba2bf1f0SSwapnil Jakhade        const: 0
88*ba2bf1f0SSwapnil Jakhade
89*ba2bf1f0SSwapnil Jakhade      cdns,phy-type:
90*ba2bf1f0SSwapnil Jakhade        description:
91*ba2bf1f0SSwapnil Jakhade          Specifies the type of PHY for which the group of PHY lanes is used.
92*ba2bf1f0SSwapnil Jakhade          Refer include/dt-bindings/phy/phy.h. Constants from the header should be used.
93*ba2bf1f0SSwapnil Jakhade        $ref: /schemas/types.yaml#/definitions/uint32
94*ba2bf1f0SSwapnil Jakhade        enum: [2, 4]
95*ba2bf1f0SSwapnil Jakhade
96*ba2bf1f0SSwapnil Jakhade      cdns,num-lanes:
97*ba2bf1f0SSwapnil Jakhade        description:
98*ba2bf1f0SSwapnil Jakhade          Number of lanes in this group. The group is made up of consecutive lanes.
99*ba2bf1f0SSwapnil Jakhade        $ref: /schemas/types.yaml#/definitions/uint32
100*ba2bf1f0SSwapnil Jakhade        minimum: 1
101*ba2bf1f0SSwapnil Jakhade        maximum: 16
102*ba2bf1f0SSwapnil Jakhade
103*ba2bf1f0SSwapnil Jakhade    required:
104*ba2bf1f0SSwapnil Jakhade      - reg
105*ba2bf1f0SSwapnil Jakhade      - resets
106*ba2bf1f0SSwapnil Jakhade      - "#phy-cells"
107*ba2bf1f0SSwapnil Jakhade
108*ba2bf1f0SSwapnil Jakhade    additionalProperties: false
109*ba2bf1f0SSwapnil Jakhade
110*ba2bf1f0SSwapnil Jakhaderequired:
111*ba2bf1f0SSwapnil Jakhade  - compatible
112*ba2bf1f0SSwapnil Jakhade  - "#address-cells"
113*ba2bf1f0SSwapnil Jakhade  - "#size-cells"
114*ba2bf1f0SSwapnil Jakhade  - reg
115*ba2bf1f0SSwapnil Jakhade  - resets
116*ba2bf1f0SSwapnil Jakhade  - reset-names
117*ba2bf1f0SSwapnil Jakhade
118*ba2bf1f0SSwapnil JakhadeadditionalProperties: false
119*ba2bf1f0SSwapnil Jakhade
120*ba2bf1f0SSwapnil Jakhadeexamples:
121*ba2bf1f0SSwapnil Jakhade  - |
122*ba2bf1f0SSwapnil Jakhade    #include <dt-bindings/phy/phy.h>
123*ba2bf1f0SSwapnil Jakhade
124*ba2bf1f0SSwapnil Jakhade    bus {
125*ba2bf1f0SSwapnil Jakhade        #address-cells = <2>;
126*ba2bf1f0SSwapnil Jakhade        #size-cells = <2>;
127*ba2bf1f0SSwapnil Jakhade
128*ba2bf1f0SSwapnil Jakhade        sierra-phy@fd240000 {
129*ba2bf1f0SSwapnil Jakhade            compatible = "cdns,sierra-phy-t0";
130*ba2bf1f0SSwapnil Jakhade            reg = <0x0 0xfd240000 0x0 0x40000>;
131*ba2bf1f0SSwapnil Jakhade            resets = <&phyrst 0>, <&phyrst 1>;
132*ba2bf1f0SSwapnil Jakhade            reset-names = "sierra_reset", "sierra_apb";
133*ba2bf1f0SSwapnil Jakhade            clocks = <&cmn_refclk_dig_div>, <&cmn_refclk1_dig_div>;
134*ba2bf1f0SSwapnil Jakhade            clock-names = "cmn_refclk_dig_div", "cmn_refclk1_dig_div";
135*ba2bf1f0SSwapnil Jakhade            #address-cells = <1>;
136*ba2bf1f0SSwapnil Jakhade            #size-cells = <0>;
137*ba2bf1f0SSwapnil Jakhade            pcie0_phy0: phy@0 {
138*ba2bf1f0SSwapnil Jakhade                reg = <0>;
139*ba2bf1f0SSwapnil Jakhade                resets = <&phyrst 2>;
140*ba2bf1f0SSwapnil Jakhade                cdns,num-lanes = <2>;
141*ba2bf1f0SSwapnil Jakhade                #phy-cells = <0>;
142*ba2bf1f0SSwapnil Jakhade                cdns,phy-type = <PHY_TYPE_PCIE>;
143*ba2bf1f0SSwapnil Jakhade            };
144*ba2bf1f0SSwapnil Jakhade            pcie0_phy1: phy@2 {
145*ba2bf1f0SSwapnil Jakhade                reg = <2>;
146*ba2bf1f0SSwapnil Jakhade                resets = <&phyrst 4>;
147*ba2bf1f0SSwapnil Jakhade                cdns,num-lanes = <1>;
148*ba2bf1f0SSwapnil Jakhade                #phy-cells = <0>;
149*ba2bf1f0SSwapnil Jakhade                cdns,phy-type = <PHY_TYPE_PCIE>;
150*ba2bf1f0SSwapnil Jakhade            };
151*ba2bf1f0SSwapnil Jakhade        };
152*ba2bf1f0SSwapnil Jakhade    };
153