1d5a57e4eSNeil Armstrong# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2d5a57e4eSNeil Armstrong# Copyright 2019 BayLibre, SAS
3d5a57e4eSNeil Armstrong%YAML 1.2
4d5a57e4eSNeil Armstrong---
53079bfdbSRob Herring$id: http://devicetree.org/schemas/net/amlogic,meson-dwmac.yaml#
63079bfdbSRob Herring$schema: http://devicetree.org/meta-schemas/core.yaml#
7d5a57e4eSNeil Armstrong
8d5a57e4eSNeil Armstrongtitle: Amlogic Meson DWMAC Ethernet controller
9d5a57e4eSNeil Armstrong
10d5a57e4eSNeil Armstrongmaintainers:
11c6a43fb3SNeil Armstrong  - Neil Armstrong <neil.armstrong@linaro.org>
12d5a57e4eSNeil Armstrong  - Martin Blumenstingl <martin.blumenstingl@googlemail.com>
13d5a57e4eSNeil Armstrong
14d5a57e4eSNeil Armstrong# We need a select here so we don't match all nodes with 'snps,dwmac'
15d5a57e4eSNeil Armstrongselect:
16d5a57e4eSNeil Armstrong  properties:
17d5a57e4eSNeil Armstrong    compatible:
18d5a57e4eSNeil Armstrong      contains:
19d5a57e4eSNeil Armstrong        enum:
20d5a57e4eSNeil Armstrong          - amlogic,meson6-dwmac
21d5a57e4eSNeil Armstrong          - amlogic,meson8b-dwmac
22d5a57e4eSNeil Armstrong          - amlogic,meson8m2-dwmac
23d5a57e4eSNeil Armstrong          - amlogic,meson-gxbb-dwmac
24d5a57e4eSNeil Armstrong          - amlogic,meson-axg-dwmac
253efdb924SMartin Blumenstingl          - amlogic,meson-g12a-dwmac
26d5a57e4eSNeil Armstrong  required:
27d5a57e4eSNeil Armstrong    - compatible
28d5a57e4eSNeil Armstrong
29d5a57e4eSNeil ArmstrongallOf:
30*61ab5a06SKrzysztof Kozlowski  - $ref: snps,dwmac.yaml#
31d5a57e4eSNeil Armstrong  - if:
32d5a57e4eSNeil Armstrong      properties:
33d5a57e4eSNeil Armstrong        compatible:
34d5a57e4eSNeil Armstrong          contains:
35d5a57e4eSNeil Armstrong            enum:
36d5a57e4eSNeil Armstrong              - amlogic,meson8b-dwmac
37d5a57e4eSNeil Armstrong              - amlogic,meson8m2-dwmac
38d5a57e4eSNeil Armstrong              - amlogic,meson-gxbb-dwmac
39d5a57e4eSNeil Armstrong              - amlogic,meson-axg-dwmac
403efdb924SMartin Blumenstingl              - amlogic,meson-g12a-dwmac
41d5a57e4eSNeil Armstrong
42d5a57e4eSNeil Armstrong    then:
43d5a57e4eSNeil Armstrong      properties:
44d5a57e4eSNeil Armstrong        clocks:
45ee0b8e6dSMartin Blumenstingl          minItems: 3
46d5a57e4eSNeil Armstrong          items:
47d5a57e4eSNeil Armstrong            - description: GMAC main clock
48d5a57e4eSNeil Armstrong            - description: First parent clock of the internal mux
49d5a57e4eSNeil Armstrong            - description: Second parent clock of the internal mux
50ee0b8e6dSMartin Blumenstingl            - description: The clock which drives the timing adjustment logic
51d5a57e4eSNeil Armstrong
52d5a57e4eSNeil Armstrong        clock-names:
53d5a57e4eSNeil Armstrong          minItems: 3
54d5a57e4eSNeil Armstrong          items:
55d5a57e4eSNeil Armstrong            - const: stmmaceth
56d5a57e4eSNeil Armstrong            - const: clkin0
57d5a57e4eSNeil Armstrong            - const: clkin1
58ee0b8e6dSMartin Blumenstingl            - const: timing-adjustment
59d5a57e4eSNeil Armstrong
60d5a57e4eSNeil Armstrong        amlogic,tx-delay-ns:
61d69c6dddSRob Herring          $ref: /schemas/types.yaml#/definitions/uint32
62d5a57e4eSNeil Armstrong          description:
63d5a57e4eSNeil Armstrong            The internal RGMII TX clock delay (provided by this driver) in
64d5a57e4eSNeil Armstrong            nanoseconds. Allowed values are 0ns, 2ns, 4ns, 6ns.
65d5a57e4eSNeil Armstrong            When phy-mode is set to "rgmii" then the TX delay should be
66d5a57e4eSNeil Armstrong            explicitly configured. When not configured a fallback of 2ns is
67d5a57e4eSNeil Armstrong            used. When the phy-mode is set to either "rgmii-id" or "rgmii-txid"
68d5a57e4eSNeil Armstrong            the TX clock delay is already provided by the PHY. In that case
69d5a57e4eSNeil Armstrong            this property should be set to 0ns (which disables the TX clock
70d5a57e4eSNeil Armstrong            delay in the MAC to prevent the clock from going off because both
71d5a57e4eSNeil Armstrong            PHY and MAC are adding a delay).
72d5a57e4eSNeil Armstrong            Any configuration is ignored when the phy-mode is set to "rmii".
73d5a57e4eSNeil Armstrong
747af4c845SMartin Blumenstingl        amlogic,rx-delay-ns:
756b5903f5SMartin Blumenstingl          deprecated: true
767af4c845SMartin Blumenstingl          enum:
777af4c845SMartin Blumenstingl            - 0
787af4c845SMartin Blumenstingl            - 2
797af4c845SMartin Blumenstingl          default: 0
807af4c845SMartin Blumenstingl          description:
816b5903f5SMartin Blumenstingl            The internal RGMII RX clock delay in nanoseconds. Deprecated, use
826b5903f5SMartin Blumenstingl            rx-internal-delay-ps instead.
836b5903f5SMartin Blumenstingl
846b5903f5SMartin Blumenstingl        rx-internal-delay-ps:
856b5903f5SMartin Blumenstingl          default: 0
866b5903f5SMartin Blumenstingl
876b5903f5SMartin Blumenstingl  - if:
886b5903f5SMartin Blumenstingl      properties:
896b5903f5SMartin Blumenstingl        compatible:
906b5903f5SMartin Blumenstingl          contains:
916b5903f5SMartin Blumenstingl            enum:
926b5903f5SMartin Blumenstingl              - amlogic,meson8b-dwmac
936b5903f5SMartin Blumenstingl              - amlogic,meson8m2-dwmac
946b5903f5SMartin Blumenstingl              - amlogic,meson-gxbb-dwmac
956b5903f5SMartin Blumenstingl              - amlogic,meson-axg-dwmac
966b5903f5SMartin Blumenstingl    then:
976b5903f5SMartin Blumenstingl      properties:
986b5903f5SMartin Blumenstingl        rx-internal-delay-ps:
996b5903f5SMartin Blumenstingl          enum:
1006b5903f5SMartin Blumenstingl            - 0
1016b5903f5SMartin Blumenstingl            - 2000
1026b5903f5SMartin Blumenstingl
1036b5903f5SMartin Blumenstingl  - if:
1046b5903f5SMartin Blumenstingl      properties:
1056b5903f5SMartin Blumenstingl        compatible:
1066b5903f5SMartin Blumenstingl          contains:
1076b5903f5SMartin Blumenstingl            enum:
1086b5903f5SMartin Blumenstingl              - amlogic,meson-g12a-dwmac
1096b5903f5SMartin Blumenstingl    then:
1106b5903f5SMartin Blumenstingl      properties:
1116b5903f5SMartin Blumenstingl        rx-internal-delay-ps:
1126b5903f5SMartin Blumenstingl          enum:
1136b5903f5SMartin Blumenstingl            - 0
1146b5903f5SMartin Blumenstingl            - 200
1156b5903f5SMartin Blumenstingl            - 400
1166b5903f5SMartin Blumenstingl            - 600
1176b5903f5SMartin Blumenstingl            - 800
1186b5903f5SMartin Blumenstingl            - 1000
1196b5903f5SMartin Blumenstingl            - 1200
1206b5903f5SMartin Blumenstingl            - 1400
1216b5903f5SMartin Blumenstingl            - 1600
1226b5903f5SMartin Blumenstingl            - 1800
1236b5903f5SMartin Blumenstingl            - 2000
1246b5903f5SMartin Blumenstingl            - 2200
1256b5903f5SMartin Blumenstingl            - 2400
1266b5903f5SMartin Blumenstingl            - 2600
1276b5903f5SMartin Blumenstingl            - 2800
1286b5903f5SMartin Blumenstingl            - 3000
1297af4c845SMartin Blumenstingl
130d5a57e4eSNeil Armstrongproperties:
131d5a57e4eSNeil Armstrong  compatible:
132d5a57e4eSNeil Armstrong    additionalItems: true
133d5a57e4eSNeil Armstrong    maxItems: 3
134d5a57e4eSNeil Armstrong    items:
135d5a57e4eSNeil Armstrong      - enum:
136d5a57e4eSNeil Armstrong          - amlogic,meson6-dwmac
137d5a57e4eSNeil Armstrong          - amlogic,meson8b-dwmac
138d5a57e4eSNeil Armstrong          - amlogic,meson8m2-dwmac
139d5a57e4eSNeil Armstrong          - amlogic,meson-gxbb-dwmac
140d5a57e4eSNeil Armstrong          - amlogic,meson-axg-dwmac
1413efdb924SMartin Blumenstingl          - amlogic,meson-g12a-dwmac
142d5a57e4eSNeil Armstrong    contains:
143d5a57e4eSNeil Armstrong      enum:
144d5a57e4eSNeil Armstrong        - snps,dwmac-3.70a
145d5a57e4eSNeil Armstrong        - snps,dwmac
146d5a57e4eSNeil Armstrong
147d5a57e4eSNeil Armstrong  reg:
148d5a57e4eSNeil Armstrong    items:
149d5a57e4eSNeil Armstrong      - description:
150d5a57e4eSNeil Armstrong          The first register range should be the one of the DWMAC controller
151d5a57e4eSNeil Armstrong      - description:
152d5a57e4eSNeil Armstrong          The second range is is for the Amlogic specific configuration
153d5a57e4eSNeil Armstrong          (for example the PRG_ETHERNET register range on Meson8b and newer)
154d5a57e4eSNeil Armstrong
155d5a57e4eSNeil Armstrongrequired:
156d5a57e4eSNeil Armstrong  - compatible
157d5a57e4eSNeil Armstrong  - reg
158d5a57e4eSNeil Armstrong  - interrupts
159d5a57e4eSNeil Armstrong  - interrupt-names
160d5a57e4eSNeil Armstrong  - clocks
161d5a57e4eSNeil Armstrong  - clock-names
162d5a57e4eSNeil Armstrong  - phy-mode
163d5a57e4eSNeil Armstrong
1646fdc6e23SRob HerringunevaluatedProperties: false
1656fdc6e23SRob Herring
166d5a57e4eSNeil Armstrongexamples:
167d5a57e4eSNeil Armstrong  - |
168d5a57e4eSNeil Armstrong    ethmac: ethernet@c9410000 {
169d5a57e4eSNeil Armstrong         compatible = "amlogic,meson-gxbb-dwmac", "snps,dwmac";
170d5a57e4eSNeil Armstrong         reg = <0xc9410000 0x10000>, <0xc8834540 0x8>;
171d5a57e4eSNeil Armstrong         interrupts = <8>;
172d5a57e4eSNeil Armstrong         interrupt-names = "macirq";
173ee0b8e6dSMartin Blumenstingl         clocks = <&clk_eth>, <&clk_fclk_div2>, <&clk_mpll2>, <&clk_fclk_div2>;
174ee0b8e6dSMartin Blumenstingl         clock-names = "stmmaceth", "clkin0", "clkin1", "timing-adjustment";
175d5a57e4eSNeil Armstrong         phy-mode = "rgmii";
176d5a57e4eSNeil Armstrong    };
177