Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753400AbbFVPF5 (ORCPT ); Mon, 22 Jun 2015 11:05:57 -0400 Received: from forward5l.mail.yandex.net ([84.201.143.138]:52519 "EHLO forward5l.mail.yandex.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753287AbbFVPFq (ORCPT ); Mon, 22 Jun 2015 11:05:46 -0400 From: Andrew Andrianov To: Greg Kroah-Hartman Cc: Andrew Andrianov , pebolle@tiscali.nl, Sudip Mukherjee , Arve =?utf-8?B?SGrvv71ubmV277+9Zw==?= , Riley Andrews , Chen Gang , Fabian Frederick , Android Kernel Team , linux-kernel@vger.kernel.org Subject: [PATCH v5 2/2] staging: ion: Add ion-physmem documentation Date: Mon, 22 Jun 2015 18:05:08 +0300 Message-Id: <1434985508-3307-3-git-send-email-andrew@ncrmnt.org> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1434985508-3307-1-git-send-email-andrew@ncrmnt.org> References: <1434985508-3307-1-git-send-email-andrew@ncrmnt.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3443 Lines: 116 Signed-off-by: Andrew Andrianov --- Documentation/devicetree/bindings/ion,physmem.txt | 98 +++++++++++++++++++++++ 1 file changed, 98 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..e8c64dd --- /dev/null +++ b/Documentation/devicetree/bindings/ion,physmem.txt @@ -0,0 +1,98 @@ +ION PhysMem Driver +#include + + +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-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-align = <0x10>; + ion-heap-name = "SYSDMA"; + }; + +3. 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-align = <0x10>; + ion-heap-name = "carveout"; + }; + +4. 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-align = <0x10>; + ion-heap-name = "chunky"; + }; + + +5. vmalloc(); + + ion_chunk: ion@0xdeadbeef { + compatible = "ion,physmem"; + ion-heap-id = <2>; + ion-heap-type = ; + ion-heap-align = <0x10>; + ion-heap-name = "sys"; + }; + +6. kmalloc(); + + ion_chunk: ion@0xdeadbeef { + compatible = "ion,physmem"; + ion-heap-id = <2>; + ion-heap-type = ; + ion-heap-align = <0x10>; + ion-heap-name = "syscont"; + }; + +If the underlying heap relies on some physical device that needs clock +gating, you may need to fill the clocks 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-align = <0x10>; + ion-heap-name = "IM0"; + clocks = <&oscillator_27m>; + clock-names = "clk_27m"; + }; + +ion-physmem will do everything required to enable and disable the clock. -- 2.1.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in Please read the FAQ at http://www.tux.org/lkml/