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”
- “allwinner,sun50i-a64-sram-controller”
- 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-d
The valid sections compatible for A64 are:
- 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
sram-controller@1c00000 {
compatible = “allwinner,sun4i-a10-sram-controller”;
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>;
};