b4c3fcb3c7
This change adds functionality to operate on reserved SRAM partitions described in device tree file. Two partition properties are added, "pool" and "export", the first one allows to share a specific partition for usage by a kernel consumer in the same manner as it is done for the whole SRAM device, and "export" property provides access to some SRAM area from userspace over sysfs interface. Practically it is possible to specify both properties for an SRAM partition, however simultaneous access from a kernel consumer and from userspace is not serialized, but still the combination may be useful for debugging purpose. The change opens the following scenarios of SRAM usage: * updates in a particular SRAM area specified by offset and size are done by bootloader, then this information is utilized by the kernel, * a particular SRAM area is rw accessed from userspace, the stored data is persistent on soft reboots, * a device driver secures SRAM area for its purposes, * etc. Note, strictly speaking the added optional properties describe policy of SRAM usage, rather than hardware, but here the policy mostly resembles flash partitions in devicetree, which is undoubtedly a very popular option but it does not describe hardware. Signed-off-by: Vladimir Zapolskiy <vladimir_zapolskiy@mentor.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
68 lines
1.8 KiB
Plaintext
68 lines
1.8 KiB
Plaintext
Generic on-chip SRAM
|
|
|
|
Simple IO memory regions to be managed by the genalloc API.
|
|
|
|
Required properties:
|
|
|
|
- compatible : mmio-sram
|
|
|
|
- reg : SRAM iomem address range
|
|
|
|
Reserving sram areas:
|
|
---------------------
|
|
|
|
Each child of the sram node specifies a region of reserved memory. Each
|
|
child node should use a 'reg' property to specify a specific range of
|
|
reserved memory.
|
|
|
|
Following the generic-names recommended practice, node names should
|
|
reflect the purpose of the node. Unit address (@<address>) should be
|
|
appended to the name.
|
|
|
|
Required properties in the sram node:
|
|
|
|
- #address-cells, #size-cells : should use the same values as the root node
|
|
- ranges : standard definition, should translate from local addresses
|
|
within the sram to bus addresses
|
|
|
|
Required properties in the area nodes:
|
|
|
|
- reg : iomem address range, relative to the SRAM range
|
|
|
|
Optional properties in the area nodes:
|
|
|
|
- compatible : standard definition, should contain a vendor specific string
|
|
in the form <vendor>,[<device>-]<usage>
|
|
- pool : indicates that the particular reserved SRAM area is addressable
|
|
and in use by another device or devices
|
|
- export : indicates that the reserved SRAM area may be accessed outside
|
|
of the kernel, e.g. by bootloader or userspace
|
|
- label : the name for the reserved partition, if omitted, the label
|
|
is taken from the node name excluding the unit address.
|
|
|
|
Example:
|
|
|
|
sram: sram@5c000000 {
|
|
compatible = "mmio-sram";
|
|
reg = <0x5c000000 0x40000>; /* 256 KiB SRAM at address 0x5c000000 */
|
|
|
|
#adress-cells = <1>;
|
|
#size-cells = <1>;
|
|
ranges = <0 0x5c000000 0x40000>;
|
|
|
|
smp-sram@100 {
|
|
compatible = "socvendor,smp-sram";
|
|
reg = <0x100 0x50>;
|
|
};
|
|
|
|
device-sram@1000 {
|
|
reg = <0x1000 0x1000>;
|
|
pool;
|
|
};
|
|
|
|
exported@20000 {
|
|
reg = <0x20000 0x20000>;
|
|
export;
|
|
};
|
|
};
|