Allwinnner SoC SRAM controllers
-----------------------------------------------------

The SRAM controller found on most Allwinner devices is represented by
a regular node for the SRAM controller itself, with sub-nodes
reprensenting the SRAM handled by the SRAM controller.

Controller Node
---------------

Required properties:
- compatible : should be:
    - "allwinner,sun4i-a10-sram-controller" (deprecated)
    - "allwinner,sun4i-a10-system-control"
    - "allwinner,sun5i-a13-system-control"
    - "allwinner,sun7i-a20-system-control", "allwinner,sun4i-a10-system-control"
    - "allwinner,sun8i-a23-system-control"
    - "allwinner,sun8i-h3-system-control"
    - "allwinner,sun50i-a64-sram-controller" (deprecated)
    - "allwinner,sun50i-a64-system-control"
    - "allwinner,sun50i-h5-system-control"
    - "allwinner,sun50i-h6-system-control", "allwinner,sun50i-a64-system-control"
    - "allwinner,suniv-f1c100s-system-control", "allwinner,sun4i-a10-system-control"
- reg : sram controller register offset + length

SRAM nodes
----------

Each SRAM is described using the mmio-sram bindings documented in
Documentation/devicetree/bindings/sram/sram.txt

Each SRAM will have SRAM sections that are going to be handled by the
SRAM controller as subnodes. These sections are represented following
once again the representation described in the mmio-sram binding.

The valid sections compatible for A10 are:
    - allwinner,sun4i-a10-sram-a3-a4
    - allwinner,sun4i-a10-sram-c1
    - allwinner,sun4i-a10-sram-d

The valid sections compatible for A13 are:
    - allwinner,sun5i-a13-sram-a3-a4, allwinner,sun4i-a10-sram-a3-a4
    - allwinner,sun5i-a13-sram-c1, allwinner,sun4i-a10-sram-c1
    - allwinner,sun5i-a13-sram-d, allwinner,sun4i-a10-sram-d

The valid sections compatible for A20 are:
    - allwinner,sun7i-a20-sram-a3-a4, allwinner,sun4i-a10-sram-a3-a4
    - allwinner,sun7i-a20-sram-c1, allwinner,sun4i-a10-sram-c1
    - allwinner,sun7i-a20-sram-d, allwinner,sun4i-a10-sram-d

The valid sections compatible for A23/A33 are:
    - allwinner,sun8i-a23-sram-c1, allwinner,sun4i-a10-sram-c1

The valid sections compatible for H3 are:
    - allwinner,sun8i-h3-sram-c1, allwinner,sun4i-a10-sram-c1

The valid sections compatible for A64 are:
    - allwinner,sun50i-a64-sram-c
    - allwinner,sun50i-a64-sram-c1, allwinner,sun4i-a10-sram-c1

The valid sections compatible for H5 are:
    - allwinner,sun50i-h5-sram-c1, allwinner,sun4i-a10-sram-c1

The valid sections compatible for H6 are:
    - allwinner,sun50i-h6-sram-c, allwinner,sun50i-a64-sram-c
    - allwinner,sun50i-h6-sram-c1, allwinner,sun4i-a10-sram-c1

The valid sections compatible for F1C100s are:
    - allwinner,suniv-f1c100s-sram-d, allwinner,sun4i-a10-sram-d

Devices using SRAM sections
---------------------------

Some devices need to request to the SRAM controller to map an SRAM for
their exclusive use.

The relationship between such a device and an SRAM section is
expressed through the allwinner,sram property, that will take a
phandle and an argument.

This valid values for this argument are:
  - 0: CPU
  - 1: Device

Example
-------
system-control@1c00000 {
	compatible = "allwinner,sun4i-a10-system-control";
	reg = <0x01c00000 0x30>;
	#address-cells = <1>;
	#size-cells = <1>;
	ranges;

	sram_a: sram@00000000 {
		compatible = "mmio-sram";
		reg = <0x00000000 0xc000>;
		#address-cells = <1>;
		#size-cells = <1>;
		ranges = <0 0x00000000 0xc000>;

		emac_sram: sram-section@8000 {
			compatible = "allwinner,sun4i-a10-sram-a3-a4";
			reg = <0x8000 0x4000>;
		};
	};
};

emac: ethernet@1c0b000 {
	compatible = "allwinner,sun4i-a10-emac";
	...

	allwinner,sram = <&emac_sram 1>;
};
