xref: /linux/Documentation/devicetree/bindings/net/micrel.yaml (revision 4dd29c654b0abc6cf20ab4832185ca5f2723cde5)
1*4dd29c65SStefan Eichenberger# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*4dd29c65SStefan Eichenberger%YAML 1.2
3*4dd29c65SStefan Eichenberger---
4*4dd29c65SStefan Eichenberger$id: http://devicetree.org/schemas/net/micrel.yaml#
5*4dd29c65SStefan Eichenberger$schema: http://devicetree.org/meta-schemas/core.yaml#
6*4dd29c65SStefan Eichenberger
7*4dd29c65SStefan Eichenbergertitle: Micrel KSZ series PHYs and switches
8*4dd29c65SStefan Eichenberger
9*4dd29c65SStefan Eichenbergermaintainers:
10*4dd29c65SStefan Eichenberger  - Andrew Lunn <andrew@lunn.ch>
11*4dd29c65SStefan Eichenberger  - Stefan Eichenberger <eichest@gmail.com>
12*4dd29c65SStefan Eichenberger
13*4dd29c65SStefan Eichenbergerdescription:
14*4dd29c65SStefan Eichenberger  The Micrel KSZ series contains different network phys and switches.
15*4dd29c65SStefan Eichenberger
16*4dd29c65SStefan Eichenbergerproperties:
17*4dd29c65SStefan Eichenberger  compatible:
18*4dd29c65SStefan Eichenberger    enum:
19*4dd29c65SStefan Eichenberger      - ethernet-phy-id000e.7237  # KSZ8873MLL
20*4dd29c65SStefan Eichenberger      - ethernet-phy-id0022.1430  # KSZ886X
21*4dd29c65SStefan Eichenberger      - ethernet-phy-id0022.1435  # KSZ8863
22*4dd29c65SStefan Eichenberger      - ethernet-phy-id0022.1510  # KSZ8041
23*4dd29c65SStefan Eichenberger      - ethernet-phy-id0022.1537  # KSZ8041RNLI
24*4dd29c65SStefan Eichenberger      - ethernet-phy-id0022.1550  # KSZ8051
25*4dd29c65SStefan Eichenberger      - ethernet-phy-id0022.1555  # KSZ8021
26*4dd29c65SStefan Eichenberger      - ethernet-phy-id0022.1556  # KSZ8031
27*4dd29c65SStefan Eichenberger      - ethernet-phy-id0022.1560  # KSZ8081, KSZ8091
28*4dd29c65SStefan Eichenberger      - ethernet-phy-id0022.1570  # KSZ8061
29*4dd29c65SStefan Eichenberger      - ethernet-phy-id0022.161a  # KSZ8001
30*4dd29c65SStefan Eichenberger      - ethernet-phy-id0022.1720  # KS8737
31*4dd29c65SStefan Eichenberger
32*4dd29c65SStefan Eichenberger  micrel,fiber-mode:
33*4dd29c65SStefan Eichenberger    type: boolean
34*4dd29c65SStefan Eichenberger    description: |
35*4dd29c65SStefan Eichenberger      If present the PHY is configured to operate in fiber mode.
36*4dd29c65SStefan Eichenberger
37*4dd29c65SStefan Eichenberger      The KSZ8041FTL variant supports fiber mode, enabled by the FXEN
38*4dd29c65SStefan Eichenberger      boot strapping pin. It can't be determined from the PHY registers
39*4dd29c65SStefan Eichenberger      whether the PHY is in fiber mode, so this boolean device tree
40*4dd29c65SStefan Eichenberger      property can be used to describe it.
41*4dd29c65SStefan Eichenberger
42*4dd29c65SStefan Eichenberger      In fiber mode, auto-negotiation is disabled and the PHY can only
43*4dd29c65SStefan Eichenberger      work in 100base-fx (full and half duplex) modes.
44*4dd29c65SStefan Eichenberger
45*4dd29c65SStefan Eichenberger  micrel,led-mode:
46*4dd29c65SStefan Eichenberger    $ref: /schemas/types.yaml#/definitions/uint32
47*4dd29c65SStefan Eichenberger    description: |
48*4dd29c65SStefan Eichenberger      LED mode value to set for PHYs with configurable LEDs.
49*4dd29c65SStefan Eichenberger
50*4dd29c65SStefan Eichenberger      Configure the LED mode with single value. The list of PHYs and the
51*4dd29c65SStefan Eichenberger      bits that are currently supported:
52*4dd29c65SStefan Eichenberger
53*4dd29c65SStefan Eichenberger      KSZ8001: register 0x1e, bits 15..14
54*4dd29c65SStefan Eichenberger      KSZ8041: register 0x1e, bits 15..14
55*4dd29c65SStefan Eichenberger      KSZ8021: register 0x1f, bits 5..4
56*4dd29c65SStefan Eichenberger      KSZ8031: register 0x1f, bits 5..4
57*4dd29c65SStefan Eichenberger      KSZ8051: register 0x1f, bits 5..4
58*4dd29c65SStefan Eichenberger      KSZ8081: register 0x1f, bits 5..4
59*4dd29c65SStefan Eichenberger      KSZ8091: register 0x1f, bits 5..4
60*4dd29c65SStefan Eichenberger
61*4dd29c65SStefan Eichenberger      See the respective PHY datasheet for the mode values.
62*4dd29c65SStefan Eichenberger    minimum: 0
63*4dd29c65SStefan Eichenberger    maximum: 3
64*4dd29c65SStefan Eichenberger
65*4dd29c65SStefan EichenbergerallOf:
66*4dd29c65SStefan Eichenberger  - $ref: ethernet-phy.yaml#
67*4dd29c65SStefan Eichenberger  - if:
68*4dd29c65SStefan Eichenberger      not:
69*4dd29c65SStefan Eichenberger        properties:
70*4dd29c65SStefan Eichenberger          compatible:
71*4dd29c65SStefan Eichenberger            contains:
72*4dd29c65SStefan Eichenberger              const: ethernet-phy-id0022.1510
73*4dd29c65SStefan Eichenberger    then:
74*4dd29c65SStefan Eichenberger      properties:
75*4dd29c65SStefan Eichenberger        micrel,fiber-mode: false
76*4dd29c65SStefan Eichenberger  - if:
77*4dd29c65SStefan Eichenberger      not:
78*4dd29c65SStefan Eichenberger        properties:
79*4dd29c65SStefan Eichenberger          compatible:
80*4dd29c65SStefan Eichenberger            contains:
81*4dd29c65SStefan Eichenberger              enum:
82*4dd29c65SStefan Eichenberger                - ethernet-phy-id0022.1510
83*4dd29c65SStefan Eichenberger                - ethernet-phy-id0022.1555
84*4dd29c65SStefan Eichenberger                - ethernet-phy-id0022.1556
85*4dd29c65SStefan Eichenberger                - ethernet-phy-id0022.1550
86*4dd29c65SStefan Eichenberger                - ethernet-phy-id0022.1560
87*4dd29c65SStefan Eichenberger                - ethernet-phy-id0022.161a
88*4dd29c65SStefan Eichenberger    then:
89*4dd29c65SStefan Eichenberger      properties:
90*4dd29c65SStefan Eichenberger        micrel,led-mode: false
91*4dd29c65SStefan Eichenberger  - if:
92*4dd29c65SStefan Eichenberger      properties:
93*4dd29c65SStefan Eichenberger        compatible:
94*4dd29c65SStefan Eichenberger          contains:
95*4dd29c65SStefan Eichenberger            enum:
96*4dd29c65SStefan Eichenberger              - ethernet-phy-id0022.1555
97*4dd29c65SStefan Eichenberger              - ethernet-phy-id0022.1556
98*4dd29c65SStefan Eichenberger              - ethernet-phy-id0022.1560
99*4dd29c65SStefan Eichenberger    then:
100*4dd29c65SStefan Eichenberger      properties:
101*4dd29c65SStefan Eichenberger        clock-names:
102*4dd29c65SStefan Eichenberger          const: rmii-ref
103*4dd29c65SStefan Eichenberger          description:
104*4dd29c65SStefan Eichenberger            The RMII reference input clock. Used to determine the XI input
105*4dd29c65SStefan Eichenberger            clock.
106*4dd29c65SStefan Eichenberger        micrel,rmii-reference-clock-select-25-mhz:
107*4dd29c65SStefan Eichenberger          type: boolean
108*4dd29c65SStefan Eichenberger          description: |
109*4dd29c65SStefan Eichenberger            RMII Reference Clock Select bit selects 25 MHz mode
110*4dd29c65SStefan Eichenberger
111*4dd29c65SStefan Eichenberger            Setting the RMII Reference Clock Select bit enables 25 MHz rather
112*4dd29c65SStefan Eichenberger            than 50 MHz clock mode.
113*4dd29c65SStefan Eichenberger
114*4dd29c65SStefan EichenbergerdependentRequired:
115*4dd29c65SStefan Eichenberger  micrel,rmii-reference-clock-select-25-mhz: [ clock-names ]
116*4dd29c65SStefan Eichenberger
117*4dd29c65SStefan EichenbergerunevaluatedProperties: false
118*4dd29c65SStefan Eichenberger
119*4dd29c65SStefan Eichenbergerexamples:
120*4dd29c65SStefan Eichenberger  - |
121*4dd29c65SStefan Eichenberger    mdio {
122*4dd29c65SStefan Eichenberger        #address-cells = <1>;
123*4dd29c65SStefan Eichenberger        #size-cells = <0>;
124*4dd29c65SStefan Eichenberger
125*4dd29c65SStefan Eichenberger        ethernet-phy@5 {
126*4dd29c65SStefan Eichenberger            compatible = "ethernet-phy-id0022.1510";
127*4dd29c65SStefan Eichenberger            reg = <5>;
128*4dd29c65SStefan Eichenberger            micrel,led-mode = <2>;
129*4dd29c65SStefan Eichenberger            micrel,fiber-mode;
130*4dd29c65SStefan Eichenberger        };
131*4dd29c65SStefan Eichenberger    };
132