Week 12 contribution of PDK documentation_content. See release notes for details. Fixes Bug 2054, Bug 1583, Bug 381, Bug 390, Bug 463, Bug 1897, Bug 344, Bug 1319, Bug 394, Bug 1520, Bug 1522, Bug 1892"
<?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>SDIO is an I/O interface based on the SD card standard. SDIO cards are
used to fill a growing demand for multimedia content. It is an interface that
extends the functionality of devices with an SD card slot. This kind of combination
is usually found in devices that can be ported easily and make heavy demands
on memory.</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_d0e318193_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 as shown in the diagram above and described
below.</p><ul>
<li><p>Memory card performs the SD or the MMC card operations. It registers
the card driver, initialize the card, and sets permissions for the read and
write operations</p></li>
</ul><ul>
<li><p>SDIO Host controller 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>General Card Functions module 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 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><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 requests outstanding simultaneously.
It schedules these requests onto the bus, there by putting the appropriate
card in 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
the appropriate I/O function object that is provided through the IOFunction()
that 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 API that are used most frequently during the implementation
of the SDIO 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>