Signed-off-by: Andrew Andrianov <and...@ncrmnt.org>
---
 Documentation/devicetree/bindings/ion,physmem.txt |   96 +++++++++++++++++++++
 1 file changed, 96 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/ion,physmem.txt

diff --git a/Documentation/devicetree/bindings/ion,physmem.txt 
b/Documentation/devicetree/bindings/ion,physmem.txt
new file mode 100644
index 0000000..b83ae22
--- /dev/null
+++ b/Documentation/devicetree/bindings/ion,physmem.txt
@@ -0,0 +1,96 @@
+ION PhysMem Driver
+#include <dt-bindings/ion,physmem.h>
+
+
+ION PhysMem is a generic driver for ION Memory Manager that allows you to 
+define ION Memory Manager heaps using device tree. This is mostly useful if 
+your SoC has several 'special' regions (e.g. SRAM, dedicated memory banks, 
+etc) that are present in the physical memory map and you want to add them to 
+ION as heaps of memory. 
+
+
+Examples: 
+
+1. 256KiB On-chip SRAM used as ION DMA heap. reg range is treated as a physical
+   address range
+
+       ion_im0: ion@0x00100000 { 
+            compatible = "ion,physmem";
+            reg = <0x00100000 0x40000>;
+            reg-names = "memory";
+            ion-heap-id   = <2>;
+            ion-heap-type = <ION_HEAP_TYPE_DMA>;
+            ion-heap-align = <0x10>;                
+            ion-heap-name = "IM0";
+       };
+
+2. The same, but using system DMA memory. 
+
+       ion_dma: ion@0xdeadbeef { 
+            compatible = "ion,physmem";
+            ion-heap-id   = <2>;
+            ion-heap-type = <ION_HEAP_TYPE_DMA>;
+            ion-heap-align = <0x10>;                
+            ion-heap-name = "SYSDMA";
+       };
+
+2. Carveout heap, 1MiB size, ion-physmem will alloc pages for it using 
+   alloc_pages_exact(). reg range is used for specifying size only.
+
+               ion_crv: ion@deadbeef {
+                    compatible = "ion,physmem";
+                    reg = <0x00000000 0x100000>;
+                    reg-names = "memory";
+                    ion-heap-id   = <3>;
+                    ion-heap-type = <ION_HEAP_TYPE_CARVEOUT>;
+                    ion-heap-align = <0x10>;
+                    ion-heap-name = "carveout";
+               };
+
+3. Chunk heap. 1MiB size, ion-physmem will alloc pages for it using 
+   alloc_pages_exact(). reg range is used for specifying size only.
+
+       ion_chunk: ion@0xdeadbeef { 
+            compatible = "ion,physmem";
+            ion-heap-id   = <2>;
+            ion-heap-type = <ION_HEAP_TYPE_CHUNK>;
+            ion-heap-align = <0x10>;                
+            ion-heap-name = "chunky";
+       };
+
+
+4. vmalloc();
+
+       ion_chunk: ion@0xdeadbeef { 
+            compatible = "ion,physmem";
+            ion-heap-id   = <2>;
+            ion-heap-type = <ION_HEAP_TYPE_SYSTEM>;
+            ion-heap-align = <0x10>;                
+            ion-heap-name = "sys";
+       };
+
+5. kmalloc();
+
+       ion_chunk: ion@0xdeadbeef { 
+            compatible = "ion,physmem";
+            ion-heap-id   = <2>;
+            ion-heap-type = <ION_HEAP_TYPE_SYSTEM_CONTIG>;
+            ion-heap-align = <0x10>;                
+            ion-heap-name = "syscont";
+       };
+
+If the underlying heap relies on some physical device that needs clock 
+gating, you can need to fill the clock field in. E.g.: 
+
+ 
+       ion_im0: ion@0x00100000 { 
+            compatible = "ion,physmem";
+            reg = <0x00100000 0x40000>;
+            reg-names = "memory";
+            ion-heap-id   = <2>;
+            ion-heap-type = <ION_HEAP_TYPE_DMA>;
+            ion-heap-align = <0x10>;                
+            ion-heap-name = "IM0";
+            clocks = <&oscillator_27m>;
+            clock-names = "clk_27m";
+       };
-- 
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to