File Index
Files and directories
Sign in
FILE

marvell,pp2.yaml

File preview with syntax highlighting.

linux-6.19.14/Documentation/devicetree/bindings/net/marvell,pp2.yaml YAML
  1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
  2%YAML 1.2
  3---
  4$id: http://devicetree.org/schemas/net/marvell,pp2.yaml#
  5$schema: http://devicetree.org/meta-schemas/core.yaml#
  6
  7title: Marvell CN913X / Marvell Armada 375, 7K, 8K Ethernet Controller
  8
  9maintainers:
 10  - Marcin Wojtas <mw@semihalf.com>
 11  - Russell King <linux@armlinux.org>
 12
 13description: |
 14  Marvell Armada 375 Ethernet Controller (PPv2.1)
 15  Marvell Armada 7K/8K Ethernet Controller (PPv2.2)
 16  Marvell CN913X Ethernet Controller (PPv2.3)
 17
 18properties:
 19  compatible:
 20    enum:
 21      - marvell,armada-375-pp2
 22      - marvell,armada-7k-pp22
 23
 24  reg:
 25    minItems: 3
 26    maxItems: 4
 27
 28  "#address-cells":
 29    const: 1
 30
 31  "#size-cells":
 32    const: 0
 33
 34  clocks:
 35    minItems: 2
 36    items:
 37      - description: main controller clock
 38      - description: GOP clock
 39      - description: MG clock
 40      - description: MG Core clock
 41      - description: AXI clock
 42
 43  clock-names:
 44    minItems: 2
 45    items:
 46      - const: pp_clk
 47      - const: gop_clk
 48      - const: mg_clk
 49      - const: mg_core_clk
 50      - const: axi_clk
 51
 52  dma-coherent: true
 53
 54  marvell,system-controller:
 55    $ref: /schemas/types.yaml#/definitions/phandle
 56    description: a phandle to the system controller.
 57
 58patternProperties:
 59  '^(ethernet-)?port@[0-2]$':
 60    type: object
 61    description: subnode for each ethernet port.
 62    $ref: ethernet-controller.yaml#
 63    unevaluatedProperties: false
 64
 65    properties:
 66      reg:
 67        description: ID of the port from the MAC point of view.
 68        maximum: 2
 69
 70      interrupts:
 71        minItems: 1
 72        maxItems: 10
 73        description: interrupt(s) for the port
 74
 75      interrupt-names:
 76        minItems: 1
 77        items:
 78          - const: hif0
 79          - const: hif1
 80          - const: hif2
 81          - const: hif3
 82          - const: hif4
 83          - const: hif5
 84          - const: hif6
 85          - const: hif7
 86          - const: hif8
 87          - const: link
 88
 89        description: >
 90          if more than a single interrupt for is given, must be the
 91          name associated to the interrupts listed. Valid names are:
 92          "hifX", with X in [0..8], and "link". The names "tx-cpu0",
 93          "tx-cpu1", "tx-cpu2", "tx-cpu3" and "rx-shared" are supported
 94          for backward compatibility but shouldn't be used for new
 95          additions.
 96
 97      phys:
 98        minItems: 1
 99        maxItems: 2
