summaryrefslogtreecommitdiffstats
path: root/Documentation/devicetree/bindings/net/amd,xgbe-seattle-v1a.yaml
blob: 006add8b6410a368e9fd1c6bfaf00308e37bdb2f (plain)
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
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/amd,xgbe-seattle-v1a.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: AMD XGBE Seattle v1a

maintainers:
  - Shyam Sundar S K <Shyam-sundar.S-k@amd.com>

allOf:
  - $ref: /schemas/net/ethernet-controller.yaml#

properties:
  compatible:
    const: amd,xgbe-seattle-v1a

  reg:
    items:
      - description: MAC registers
      - description: PCS registers
      - description: SerDes Rx/Tx registers
      - description: SerDes integration registers (1/2)
      - description: SerDes integration registers (2/2)

  interrupts:
    description: Device interrupts. The first entry is the general device
      interrupt. If amd,per-channel-interrupt is specified, each DMA channel
      interrupt must be specified. The last entry is the PCS auto-negotiation
      interrupt.
    minItems: 2
    maxItems: 6

  clocks:
    items:
      - description: DMA clock for the device
      - description: PTP clock for the device

  clock-names:
    items:
      - const: dma_clk
      - const: ptp_clk

  iommus:
    maxItems: 1

  phy-mode: true

  dma-coherent: true

  amd,per-channel-interrupt:
    description: Indicates that Rx and Tx complete will generate a unique
      interrupt for each DMA channel.
    type: boolean

  amd,speed-set:
    description: >
      Speed capabilities of the device.
        0 = 1GbE and 10GbE
        1 = 2.5GbE and 10GbE
    $ref: /schemas/types.yaml#/definitions/uint32
    enum: [0, 1]

  amd,serdes-blwc:
    description: Baseline wandering correction enablement for each speed.
    $ref: /schemas/types.yaml#/definitions/uint32-array
    minItems: 3
    maxItems: 3
    items:
      enum: [0, 1]

  amd,serdes-cdr-rate:
    description: CDR rate speed selection for each speed.
    $ref: /schemas/types.yaml#/definitions/uint32-array
    items:
      - description: CDR rate for 1GbE
      - description: CDR rate for 2.5GbE
      - description: CDR rate for 10GbE

  amd,serdes-pq-skew:
    description: PQ data sampling skew for each speed.
    $ref: /schemas/types.yaml#/definitions/uint32-array
    items:
      - description: PQ skew for 1GbE
      - description: PQ skew for 2.5GbE
      - description: PQ skew for 10GbE

  amd,serdes-tx-amp:
    description: TX amplitude boost for each speed.
    $ref: /schemas/types.yaml#/definitions/uint32-array
    items:
      - description: TX amplitude for 1GbE
      - description: TX amplitude for 2.5GbE
      - description: TX amplitude for 10GbE

  amd,serdes-dfe-tap-config:
    description: DFE taps available to run for each speed.
    $ref: /schemas/types.yaml#/definitions/uint32-array
    items:
      - description: DFE taps available for 1GbE
      - description: DFE taps available for 2.5GbE
      - description: DFE taps available for 10GbE

  amd,serdes-dfe-tap-enable:
    description: DFE taps to enable for each speed.
    $ref: /schemas/types.yaml#/definitions/uint32-array
    items:
      - description: DFE taps to enable for 1GbE
      - description: DFE taps to enable for 2.5GbE
      - description: DFE taps to enable for 10GbE

required:
  - compatible
  - reg
  - interrupts
  - clocks
  - clock-names
  - phy-mode

unevaluatedProperties: false

examples:
  - |
    ethernet@e0700000 {
        compatible = "amd,xgbe-seattle-v1a";
        reg = <0xe0700000 0x80000>,
              <0xe0780000 0x80000>,
              <0xe1240800 0x00400>,
              <0xe1250000 0x00060>,
              <0xe1250080 0x00004>;
        interrupts = <0 325 4>,
                     <0 326 1>, <0 327 1>, <0 328 1>, <0 329 1>,
                     <0 323 4>;
        amd,per-channel-interrupt;
        clocks = <&xgbe_dma_clk>, <&xgbe_ptp_clk>;
        clock-names = "dma_clk", "ptp_clk";
        phy-mode = "xgmii";
        mac-address = [ 02 a1 a2 a3 a4 a5 ];
        amd,speed-set = <0>;
        amd,serdes-blwc = <1>, <1>, <0>;
        amd,serdes-cdr-rate = <2>, <2>, <7>;
        amd,serdes-pq-skew = <10>, <10>, <30>;
        amd,serdes-tx-amp = <15>, <15>, <10>;
        amd,serdes-dfe-tap-config = <3>, <3>, <1>;
        amd,serdes-dfe-tap-enable = <0>, <0>, <127>;
    };