Message unit node:

For SRIO controllers that implement the message unit as part of the controller
this node is required.  For devices with RMAN this node should NOT exist.  The
node is composed of three types of sub-nodes ("fsl-srio-msg-unit",
"fsl-srio-dbell-unit" and "fsl-srio-port-write-unit").

See srio.txt for more details about generic SRIO controller details.

   - compatible
	Usage: required
	Value type: <string>
	Definition: Must include "fsl,srio-rmu-vX.Y", "fsl,srio-rmu".

	The version X.Y should match the general SRIO controller's IP Block
	revision register's Major(X) and Minor (Y) value.

   - reg
	Usage: required
	Value type: <prop-encoded-array>
	Definition: A standard property.  Specifies the physical address and
		length of the SRIO configuration registers for message units
		and doorbell units.

   - fsl,liodn
	Usage: optional-but-recommended (for devices with PAMU)
	Value type: <prop-encoded-array>
	Definition: The logical I/O device number for the PAMU (IOMMU) to be
		correctly configured for SRIO accesses.  The property should
		not exist on devices that do not support PAMU.

		The LIODN value is associated with all RMU transactions
		(msg-unit, doorbell, port-write).

Sub-Nodes for RMU:  The RMU node is composed of multiple sub-nodes that
correspond to the actual sub-controllers in the RMU.  The manual for a given
SoC will detail which and how many of these sub-controllers are implemented.

Message Unit:

   - compatible
	Usage: required
	Value type: <string>
	Definition: Must include "fsl,srio-msg-unit-vX.Y", "fsl,srio-msg-unit".

	The version X.Y should match the general SRIO controller's IP Block
	revision register's Major(X) and Minor (Y) value.

   - reg
	Usage: required
	Value type: <prop-encoded-array>
	Definition: A standard property.  Specifies the physical address and
		length of the SRIO configuration registers for message units
		and doorbell units.

   - interrupts
	Usage: required
	Value type: <prop_encoded-array>
	Definition:  Specifies the interrupts generated by this device.  The
		value of the interrupts property consists of one interrupt
		specifier. The format of the specifier is defined by the
		binding document describing the node's interrupt parent.

		A pair of IRQs are specified in this property.  The first
		element is associated with the transmit (TX) interrupt and the
		second element is associated with the receive (RX) interrupt.

Doorbell Unit:

   - compatible
	Usage: required
	Value type: <string>
	Definition: Must include:
		"fsl,srio-dbell-unit-vX.Y", "fsl,srio-dbell-unit"

	The version X.Y should match the general SRIO controller's IP Block
	revision register's Major(X) and Minor (Y) value.

   - reg
	Usage: required
	Value type: <prop-encoded-array>
	Definition: A standard property.  Specifies the physical address and
		length of the SRIO configuration registers for message units
		and doorbell units.

   - interrupts
	Usage: required
	Value type: <prop_encoded-array>
	Definition:  Specifies the interrupts generated by this device.  The
		value of the interrupts property consists of one interrupt
		specifier. The format of the specifier is defined by the
		binding document describing the node's interrupt parent.

		A pair of IRQs are specified in this property.  The first
		element is associated with the transmit (TX) interrupt and the
		second element is associated with the receive (RX) interrupt.

Port-Write Unit:

   - compatible
	Usage: required
	Value type: <string>
	Definition: Must include:
		 "fsl,srio-port-write-unit-vX.Y", "fsl,srio-port-write-unit"

	The version X.Y should match the general SRIO controller's IP Block
	revision register's Major(X) and Minor (Y) value.

   - reg
	Usage: required
	Value type: <prop-encoded-array>
	Definition: A standard property.  Specifies the physical address and
		length of the SRIO configuration registers for message units
		and doorbell units.

   - interrupts
	Usage: required
	Value type: <prop_encoded-array>
	Definition:  Specifies the interrupts generated by this device.  The
		value of the interrupts property consists of one interrupt
		specifier. The format of the specifier is defined by the
		binding document describing the node's interrupt parent.

		A single IRQ that handles port-write conditions is
		specified by this property.  (Typically shared with error).

   Note: All other standard properties (see the Devicetree Specification)
   are allowed but are optional.

Example:
	rmu: rmu@d3000 {
		compatible = "fsl,srio-rmu";
		reg = <0xd3000 0x400>;
		ranges = <0x0 0xd3000 0x400>;
		fsl,liodn = <0xc8>;

		message-unit@0 {
			compatible = "fsl,srio-msg-unit";
			reg = <0x0 0x100>;
			interrupts = <
				60 2 0 0  /* msg1_tx_irq */
				61 2 0 0>;/* msg1_rx_irq */
		};
		message-unit@100 {
			compatible = "fsl,srio-msg-unit";
			reg = <0x100 0x100>;
			interrupts = <
				62 2 0 0  /* msg2_tx_irq */
				63 2 0 0>;/* msg2_rx_irq */
		};
		doorbell-unit@400 {
			compatible = "fsl,srio-dbell-unit";
			reg = <0x400 0x80>;
			interrupts = <
				56 2 0 0  /* bell_outb_irq */
				57 2 0 0>;/* bell_inb_irq */
		};
		port-write-unit@4e0 {
			compatible = "fsl,srio-port-write-unit";
			reg = <0x4e0 0x20>;
			interrupts = <16 2 1 11>;
		};
	};
