Texas Instruments System Control Interface (TI-SCI) Message Protocol
--------------------------------------------------------------------

Texas Instrument's processors including those belonging to Keystone generation
of processors have separate hardware entity which is now responsible for the
management of the System on Chip (SoC) system. These include various system
level functions as well.

An example of such an SoC is K2G, which contains the system control hardware
block called Power Management Micro Controller (PMMC). This hardware block is
initialized early into boot process and provides services to Operating Systems
on multiple processors including ones running Linux.

See http://processors.wiki.ti.com/index.php/TISCI for protocol definition.

TI-SCI controller Device Node:
=============================

The TI-SCI node describes the Texas Instrument's System Controller entity node.
This parent node may optionally have additional children nodes which describe
specific functionality such as clocks, power domain, reset or additional
functionality as may be required for the SoC. This hierarchy also describes the
relationship between the TI-SCI parent node to the child node.

Required properties:
-------------------
- compatible:	should be "ti,k2g-sci" for TI 66AK2G SoC
		should be "ti,am654-sci" for for TI AM654 SoC
- mbox-names:
	"rx" - Mailbox corresponding to receive path
	"tx" - Mailbox corresponding to transmit path

- mboxes: Mailboxes corresponding to the mbox-names. Each value of the mboxes
	  property should contain a phandle to the mailbox controller device
	  node and an args specifier that will be the phandle to the intended
	  sub-mailbox child node to be used for communication.

See Documentation/devicetree/bindings/mailbox/mailbox.txt for more details
about the generic mailbox controller and client driver bindings. Also see
Documentation/devicetree/bindings/mailbox/ti,message-manager.txt for typical
controller that is used to communicate with this System controllers.

Optional Properties:
-------------------
- reg-names:
	debug_messages - Map the Debug message region
- reg:  register space corresponding to the debug_messages
- ti,system-reboot-controller: If system reboot can be triggered by SoC reboot
- ti,host-id: Integer value corresponding to the host ID assigned by Firmware
	for identification of host processing entities such as virtual
	machines

Example (K2G):
-------------
	pmmc: pmmc {
		compatible = "ti,k2g-sci";
		ti,host-id = <2>;
		mbox-names = "rx", "tx";
		mboxes= <&msgmgr &msgmgr_proxy_pmmc_rx>,
			<&msgmgr &msgmgr_proxy_pmmc_tx>;
		reg-names = "debug_messages";
		reg = <0x02921800 0x800>;
	};


TI-SCI Client Device Node:
=========================

Client nodes are maintained as children of the relevant TI-SCI device node.

Example (K2G):
-------------
	pmmc: pmmc {
		compatible = "ti,k2g-sci";
		...

		my_clk_node: clk_node {
			...
			...
		};

		my_pd_node: pd_node {
			...
			...
		};
	};
