summaryrefslogtreecommitdiff
path: root/Documentation/devicetree/bindings/net/fsl,fman.yaml
blob: 9bbf39ef31a25cd01bb001b49fb4957a63ad7469 (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
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
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/fsl,fman.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Freescale Frame Manager Device

maintainers:
  - Frank Li <Frank.Li@nxp.com>

description:
  Due to the fact that the FMan is an aggregation of sub-engines (ports, MACs,
  etc.) the FMan node will have child nodes for each of them.

properties:
  compatible:
    enum:
      - fsl,fman
    description:
      FMan version can be determined via FM_IP_REV_1 register in the
      FMan block. The offset is 0xc4 from the beginning of the
      Frame Processing Manager memory map (0xc3000 from the
      beginning of the FMan node).

  cell-index:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: |
      Specifies the index of the FMan unit.

      The cell-index value may be used by the SoC, to identify the
      FMan unit in the SoC memory map. In the table below,
      there's a description of the cell-index use in each SoC:

      - P1023:
      register[bit]      FMan unit  cell-index
      ============================================================
      DEVDISR[1]      1    0

      - P2041, P3041, P4080 P5020, P5040:
      register[bit]      FMan unit  cell-index
      ============================================================
      DCFG_DEVDISR2[6]    1    0
      DCFG_DEVDISR2[14]    2    1
        (Second FM available only in P4080 and P5040)

      - B4860, T1040, T2080, T4240:
      register[bit]      FMan unit  cell-index
      ============================================================
      DCFG_CCSR_DEVDISR2[24]    1    0
      DCFG_CCSR_DEVDISR2[25]    2    1
        (Second FM available only in T4240)

      DEVDISR, DCFG_DEVDISR2 and DCFG_CCSR_DEVDISR2 are located in
      the specific SoC "Device Configuration/Pin Control" Memory
      Map.

  reg:
    items:
      - description: BMI configuration registers.
      - description: QMI configuration registers.
      - description: DMA configuration registers.
      - description: FPM configuration registers.
      - description: FMan controller configuration registers.
    minItems: 1

  ranges: true

  clocks:
    maxItems: 1

  clock-names:
    items:
      - const: fmanclk

  interrupts:
    items:
      - description: The first element is associated with the event interrupts.
      - description: the second element is associated with the error interrupts.

  dma-coherent: true

  ptimer-handle:
    $ref: /schemas/types.yaml#/definitions/phandle
    description: see ptp/fsl,ptp.yaml

  fsl,qman-channel-range:
    $ref: /schemas/types.yaml#/definitions/uint32-array
    description:
      Specifies the range of the available dedicated
      channels in the FMan. The first cell specifies the beginning
      of the range and the second cell specifies the number of
      channels
    items:
      - description: The first cell specifies the beginning of the range.
      - description: |
          The second cell specifies the number of channels.
          Further information available at:
          "Work Queue (WQ) Channel Assignments in the QMan" section
          in DPAA Reference Manual.

  fsl,qman:
    $ref: /schemas/types.yaml#/definitions/phandle
    description: See soc/fsl/qman.txt

  fsl,bman:
    $ref: /schemas/types.yaml#/definitions/phandle
    description: See soc/fsl/bman.txt

  fsl,erratum-a050385:
    $ref: /schemas/types.yaml#/definitions/flag
    description: A boolean property. Indicates the presence of the
      erratum A050385 which indicates that DMA transactions that are
      split can result in a FMan lock.

  '#address-cells':
    const: 1

  '#size-cells':
    const: 1

patternProperties:
  '^muram@[a-f0-9]+$':
    $ref: fsl,fman-muram.yaml

  '^port@[a-f0-9]+$':
    $ref: fsl,fman-port.yaml

  '^ethernet@[a-f0-9]+$':
    $ref: fsl,fman-dtsec.yaml

  '^mdio@[a-f0-9]+$':
    $ref: fsl,fman-mdio.yaml

  '^phc@[a-f0-9]+$':
    $ref: /schemas/ptp/fsl,ptp.yaml

required:
  - compatible
  - cell-index
  - reg
  - ranges
  - clocks
  - clock-names
  - interrupts
  - fsl,qman-channel-range

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>

    fman@400000 {
        compatible = "fsl,fman";
        reg = <0x400000 0x100000>;
        ranges = <0 0x400000 0x100000>;
        #address-cells = <1>;
        #size-cells = <1>;
        cell-index = <1>;
        clocks = <&fman_clk>;
        clock-names = "fmanclk";
        interrupts = <96 IRQ_TYPE_EDGE_FALLING>,
                     <16 IRQ_TYPE_EDGE_FALLING>;
        fsl,qman-channel-range = <0x40 0xc>;

        muram@0 {
            compatible = "fsl,fman-muram";
            reg = <0x0 0x28000>;
        };

        port@81000 {
            cell-index = <1>;
            compatible = "fsl,fman-v2-port-oh";
            reg = <0x81000 0x1000>;
        };

        fman1_rx_0x8: port@88000 {
            cell-index = <0x8>;
            compatible = "fsl,fman-v2-port-rx";
            reg = <0x88000 0x1000>;
        };

        fman1_tx_0x28: port@a8000 {
            cell-index = <0x28>;
            compatible = "fsl,fman-v2-port-tx";
            reg = <0xa8000 0x1000>;
        };

        ethernet@e0000 {
            compatible = "fsl,fman-dtsec";
            cell-index = <0>;
            reg = <0xe0000 0x1000>;
            ptp-timer = <&ptp_timer>;
            fsl,fman-ports = <&fman1_rx_0x8 &fman1_tx_0x28>;
            tbi-handle = <&tbi5>;
        };

        ptp_timer: phc@fe000 {
            compatible = "fsl,fman-ptp-timer";
            reg = <0xfe000 0x1000>;
            interrupts = <12 IRQ_TYPE_LEVEL_LOW>;
        };

        mdio@f1000 {
            compatible = "fsl,fman-xmdio";
            reg = <0xf1000 0x1000>;
            interrupts = <101 IRQ_TYPE_EDGE_FALLING>;
        };
    };