xref: /freebsd/sys/contrib/device-tree/Bindings/net/fsl,fman.yaml (revision 0e8011faf58b743cc652e3b2ad0f7671227610df)
1*0e8011faSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*0e8011faSEmmanuel Vadot%YAML 1.2
3*0e8011faSEmmanuel Vadot---
4*0e8011faSEmmanuel Vadot$id: http://devicetree.org/schemas/net/fsl,fman.yaml#
5*0e8011faSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*0e8011faSEmmanuel Vadot
7*0e8011faSEmmanuel Vadottitle: Freescale Frame Manager Device
8*0e8011faSEmmanuel Vadot
9*0e8011faSEmmanuel Vadotmaintainers:
10*0e8011faSEmmanuel Vadot  - Frank Li <Frank.Li@nxp.com>
11*0e8011faSEmmanuel Vadot
12*0e8011faSEmmanuel Vadotdescription:
13*0e8011faSEmmanuel Vadot  Due to the fact that the FMan is an aggregation of sub-engines (ports, MACs,
14*0e8011faSEmmanuel Vadot  etc.) the FMan node will have child nodes for each of them.
15*0e8011faSEmmanuel Vadot
16*0e8011faSEmmanuel Vadotproperties:
17*0e8011faSEmmanuel Vadot  compatible:
18*0e8011faSEmmanuel Vadot    enum:
19*0e8011faSEmmanuel Vadot      - fsl,fman
20*0e8011faSEmmanuel Vadot    description:
21*0e8011faSEmmanuel Vadot      FMan version can be determined via FM_IP_REV_1 register in the
22*0e8011faSEmmanuel Vadot      FMan block. The offset is 0xc4 from the beginning of the
23*0e8011faSEmmanuel Vadot      Frame Processing Manager memory map (0xc3000 from the
24*0e8011faSEmmanuel Vadot      beginning of the FMan node).
25*0e8011faSEmmanuel Vadot
26*0e8011faSEmmanuel Vadot  cell-index:
27*0e8011faSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32
28*0e8011faSEmmanuel Vadot    description: |
29*0e8011faSEmmanuel Vadot      Specifies the index of the FMan unit.
30*0e8011faSEmmanuel Vadot
31*0e8011faSEmmanuel Vadot      The cell-index value may be used by the SoC, to identify the
32*0e8011faSEmmanuel Vadot      FMan unit in the SoC memory map. In the table below,
33*0e8011faSEmmanuel Vadot      there's a description of the cell-index use in each SoC:
34*0e8011faSEmmanuel Vadot
35*0e8011faSEmmanuel Vadot      - P1023:
36*0e8011faSEmmanuel Vadot      register[bit]      FMan unit  cell-index
37*0e8011faSEmmanuel Vadot      ============================================================
38*0e8011faSEmmanuel Vadot      DEVDISR[1]      1    0
39*0e8011faSEmmanuel Vadot
40*0e8011faSEmmanuel Vadot      - P2041, P3041, P4080 P5020, P5040:
41*0e8011faSEmmanuel Vadot      register[bit]      FMan unit  cell-index
42*0e8011faSEmmanuel Vadot      ============================================================
43*0e8011faSEmmanuel Vadot      DCFG_DEVDISR2[6]    1    0
44*0e8011faSEmmanuel Vadot      DCFG_DEVDISR2[14]    2    1
45*0e8011faSEmmanuel Vadot        (Second FM available only in P4080 and P5040)
46*0e8011faSEmmanuel Vadot
47*0e8011faSEmmanuel Vadot      - B4860, T1040, T2080, T4240:
48*0e8011faSEmmanuel Vadot      register[bit]      FMan unit  cell-index
49*0e8011faSEmmanuel Vadot      ============================================================
50*0e8011faSEmmanuel Vadot      DCFG_CCSR_DEVDISR2[24]    1    0
51*0e8011faSEmmanuel Vadot      DCFG_CCSR_DEVDISR2[25]    2    1
52*0e8011faSEmmanuel Vadot        (Second FM available only in T4240)
53*0e8011faSEmmanuel Vadot
54*0e8011faSEmmanuel Vadot      DEVDISR, DCFG_DEVDISR2 and DCFG_CCSR_DEVDISR2 are located in
55*0e8011faSEmmanuel Vadot      the specific SoC "Device Configuration/Pin Control" Memory
56*0e8011faSEmmanuel Vadot      Map.
57*0e8011faSEmmanuel Vadot
58*0e8011faSEmmanuel Vadot  reg:
59*0e8011faSEmmanuel Vadot    items:
60*0e8011faSEmmanuel Vadot      - description: BMI configuration registers.
61*0e8011faSEmmanuel Vadot      - description: QMI configuration registers.
62*0e8011faSEmmanuel Vadot      - description: DMA configuration registers.
63*0e8011faSEmmanuel Vadot      - description: FPM configuration registers.
64*0e8011faSEmmanuel Vadot      - description: FMan controller configuration registers.
65*0e8011faSEmmanuel Vadot    minItems: 1
66*0e8011faSEmmanuel Vadot
67*0e8011faSEmmanuel Vadot  ranges: true
68*0e8011faSEmmanuel Vadot
69*0e8011faSEmmanuel Vadot  clocks:
70*0e8011faSEmmanuel Vadot    maxItems: 1
71*0e8011faSEmmanuel Vadot
72*0e8011faSEmmanuel Vadot  clock-names:
73*0e8011faSEmmanuel Vadot    items:
74*0e8011faSEmmanuel Vadot      - const: fmanclk
75*0e8011faSEmmanuel Vadot
76*0e8011faSEmmanuel Vadot  interrupts:
77*0e8011faSEmmanuel Vadot    items:
78*0e8011faSEmmanuel Vadot      - description: The first element is associated with the event interrupts.
79*0e8011faSEmmanuel Vadot      - description: the second element is associated with the error interrupts.
80*0e8011faSEmmanuel Vadot
81*0e8011faSEmmanuel Vadot  dma-coherent: true
82*0e8011faSEmmanuel Vadot
83*0e8011faSEmmanuel Vadot  ptimer-handle:
84*0e8011faSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/phandle
85*0e8011faSEmmanuel Vadot    description: see ptp/fsl,ptp.yaml
86*0e8011faSEmmanuel Vadot
87*0e8011faSEmmanuel Vadot  fsl,qman-channel-range:
88*0e8011faSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32-array
89*0e8011faSEmmanuel Vadot    description:
90*0e8011faSEmmanuel Vadot      Specifies the range of the available dedicated
91*0e8011faSEmmanuel Vadot      channels in the FMan. The first cell specifies the beginning
92*0e8011faSEmmanuel Vadot      of the range and the second cell specifies the number of
93*0e8011faSEmmanuel Vadot      channels
94*0e8011faSEmmanuel Vadot    items:
95*0e8011faSEmmanuel Vadot      - description: The first cell specifies the beginning of the range.
96*0e8011faSEmmanuel Vadot      - description: |
97*0e8011faSEmmanuel Vadot          The second cell specifies the number of channels.
98*0e8011faSEmmanuel Vadot          Further information available at:
99*0e8011faSEmmanuel Vadot          "Work Queue (WQ) Channel Assignments in the QMan" section
100*0e8011faSEmmanuel Vadot          in DPAA Reference Manual.
101*0e8011faSEmmanuel Vadot
102*0e8011faSEmmanuel Vadot  fsl,qman:
103*0e8011faSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/phandle
104*0e8011faSEmmanuel Vadot    description: See soc/fsl/qman.txt
105*0e8011faSEmmanuel Vadot
106*0e8011faSEmmanuel Vadot  fsl,bman:
107*0e8011faSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/phandle
108*0e8011faSEmmanuel Vadot    description: See soc/fsl/bman.txt
109*0e8011faSEmmanuel Vadot
110*0e8011faSEmmanuel Vadot  fsl,erratum-a050385:
111*0e8011faSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/flag
112*0e8011faSEmmanuel Vadot    description: A boolean property. Indicates the presence of the
113*0e8011faSEmmanuel Vadot      erratum A050385 which indicates that DMA transactions that are
114*0e8011faSEmmanuel Vadot      split can result in a FMan lock.
115*0e8011faSEmmanuel Vadot
116*0e8011faSEmmanuel Vadot  '#address-cells':
117*0e8011faSEmmanuel Vadot    const: 1
118*0e8011faSEmmanuel Vadot
119*0e8011faSEmmanuel Vadot  '#size-cells':
120*0e8011faSEmmanuel Vadot    const: 1
121*0e8011faSEmmanuel Vadot
122*0e8011faSEmmanuel VadotpatternProperties:
123*0e8011faSEmmanuel Vadot  '^muram@[a-f0-9]+$':
124*0e8011faSEmmanuel Vadot    $ref: fsl,fman-muram.yaml
125*0e8011faSEmmanuel Vadot
126*0e8011faSEmmanuel Vadot  '^port@[a-f0-9]+$':
127*0e8011faSEmmanuel Vadot    $ref: fsl,fman-port.yaml
128*0e8011faSEmmanuel Vadot
129*0e8011faSEmmanuel Vadot  '^ethernet@[a-f0-9]+$':
130*0e8011faSEmmanuel Vadot    $ref: fsl,fman-dtsec.yaml
131*0e8011faSEmmanuel Vadot
132*0e8011faSEmmanuel Vadot  '^mdio@[a-f0-9]+$':
133*0e8011faSEmmanuel Vadot    $ref: fsl,fman-mdio.yaml
134*0e8011faSEmmanuel Vadot
135*0e8011faSEmmanuel Vadot  '^phc@[a-f0-9]+$':
136*0e8011faSEmmanuel Vadot    $ref: /schemas/ptp/fsl,ptp.yaml
137*0e8011faSEmmanuel Vadot
138*0e8011faSEmmanuel Vadotrequired:
139*0e8011faSEmmanuel Vadot  - compatible
140*0e8011faSEmmanuel Vadot  - cell-index
141*0e8011faSEmmanuel Vadot  - reg
142*0e8011faSEmmanuel Vadot  - ranges
143*0e8011faSEmmanuel Vadot  - clocks
144*0e8011faSEmmanuel Vadot  - clock-names
145*0e8011faSEmmanuel Vadot  - interrupts
146*0e8011faSEmmanuel Vadot  - fsl,qman-channel-range
147*0e8011faSEmmanuel Vadot
148*0e8011faSEmmanuel VadotadditionalProperties: false
149*0e8011faSEmmanuel Vadot
150*0e8011faSEmmanuel Vadotexamples:
151*0e8011faSEmmanuel Vadot  - |
152*0e8011faSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/irq.h>
153*0e8011faSEmmanuel Vadot
154*0e8011faSEmmanuel Vadot    fman@400000 {
155*0e8011faSEmmanuel Vadot        compatible = "fsl,fman";
156*0e8011faSEmmanuel Vadot        reg = <0x400000 0x100000>;
157*0e8011faSEmmanuel Vadot        ranges = <0 0x400000 0x100000>;
158*0e8011faSEmmanuel Vadot        #address-cells = <1>;
159*0e8011faSEmmanuel Vadot        #size-cells = <1>;
160*0e8011faSEmmanuel Vadot        cell-index = <1>;
161*0e8011faSEmmanuel Vadot        clocks = <&fman_clk>;
162*0e8011faSEmmanuel Vadot        clock-names = "fmanclk";
163*0e8011faSEmmanuel Vadot        interrupts = <96 IRQ_TYPE_EDGE_FALLING>,
164*0e8011faSEmmanuel Vadot                     <16 IRQ_TYPE_EDGE_FALLING>;
165*0e8011faSEmmanuel Vadot        fsl,qman-channel-range = <0x40 0xc>;
166*0e8011faSEmmanuel Vadot
167*0e8011faSEmmanuel Vadot        muram@0 {
168*0e8011faSEmmanuel Vadot            compatible = "fsl,fman-muram";
169*0e8011faSEmmanuel Vadot            reg = <0x0 0x28000>;
170*0e8011faSEmmanuel Vadot        };
171*0e8011faSEmmanuel Vadot
172*0e8011faSEmmanuel Vadot        port@81000 {
173*0e8011faSEmmanuel Vadot            cell-index = <1>;
174*0e8011faSEmmanuel Vadot            compatible = "fsl,fman-v2-port-oh";
175*0e8011faSEmmanuel Vadot            reg = <0x81000 0x1000>;
176*0e8011faSEmmanuel Vadot        };
177*0e8011faSEmmanuel Vadot
178*0e8011faSEmmanuel Vadot        fman1_rx_0x8: port@88000 {
179*0e8011faSEmmanuel Vadot            cell-index = <0x8>;
180*0e8011faSEmmanuel Vadot            compatible = "fsl,fman-v2-port-rx";
181*0e8011faSEmmanuel Vadot            reg = <0x88000 0x1000>;
182*0e8011faSEmmanuel Vadot        };
183*0e8011faSEmmanuel Vadot
184*0e8011faSEmmanuel Vadot        fman1_tx_0x28: port@a8000 {
185*0e8011faSEmmanuel Vadot            cell-index = <0x28>;
186*0e8011faSEmmanuel Vadot            compatible = "fsl,fman-v2-port-tx";
187*0e8011faSEmmanuel Vadot            reg = <0xa8000 0x1000>;
188*0e8011faSEmmanuel Vadot        };
189*0e8011faSEmmanuel Vadot
190*0e8011faSEmmanuel Vadot        ethernet@e0000 {
191*0e8011faSEmmanuel Vadot            compatible = "fsl,fman-dtsec";
192*0e8011faSEmmanuel Vadot            cell-index = <0>;
193*0e8011faSEmmanuel Vadot            reg = <0xe0000 0x1000>;
194*0e8011faSEmmanuel Vadot            ptp-timer = <&ptp_timer>;
195*0e8011faSEmmanuel Vadot            fsl,fman-ports = <&fman1_rx_0x8 &fman1_tx_0x28>;
196*0e8011faSEmmanuel Vadot            tbi-handle = <&tbi5>;
197*0e8011faSEmmanuel Vadot        };
198*0e8011faSEmmanuel Vadot
199*0e8011faSEmmanuel Vadot        ptp_timer: phc@fe000 {
200*0e8011faSEmmanuel Vadot            compatible = "fsl,fman-ptp-timer";
201*0e8011faSEmmanuel Vadot            reg = <0xfe000 0x1000>;
202*0e8011faSEmmanuel Vadot            interrupts = <12 IRQ_TYPE_LEVEL_LOW>;
203*0e8011faSEmmanuel Vadot        };
204*0e8011faSEmmanuel Vadot
205*0e8011faSEmmanuel Vadot        mdio@f1000 {
206*0e8011faSEmmanuel Vadot            compatible = "fsl,fman-xmdio";
207*0e8011faSEmmanuel Vadot            reg = <0xf1000 0x1000>;
208*0e8011faSEmmanuel Vadot            interrupts = <101 IRQ_TYPE_EDGE_FALLING>;
209*0e8011faSEmmanuel Vadot        };
210*0e8011faSEmmanuel Vadot    };
211