<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
<!-- This component and the accompanying materials are made available under the terms of the License
"Eclipse Public License v1.0" which accompanies this distribution,
and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
<!-- Initial Contributors:
Nokia Corporation - initial contribution.
Contributors:
-->
<!DOCTYPE concept
PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept id="GUID-4E3C086B-25BE-4DAC-9E21-CFC4F8B792A5" xml:lang="en"><title>DMA
Technology Guide</title><shortdesc>Describes the new Direct Memory Access framework.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
<section id="GUID-E987EF55-27CE-4EC2-B250-2C3D7C36CAF9"><title>Purpose</title><p>The
Symbian platform DMA framework provides a generic simple interface for the
clients to access DMA resources in a device. The primary clients are device
drivers that will use the DMA framework to set up DMA transfers.</p></section>
<section id="GUID-7607CC80-0FA0-4FC2-897A-C4AB6B6C74FC"><title>Key concepts</title><fig id="GUID-93B0F1CF-5F84-4952-8D8C-7BE581EC5353">
<title>New DMA Framework</title>
<image href="GUID-74C99E44-8900-47FB-AF79-5627C37B9843_d0e325662_href.png" placement="inline"/>
</fig><dl>
<dlentry>
<dt>DMA Client</dt>
<dd><p>A device driver or other kernel objects that needs to use the resources
of the DMA framework.</p></dd>
</dlentry>
<dlentry>
<dt>DMA API</dt>
<dd><p>The generic interface to provide DMA services to the clients.</p></dd>
</dlentry>
<dlentry>
<dt>DMA Import Library</dt>
<dd><p>The DMA clients link against the <filepath>dma2.lib</filepath> file.</p></dd>
</dlentry>
<dlentry>
<dt>DMA Platform Independent Layer (PIL)</dt>
<dd><p>The platform independent layer that contains the generic framework
independent of the baseport.</p></dd>
</dlentry>
<dlentry>
<dt>DMA HAI</dt>
<dd><p>The simplified hardware abstract interface between the platform independent
layer and platform specific layer.</p></dd>
</dlentry>
<dlentry>
<dt>DMA Platform Specific Layer (PSL)</dt>
<dd><p>The platform specific layer is specific to the baseport and the hardware
used.</p></dd>
</dlentry>
<dlentry>
<dt>DMA Controller (DMAC)</dt>
<dd><p>The DMAC is the hardware implementation of the DMA framework. The number
of DMAC depends on the PSL implementation.</p></dd>
</dlentry>
<dlentry>
<dt>DMA Channel</dt>
<dd><p>The object which represents a single hardware channel. The DMA channels
are referred by a 32-bit value called as cookie. They channel object stores
the required number of descriptors for a given channel.</p></dd>
</dlentry>
<dlentry>
<dt>DMA Channel Manager</dt>
<dd><p>The channel manager controls the DMA channels. The channel manager
functions are defined in the platform independent layer and implemented in
the platform specific layer.</p></dd>
</dlentry>
<dlentry>
<dt>DMA Descriptors</dt>
<dd><p>The data structure uses by the DMA framework to store configuration
of the data transfer block with details such as source address, destination
address, number of bytes and pointer to the next descriptor, when DMA is used
to transfer disjoined blocks of data. This structure is defined in the platform
specific layer. The DMA descriptors must not be confused with the Symbian
platform descriptors.</p></dd>
</dlentry>
<dlentry>
<dt>Descriptor Headers</dt>
<dd><p>The descriptor headers are used to store additional information about
the descriptors.</p></dd>
</dlentry>
<dlentry>
<dt>Transfer Request</dt>
<dd><p>The transfer request are the process of initialising a data transfer
by the device drivers. </p></dd>
</dlentry>
</dl></section>
<section id="GUID-F64155FC-5245-447F-88E7-C642EDEB2CEE"><title>Typical Uses</title><p>The
typical use cases of a DMA framework are:</p><ul>
<li><p>programmable data transfer between hardware controllers and memory
buffers</p></li>
<li><p>programmable data transfer of block of data between different regions
of memory</p></li>
<li><p>programmable data extraction at regular intervals in a data structure</p></li>
<li><p>programmable rotation of a two dimensional data structure in memory
such as an image.</p></li>
</ul></section>
</conbody></concept>