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-h6-system-control", "allwinner,sun50i-a64-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

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

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>;
};
