Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / Documentation / devicetree / bindings / powerpc / fsl / fman.txt
diff --git a/kernel/Documentation/devicetree/bindings/powerpc/fsl/fman.txt b/kernel/Documentation/devicetree/bindings/powerpc/fsl/fman.txt
new file mode 100644 (file)
index 0000000..edda55f
--- /dev/null
@@ -0,0 +1,604 @@
+=============================================================================
+Freescale Frame Manager Device Bindings
+
+CONTENTS
+  - FMan Node
+  - FMan Port Node
+  - FMan MURAM Node
+  - FMan dTSEC/XGEC/mEMAC Node
+  - FMan IEEE 1588 Node
+  - FMan MDIO Node
+  - Example
+
+=============================================================================
+FMan Node
+
+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
+               Usage: required
+               Value type: <stringlist>
+               Definition: Must include "fsl,fman"
+               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
+               Usage: required
+               Value type: <u32>
+               Definition: 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 bellow,
+               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
+               Usage: required
+               Value type: <prop-encoded-array>
+               Definition: A standard property. Specifies the offset of the
+               following configuration registers:
+               - BMI configuration registers.
+               - QMI configuration registers.
+               - DMA configuration registers.
+               - FPM configuration registers.
+               - FMan controller configuration registers.
+
+- ranges
+               Usage: required
+               Value type: <prop-encoded-array>
+               Definition: A standard property.
+
+- clocks
+               Usage: required
+               Value type: <prop-encoded-array>
+               Definition: phandle for the fman input clock.
+
+- clock-names
+               usage: required
+               Value type: <stringlist>
+               Definition: "fmanclk" for the fman input clock.
+
+- interrupts
+               Usage: required
+               Value type: <prop-encoded-array>
+               Definition: A pair of IRQs are specified in this property.
+               The first element is associated with the event interrupts and
+               the second element is associated with the error interrupts.
+
+- fsl,qman-channel-range
+               Usage: required
+               Value type: <prop-encoded-array>
+               Definition: 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.
+               Further information available at:
+               "Work Queue (WQ) Channel Assignments in the QMan" section
+               in DPAA Reference Manual.
+
+- fsl,qman
+- fsl,bman
+               Usage: required
+               Definition: See soc/fsl/qman.txt and soc/fsl/bman.txt
+
+=============================================================================
+FMan MURAM Node
+
+DESCRIPTION
+
+FMan Internal memory - shared between all the FMan modules.
+It contains data structures that are common and written to or read by
+the modules.
+FMan internal memory is split into the following parts:
+       Packet buffering (Tx/Rx FIFOs)
+       Frames internal context
+
+PROPERTIES
+
+- compatible
+               Usage: required
+               Value type: <stringlist>
+               Definition: Must include "fsl,fman-muram"
+
+- ranges
+               Usage: required
+               Value type: <prop-encoded-array>
+               Definition: A standard property.
+               Specifies the multi-user memory offset and the size within
+               the FMan.
+
+EXAMPLE
+
+muram@0 {
+       compatible = "fsl,fman-muram";
+       ranges = <0 0x000000 0x28000>;
+};
+
+=============================================================================
+FMan Port Node
+
+DESCRIPTION
+
+The Frame Manager (FMan) supports several types of hardware ports:
+       Ethernet receiver (RX)
+       Ethernet transmitter (TX)
+       Offline/Host command (O/H)
+
+PROPERTIES
+
+- compatible
+               Usage: required
+               Value type: <stringlist>
+               Definition: A standard property.
+               Must include one of the following:
+                       - "fsl,fman-v2-port-oh" for FManV2 OH ports
+                       - "fsl,fman-v2-port-rx" for FManV2 RX ports
+                       - "fsl,fman-v2-port-tx" for FManV2 TX ports
+                       - "fsl,fman-v3-port-oh" for FManV3 OH ports
+                       - "fsl,fman-v3-port-rx" for FManV3 RX ports
+                       - "fsl,fman-v3-port-tx" for FManV3 TX ports
+
+- cell-index
+               Usage: required
+               Value type: <u32>
+               Definition: Specifies the hardware port id.
+               Each hardware port on the FMan has its own hardware PortID.
+               Super set of all hardware Port IDs available at FMan Reference
+               Manual under "FMan Hardware Ports in Freescale Devices" table.
+
+               Each hardware port is assigned a 4KB, port-specific page in
+               the FMan hardware port memory region (which is part of the
+               FMan memory map). The first 4 KB in the FMan hardware ports
+               memory region is used for what are called common registers.
+               The subsequent 63 4KB pages are allocated to the hardware
+               ports.
+               The page of a specific port is determined by the cell-index.
+
+- reg
+               Usage: required
+               Value type: <prop-encoded-array>
+               Definition: There is one reg region describing the port
+               configuration registers.
+
+EXAMPLE
+
+port@a8000 {
+       cell-index = <0x28>;
+       compatible = "fsl,fman-v2-port-tx";
+       reg = <0xa8000 0x1000>;
+};
+
+port@88000 {
+       cell-index = <0x8>;
+       compatible = "fsl,fman-v2-port-rx";
+       reg = <0x88000 0x1000>;
+};
+
+port@81000 {
+       cell-index = <0x1>;
+       compatible = "fsl,fman-v2-port-oh";
+       reg = <0x81000 0x1000>;
+};
+
+=============================================================================
+FMan dTSEC/XGEC/mEMAC Node
+
+DESCRIPTION
+
+mEMAC/dTSEC/XGEC are the Ethernet network interfaces
+
+PROPERTIES
+
+- compatible
+               Usage: required
+               Value type: <stringlist>
+               Definition: A standard property.
+               Must include one of the following:
+               - "fsl,fman-dtsec" for dTSEC MAC
+               - "fsl,fman-xgec" for XGEC MAC
+               - "fsl,fman-memac for mEMAC MAC
+
+- cell-index
+               Usage: required
+               Value type: <u32>
+               Definition: Specifies the MAC id.
+
+               The cell-index value may be used by the FMan or the SoC, to
+               identify the MAC unit in the FMan (or SoC) memory map.
+               In the tables bellow there's a description of the cell-index
+               use, there are two tables, one describes the use of cell-index
+               by the FMan, the second describes the use by the SoC:
+
+               1. FMan Registers
+
+               FManV2:
+               register[bit]           MAC             cell-index
+               ============================================================
+               FM_EPI[16]              XGEC            8
+               FM_EPI[16+n]            dTSECn          n-1
+               FM_NPI[11+n]            dTSECn          n-1
+                       n = 1,..,5
+
+               FManV3:
+               register[bit]           MAC             cell-index
+               ============================================================
+               FM_EPI[16+n]            mEMACn          n-1
+               FM_EPI[25]              mEMAC10         9
+
+               FM_NPI[11+n]            mEMACn          n-1
+               FM_NPI[10]              mEMAC10         9
+               FM_NPI[11]              mEMAC9          8
+                       n = 1,..8
+
+               FM_EPI and FM_NPI are located in the FMan memory map.
+
+               2. SoC registers:
+
+               - P2041, P3041, P4080 P5020, P5040:
+               register[bit]           FMan            MAC             cell
+                                       Unit                            index
+               ============================================================
+               DCFG_DEVDISR2[7]        1               XGEC            8
+               DCFG_DEVDISR2[7+n]      1               dTSECn          n-1
+               DCFG_DEVDISR2[15]       2               XGEC            8
+               DCFG_DEVDISR2[15+n]     2               dTSECn          n-1
+                       n = 1,..5
+
+               - T1040, T2080, T4240, B4860:
+               register[bit]                   FMan    MAC             cell
+                                               Unit                    index
+               ============================================================
+               DCFG_CCSR_DEVDISR2[n-1]         1       mEMACn          n-1
+               DCFG_CCSR_DEVDISR2[11+n]        2       mEMACn          n-1
+                       n = 1,..6,9,10
+
+               EVDISR, DCFG_DEVDISR2 and DCFG_CCSR_DEVDISR2 are located in
+               the specific SoC "Device Configuration/Pin Control" Memory
+               Map.
+
+- reg
+               Usage: required
+               Value type: <prop-encoded-array>
+               Definition: A standard property.
+
+- fsl,fman-ports
+               Usage: required
+               Value type: <prop-encoded-array>
+               Definition: An array of two phandles - the first references is
+               the FMan RX port and the second is the TX port used by this
+               MAC.
+
+- ptp-timer
+               Usage required
+               Value type: <phandle>
+               Definition: A phandle for 1EEE1588 timer.
+
+EXAMPLE
+
+fman1_tx28: port@a8000 {
+       cell-index = <0x28>;
+       compatible = "fsl,fman-v2-port-tx";
+       reg = <0xa8000 0x1000>;
+};
+
+fman1_rx8: port@88000 {
+       cell-index = <0x8>;
+       compatible = "fsl,fman-v2-port-rx";
+       reg = <0x88000 0x1000>;
+};
+
+ptp-timer: ptp_timer@fe000 {
+       compatible = "fsl,fman-ptp-timer";
+       reg = <0xfe000 0x1000>;
+};
+
+ethernet@e0000 {
+       compatible = "fsl,fman-dtsec";
+       cell-index = <0>;
+       reg = <0xe0000 0x1000>;
+       fsl,fman-ports = <&fman1_rx8 &fman1_tx28>;
+       ptp-timer = <&ptp-timer>;
+};
+
+============================================================================
+FMan IEEE 1588 Node
+
+DESCRIPTION
+
+The FMan interface to support IEEE 1588
+
+
+PROPERTIES
+
+- compatible
+               Usage: required
+               Value type: <stringlist>
+               Definition: A standard property.
+               Must include "fsl,fman-ptp-timer".
+
+- reg
+               Usage: required
+               Value type: <prop-encoded-array>
+               Definition: A standard property.
+
+EXAMPLE
+
+ptp-timer@fe000 {
+       compatible = "fsl,fman-ptp-timer";
+       reg = <0xfe000 0x1000>;
+};
+
+=============================================================================
+FMan MDIO Node
+
+DESCRIPTION
+
+The MDIO is a bus to which the PHY devices are connected.
+
+PROPERTIES
+
+- compatible
+               Usage: required
+               Value type: <stringlist>
+               Definition: A standard property.
+               Must include "fsl,fman-mdio" for 1 Gb/s MDIO from FMan v2.
+               Must include "fsl,fman-xmdio" for 10 Gb/s MDIO from FMan v2.
+               Must include "fsl,fman-memac-mdio" for 1/10 Gb/s MDIO from
+               FMan v3.
+
+- reg
+               Usage: required
+               Value type: <prop-encoded-array>
+               Definition: A standard property.
+
+- bus-frequency
+               Usage: optional
+               Value type: <u32>
+               Definition: Specifies the external MDIO bus clock speed to
+               be used, if different from the standard 2.5 MHz.
+               This may be due to the standard speed being unsupported (e.g.
+               due to a hardware problem), or to advertise that all relevant
+               components in the system support a faster speed.
+
+- interrupts
+               Usage: required for external MDIO
+               Value type: <prop-encoded-array>
+               Definition: Event interrupt of external MDIO controller.
+
+- fsl,fman-internal-mdio
+               Usage: required for internal MDIO
+               Value type: boolean
+               Definition: Fman has internal MDIO for internal PCS(Physical
+               Coding Sublayer) PHYs and external MDIO for external PHYs.
+               The settings and programming routines for internal/external
+               MDIO are different. Must be included for internal MDIO.
+
+EXAMPLE
+
+Example for FMan v2 external MDIO:
+
+mdio@f1000 {
+       compatible = "fsl,fman-xmdio";
+       reg = <0xf1000 0x1000>;
+       interrupts = <101 2 0 0>;
+};
+
+Example for FMan v3 internal MDIO:
+
+mdio@f1000 {
+       compatible = "fsl,fman-memac-mdio";
+       reg = <0xf1000 0x1000>;
+       fsl,fman-internal-mdio;
+};
+
+=============================================================================
+Example
+
+fman@400000 {
+       #address-cells = <1>;
+       #size-cells = <1>;
+       cell-index = <1>;
+       compatible = "fsl,fman"
+       ranges = <0 0x400000 0x100000>;
+       reg = <0x400000 0x100000>;
+       clocks = <&fman_clk>;
+       clock-names = "fmanclk";
+       interrupts = <
+               96 2 0 0
+               16 2 1 1>;
+       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>;
+       };
+
+       port@82000 {
+               cell-index = <2>;
+               compatible = "fsl,fman-v2-port-oh";
+               reg = <0x82000 0x1000>;
+       };
+
+       port@83000 {
+               cell-index = <3>;
+               compatible = "fsl,fman-v2-port-oh";
+               reg = <0x83000 0x1000>;
+       };
+
+       port@84000 {
+               cell-index = <4>;
+               compatible = "fsl,fman-v2-port-oh";
+               reg = <0x84000 0x1000>;
+       };
+
+       port@85000 {
+               cell-index = <5>;
+               compatible = "fsl,fman-v2-port-oh";
+               reg = <0x85000 0x1000>;
+       };
+
+       port@86000 {
+               cell-index = <6>;
+               compatible = "fsl,fman-v2-port-oh";
+               reg = <0x86000 0x1000>;
+       };
+
+       fman1_rx_0x8: port@88000 {
+               cell-index = <0x8>;
+               compatible = "fsl,fman-v2-port-rx";
+               reg = <0x88000 0x1000>;
+       };
+
+       fman1_rx_0x9: port@89000 {
+               cell-index = <0x9>;
+               compatible = "fsl,fman-v2-port-rx";
+               reg = <0x89000 0x1000>;
+       };
+
+       fman1_rx_0xa: port@8a000 {
+               cell-index = <0xa>;
+               compatible = "fsl,fman-v2-port-rx";
+               reg = <0x8a000 0x1000>;
+       };
+
+       fman1_rx_0xb: port@8b000 {
+               cell-index = <0xb>;
+               compatible = "fsl,fman-v2-port-rx";
+               reg = <0x8b000 0x1000>;
+       };
+
+       fman1_rx_0xc: port@8c000 {
+               cell-index = <0xc>;
+               compatible = "fsl,fman-v2-port-rx";
+               reg = <0x8c000 0x1000>;
+       };
+
+       fman1_rx_0x10: port@90000 {
+               cell-index = <0x10>;
+               compatible = "fsl,fman-v2-port-rx";
+               reg = <0x90000 0x1000>;
+       };
+
+       fman1_tx_0x28: port@a8000 {
+               cell-index = <0x28>;
+               compatible = "fsl,fman-v2-port-tx";
+               reg = <0xa8000 0x1000>;
+       };
+
+       fman1_tx_0x29: port@a9000 {
+               cell-index = <0x29>;
+               compatible = "fsl,fman-v2-port-tx";
+               reg = <0xa9000 0x1000>;
+       };
+
+       fman1_tx_0x2a: port@aa000 {
+               cell-index = <0x2a>;
+               compatible = "fsl,fman-v2-port-tx";
+               reg = <0xaa000 0x1000>;
+       };
+
+       fman1_tx_0x2b: port@ab000 {
+               cell-index = <0x2b>;
+               compatible = "fsl,fman-v2-port-tx";
+               reg = <0xab000 0x1000>;
+       };
+
+       fman1_tx_0x2c: port@ac0000 {
+               cell-index = <0x2c>;
+               compatible = "fsl,fman-v2-port-tx";
+               reg = <0xac000 0x1000>;
+       };
+
+       fman1_tx_0x30: port@b0000 {
+               cell-index = <0x30>;
+               compatible = "fsl,fman-v2-port-tx";
+               reg = <0xb0000 0x1000>;
+       };
+
+       ethernet@e0000 {
+               compatible = "fsl,fman-dtsec";
+               cell-index = <0>;
+               reg = <0xe0000 0x1000>;
+               fsl,fman-ports = <&fman1_rx_0x8 &fman1_tx_0x28>;
+       };
+
+       ethernet@e2000 {
+               compatible = "fsl,fman-dtsec";
+               cell-index = <1>;
+               reg = <0xe2000 0x1000>;
+               fsl,fman-ports = <&fman1_rx_0x9 &fman1_tx_0x29>;
+       };
+
+       ethernet@e4000 {
+               compatible = "fsl,fman-dtsec";
+               cell-index = <2>;
+               reg = <0xe4000 0x1000>;
+               fsl,fman-ports = <&fman1_rx_0xa &fman1_tx_0x2a>;
+       };
+
+       ethernet@e6000 {
+               compatible = "fsl,fman-dtsec";
+               cell-index = <3>;
+               reg = <0xe6000 0x1000>;
+               fsl,fman-ports = <&fman1_rx_0xb &fman1_tx_0x2b>;
+       };
+
+       ethernet@e8000 {
+               compatible = "fsl,fman-dtsec";
+               cell-index = <4>;
+               reg = <0xf0000 0x1000>;
+               fsl,fman-ports = <&fman1_rx_0xc &fman1_tx_0x2c>;
+
+       ethernet@f0000 {
+               cell-index = <8>;
+               compatible = "fsl,fman-xgec";
+               reg = <0xf0000 0x1000>;
+               fsl,fman-ports = <&fman1_rx_0x10 &fman1_tx_0x30>;
+       };
+
+       ptp-timer@fe000 {
+               compatible = "fsl,fman-ptp-timer";
+               reg = <0xfe000 0x1000>;
+       };
+
+       mdio@f1000 {
+               compatible = "fsl,fman-xmdio";
+               reg = <0xf1000 0x1000>;
+               interrupts = <101 2 0 0>;
+       };
+};