# 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 <[email protected]>
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>;
};
};