100        description: >
101          Generic PHY, providing SerDes connectivity. For most modes,
102          one lane is sufficient, but some (e.g. RXAUI) may require two.
103
104      phy-mode:
105        enum:
106          - gmii
107          - sgmii
108          - rgmii-id
109          - 1000base-x
110          - 2500base-x
111          - 5gbase-r
112          - rxaui
113          - 10gbase-r
114
115      port-id:
116        $ref: /schemas/types.yaml#/definitions/uint32
117        deprecated: true
118        description: >
119          ID of the port from the MAC point of view.
120          Legacy binding for backward compatibility.
121
122      marvell,loopback:
123        $ref: /schemas/types.yaml#/definitions/flag
124        description: port is loopback mode.
125
126      gop-port-id:
127        $ref: /schemas/types.yaml#/definitions/uint32
128        description: >
129          only for marvell,armada-7k-pp22, ID of the port from the
130          GOP (Group Of Ports) point of view. This ID is used to index the
131          per-port registers in the second register area.
132
133    required:
134      - reg
135      - interrupts
136      - phy-mode
137      - port-id
138
139required:
140  - compatible
141  - reg
142  - clocks
143  - clock-names
144
145allOf:
146  - if:
147      properties:
148        compatible:
149          const: marvell,armada-7k-pp22
150    then:
151      properties:
152        reg:
153          items:
154            - description: Packet Processor registers
155            - description: Networking interfaces registers
156            - description: CM3 address space used for TX Flow Control
157
158        clocks:
159          minItems: 5
160
161        clock-names:
162          minItems: 5
163
164      patternProperties:
165        '^(ethernet-)?port@[0-2]$':
166          required:
167            - gop-port-id
168
169      required:
170        - marvell,system-controller
171    else:
172      properties:
173        reg:
174          items:
175            - description: Packet Processor registers
176            - description: LMS registers
177            - description: Register area per eth0
178            - description: Register area per eth1
179
180        clocks:
181          maxItems: 2
182
183        clock-names:
184          maxItems: 2
185
186      patternProperties:
187        '^(ethernet-)?port@[0-1]$':
188          properties:
189            reg:
190              maximum: 1
191
192            gop-port-id: false
193
194additionalProperties: false
195
196examples:
197  - |
198    // For Armada 375 variant
199    #include <dt-bindings/interrupt-controller/mvebu-icu.h>
200    #include <dt-bindings/interrupt-controller/arm-gic.h>
201
202    ethernet@f0000 {
203        #address-cells = <1>;
204        #size-cells = <0>;
205        compatible = "marvell,armada-375-pp2";
206        reg = <0xf0000 0xa000>,
207              <0xc0000 0x3060>,
208              <0xc4000 0x100>,
209              <0xc5000 0x100>;
210        clocks = <&gateclk 3>, <&gateclk 19>;
211        clock-names = "pp_clk", "gop_clk";
212
213        ethernet-port@0 {
214            interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
215            reg = <0>;
216            port-id = <0>; /* For backward compatibility. */
217            phy = <&phy0>;
218            phy-mode = "rgmii-id";
219        };
220
221        ethernet-port@1 {
222            interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
223            reg = <1>;
224            port-id = <1>; /* For backward compatibility. */
225            phy = <&phy3>;
226            phy-mode = "gmii";
227        };
228    };
229
230  - |
231    // For Armada 7k/8k and Cn913x variants
232    #include <dt-bindings/interrupt-controller/mvebu-icu.h>
233    #include <dt-bindings/interrupt-controller/arm-gic.h>
234
235    ethernet@0 {
236        #address-cells = <1>;
237        #size-cells = <0>;
238        compatible = "marvell,armada-7k-pp22";
239        reg = <0x0 0x100000>, <0x129000 0xb000>, <0x220000 0x800>;
240        clocks = <&cp0_clk 1 3>, <&cp0_clk 1 9>,
241                 <&cp0_clk 1 5>, <&cp0_clk 1 6>, <&cp0_clk 1 18>;
242        clock-names = "pp_clk", "gop_clk", "mg_clk", "mg_core_clk", "axi_clk";
243        marvell,system-controller = <&cp0_syscon0>;
244
245        ethernet-port@0 {
246            interrupts = <ICU_GRP_NSR 39 IRQ_TYPE_LEVEL_HIGH>,
247                         <ICU_GRP_NSR 43 IRQ_TYPE_LEVEL_HIGH>,
248                         <ICU_GRP_NSR 47 IRQ_TYPE_LEVEL_HIGH>,
249                         <ICU_GRP_NSR 51 IRQ_TYPE_LEVEL_HIGH>,
250                         <ICU_GRP_NSR 55 IRQ_TYPE_LEVEL_HIGH>,
251                         <ICU_GRP_NSR 59 IRQ_TYPE_LEVEL_HIGH>,
252                         <ICU_GRP_NSR 63 IRQ_TYPE_LEVEL_HIGH>,
253                         <ICU_GRP_NSR 67 IRQ_TYPE_LEVEL_HIGH>,
254                         <ICU_GRP_NSR 71 IRQ_TYPE_LEVEL_HIGH>,
255                         <ICU_GRP_NSR 129 IRQ_TYPE_LEVEL_HIGH>;
256            interrupt-names = "hif0", "hif1", "hif2", "hif3", "hif4",
257                              "hif5", "hif6", "hif7", "hif8", "link";
258            phy-mode = "10gbase-r";
259            phys = <&cp0_comphy4 0>;
260            reg = <0>;
261            port-id = <0>; /* For backward compatibility. */
262            gop-port-id = <0>;
263        };
264
265        ethernet-port@1 {
266            interrupts = <ICU_GRP_NSR 40 IRQ_TYPE_LEVEL_HIGH>,
267                         <ICU_GRP_NSR 44 IRQ_TYPE_LEVEL_HIGH>,
268                         <ICU_GRP_NSR 48 IRQ_TYPE_LEVEL_HIGH>,
269                         <ICU_GRP_NSR 52 IRQ_TYPE_LEVEL_HIGH>,
270                         <ICU_GRP_NSR 56 IRQ_TYPE_LEVEL_HIGH>,
271                         <ICU_GRP_NSR 60 IRQ_TYPE_LEVEL_HIGH>,
272                         <ICU_GRP_NSR 64 IRQ_TYPE_LEVEL_HIGH>,
273                         <ICU_GRP_NSR 68 IRQ_TYPE_LEVEL_HIGH>,
274                         <ICU_GRP_NSR 72 IRQ_TYPE_LEVEL_HIGH>,
275                         <ICU_GRP_NSR 128 IRQ_TYPE_LEVEL_HIGH>;
276            interrupt-names = "hif0", "hif1", "hif2", "hif3", "hif4",
277                              "hif5", "hif6", "hif7", "hif8", "link";
278            phy-mode = "rgmii-id";
279            reg = <1>;
280            port-id = <1>; /* For backward compatibility. */
281            gop-port-id = <2>;
282        };
283
284        ethernet-port@2 {
285            interrupts = <ICU_GRP_NSR 41 IRQ_TYPE_LEVEL_HIGH>,
286                         <ICU_GRP_NSR 45 IRQ_TYPE_LEVEL_HIGH>,
287                         <ICU_GRP_NSR 49 IRQ_TYPE_LEVEL_HIGH>,
288                         <ICU_GRP_NSR 53 IRQ_TYPE_LEVEL_HIGH>,
289                         <ICU_GRP_NSR 57 IRQ_TYPE_LEVEL_HIGH>,
290                         <ICU_GRP_NSR 61 IRQ_TYPE_LEVEL_HIGH>,
291                         <ICU_GRP_NSR 65 IRQ_TYPE_LEVEL_HIGH>,
292                         <ICU_GRP_NSR 69 IRQ_TYPE_LEVEL_HIGH>,
293                         <ICU_GRP_NSR 73 IRQ_TYPE_LEVEL_HIGH>,
294                         <ICU_GRP_NSR 127 IRQ_TYPE_LEVEL_HIGH>;
295            interrupt-names = "hif0", "hif1", "hif2", "hif3", "hif4",
296                              "hif5", "hif6", "hif7", "hif8", "link";
297            phy-mode = "2500base-x";
298            managed = "in-band-status";
299            phys = <&cp0_comphy5 2>;
300            sfp = <&sfp_eth3>;
301            reg = <2>;
302            port-id = <2>; /* For backward compatibility. */
303            gop-port-id = <3>;
304        };
305    };
~/ Read-only file preview.