Documentation / devicetree / bindings / net / qca,ar803x.yaml


Based on kernel version 6.17. Page generated on 2025-10-03 10:04 EST.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177
# SPDX-License-Identifier: GPL-2.0+
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/qca,ar803x.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm Atheros AR803x PHY

maintainers:
  - Andrew Lunn <andrew@lunn.ch>
  - Florian Fainelli <f.fainelli@gmail.com>
  - Heiner Kallweit <hkallweit1@gmail.com>

description: |
  Bindings for Qualcomm Atheros AR803x PHYs

allOf:
  - $ref: ethernet-phy.yaml#
  - if:
      properties:
        compatible:
          contains:
            enum:
              - ethernet-phy-id004d.d0c0

    then:
      properties:
        reg:
          const: 7  # This PHY is always at MDIO address 7 in the IPQ5018 SoC

        resets:
          items:
            - description:
                GE PHY MISC reset which triggers a reset across MDC, DSP, RX, and TX lines.

        qcom,dac-preset-short-cable:
          description:
            Set if this phy is connected to another phy to adjust the values for
            MDAC and EDAC to adjust amplitude, bias current settings, and error
            detection and correction algorithm to accommodate for short cable length.
            If not set, DAC values are not modified and it is assumed the MDI output pins
            of this PHY are directly connected to an RJ45 connector.
          type: boolean

properties:
  compatible:
    enum:
      - ethernet-phy-id004d.d0c0

  qca,clk-out-frequency:
    description: Clock output frequency in Hertz.
    $ref: /schemas/types.yaml#/definitions/uint32
    enum: [25000000, 50000000, 62500000, 125000000]

  qca,clk-out-strength:
    description: Clock output driver strength.
    $ref: /schemas/types.yaml#/definitions/uint32
    enum: [0, 1, 2]

  qca,disable-smarteee:
    description: Disable Atheros SmartEEE feature.
    type: boolean

  qca,keep-pll-enabled:
    description: |
      If set, keep the PLL enabled even if there is no link. Useful if you
      want to use the clock output without an ethernet link.
 
      Only supported on the AR8031.
    type: boolean

  qca,disable-hibernation-mode:
    description: |
      Disable Atheros AR803X PHYs hibernation mode. If present, indicates
      that the hardware of PHY will not enter power saving mode when the
      cable is disconnected. And the RX_CLK always keeps outputting a
      valid clock.
    type: boolean

  qca,smarteee-tw-us-100m:
    description: EEE Tw parameter for 100M links.
    $ref: /schemas/types.yaml#/definitions/uint32
    minimum: 1
    maximum: 255

  qca,smarteee-tw-us-1g:
    description: EEE Tw parameter for gigabit links.
    $ref: /schemas/types.yaml#/definitions/uint32
    minimum: 1
    maximum: 255

  vddio-supply:
    description: |
      RGMII I/O voltage regulator (see regulator/regulator.yaml).
 
      The PHY supports RGMII I/O voltages of 1.5V, 1.8V and 2.5V. You can
      either connect this to the vddio-regulator (1.5V / 1.8V) or the
      vddh-regulator (2.5V).
 
      Only supported on the AR8031.

  vddio-regulator:
    type: object
    description:
      Initial data for the VDDIO regulator. Set this to 1.5V or 1.8V.
    $ref: /schemas/regulator/regulator.yaml
    unevaluatedProperties: false

  vddh-regulator:
    type: object
    description:
      Dummy subnode to model the external connection of the PHY VDDH
      regulator to VDDIO.
    $ref: /schemas/regulator/regulator.yaml
    unevaluatedProperties: false

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/net/qca-ar803x.h>
 
    ethernet {
        #address-cells = <1>;
        #size-cells = <0>;
 
        phy-mode = "rgmii-id";
 
        ethernet-phy@0 {
            reg = <0>;
 
            qca,clk-out-frequency = <125000000>;
            qca,clk-out-strength = <AR803X_STRENGTH_FULL>;
 
            vddio-supply = <&vddio>;
 
            vddio: vddio-regulator {
                regulator-min-microvolt = <1800000>;
                regulator-max-microvolt = <1800000>;
            };
        };
    };
  - |
    #include <dt-bindings/net/qca-ar803x.h>
 
    ethernet {
        #address-cells = <1>;
        #size-cells = <0>;
 
        phy-mode = "rgmii-id";
 
        ethernet-phy@0 {
            reg = <0>;
 
            qca,clk-out-frequency = <50000000>;
            qca,keep-pll-enabled;
 
            vddio-supply = <&vddh>;
 
            vddh: vddh-regulator {
            };
        };
    };
  - |
    #include <dt-bindings/reset/qcom,gcc-ipq5018.h>
 
    mdio {
        #address-cells = <1>;
        #size-cells = <0>;
 
        ge_phy: ethernet-phy@7 {
            compatible = "ethernet-phy-id004d.d0c0";
            reg = <7>;
 
            resets = <&gcc GCC_GEPHY_MISC_ARES>;
        };
    };