xref: /openbmc/linux/Documentation/devicetree/bindings/net/dsa/nxp,sja1105.yaml (revision 2612e3bbc0386368a850140a6c9b990cd496a5ec)
162568bdbSVladimir Oltean# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262568bdbSVladimir Oltean%YAML 1.2
362568bdbSVladimir Oltean---
462568bdbSVladimir Oltean$id: http://devicetree.org/schemas/net/dsa/nxp,sja1105.yaml#
562568bdbSVladimir Oltean$schema: http://devicetree.org/meta-schemas/core.yaml#
662568bdbSVladimir Oltean
7a612130cSKrzysztof Kozlowskititle: NXP SJA1105 Automotive Ethernet Switch Family
862568bdbSVladimir Oltean
962568bdbSVladimir Olteandescription:
1062568bdbSVladimir Oltean  The SJA1105 SPI interface requires a CS-to-CLK time (t2 in UM10944.pdf) of at
1162568bdbSVladimir Oltean  least one half of t_CLK. At an SPI frequency of 1MHz, this means a minimum
1262568bdbSVladimir Oltean  cs_sck_delay of 500ns. Ensuring that this SPI timing requirement is observed
1362568bdbSVladimir Oltean  depends on the SPI bus master driver.
1462568bdbSVladimir Oltean
1562568bdbSVladimir Olteanmaintainers:
1662568bdbSVladimir Oltean  - Vladimir Oltean <vladimir.oltean@nxp.com>
1762568bdbSVladimir Oltean
1862568bdbSVladimir Olteanproperties:
1962568bdbSVladimir Oltean  compatible:
2062568bdbSVladimir Oltean    enum:
2162568bdbSVladimir Oltean      - nxp,sja1105e
2262568bdbSVladimir Oltean      - nxp,sja1105t
2362568bdbSVladimir Oltean      - nxp,sja1105p
2462568bdbSVladimir Oltean      - nxp,sja1105q
2562568bdbSVladimir Oltean      - nxp,sja1105r
2662568bdbSVladimir Oltean      - nxp,sja1105s
27070f5b70SVladimir Oltean      - nxp,sja1110a
28070f5b70SVladimir Oltean      - nxp,sja1110b
29070f5b70SVladimir Oltean      - nxp,sja1110c
30070f5b70SVladimir Oltean      - nxp,sja1110d
3162568bdbSVladimir Oltean
3262568bdbSVladimir Oltean  reg:
3362568bdbSVladimir Oltean    maxItems: 1
3462568bdbSVladimir Oltean
35*af2eab1aSKrzysztof Kozlowski  spi-cpha: true
36*af2eab1aSKrzysztof Kozlowski  spi-cpol: true
37*af2eab1aSKrzysztof Kozlowski
38070f5b70SVladimir Oltean  # Optional container node for the 2 internal MDIO buses of the SJA1110
39070f5b70SVladimir Oltean  # (one for the internal 100base-T1 PHYs and the other for the single
40070f5b70SVladimir Oltean  # 100base-TX PHY). The "reg" property does not have physical significance.
41070f5b70SVladimir Oltean  # The PHY addresses to port correspondence is as follows: for 100base-T1,
42070f5b70SVladimir Oltean  # port 5 has PHY 1, port 6 has PHY 2 etc, while for 100base-TX, port 1 has
43070f5b70SVladimir Oltean  # PHY 1.
44070f5b70SVladimir Oltean  mdios:
45070f5b70SVladimir Oltean    type: object
46070f5b70SVladimir Oltean
47070f5b70SVladimir Oltean    properties:
48070f5b70SVladimir Oltean      '#address-cells':
49070f5b70SVladimir Oltean        const: 1
50070f5b70SVladimir Oltean      '#size-cells':
51070f5b70SVladimir Oltean        const: 0
52070f5b70SVladimir Oltean
53070f5b70SVladimir Oltean    patternProperties:
54070f5b70SVladimir Oltean      "^mdio@[0-1]$":
55b2d28642SRob Herring        $ref: /schemas/net/mdio.yaml#
56b2d28642SRob Herring        unevaluatedProperties: false
57070f5b70SVladimir Oltean
58070f5b70SVladimir Oltean        properties:
59070f5b70SVladimir Oltean          compatible:
60070f5b70SVladimir Oltean            oneOf:
61070f5b70SVladimir Oltean              - enum:
62070f5b70SVladimir Oltean                  - nxp,sja1110-base-t1-mdio
63070f5b70SVladimir Oltean                  - nxp,sja1110-base-tx-mdio
64070f5b70SVladimir Oltean
65070f5b70SVladimir Oltean          reg:
66070f5b70SVladimir Oltean            oneOf:
67070f5b70SVladimir Oltean              - enum:
68070f5b70SVladimir Oltean                  - 0
69070f5b70SVladimir Oltean                  - 1
70070f5b70SVladimir Oltean
71070f5b70SVladimir Oltean        required:
72070f5b70SVladimir Oltean          - compatible
73070f5b70SVladimir Oltean          - reg
74070f5b70SVladimir Oltean
75ac41ac81SVladimir OlteanpatternProperties:
76ac41ac81SVladimir Oltean  "^(ethernet-)?ports$":
77ac41ac81SVladimir Oltean    patternProperties:
78ac41ac81SVladimir Oltean      "^(ethernet-)?port@[0-9]+$":
79ac41ac81SVladimir Oltean        allOf:
80ac41ac81SVladimir Oltean          - if:
81ac41ac81SVladimir Oltean              properties:
82ac41ac81SVladimir Oltean                phy-mode:
83ac41ac81SVladimir Oltean                  contains:
84ac41ac81SVladimir Oltean                    enum:
85ac41ac81SVladimir Oltean                      - rgmii
86ac41ac81SVladimir Oltean                      - rgmii-rxid
87ac41ac81SVladimir Oltean                      - rgmii-txid
88ac41ac81SVladimir Oltean                      - rgmii-id
89ac41ac81SVladimir Oltean            then:
90ac41ac81SVladimir Oltean              properties:
91ac41ac81SVladimir Oltean                rx-internal-delay-ps:
92ac41ac81SVladimir Oltean                  $ref: "#/$defs/internal-delay-ps"
93ac41ac81SVladimir Oltean                tx-internal-delay-ps:
94ac41ac81SVladimir Oltean                  $ref: "#/$defs/internal-delay-ps"
95ac41ac81SVladimir Oltean
9662568bdbSVladimir Olteanrequired:
9762568bdbSVladimir Oltean  - compatible
9862568bdbSVladimir Oltean  - reg
9962568bdbSVladimir Oltean
100ac41ac81SVladimir Oltean$defs:
101ac41ac81SVladimir Oltean  internal-delay-ps:
102ac41ac81SVladimir Oltean    description:
103ac41ac81SVladimir Oltean      Disable tunable delay lines using 0 ps, or enable them and select
104ac41ac81SVladimir Oltean      the phase between 1640 ps (73.8 degree shift at 1Gbps) and 2260 ps
105ac41ac81SVladimir Oltean      (101.7 degree shift) in increments of 0.9 degrees (20 ps).
106ac41ac81SVladimir Oltean    enum:
107ac41ac81SVladimir Oltean      [0, 1640, 1660, 1680, 1700, 1720, 1740, 1760, 1780, 1800, 1820, 1840,
108ac41ac81SVladimir Oltean       1860, 1880, 1900, 1920, 1940, 1960, 1980, 2000, 2020, 2040, 2060, 2080,
109ac41ac81SVladimir Oltean       2100, 2120, 2140, 2160, 2180, 2200, 2220, 2240, 2260]
110ac41ac81SVladimir Oltean
111*af2eab1aSKrzysztof KozlowskiallOf:
112*af2eab1aSKrzysztof Kozlowski  - $ref: dsa.yaml#/$defs/ethernet-ports
113*af2eab1aSKrzysztof Kozlowski  - $ref: /schemas/spi/spi-peripheral-props.yaml#
114*af2eab1aSKrzysztof Kozlowski  - if:
115*af2eab1aSKrzysztof Kozlowski      properties:
116*af2eab1aSKrzysztof Kozlowski        compatible:
117*af2eab1aSKrzysztof Kozlowski          enum:
118*af2eab1aSKrzysztof Kozlowski            - nxp,sja1105e
119*af2eab1aSKrzysztof Kozlowski            - nxp,sja1105p
120*af2eab1aSKrzysztof Kozlowski            - nxp,sja1105q
121*af2eab1aSKrzysztof Kozlowski            - nxp,sja1105r
122*af2eab1aSKrzysztof Kozlowski            - nxp,sja1105s
123*af2eab1aSKrzysztof Kozlowski            - nxp,sja1105t
124*af2eab1aSKrzysztof Kozlowski    then:
125*af2eab1aSKrzysztof Kozlowski      properties:
126*af2eab1aSKrzysztof Kozlowski        spi-cpol: false
127*af2eab1aSKrzysztof Kozlowski      required:
128*af2eab1aSKrzysztof Kozlowski        - spi-cpha
129*af2eab1aSKrzysztof Kozlowski    else:
130*af2eab1aSKrzysztof Kozlowski      properties:
131*af2eab1aSKrzysztof Kozlowski        spi-cpha: false
132*af2eab1aSKrzysztof Kozlowski      required:
133*af2eab1aSKrzysztof Kozlowski        - spi-cpol
134*af2eab1aSKrzysztof Kozlowski
13562568bdbSVladimir OlteanunevaluatedProperties: false
13662568bdbSVladimir Oltean
13762568bdbSVladimir Olteanexamples:
13862568bdbSVladimir Oltean  - |
13962568bdbSVladimir Oltean    spi {
14062568bdbSVladimir Oltean            #address-cells = <1>;
14162568bdbSVladimir Oltean            #size-cells = <0>;
14262568bdbSVladimir Oltean
14362568bdbSVladimir Oltean            ethernet-switch@1 {
14462568bdbSVladimir Oltean                    reg = <0x1>;
14562568bdbSVladimir Oltean                    compatible = "nxp,sja1105t";
146*af2eab1aSKrzysztof Kozlowski                    spi-cpha;
14762568bdbSVladimir Oltean
14862568bdbSVladimir Oltean                    ethernet-ports {
14962568bdbSVladimir Oltean                            #address-cells = <1>;
15062568bdbSVladimir Oltean                            #size-cells = <0>;
15162568bdbSVladimir Oltean
15262568bdbSVladimir Oltean                            port@0 {
15362568bdbSVladimir Oltean                                    phy-handle = <&rgmii_phy6>;
15462568bdbSVladimir Oltean                                    phy-mode = "rgmii-id";
155ac41ac81SVladimir Oltean                                    rx-internal-delay-ps = <0>;
156ac41ac81SVladimir Oltean                                    tx-internal-delay-ps = <0>;
15762568bdbSVladimir Oltean                                    reg = <0>;
15862568bdbSVladimir Oltean                            };
15962568bdbSVladimir Oltean
16062568bdbSVladimir Oltean                            port@1 {
16162568bdbSVladimir Oltean                                    phy-handle = <&rgmii_phy3>;
16262568bdbSVladimir Oltean                                    phy-mode = "rgmii-id";
163ac41ac81SVladimir Oltean                                    rx-internal-delay-ps = <0>;
164ac41ac81SVladimir Oltean                                    tx-internal-delay-ps = <0>;
16562568bdbSVladimir Oltean                                    reg = <1>;
16662568bdbSVladimir Oltean                            };
16762568bdbSVladimir Oltean
16862568bdbSVladimir Oltean                            port@2 {
16962568bdbSVladimir Oltean                                    phy-handle = <&rgmii_phy4>;
17062568bdbSVladimir Oltean                                    phy-mode = "rgmii-id";
171ac41ac81SVladimir Oltean                                    rx-internal-delay-ps = <0>;
172ac41ac81SVladimir Oltean                                    tx-internal-delay-ps = <0>;
17362568bdbSVladimir Oltean                                    reg = <2>;
17462568bdbSVladimir Oltean                            };
17562568bdbSVladimir Oltean
17662568bdbSVladimir Oltean                            port@3 {
1777a414b6eSVladimir Oltean                                    phy-handle = <&rgmii_phy4>;
17862568bdbSVladimir Oltean                                    phy-mode = "rgmii-id";
179ac41ac81SVladimir Oltean                                    rx-internal-delay-ps = <0>;
180ac41ac81SVladimir Oltean                                    tx-internal-delay-ps = <0>;
18162568bdbSVladimir Oltean                                    reg = <3>;
18262568bdbSVladimir Oltean                            };
18362568bdbSVladimir Oltean
18462568bdbSVladimir Oltean                            port@4 {
18562568bdbSVladimir Oltean                                    ethernet = <&enet2>;
18662568bdbSVladimir Oltean                                    phy-mode = "rgmii";
187ac41ac81SVladimir Oltean                                    rx-internal-delay-ps = <0>;
188ac41ac81SVladimir Oltean                                    tx-internal-delay-ps = <0>;
18962568bdbSVladimir Oltean                                    reg = <4>;
19062568bdbSVladimir Oltean
19162568bdbSVladimir Oltean                                    fixed-link {
19262568bdbSVladimir Oltean                                            speed = <1000>;
19362568bdbSVladimir Oltean                                            full-duplex;
19462568bdbSVladimir Oltean                                    };
19562568bdbSVladimir Oltean                            };
19662568bdbSVladimir Oltean                    };
19762568bdbSVladimir Oltean            };
19862568bdbSVladimir Oltean    };
199