Adaptation/GUID-7D535B68-CA7F-4796-80FB-AE7A27642A88.dita
author Graeme Price <GRAEME.PRICE@NOKIA.COM>
Fri, 15 Oct 2010 14:32:18 +0100
changeset 15 307f4279f433
permissions -rw-r--r--
Initial contribution of the Adaptation Documentation.

<?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-7D535B68-CA7F-4796-80FB-AE7A27642A88" xml:lang="en"><title>SDIO
Overview</title><shortdesc>SDIO is an Input/Output interface based on the SD card standard. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
<p>The intent behind SDIO is to allow the use of an SD slot for more than
memory cards. SDIO allows I/O devices such as GPS, camera, Wi-Fi, FM radio,
Ethernet, barcode readers and Bluetooth to be plugged into such a slot. </p>
<p>However, with space being limited in modern mobile phones, memory card
slots are usually microSD slots - which are too small to accept SDIO or miniSDIO
cards. Also, memory card slots are often internal to the phone which prohibits the
insertion of SDIO cards. Therefore in Symbian devices, SDIO is typically used
only as an internal peripheral bus on all but hardware reference platforms.
Because of its ability to provide high-speed data I/O with low power consumption,
SDIO can be used to connect components such as Wi-Fi and FM radio peripheral
chips to the main processor.</p>
<section id="GUID-82B34422-2F2D-4D1E-860A-556FEB7FF41B"><title>Required background</title><p>You
must have an understanding of SD card before using SDIO. </p></section>
<section id="GUID-D5194E78-3B55-40C9-A832-7E24C2CC43D3">       <title>Architecture</title><fig id="GUID-00983E3C-72BE-40EC-9F93-216741F00CD6">
<title>SDIO Architecture</title>
<image href="GUID-A819DE06-7B00-4643-9D3E-EFE14132981C_d0e99133_href.png" placement="inline"/>
</fig>           </section>
<section id="GUID-CF3292E0-0BF4-4FC2-9253-D052AF89AC1E"><title>Description</title><p>The
SDIO is divided into key modules described below.</p><ul>
<li><p><i>Memory card</i> performs the SD or the MMC card operations. It registers
the card driver, initializes the card, and sets permissions for the read and
write operations</p></li>
</ul><ul>
<li><p><i>SDIO Host controller</i> is the most important module in the SDIO
architecture. It has a driver that allows card initialization, bus width settings,
clock frequency setting, sending and receiving of commands and SDIO interrupt
handling.</p></li>
</ul><ul>
<li><p><i>General Card Functions</i> contains functions that are useful during
the development of other card drivers. The module supplies the read/write
SDIO/SD/MMC card register operations as well as select/deselect card, read
card status and reset card procedures.</p></li>
</ul></section>
<section id="GUID-19CA14BB-BE60-4063-BB68-E960357D2C96"><title>Key Concepts</title><ul>
<li><p><b>SDIO Interrupts:</b> SDIO Interrupts are level-sensitive interrupts.
They communicate with the host through the SDIO line.  The signal is held
active until the host acknowledges the interrupt through some function unique
I/O operation.</p></li>
</ul><ul>
<li><p><b>SDIO Class Driver:</b> SDIO Driver supports the SDIO Host Controller.
The driver includes functions such as initialization, bus settings, clock
frequency setting, sending and receiving of commands, and SDIO interrupt handling.</p></li>
</ul><ul>
<li><p><b>SDIO card controller:</b> SDIO card protocol is a super-set of the
SD card protocol. The SDIO Card Controller shares some of its functionality
with the SD controller. The Symbian platform SDIO card controller is implemented
as a set of SDIO card classes, each of which is derived from the corresponding
SD card classes. The SDIO card controller provides support for SDIO cards
within the E32 kernel. It manages access to the SDIO card hardware interface
and provides an API for class drivers to access SDIO card functions. </p> </li>
</ul></section>
<section id="GUID-069B6CC3-9811-4BD8-869E-596BC1C0313F"><title>API summary</title><p>This
API is used by the implementers of the class drivers.</p><table id="GUID-B0DC509E-F1BC-450F-9BBE-C3FFF85AEB06">
<tgroup cols="2"><colspec colname="col1"/><colspec colname="col2"/>
<thead>
<row>
<entry valign="top"><p>API names </p></entry>
<entry valign="top"><p>Description</p></entry>
</row>
</thead>
<tbody>
<row>
<entry><p><xref href="GUID-F84A87F1-7DDD-37D7-A936-EB5DEC4F4740.dita"><apiname>DSDIOSTACK</apiname></xref></p></entry>
<entry><p>The stack can handle multiple outstanding requests simultaneously.
 It schedules these requests onto the bus, thereby putting the appropriate
card into transfer state automatically and running the appropriate state machine
function. </p></entry>
</row>
<row>
<entry><p><xref href="GUID-8E2210D1-CCE7-34B3-9D19-B7F79481CD67.dita"><apiname>TSDIOCARD</apiname></xref></p></entry>
<entry><p>This class owns the I/O function objects. It provides access to
an I/O function object provided through the <codeph>IOFunction()</codeph>,
which returns a pointer to the object concerned. </p></entry>
</row>
<row>
<entry><p><xref href="GUID-87D13F47-6680-34DD-956E-AB2A8C21AE19.dita"><apiname>DSDIOSESSION</apiname></xref></p></entry>
<entry><p>This contains functions for setting up a session object to perform
SDIO specific command sequences such as initialization, scheduling, invoking
and submitting the session.</p></entry>
</row>
<row>
<entry><p><xref href="GUID-522BF42B-1A3F-3FF7-B227-39AC1A285C10.dita"><apiname>DSDIOREGINTERFACE</apiname></xref></p></entry>
<entry><p>This contains the APIs that are used most frequently
during the implementation of the SDIO class drivers. It contains member functions
that allow single-byte read or write operations to a given register address
together with the corresponding ones for multi-byte access</p></entry>
</row>
<row>
<entry><p><xref href="GUID-7CC8E73B-0656-3ABD-AA70-6C309E74C035.dita"><apiname>TSDIOFUNCTION</apiname></xref></p></entry>
<entry><p>This contains member functions for access and control of function-specific
features such as function enable, function ready. It also has the member functions
for access and control of FBR features such as CSA access and function block
size. </p></entry>
</row>
<row>
<entry><p><xref href="GUID-0CABFFC3-743C-35EB-99E0-1B0452E4A42B.dita"><apiname>TSDIOINTERRUPT</apiname></xref></p></entry>
<entry><p>This contains the usual interrupt object member functions. It provides
the abstraction of a per-function interrupt even though each function actually
shares a single interrupt request signal on the card. </p></entry>
</row>
</tbody>
</tgroup>
</table></section>
</conbody></concept>