Qualcomm MSM On-Chip Memory Driver msm-ocmem is a driver for managing On-Chip Memory (OCMEM) in MSM SoCs. It is responsible for allowing various clients to allocate memory from OCMEM based on performance, latency and power requirements. Required Properties: - compatible: Must be "qcom,msm-ocmem" - reg: Four pairs of physical base addresses and region sizes of memory mapped registers. - reg-names : Register region name(s) referenced in reg above "ocmem_ctrl_physical" corresponds to OCMEM control registers. "dm_ctrl_physical" corresponds to DM control registers. "br_ctrl_physical" corresponds to BR control registers. "ocmem_physical" corresponds to address range of OCMEM memory. - interrupts: OCMEM core interrupt(s). - interrupt-names: OCMEM core interrupt name(s) reference in interrupts above "ocmem_irq" corresponds to OCMEM Error Interrupt. "dm_irq" corresponds to DM Interrupt. - qcom,ocmem-num-regions: The number of OCMEM hardware memory regions. - qcom,ocmem-num-macros: The number of OCMEM hardware memory macros. - qcom,resource-type: The hardware resource type of the OCMEM core. In addition to the information on the OCMEM core, the device tree contains additional information describing partitions of the OCMEM address space. This is used to establish regions of OCMEM that are used for each potential client. The partitions can overlap and the OCMEM driver ensures that there is no possibility of concurrent access from more than one client to the same address range. This allows the OCMEM driver to maximize the usage of OCMEM at all times. Each partition is represented as a sub-node of the OCMEM device. OCMEM partitions Required Properties: - reg : The partition's offset and size within OCMEM. - qcom,ocmem-part-name : The name for this partition. - qcom,ocmem-part-min: The minimum amount of memory reserved exclusively for this client. Optional Properties: - qcom,ocmem-part-tail : This parameter, if present, indicates that successive allocations from this partition must be allocated at lower offsetis. Example: qcom,ocmem@fdd00000 { reg = <0xfdd00000 0x2000>, <0xfdd02000 0x2000>, <0xfe039000 0x400>, <0xfec00000 0x180000>; reg-names = "ocmem_ctrl_physical", "dm_ctrl_physical", "br_ctrl_physical", "ocmem_physical"; interrupts = <0 76 0 0 77 0>; interrupt-names = "ocmem_irq", "dm_irq"; qcom,ocmem-num-regions = <0x3>; qcom,resource-type = <0x706d636f> #address-cells = <1>; #size-cells = <1>; ranges = <0x0 0xfec00000 0x180000>; partition@0 { reg = <0x0 0x100000>; qcom,ocmem-part-name = "graphics"; qcom,ocmem-part-min = <0x80000>; }; partition@100000 { reg = <0x100000 0x80000>; qcom,ocmem-part-name = "video"; qcom,ocmem-part-min = <0x55000>; }; };