From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932394AbbFBQDr (ORCPT ); Tue, 2 Jun 2015 12:03:47 -0400 Received: from forward10l.mail.yandex.net ([84.201.143.143]:39002 "EHLO forward10l.mail.yandex.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1759511AbbFBQBT (ORCPT ); Tue, 2 Jun 2015 12:01:19 -0400 From: Andrew Andrianov To: Greg Kroah-Hartman Cc: "Andrew 'Necromant' Andrianov" , pebolle@tiscali.nl, Arve =?utf-8?B?SGrvv71ubmV277+9Zw==?= , Riley Andrews , Chen Gang , Fabian Frederick , Android Kernel Team , linux-kernel@vger.kernel.org Subject: [PATCH v3 2/2] staging: ion: Add ion-physmem documentation Date: Tue, 2 Jun 2015 19:00:40 +0300 Message-Id: <1433260840-16723-3-git-send-email-andrew@ncrmnt.org> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1433260840-16723-1-git-send-email-andrew@ncrmnt.org> References: <1433260840-16723-1-git-send-email-andrew@ncrmnt.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Andrew 'Necromant' Andrianov Signed-off-by: Andrew Andrianov --- 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 + + +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 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-align = <0x10>; + ion-heap-name = "IM0"; + clocks = <&oscillator_27m>; + clock-names = "clk_27m"; + }; -- 2.1.4