18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
28c2ecf20Sopenharmony_ci# Copyright 2019 BayLibre, SAS
38c2ecf20Sopenharmony_ci%YAML 1.2
48c2ecf20Sopenharmony_ci---
58c2ecf20Sopenharmony_ci$id: "http://devicetree.org/schemas/net/amlogic,meson-dwmac.yaml#"
68c2ecf20Sopenharmony_ci$schema: "http://devicetree.org/meta-schemas/core.yaml#"
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_cititle: Amlogic Meson DWMAC Ethernet controller
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_cimaintainers:
118c2ecf20Sopenharmony_ci  - Neil Armstrong <narmstrong@baylibre.com>
128c2ecf20Sopenharmony_ci  - Martin Blumenstingl <martin.blumenstingl@googlemail.com>
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ci# We need a select here so we don't match all nodes with 'snps,dwmac'
158c2ecf20Sopenharmony_ciselect:
168c2ecf20Sopenharmony_ci  properties:
178c2ecf20Sopenharmony_ci    compatible:
188c2ecf20Sopenharmony_ci      contains:
198c2ecf20Sopenharmony_ci        enum:
208c2ecf20Sopenharmony_ci          - amlogic,meson6-dwmac
218c2ecf20Sopenharmony_ci          - amlogic,meson8b-dwmac
228c2ecf20Sopenharmony_ci          - amlogic,meson8m2-dwmac
238c2ecf20Sopenharmony_ci          - amlogic,meson-gxbb-dwmac
248c2ecf20Sopenharmony_ci          - amlogic,meson-axg-dwmac
258c2ecf20Sopenharmony_ci          - amlogic,meson-g12a-dwmac
268c2ecf20Sopenharmony_ci  required:
278c2ecf20Sopenharmony_ci    - compatible
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ciallOf:
308c2ecf20Sopenharmony_ci  - $ref: "snps,dwmac.yaml#"
318c2ecf20Sopenharmony_ci  - if:
328c2ecf20Sopenharmony_ci      properties:
338c2ecf20Sopenharmony_ci        compatible:
348c2ecf20Sopenharmony_ci          contains:
358c2ecf20Sopenharmony_ci            enum:
368c2ecf20Sopenharmony_ci              - amlogic,meson8b-dwmac
378c2ecf20Sopenharmony_ci              - amlogic,meson8m2-dwmac
388c2ecf20Sopenharmony_ci              - amlogic,meson-gxbb-dwmac
398c2ecf20Sopenharmony_ci              - amlogic,meson-axg-dwmac
408c2ecf20Sopenharmony_ci              - amlogic,meson-g12a-dwmac
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_ci    then:
438c2ecf20Sopenharmony_ci      properties:
448c2ecf20Sopenharmony_ci        clocks:
458c2ecf20Sopenharmony_ci          minItems: 3
468c2ecf20Sopenharmony_ci          maxItems: 4
478c2ecf20Sopenharmony_ci          items:
488c2ecf20Sopenharmony_ci            - description: GMAC main clock
498c2ecf20Sopenharmony_ci            - description: First parent clock of the internal mux
508c2ecf20Sopenharmony_ci            - description: Second parent clock of the internal mux
518c2ecf20Sopenharmony_ci            - description: The clock which drives the timing adjustment logic
528c2ecf20Sopenharmony_ci
538c2ecf20Sopenharmony_ci        clock-names:
548c2ecf20Sopenharmony_ci          minItems: 3
558c2ecf20Sopenharmony_ci          maxItems: 4
568c2ecf20Sopenharmony_ci          items:
578c2ecf20Sopenharmony_ci            - const: stmmaceth
588c2ecf20Sopenharmony_ci            - const: clkin0
598c2ecf20Sopenharmony_ci            - const: clkin1
608c2ecf20Sopenharmony_ci            - const: timing-adjustment
618c2ecf20Sopenharmony_ci
628c2ecf20Sopenharmony_ci        amlogic,tx-delay-ns:
638c2ecf20Sopenharmony_ci          $ref: /schemas/types.yaml#definitions/uint32
648c2ecf20Sopenharmony_ci          description:
658c2ecf20Sopenharmony_ci            The internal RGMII TX clock delay (provided by this driver) in
668c2ecf20Sopenharmony_ci            nanoseconds. Allowed values are 0ns, 2ns, 4ns, 6ns.
678c2ecf20Sopenharmony_ci            When phy-mode is set to "rgmii" then the TX delay should be
688c2ecf20Sopenharmony_ci            explicitly configured. When not configured a fallback of 2ns is
698c2ecf20Sopenharmony_ci            used. When the phy-mode is set to either "rgmii-id" or "rgmii-txid"
708c2ecf20Sopenharmony_ci            the TX clock delay is already provided by the PHY. In that case
718c2ecf20Sopenharmony_ci            this property should be set to 0ns (which disables the TX clock
728c2ecf20Sopenharmony_ci            delay in the MAC to prevent the clock from going off because both
738c2ecf20Sopenharmony_ci            PHY and MAC are adding a delay).
748c2ecf20Sopenharmony_ci            Any configuration is ignored when the phy-mode is set to "rmii".
758c2ecf20Sopenharmony_ci
768c2ecf20Sopenharmony_ci        amlogic,rx-delay-ns:
778c2ecf20Sopenharmony_ci          enum:
788c2ecf20Sopenharmony_ci            - 0
798c2ecf20Sopenharmony_ci            - 2
808c2ecf20Sopenharmony_ci          default: 0
818c2ecf20Sopenharmony_ci          description:
828c2ecf20Sopenharmony_ci            The internal RGMII RX clock delay (provided by this IP block) in
838c2ecf20Sopenharmony_ci            nanoseconds. When phy-mode is set to "rgmii" then the RX delay
848c2ecf20Sopenharmony_ci            should be explicitly configured. When the phy-mode is set to
858c2ecf20Sopenharmony_ci            either "rgmii-id" or "rgmii-rxid" the RX clock delay is already
868c2ecf20Sopenharmony_ci            provided by the PHY. Any configuration is ignored when the
878c2ecf20Sopenharmony_ci            phy-mode is set to "rmii".
888c2ecf20Sopenharmony_ci
898c2ecf20Sopenharmony_ciproperties:
908c2ecf20Sopenharmony_ci  compatible:
918c2ecf20Sopenharmony_ci    additionalItems: true
928c2ecf20Sopenharmony_ci    maxItems: 3
938c2ecf20Sopenharmony_ci    items:
948c2ecf20Sopenharmony_ci      - enum:
958c2ecf20Sopenharmony_ci          - amlogic,meson6-dwmac
968c2ecf20Sopenharmony_ci          - amlogic,meson8b-dwmac
978c2ecf20Sopenharmony_ci          - amlogic,meson8m2-dwmac
988c2ecf20Sopenharmony_ci          - amlogic,meson-gxbb-dwmac
998c2ecf20Sopenharmony_ci          - amlogic,meson-axg-dwmac
1008c2ecf20Sopenharmony_ci          - amlogic,meson-g12a-dwmac
1018c2ecf20Sopenharmony_ci    contains:
1028c2ecf20Sopenharmony_ci      enum:
1038c2ecf20Sopenharmony_ci        - snps,dwmac-3.70a
1048c2ecf20Sopenharmony_ci        - snps,dwmac
1058c2ecf20Sopenharmony_ci
1068c2ecf20Sopenharmony_ci  reg:
1078c2ecf20Sopenharmony_ci    items:
1088c2ecf20Sopenharmony_ci      - description:
1098c2ecf20Sopenharmony_ci          The first register range should be the one of the DWMAC controller
1108c2ecf20Sopenharmony_ci      - description:
1118c2ecf20Sopenharmony_ci          The second range is is for the Amlogic specific configuration
1128c2ecf20Sopenharmony_ci          (for example the PRG_ETHERNET register range on Meson8b and newer)
1138c2ecf20Sopenharmony_ci
1148c2ecf20Sopenharmony_cirequired:
1158c2ecf20Sopenharmony_ci  - compatible
1168c2ecf20Sopenharmony_ci  - reg
1178c2ecf20Sopenharmony_ci  - interrupts
1188c2ecf20Sopenharmony_ci  - interrupt-names
1198c2ecf20Sopenharmony_ci  - clocks
1208c2ecf20Sopenharmony_ci  - clock-names
1218c2ecf20Sopenharmony_ci  - phy-mode
1228c2ecf20Sopenharmony_ci
1238c2ecf20Sopenharmony_ciunevaluatedProperties: false
1248c2ecf20Sopenharmony_ci
1258c2ecf20Sopenharmony_ciexamples:
1268c2ecf20Sopenharmony_ci  - |
1278c2ecf20Sopenharmony_ci    ethmac: ethernet@c9410000 {
1288c2ecf20Sopenharmony_ci         compatible = "amlogic,meson-gxbb-dwmac", "snps,dwmac";
1298c2ecf20Sopenharmony_ci         reg = <0xc9410000 0x10000>, <0xc8834540 0x8>;
1308c2ecf20Sopenharmony_ci         interrupts = <8>;
1318c2ecf20Sopenharmony_ci         interrupt-names = "macirq";
1328c2ecf20Sopenharmony_ci         clocks = <&clk_eth>, <&clk_fclk_div2>, <&clk_mpll2>, <&clk_fclk_div2>;
1338c2ecf20Sopenharmony_ci         clock-names = "stmmaceth", "clkin0", "clkin1", "timing-adjustment";
1348c2ecf20Sopenharmony_ci         phy-mode = "rgmii";
1358c2ecf20Sopenharmony_ci    };
136