MCUXpresso_LPC55S69/docs/MCUXpresso SDK API Referenc.../a00039.html

1436 lines
100 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>MCUXpresso SDK API Reference Manual: MMC Card Driver</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="fs_logo.gif"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">MCUXpresso SDK API Reference Manual
&#160;<span id="projectnumber">Rev 2.15.000</span>
</div>
<div id="projectbrief">NXP Semiconductors</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>API&#160;Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('a00039.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> </div>
<div class="headertitle">
<div class="title">MMC Card Driver<div class="ingroups"><a class="el" href="a00272.html">Cards: Secure Digital Card/Embedded MultiMedia Card/SDIO Card</a></div></div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<p>The MMCCARD driver provide card initialization/read/write/erase interface. </p>
<h1><a class="anchor" id="MMCCardOperation"></a>
MMC CARD Operation</h1>
<h2>error log support</h2>
<p>Not support yet </p>
<h2>User configuable</h2>
<h2>Board dependency</h2>
<h2>Mutual exclusive access support for RTOS</h2>
<p>MMCCARD driver has added mutual exclusive access support for init/deinit/write/read/erase function. Please note that the card init function will create the mutex lock dynamically by default, so to avoid the mutex create redundantly, application must follow bellow sequence for card re-initialization. </p>
<div class="fragment"><div class="line"><a class="code" href="a00039.html#gab67cdb5a21909356c4abadf3a4d8b40c">MMC_Deinit</a>(card);<span class="comment">/* This function will destroy the created mutex */</span></div>
<div class="line"><a class="code" href="a00039.html#ga03f006d98725caeee8162ebb1250ff86">MMC_Init</a>(card);</div>
</div><!-- fragment --><h2>Typical use case</h2>
<p>Refer to the driver examples codes located at &lt;SDK_ROOT&gt;/boards/&lt;BOARD&gt;/sdmmc_examples/ </p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:a00372"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#a00372">_mmc_usr_param</a></td></tr>
<tr class="memdesc:a00372"><td class="mdescLeft">&#160;</td><td class="mdescRight">card user parameter <a href="a00039.html#a00372">More...</a><br/></td></tr>
<tr class="separator:a00372"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a00367"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#a00367">_mmc_card</a></td></tr>
<tr class="memdesc:a00367"><td class="mdescLeft">&#160;</td><td class="mdescRight">mmc card state <a href="a00039.html#a00367">More...</a><br/></td></tr>
<tr class="separator:a00367"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:gaa853e6ed145fdde29cb8277c789ab5cb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#gaa853e6ed145fdde29cb8277c789ab5cb">FSL_MMC_DRIVER_VERSION</a>&#160;&#160;&#160;(<a class="el" href="a00242.html#ga812138aa3315b0c6953c1a26130bcc37">MAKE_VERSION</a>(2U, 5U, 0U)) /*2.5.0*/</td></tr>
<tr class="memdesc:gaa853e6ed145fdde29cb8277c789ab5cb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Middleware mmc version. <a href="#gaa853e6ed145fdde29cb8277c789ab5cb">More...</a><br/></td></tr>
<tr class="separator:gaa853e6ed145fdde29cb8277c789ab5cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:gacd8cb5bb52d6eb3d5b5042bc887dbe47"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gacd8cb5bb52d6eb3d5b5042bc887dbe47"></a>
typedef enum <a class="el" href="a00039.html#gaf0d5a316617bfdec3b93cd29228b5bb7">_mmc_sleep_awake</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#gacd8cb5bb52d6eb3d5b5042bc887dbe47">mmc_sleep_awake_t</a></td></tr>
<tr class="memdesc:gacd8cb5bb52d6eb3d5b5042bc887dbe47"><td class="mdescLeft">&#160;</td><td class="mdescRight">mmccard sleep/awake state <br/></td></tr>
<tr class="separator:gacd8cb5bb52d6eb3d5b5042bc887dbe47"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5615d27683e82898b6d4526eff8efcd8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga5615d27683e82898b6d4526eff8efcd8"></a>
typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#ga5615d27683e82898b6d4526eff8efcd8">mmc_io_strength_t</a> )(uint32_t busFreq)</td></tr>
<tr class="memdesc:ga5615d27683e82898b6d4526eff8efcd8"><td class="mdescLeft">&#160;</td><td class="mdescRight">card io strength control <br/></td></tr>
<tr class="separator:ga5615d27683e82898b6d4526eff8efcd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacfc78ba35ecb16844db02e696445c4ee"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gacfc78ba35ecb16844db02e696445c4ee"></a>
typedef struct <a class="el" href="a00039.html#a00372">_mmc_usr_param</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#gacfc78ba35ecb16844db02e696445c4ee">mmc_usr_param_t</a></td></tr>
<tr class="memdesc:gacfc78ba35ecb16844db02e696445c4ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">card user parameter <br/></td></tr>
<tr class="separator:gacfc78ba35ecb16844db02e696445c4ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaaf83cf346c0bc8bad98979da67156257"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a00039.html#a00367">_mmc_card</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a></td></tr>
<tr class="memdesc:gaaf83cf346c0bc8bad98979da67156257"><td class="mdescLeft">&#160;</td><td class="mdescRight">mmc card state <a href="#gaaf83cf346c0bc8bad98979da67156257">More...</a><br/></td></tr>
<tr class="separator:gaaf83cf346c0bc8bad98979da67156257"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:ga2f80701c36e79c0640d91c788feee0b3"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom">{ <br/>
&#160;&#160;<a class="el" href="a00039.html#gga2f80701c36e79c0640d91c788feee0b3a0f2e16ba804bfabd3c81fee5fa780c95">kMMC_SupportHighSpeed26MHZFlag</a> = (1U &lt;&lt; 0U),
<br/>
&#160;&#160;<a class="el" href="a00039.html#gga2f80701c36e79c0640d91c788feee0b3adb778db370818747d81df90b23298bf1">kMMC_SupportHighSpeed52MHZFlag</a> = (1U &lt;&lt; 1U),
<br/>
&#160;&#160;<a class="el" href="a00039.html#gga2f80701c36e79c0640d91c788feee0b3af873861eb6356bd1a236d4741d3bd382">kMMC_SupportHighSpeedDDR52MHZ180V300VFlag</a> = (1 &lt;&lt; 2U),
<br/>
&#160;&#160;<a class="el" href="a00039.html#gga2f80701c36e79c0640d91c788feee0b3ab26ad5455afddab2dd5909435243d8de">kMMC_SupportHighSpeedDDR52MHZ120VFlag</a> = (1 &lt;&lt; 3U),
<br/>
&#160;&#160;<a class="el" href="a00039.html#gga2f80701c36e79c0640d91c788feee0b3a39b3765119b6f0134b9c3d00e78ccdc3">kMMC_SupportHS200200MHZ180VFlag</a> = (1 &lt;&lt; 4U),
<br/>
&#160;&#160;<a class="el" href="a00039.html#gga2f80701c36e79c0640d91c788feee0b3a7875676a63cb3e3f3bce09d60b12cf88">kMMC_SupportHS200200MHZ120VFlag</a> = (1 &lt;&lt; 5U),
<br/>
&#160;&#160;<a class="el" href="a00039.html#gga2f80701c36e79c0640d91c788feee0b3a5b1fc45cb6e3fee016907e5d13f1ad83">kMMC_SupportHS400DDR200MHZ180VFlag</a> = (1 &lt;&lt; 6U),
<br/>
&#160;&#160;<a class="el" href="a00039.html#gga2f80701c36e79c0640d91c788feee0b3af2976472059a8701c26ed30e0f28c5fa">kMMC_SupportHS400DDR200MHZ120VFlag</a> = (1 &lt;&lt; 7U),
<br/>
&#160;&#160;<a class="el" href="a00039.html#gga2f80701c36e79c0640d91c788feee0b3a067279b27baf58ed3266df38e848b128">kMMC_SupportHighCapacityFlag</a> = (1U &lt;&lt; 8U),
<br/>
&#160;&#160;<a class="el" href="a00039.html#gga2f80701c36e79c0640d91c788feee0b3ac18882ad0cc699401c3e3483633ed77b">kMMC_SupportAlternateBootFlag</a> = (1U &lt;&lt; 9U),
<br/>
&#160;&#160;<a class="el" href="a00039.html#gga2f80701c36e79c0640d91c788feee0b3af9baef828e6536d54f64295e1ce57548">kMMC_SupportDDRBootFlag</a> = (1U &lt;&lt; 10U),
<br/>
&#160;&#160;<a class="el" href="a00039.html#gga2f80701c36e79c0640d91c788feee0b3a57438a043537958e8324400ce3788ed0">kMMC_SupportHighSpeedBootFlag</a> = (1U &lt;&lt; 11U),
<br/>
&#160;&#160;<a class="el" href="a00039.html#gga2f80701c36e79c0640d91c788feee0b3a39d546b05b2c725a822419330606bba5">kMMC_SupportEnhanceHS400StrobeFlag</a> = (1U &lt;&lt; 12U)
<br/>
}</td></tr>
<tr class="memdesc:ga2f80701c36e79c0640d91c788feee0b3"><td class="mdescLeft">&#160;</td><td class="mdescRight">MMC card flags. <a href="a00039.html#ga2f80701c36e79c0640d91c788feee0b3">More...</a><br/></td></tr>
<tr class="separator:ga2f80701c36e79c0640d91c788feee0b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf0d5a316617bfdec3b93cd29228b5bb7"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#gaf0d5a316617bfdec3b93cd29228b5bb7">_mmc_sleep_awake</a> { <br/>
&#160;&#160;<a class="el" href="a00039.html#ggaf0d5a316617bfdec3b93cd29228b5bb7a766aba45b5704265a1dfdf8d8d1ef5b2">kMMC_Sleep</a> = 1U,
<br/>
&#160;&#160;<a class="el" href="a00039.html#ggaf0d5a316617bfdec3b93cd29228b5bb7a68ce50ee0ddf66b369033f79da5328e9">kMMC_Awake</a> = 0U
<br/>
}</td></tr>
<tr class="memdesc:gaf0d5a316617bfdec3b93cd29228b5bb7"><td class="mdescLeft">&#160;</td><td class="mdescRight">mmccard sleep/awake state <a href="a00039.html#gaf0d5a316617bfdec3b93cd29228b5bb7">More...</a><br/></td></tr>
<tr class="separator:gaf0d5a316617bfdec3b93cd29228b5bb7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
MMCCARD Function</h2></td></tr>
<tr class="memitem:ga03f006d98725caeee8162ebb1250ff86"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#ga03f006d98725caeee8162ebb1250ff86">MMC_Init</a> (<a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *card)</td></tr>
<tr class="memdesc:ga03f006d98725caeee8162ebb1250ff86"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the MMC card and host. <a href="#ga03f006d98725caeee8162ebb1250ff86">More...</a><br/></td></tr>
<tr class="separator:ga03f006d98725caeee8162ebb1250ff86"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab67cdb5a21909356c4abadf3a4d8b40c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#gab67cdb5a21909356c4abadf3a4d8b40c">MMC_Deinit</a> (<a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *card)</td></tr>
<tr class="memdesc:gab67cdb5a21909356c4abadf3a4d8b40c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deinitializes the card and host. <a href="#gab67cdb5a21909356c4abadf3a4d8b40c">More...</a><br/></td></tr>
<tr class="separator:gab67cdb5a21909356c4abadf3a4d8b40c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9adb1349b4f9415c631e94a375bc7db0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#ga9adb1349b4f9415c631e94a375bc7db0">MMC_CardInit</a> (<a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *card)</td></tr>
<tr class="memdesc:ga9adb1349b4f9415c631e94a375bc7db0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the card. <a href="#ga9adb1349b4f9415c631e94a375bc7db0">More...</a><br/></td></tr>
<tr class="separator:ga9adb1349b4f9415c631e94a375bc7db0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga83e4e9e390a6c817f06999bbf887a3b3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#ga83e4e9e390a6c817f06999bbf887a3b3">MMC_CardDeinit</a> (<a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *card)</td></tr>
<tr class="memdesc:ga83e4e9e390a6c817f06999bbf887a3b3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deinitializes the card. <a href="#ga83e4e9e390a6c817f06999bbf887a3b3">More...</a><br/></td></tr>
<tr class="separator:ga83e4e9e390a6c817f06999bbf887a3b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga44f98e6d4caefbac4ee0237890f651e6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#ga44f98e6d4caefbac4ee0237890f651e6">MMC_HostInit</a> (<a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *card)</td></tr>
<tr class="memdesc:ga44f98e6d4caefbac4ee0237890f651e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">initialize the host. <a href="#ga44f98e6d4caefbac4ee0237890f651e6">More...</a><br/></td></tr>
<tr class="separator:ga44f98e6d4caefbac4ee0237890f651e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga56005088e0e2a575190bf7829520c7f1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#ga56005088e0e2a575190bf7829520c7f1">MMC_HostDeinit</a> (<a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *card)</td></tr>
<tr class="memdesc:ga56005088e0e2a575190bf7829520c7f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deinitializes the host. <a href="#ga56005088e0e2a575190bf7829520c7f1">More...</a><br/></td></tr>
<tr class="separator:ga56005088e0e2a575190bf7829520c7f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga260f33fc882cd4eaef78f05ef9069fc9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#ga260f33fc882cd4eaef78f05ef9069fc9">MMC_HostDoReset</a> (<a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *card)</td></tr>
<tr class="memdesc:ga260f33fc882cd4eaef78f05ef9069fc9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Resets the host. <a href="#ga260f33fc882cd4eaef78f05ef9069fc9">More...</a><br/></td></tr>
<tr class="separator:ga260f33fc882cd4eaef78f05ef9069fc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4f61aee1889a7a09e6dea3735714b1ce"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#ga4f61aee1889a7a09e6dea3735714b1ce">MMC_HostReset</a> (<a class="el" href="a00053.html#a00415">SDMMCHOST_CONFIG</a> *host)</td></tr>
<tr class="memdesc:ga4f61aee1889a7a09e6dea3735714b1ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Resets the host. <a href="#ga4f61aee1889a7a09e6dea3735714b1ce">More...</a><br/></td></tr>
<tr class="separator:ga4f61aee1889a7a09e6dea3735714b1ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5231adac523a9314ba4aceb89e67c492"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#ga5231adac523a9314ba4aceb89e67c492">MMC_SetCardPower</a> (<a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *card, bool enable)</td></tr>
<tr class="memdesc:ga5231adac523a9314ba4aceb89e67c492"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets card power. <a href="#ga5231adac523a9314ba4aceb89e67c492">More...</a><br/></td></tr>
<tr class="separator:ga5231adac523a9314ba4aceb89e67c492"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac08db377dfecee284aedd579d445999a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#gac08db377dfecee284aedd579d445999a">MMC_CheckReadOnly</a> (<a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *card)</td></tr>
<tr class="memdesc:gac08db377dfecee284aedd579d445999a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if the card is read-only. <a href="#gac08db377dfecee284aedd579d445999a">More...</a><br/></td></tr>
<tr class="separator:gac08db377dfecee284aedd579d445999a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga60a99fbb416b500761d668779ebe01f7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#ga60a99fbb416b500761d668779ebe01f7">MMC_ReadBlocks</a> (<a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *card, uint8_t *buffer, uint32_t startBlock, uint32_t blockCount)</td></tr>
<tr class="memdesc:ga60a99fbb416b500761d668779ebe01f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads data blocks from the card. <a href="#ga60a99fbb416b500761d668779ebe01f7">More...</a><br/></td></tr>
<tr class="separator:ga60a99fbb416b500761d668779ebe01f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga504ade2cd3eeb1891913271521bc9562"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#ga504ade2cd3eeb1891913271521bc9562">MMC_WriteBlocks</a> (<a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *card, const uint8_t *buffer, uint32_t startBlock, uint32_t blockCount)</td></tr>
<tr class="memdesc:ga504ade2cd3eeb1891913271521bc9562"><td class="mdescLeft">&#160;</td><td class="mdescRight">Writes data blocks to the card. <a href="#ga504ade2cd3eeb1891913271521bc9562">More...</a><br/></td></tr>
<tr class="separator:ga504ade2cd3eeb1891913271521bc9562"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga90ca5cb83516ede64e9af6ece3439bab"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#ga90ca5cb83516ede64e9af6ece3439bab">MMC_EraseGroups</a> (<a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *card, uint32_t startGroup, uint32_t endGroup)</td></tr>
<tr class="memdesc:ga90ca5cb83516ede64e9af6ece3439bab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Erases groups of the card. <a href="#ga90ca5cb83516ede64e9af6ece3439bab">More...</a><br/></td></tr>
<tr class="separator:ga90ca5cb83516ede64e9af6ece3439bab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad36b22249e056b0dda1da583a5530d61"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#gad36b22249e056b0dda1da583a5530d61">MMC_SelectPartition</a> (<a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *card, <a class="el" href="a00038.html#ga7b803602e0fe1ea25dc7ae0dd25566f6">mmc_access_partition_t</a> partitionNumber)</td></tr>
<tr class="memdesc:gad36b22249e056b0dda1da583a5530d61"><td class="mdescLeft">&#160;</td><td class="mdescRight">Selects the partition to access. <a href="#gad36b22249e056b0dda1da583a5530d61">More...</a><br/></td></tr>
<tr class="separator:gad36b22249e056b0dda1da583a5530d61"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafd26b8b19b85f99d23175bfb3ddf6ff0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#gafd26b8b19b85f99d23175bfb3ddf6ff0">MMC_SetBootConfig</a> (<a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *card, const <a class="el" href="a00038.html#ga7342b4dea5ead99eb2a67644e4afa40e">mmc_boot_config_t</a> *config)</td></tr>
<tr class="memdesc:gafd26b8b19b85f99d23175bfb3ddf6ff0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configures the boot activity of the card. <a href="#gafd26b8b19b85f99d23175bfb3ddf6ff0">More...</a><br/></td></tr>
<tr class="separator:gafd26b8b19b85f99d23175bfb3ddf6ff0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga86dbfbd824a0f5243a960d343e3f9176"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#ga86dbfbd824a0f5243a960d343e3f9176">MMC_StartBoot</a> (<a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *card, const <a class="el" href="a00038.html#ga7342b4dea5ead99eb2a67644e4afa40e">mmc_boot_config_t</a> *mmcConfig, uint8_t *buffer, sdmmchost_boot_config_t *hostConfig)</td></tr>
<tr class="memdesc:ga86dbfbd824a0f5243a960d343e3f9176"><td class="mdescLeft">&#160;</td><td class="mdescRight">MMC card start boot. <a href="#ga86dbfbd824a0f5243a960d343e3f9176">More...</a><br/></td></tr>
<tr class="separator:ga86dbfbd824a0f5243a960d343e3f9176"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9b18b799d48e0b39672d89d5f6148548"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#ga9b18b799d48e0b39672d89d5f6148548">MMC_SetBootConfigWP</a> (<a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *card, uint8_t wp)</td></tr>
<tr class="memdesc:ga9b18b799d48e0b39672d89d5f6148548"><td class="mdescLeft">&#160;</td><td class="mdescRight">MMC card set boot configuration write protect. <a href="#ga9b18b799d48e0b39672d89d5f6148548">More...</a><br/></td></tr>
<tr class="separator:ga9b18b799d48e0b39672d89d5f6148548"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1e27e4af5916f5f501cd1d9912a42643"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#ga1e27e4af5916f5f501cd1d9912a42643">MMC_ReadBootData</a> (<a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *card, uint8_t *buffer, sdmmchost_boot_config_t *hostConfig)</td></tr>
<tr class="memdesc:ga1e27e4af5916f5f501cd1d9912a42643"><td class="mdescLeft">&#160;</td><td class="mdescRight">MMC card continuous read boot data. <a href="#ga1e27e4af5916f5f501cd1d9912a42643">More...</a><br/></td></tr>
<tr class="separator:ga1e27e4af5916f5f501cd1d9912a42643"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1976bb2986bd2dd53de05101cde394a7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#ga1976bb2986bd2dd53de05101cde394a7">MMC_StopBoot</a> (<a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *card, uint32_t bootMode)</td></tr>
<tr class="memdesc:ga1976bb2986bd2dd53de05101cde394a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">MMC card stop boot mode. <a href="#ga1976bb2986bd2dd53de05101cde394a7">More...</a><br/></td></tr>
<tr class="separator:ga1976bb2986bd2dd53de05101cde394a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4e212f50660aa5fd7ff36a9232fecf93"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#ga4e212f50660aa5fd7ff36a9232fecf93">MMC_SetBootPartitionWP</a> (<a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *card, <a class="el" href="a00038.html#gaf3390e9899ee7afbab1a66aeaea99ba6">mmc_boot_partition_wp_t</a> bootPartitionWP)</td></tr>
<tr class="memdesc:ga4e212f50660aa5fd7ff36a9232fecf93"><td class="mdescLeft">&#160;</td><td class="mdescRight">MMC card set boot partition write protect. <a href="#ga4e212f50660aa5fd7ff36a9232fecf93">More...</a><br/></td></tr>
<tr class="separator:ga4e212f50660aa5fd7ff36a9232fecf93"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab41ad4bb9f654d8cd213effffcbbae06"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#gab41ad4bb9f654d8cd213effffcbbae06">MMC_EnableCacheControl</a> (<a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *card, bool enable)</td></tr>
<tr class="memdesc:gab41ad4bb9f654d8cd213effffcbbae06"><td class="mdescLeft">&#160;</td><td class="mdescRight">MMC card cache control function. <a href="#gab41ad4bb9f654d8cd213effffcbbae06">More...</a><br/></td></tr>
<tr class="separator:gab41ad4bb9f654d8cd213effffcbbae06"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga61bd93105cac69d83956086927d30dce"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#ga61bd93105cac69d83956086927d30dce">MMC_FlushCache</a> (<a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *card)</td></tr>
<tr class="memdesc:ga61bd93105cac69d83956086927d30dce"><td class="mdescLeft">&#160;</td><td class="mdescRight">MMC card cache flush function. <a href="#ga61bd93105cac69d83956086927d30dce">More...</a><br/></td></tr>
<tr class="separator:ga61bd93105cac69d83956086927d30dce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac8ecc09f078dc2e7e8f85eb24d939ed0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#gac8ecc09f078dc2e7e8f85eb24d939ed0">MMC_SetSleepAwake</a> (<a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *card, <a class="el" href="a00039.html#gacd8cb5bb52d6eb3d5b5042bc887dbe47">mmc_sleep_awake_t</a> state)</td></tr>
<tr class="memdesc:gac8ecc09f078dc2e7e8f85eb24d939ed0"><td class="mdescLeft">&#160;</td><td class="mdescRight">MMC sets card sleep awake state. <a href="#gac8ecc09f078dc2e7e8f85eb24d939ed0">More...</a><br/></td></tr>
<tr class="separator:gac8ecc09f078dc2e7e8f85eb24d939ed0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga255bea62892cc6c3859caf2b1a57e24e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#ga255bea62892cc6c3859caf2b1a57e24e">MMC_PollingCardStatusBusy</a> (<a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *card, bool checkStatus, uint32_t timeoutMs)</td></tr>
<tr class="memdesc:ga255bea62892cc6c3859caf2b1a57e24e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Polling card idle status. <a href="#ga255bea62892cc6c3859caf2b1a57e24e">More...</a><br/></td></tr>
<tr class="separator:ga255bea62892cc6c3859caf2b1a57e24e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<hr/><h2 class="groupheader">Data Structure Documentation</h2>
<a name="a00372" id="a00372"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct _mmc_usr_param</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"></div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:a2492f6e7b46c91eb978c8bfb6d109c68"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2492f6e7b46c91eb978c8bfb6d109c68"></a>
<a class="el" href="a00039.html#ga5615d27683e82898b6d4526eff8efcd8">mmc_io_strength_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#a2492f6e7b46c91eb978c8bfb6d109c68">ioStrength</a></td></tr>
<tr class="memdesc:a2492f6e7b46c91eb978c8bfb6d109c68"><td class="mdescLeft">&#160;</td><td class="mdescRight">switch sd io strength <br/></td></tr>
<tr class="separator:a2492f6e7b46c91eb978c8bfb6d109c68"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a008dd91bb763e5383059eea046c45ac0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a008dd91bb763e5383059eea046c45ac0"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#a008dd91bb763e5383059eea046c45ac0">maxFreq</a></td></tr>
<tr class="memdesc:a008dd91bb763e5383059eea046c45ac0"><td class="mdescLeft">&#160;</td><td class="mdescRight">board support maximum frequency <br/></td></tr>
<tr class="separator:a008dd91bb763e5383059eea046c45ac0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab30eb27aa2f2a59815adfb8ede7db78e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab30eb27aa2f2a59815adfb8ede7db78e"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#ab30eb27aa2f2a59815adfb8ede7db78e">capability</a></td></tr>
<tr class="memdesc:ab30eb27aa2f2a59815adfb8ede7db78e"><td class="mdescLeft">&#160;</td><td class="mdescRight">board capability flag <br/></td></tr>
<tr class="separator:ab30eb27aa2f2a59815adfb8ede7db78e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div>
</div>
<a name="a00367" id="a00367"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct _mmc_card</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"><p>Defines the card structure including the necessary fields to identify and describe the card. </p>
</div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:a30cc4dbbaa472aa5d1100d51d6c15c89"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a30cc4dbbaa472aa5d1100d51d6c15c89"></a>
<a class="el" href="a00053.html#ga3420a6f07f4698ce018b4020e720b9dc">sdmmchost_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#a30cc4dbbaa472aa5d1100d51d6c15c89">host</a></td></tr>
<tr class="memdesc:a30cc4dbbaa472aa5d1100d51d6c15c89"><td class="mdescLeft">&#160;</td><td class="mdescRight">Host information. <br/></td></tr>
<tr class="separator:a30cc4dbbaa472aa5d1100d51d6c15c89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac618738b6922f5b78e35a503d9cb4766"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac618738b6922f5b78e35a503d9cb4766"></a>
<a class="el" href="a00039.html#gacfc78ba35ecb16844db02e696445c4ee">mmc_usr_param_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#ac618738b6922f5b78e35a503d9cb4766">usrParam</a></td></tr>
<tr class="memdesc:ac618738b6922f5b78e35a503d9cb4766"><td class="mdescLeft">&#160;</td><td class="mdescRight">user parameter <br/></td></tr>
<tr class="separator:ac618738b6922f5b78e35a503d9cb4766"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d825ef388f8ffc8999970cdc5c9f993"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7d825ef388f8ffc8999970cdc5c9f993"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#a7d825ef388f8ffc8999970cdc5c9f993">isHostReady</a></td></tr>
<tr class="memdesc:a7d825ef388f8ffc8999970cdc5c9f993"><td class="mdescLeft">&#160;</td><td class="mdescRight">Use this flag to indicate if host re-init needed or not. <br/></td></tr>
<tr class="separator:a7d825ef388f8ffc8999970cdc5c9f993"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a96cacb1bff48c1038b9a652914a8e368"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#a96cacb1bff48c1038b9a652914a8e368">noInteralAlign</a></td></tr>
<tr class="memdesc:a96cacb1bff48c1038b9a652914a8e368"><td class="mdescLeft">&#160;</td><td class="mdescRight">Use this flag to disable sdmmc align. <a href="#a96cacb1bff48c1038b9a652914a8e368">More...</a><br/></td></tr>
<tr class="separator:a96cacb1bff48c1038b9a652914a8e368"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb055f60fd033bf343b7e5ff800cb3f0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acb055f60fd033bf343b7e5ff800cb3f0"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#acb055f60fd033bf343b7e5ff800cb3f0">busClock_Hz</a></td></tr>
<tr class="memdesc:acb055f60fd033bf343b7e5ff800cb3f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">MMC bus clock united in Hz. <br/></td></tr>
<tr class="separator:acb055f60fd033bf343b7e5ff800cb3f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a113333f1f137500a4eb228fc472ae1b6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a113333f1f137500a4eb228fc472ae1b6"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#a113333f1f137500a4eb228fc472ae1b6">relativeAddress</a></td></tr>
<tr class="memdesc:a113333f1f137500a4eb228fc472ae1b6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Relative address of the card. <br/></td></tr>
<tr class="separator:a113333f1f137500a4eb228fc472ae1b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a65ed393e3ecfc128c76f5b8430ec67d5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a65ed393e3ecfc128c76f5b8430ec67d5"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#a65ed393e3ecfc128c76f5b8430ec67d5">enablePreDefinedBlockCount</a></td></tr>
<tr class="memdesc:a65ed393e3ecfc128c76f5b8430ec67d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable PRE-DEFINED block count when read/write. <br/></td></tr>
<tr class="separator:a65ed393e3ecfc128c76f5b8430ec67d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb4fedfe62837d1fbf732c31f892abf6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acb4fedfe62837d1fbf732c31f892abf6"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#acb4fedfe62837d1fbf732c31f892abf6">flags</a></td></tr>
<tr class="memdesc:acb4fedfe62837d1fbf732c31f892abf6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Capability flag in <a class="el" href="a00039.html#_mmc_card_flag">_mmc_card_flag</a>. <br/></td></tr>
<tr class="separator:acb4fedfe62837d1fbf732c31f892abf6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad6c1f6f1a0eee9ef98cd025fca7574ee"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad6c1f6f1a0eee9ef98cd025fca7574ee"></a>
uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#ad6c1f6f1a0eee9ef98cd025fca7574ee">internalBuffer</a> [<a class="el" href="a00038.html#ga4dd122ccc71f9eef692acf27d5f851c3">FSL_SDMMC_CARD_INTERNAL_BUFFER_SIZE</a>]</td></tr>
<tr class="memdesc:ad6c1f6f1a0eee9ef98cd025fca7574ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">raw buffer used for mmc driver internal <br/></td></tr>
<tr class="separator:ad6c1f6f1a0eee9ef98cd025fca7574ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae64eb8c922a66132a3fe3fee85c02272"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae64eb8c922a66132a3fe3fee85c02272"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#ae64eb8c922a66132a3fe3fee85c02272">ocr</a></td></tr>
<tr class="memdesc:ae64eb8c922a66132a3fe3fee85c02272"><td class="mdescLeft">&#160;</td><td class="mdescRight">Raw OCR content. <br/></td></tr>
<tr class="separator:ae64eb8c922a66132a3fe3fee85c02272"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a29214263836c7926601537413cd36326"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a29214263836c7926601537413cd36326"></a>
<a class="el" href="a00038.html#ga72a6bb854006c54962116e667c60c63f">mmc_cid_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#a29214263836c7926601537413cd36326">cid</a></td></tr>
<tr class="memdesc:a29214263836c7926601537413cd36326"><td class="mdescLeft">&#160;</td><td class="mdescRight">CID. <br/></td></tr>
<tr class="separator:a29214263836c7926601537413cd36326"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a21da22a7211b5c9ec8eaa60fe1ede2de"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a21da22a7211b5c9ec8eaa60fe1ede2de"></a>
<a class="el" href="a00038.html#ga13b8b60b20ca6995e0474a3d6a9e9dbd">mmc_csd_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#a21da22a7211b5c9ec8eaa60fe1ede2de">csd</a></td></tr>
<tr class="memdesc:a21da22a7211b5c9ec8eaa60fe1ede2de"><td class="mdescLeft">&#160;</td><td class="mdescRight">CSD. <br/></td></tr>
<tr class="separator:a21da22a7211b5c9ec8eaa60fe1ede2de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff5e6eaae4ea2928f46c643efc688db3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aff5e6eaae4ea2928f46c643efc688db3"></a>
<a class="el" href="a00038.html#ga43feed348af170448a892a17088e8e81">mmc_extended_csd_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#aff5e6eaae4ea2928f46c643efc688db3">extendedCsd</a></td></tr>
<tr class="memdesc:aff5e6eaae4ea2928f46c643efc688db3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Extended CSD. <br/></td></tr>
<tr class="separator:aff5e6eaae4ea2928f46c643efc688db3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a832a43eb5725c93de422279af52d5b98"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a832a43eb5725c93de422279af52d5b98"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#a832a43eb5725c93de422279af52d5b98">blockSize</a></td></tr>
<tr class="memdesc:a832a43eb5725c93de422279af52d5b98"><td class="mdescLeft">&#160;</td><td class="mdescRight">Card block size. <br/></td></tr>
<tr class="separator:a832a43eb5725c93de422279af52d5b98"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b0e08b35289ef2fba0ab6cb3c4caa14"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b0e08b35289ef2fba0ab6cb3c4caa14"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#a7b0e08b35289ef2fba0ab6cb3c4caa14">userPartitionBlocks</a></td></tr>
<tr class="memdesc:a7b0e08b35289ef2fba0ab6cb3c4caa14"><td class="mdescLeft">&#160;</td><td class="mdescRight">Card total block number in user partition. <br/></td></tr>
<tr class="separator:a7b0e08b35289ef2fba0ab6cb3c4caa14"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a2f7983025d764ea428f1a5f64ecea6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9a2f7983025d764ea428f1a5f64ecea6"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#a9a2f7983025d764ea428f1a5f64ecea6">bootPartitionBlocks</a></td></tr>
<tr class="memdesc:a9a2f7983025d764ea428f1a5f64ecea6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Boot partition size united as block size. <br/></td></tr>
<tr class="separator:a9a2f7983025d764ea428f1a5f64ecea6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a952389c4583f24b75bf7104e92b65b05"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a952389c4583f24b75bf7104e92b65b05"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#a952389c4583f24b75bf7104e92b65b05">eraseGroupBlocks</a></td></tr>
<tr class="memdesc:a952389c4583f24b75bf7104e92b65b05"><td class="mdescLeft">&#160;</td><td class="mdescRight">Erase group size united as block size. <br/></td></tr>
<tr class="separator:a952389c4583f24b75bf7104e92b65b05"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac1d842eb7c4be3b01b812470b156a0c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aac1d842eb7c4be3b01b812470b156a0c"></a>
<a class="el" href="a00038.html#ga7b803602e0fe1ea25dc7ae0dd25566f6">mmc_access_partition_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#aac1d842eb7c4be3b01b812470b156a0c">currentPartition</a></td></tr>
<tr class="memdesc:aac1d842eb7c4be3b01b812470b156a0c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Current access partition. <br/></td></tr>
<tr class="separator:aac1d842eb7c4be3b01b812470b156a0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aea564024177a5f8b83715a4bea26a660"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aea564024177a5f8b83715a4bea26a660"></a>
<a class="el" href="a00038.html#ga337fafd8d68190dc7e6dacb513f6c7ff">mmc_voltage_window_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#aea564024177a5f8b83715a4bea26a660">hostVoltageWindowVCCQ</a></td></tr>
<tr class="memdesc:aea564024177a5f8b83715a4bea26a660"><td class="mdescLeft">&#160;</td><td class="mdescRight">application must set this value according to board specific <br/></td></tr>
<tr class="separator:aea564024177a5f8b83715a4bea26a660"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a34e7bbd988a33dda1eb9b08211b78688"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a34e7bbd988a33dda1eb9b08211b78688"></a>
<a class="el" href="a00038.html#ga337fafd8d68190dc7e6dacb513f6c7ff">mmc_voltage_window_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#a34e7bbd988a33dda1eb9b08211b78688">hostVoltageWindowVCC</a></td></tr>
<tr class="memdesc:a34e7bbd988a33dda1eb9b08211b78688"><td class="mdescLeft">&#160;</td><td class="mdescRight">application must set this value according to board specific <br/></td></tr>
<tr class="separator:a34e7bbd988a33dda1eb9b08211b78688"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb623ca3d3f3beb02143ebdf317bf255"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeb623ca3d3f3beb02143ebdf317bf255"></a>
<a class="el" href="a00038.html#gafe3ba5092c57add85bdafe8dfb57dd6d">mmc_high_speed_timing_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#aeb623ca3d3f3beb02143ebdf317bf255">busTiming</a></td></tr>
<tr class="memdesc:aeb623ca3d3f3beb02143ebdf317bf255"><td class="mdescLeft">&#160;</td><td class="mdescRight">indicates the current work timing mode <br/></td></tr>
<tr class="separator:aeb623ca3d3f3beb02143ebdf317bf255"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abeb01f8de945cd9efb47cd755b049028"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abeb01f8de945cd9efb47cd755b049028"></a>
<a class="el" href="a00038.html#gaecc3d9a151c8c7892e8b1adffa83aaf9">mmc_data_bus_width_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#abeb01f8de945cd9efb47cd755b049028">busWidth</a></td></tr>
<tr class="memdesc:abeb01f8de945cd9efb47cd755b049028"><td class="mdescLeft">&#160;</td><td class="mdescRight">indicates the current work bus width <br/></td></tr>
<tr class="separator:abeb01f8de945cd9efb47cd755b049028"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae2976750b8fba83778c78b2926e1edb9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae2976750b8fba83778c78b2926e1edb9"></a>
<a class="el" href="a00052.html#gab4b501fd4e841889183b1177e468eba9">sdmmc_osa_mutex_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#ae2976750b8fba83778c78b2926e1edb9">lock</a></td></tr>
<tr class="memdesc:ae2976750b8fba83778c78b2926e1edb9"><td class="mdescLeft">&#160;</td><td class="mdescRight">card access lock <br/></td></tr>
<tr class="separator:ae2976750b8fba83778c78b2926e1edb9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h4 class="groupheader">Field Documentation</h4>
<a class="anchor" id="a96cacb1bff48c1038b9a652914a8e368"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool _mmc_card::noInteralAlign</td>
</tr>
</table>
</div><div class="memdoc">
<p>If disabled, sdmmc will not make sure the data buffer address is word align, otherwise all the transfer are aligned to low level driver. </p>
</div>
</div>
</div>
</div>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="gaa853e6ed145fdde29cb8277c789ab5cb"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define FSL_MMC_DRIVER_VERSION&#160;&#160;&#160;(<a class="el" href="a00242.html#ga812138aa3315b0c6953c1a26130bcc37">MAKE_VERSION</a>(2U, 5U, 0U)) /*2.5.0*/</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a class="anchor" id="gaaf83cf346c0bc8bad98979da67156257"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="a00039.html#a00367">_mmc_card</a> <a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Defines the card structure including the necessary fields to identify and describe the card. </p>
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a class="anchor" id="ga2f80701c36e79c0640d91c788feee0b3"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">anonymous enum</td>
</tr>
</table>
</div><div class="memdoc">
<p><a class="anchor" id="_mmc_card_flag"></a></p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="gga2f80701c36e79c0640d91c788feee0b3a0f2e16ba804bfabd3c81fee5fa780c95"></a>kMMC_SupportHighSpeed26MHZFlag</em>&nbsp;</td><td class="fielddoc">
<p>Support high speed 26MHZ. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga2f80701c36e79c0640d91c788feee0b3adb778db370818747d81df90b23298bf1"></a>kMMC_SupportHighSpeed52MHZFlag</em>&nbsp;</td><td class="fielddoc">
<p>Support high speed 52MHZ. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga2f80701c36e79c0640d91c788feee0b3af873861eb6356bd1a236d4741d3bd382"></a>kMMC_SupportHighSpeedDDR52MHZ180V300VFlag</em>&nbsp;</td><td class="fielddoc">
<p>ddr 52MHZ 1.8V or 3.0V </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga2f80701c36e79c0640d91c788feee0b3ab26ad5455afddab2dd5909435243d8de"></a>kMMC_SupportHighSpeedDDR52MHZ120VFlag</em>&nbsp;</td><td class="fielddoc">
<p>DDR 52MHZ 1.2V. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga2f80701c36e79c0640d91c788feee0b3a39b3765119b6f0134b9c3d00e78ccdc3"></a>kMMC_SupportHS200200MHZ180VFlag</em>&nbsp;</td><td class="fielddoc">
<p>HS200 ,200MHZ,1.8V. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga2f80701c36e79c0640d91c788feee0b3a7875676a63cb3e3f3bce09d60b12cf88"></a>kMMC_SupportHS200200MHZ120VFlag</em>&nbsp;</td><td class="fielddoc">
<p>HS200, 200MHZ, 1.2V. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga2f80701c36e79c0640d91c788feee0b3a5b1fc45cb6e3fee016907e5d13f1ad83"></a>kMMC_SupportHS400DDR200MHZ180VFlag</em>&nbsp;</td><td class="fielddoc">
<p>HS400, DDR, 200MHZ,1.8V. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga2f80701c36e79c0640d91c788feee0b3af2976472059a8701c26ed30e0f28c5fa"></a>kMMC_SupportHS400DDR200MHZ120VFlag</em>&nbsp;</td><td class="fielddoc">
<p>HS400, DDR, 200MHZ,1.2V. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga2f80701c36e79c0640d91c788feee0b3a067279b27baf58ed3266df38e848b128"></a>kMMC_SupportHighCapacityFlag</em>&nbsp;</td><td class="fielddoc">
<p>Support high capacity. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga2f80701c36e79c0640d91c788feee0b3ac18882ad0cc699401c3e3483633ed77b"></a>kMMC_SupportAlternateBootFlag</em>&nbsp;</td><td class="fielddoc">
<p>Support alternate boot. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga2f80701c36e79c0640d91c788feee0b3af9baef828e6536d54f64295e1ce57548"></a>kMMC_SupportDDRBootFlag</em>&nbsp;</td><td class="fielddoc">
<p>support DDR boot flag </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga2f80701c36e79c0640d91c788feee0b3a57438a043537958e8324400ce3788ed0"></a>kMMC_SupportHighSpeedBootFlag</em>&nbsp;</td><td class="fielddoc">
<p>support high speed boot flag </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga2f80701c36e79c0640d91c788feee0b3a39d546b05b2c725a822419330606bba5"></a>kMMC_SupportEnhanceHS400StrobeFlag</em>&nbsp;</td><td class="fielddoc">
<p>support enhance HS400 strobe </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="gaf0d5a316617bfdec3b93cd29228b5bb7"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="a00039.html#gaf0d5a316617bfdec3b93cd29228b5bb7">_mmc_sleep_awake</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="ggaf0d5a316617bfdec3b93cd29228b5bb7a766aba45b5704265a1dfdf8d8d1ef5b2"></a>kMMC_Sleep</em>&nbsp;</td><td class="fielddoc">
<p>MMC card sleep. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggaf0d5a316617bfdec3b93cd29228b5bb7a68ce50ee0ddf66b369033f79da5328e9"></a>kMMC_Awake</em>&nbsp;</td><td class="fielddoc">
<p>MMC card awake. </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ga03f006d98725caeee8162ebb1250ff86"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> MMC_Init </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor.</td></tr>
</table>
</dd>
</dl>
<p>Thread safe function, please note that the function will create the mutex lock dynamically by default, so to avoid the mutex to be created redundantly, application must follow bellow sequence for card re-initialization: </p>
<div class="fragment"><div class="line"> <a class="code" href="a00039.html#gab67cdb5a21909356c4abadf3a4d8b40c">MMC_Deinit</a>(card);</div>
<div class="line"> <a class="code" href="a00039.html#ga03f006d98725caeee8162ebb1250ff86">MMC_Init</a>(card);</div>
<div class="line">* </div>
</div><!-- fragment --><dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a36304fa7f64a74351464b5f16a0765c7" title="host controller not ready ">kStatus_SDMMC_HostNotReady</a></td><td>Host is not ready. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4aee037801937ac6781197e7cb2713bab3" title="Go idle failed. ">kStatus_SDMMC_GoIdleFailed</a></td><td>Going idle failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4ac05b576643f7597d46f0a9b8a77c04ab" title="Send Operation Condition failed. ">kStatus_SDMMC_HandShakeOperationConditionFailed</a></td><td>Sending operation condition failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a33ce287b896a9b498be7909cf2f7b38e" title="Send CID failed. ">kStatus_SDMMC_AllSendCidFailed</a></td><td>Sending CID failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a0bf534561495c727b05922468a0d34b3" title="Set relative address failed. ">kStatus_SDMMC_SetRelativeAddressFailed</a></td><td>Setging relative address failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a73cec1c7d4346ca37ab6b0818f3a5041" title="Send CSD failed. ">kStatus_SDMMC_SendCsdFailed</a></td><td>Sending CSD failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a1fd62104d25e38e44cf0f02299397aee" title="Card doesn&#39;t support. ">kStatus_SDMMC_CardNotSupport</a></td><td>Card not support. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a99077f9e3bb94b11b0169cf07a34e025" title="Select card failed. ">kStatus_SDMMC_SelectCardFailed</a></td><td>Sending SELECT_CARD command failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a5882193428838212f20c5c1d79dc4f90" title="Send EXT_CSD failed. ">kStatus_SDMMC_SendExtendedCsdFailed</a></td><td>Sending EXT_CSD failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4aeb87568ca0030117ce1bdca2d3fe36df" title="Set bus width failed. ">kStatus_SDMMC_SetDataBusWidthFailed</a></td><td>Setting bus width failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4ace05b1fe2c1b30113d51bee8f7cb910c" title="Switch high speed failed. ">kStatus_SDMMC_SwitchBusTimingFailed</a></td><td>Switching high speed failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a7ce8c51a45aad4f51f2dcbddcb7dc233" title="Set block size failed. ">kStatus_SDMMC_SetCardBlockSizeFailed</a></td><td>Setting card block size failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a40d587b2bc3427ceec711a71b0daafa8" title="set power class fail ">kStatus_SDMMC_SetPowerClassFail</a></td><td>Setting card power class failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00242.html#ggadf764cbdea00d65edcd07bb9953ad2b7a829bee76c6b02225d9c891ae8ef70881" title="Generic status for Success. ">kStatus_Success</a></td><td>Operation succeeded. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gab67cdb5a21909356c4abadf3a4d8b40c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void MMC_Deinit </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd>It is a thread safe function.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga9adb1349b4f9415c631e94a375bc7db0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> MMC_CardInit </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Thread safe function, please note that the function will create the mutex lock dynamically by default, so to avoid the mutex to be created redundantly, application must follow bellow sequence for card re-initialization: </p>
<div class="fragment"><div class="line"> <a class="code" href="a00039.html#ga83e4e9e390a6c817f06999bbf887a3b3">MMC_CardDeinit</a>(card);</div>
<div class="line"> <a class="code" href="a00039.html#ga9adb1349b4f9415c631e94a375bc7db0">MMC_CardInit</a>(card);</div>
<div class="line">* </div>
</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a36304fa7f64a74351464b5f16a0765c7" title="host controller not ready ">kStatus_SDMMC_HostNotReady</a></td><td>Host is not ready. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4aee037801937ac6781197e7cb2713bab3" title="Go idle failed. ">kStatus_SDMMC_GoIdleFailed</a></td><td>Going idle failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4ac05b576643f7597d46f0a9b8a77c04ab" title="Send Operation Condition failed. ">kStatus_SDMMC_HandShakeOperationConditionFailed</a></td><td>Sending operation condition failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a33ce287b896a9b498be7909cf2f7b38e" title="Send CID failed. ">kStatus_SDMMC_AllSendCidFailed</a></td><td>Sending CID failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a0bf534561495c727b05922468a0d34b3" title="Set relative address failed. ">kStatus_SDMMC_SetRelativeAddressFailed</a></td><td>Setting relative address failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a73cec1c7d4346ca37ab6b0818f3a5041" title="Send CSD failed. ">kStatus_SDMMC_SendCsdFailed</a></td><td>Sending CSD failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a1fd62104d25e38e44cf0f02299397aee" title="Card doesn&#39;t support. ">kStatus_SDMMC_CardNotSupport</a></td><td>Card not support. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a99077f9e3bb94b11b0169cf07a34e025" title="Select card failed. ">kStatus_SDMMC_SelectCardFailed</a></td><td>Sending SELECT_CARD command failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a5882193428838212f20c5c1d79dc4f90" title="Send EXT_CSD failed. ">kStatus_SDMMC_SendExtendedCsdFailed</a></td><td>Sending EXT_CSD failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4aeb87568ca0030117ce1bdca2d3fe36df" title="Set bus width failed. ">kStatus_SDMMC_SetDataBusWidthFailed</a></td><td>Setting bus width failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4ace05b1fe2c1b30113d51bee8f7cb910c" title="Switch high speed failed. ">kStatus_SDMMC_SwitchBusTimingFailed</a></td><td>Switching high speed failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a7ce8c51a45aad4f51f2dcbddcb7dc233" title="Set block size failed. ">kStatus_SDMMC_SetCardBlockSizeFailed</a></td><td>Setting card block size failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a40d587b2bc3427ceec711a71b0daafa8" title="set power class fail ">kStatus_SDMMC_SetPowerClassFail</a></td><td>Setting card power class failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00242.html#ggadf764cbdea00d65edcd07bb9953ad2b7a829bee76c6b02225d9c891ae8ef70881" title="Generic status for Success. ">kStatus_Success</a></td><td>Operation succeeded. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga83e4e9e390a6c817f06999bbf887a3b3"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void MMC_CardDeinit </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd>It is a thread safe function.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga44f98e6d4caefbac4ee0237890f651e6"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> MMC_HostInit </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function deinitializes the specific host.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga56005088e0e2a575190bf7829520c7f1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void MMC_HostDeinit </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function deinitializes the host.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga260f33fc882cd4eaef78f05ef9069fc9"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void MMC_HostDoReset </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function resets the specific host.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga4f61aee1889a7a09e6dea3735714b1ce"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void MMC_HostReset </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00053.html#a00415">SDMMCHOST_CONFIG</a> *&#160;</td>
<td class="paramname"><em>host</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="a00296.html#_deprecated000014">Deprecated:</a></b></dt><dd>Do not use this function. It has been superceded by <a class="el" href="a00039.html#ga260f33fc882cd4eaef78f05ef9069fc9">MMC_HostDoReset</a>. This function resets the specific host.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">host</td><td>Host descriptor. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga5231adac523a9314ba4aceb89e67c492"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void MMC_SetCardPower </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>enable</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
<tr><td class="paramname">enable</td><td>True is powering on, false is powering off. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gac08db377dfecee284aedd579d445999a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool MMC_CheckReadOnly </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">true</td><td>Card is read only. </td></tr>
<tr><td class="paramname">false</td><td>Card isn't read only. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga60a99fbb416b500761d668779ebe01f7"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> MMC_ReadBlocks </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>buffer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>startBlock</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>blockCount</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd>It is a thread safe function.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
<tr><td class="paramname">buffer</td><td>The buffer to save data. </td></tr>
<tr><td class="paramname">startBlock</td><td>The start block index. </td></tr>
<tr><td class="paramname">blockCount</td><td>The number of blocks to read. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="a00242.html#ggadf764cbdea00d65edcd07bb9953ad2b7a9743ab3bec5065667c0b12510317e76c" title="Generic status for invalid argument check. ">kStatus_InvalidArgument</a></td><td>Invalid argument. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a1fd62104d25e38e44cf0f02299397aee" title="Card doesn&#39;t support. ">kStatus_SDMMC_CardNotSupport</a></td><td>Card not support. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a3e1142eeffc0ccaceda57ee45f2a0ba9" title="Set block count failed. ">kStatus_SDMMC_SetBlockCountFailed</a></td><td>Setting block count failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a969247847528f8a186376988d0fb448c" title="Send command failed. ">kStatus_SDMMC_TransferFailed</a></td><td>Transfer failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a4bea51bb845aec7597b4eda78449457a" title="Stop transmission failed. ">kStatus_SDMMC_StopTransmissionFailed</a></td><td>Stopping transmission failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00242.html#ggadf764cbdea00d65edcd07bb9953ad2b7a829bee76c6b02225d9c891ae8ef70881" title="Generic status for Success. ">kStatus_Success</a></td><td>Operation succeeded. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga504ade2cd3eeb1891913271521bc9562"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> MMC_WriteBlocks </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>buffer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>startBlock</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>blockCount</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd><ol type="1">
<li>It is a thread safe function.</li>
<li>It is an async write function which means that the card status may still be busy after the function returns. Application can call function MMC_PollingCardStatusBusy to wait for the card status to be idle after the write operation.</li>
</ol>
</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
<tr><td class="paramname">buffer</td><td>The buffer to save data blocks. </td></tr>
<tr><td class="paramname">startBlock</td><td>Start block number to write. </td></tr>
<tr><td class="paramname">blockCount</td><td>Block count. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="a00242.html#ggadf764cbdea00d65edcd07bb9953ad2b7a9743ab3bec5065667c0b12510317e76c" title="Generic status for invalid argument check. ">kStatus_InvalidArgument</a></td><td>Invalid argument. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a4bd8f4c0ddc86120d94a75e4e5b4c3e1" title="Haven&#39;t supported. ">kStatus_SDMMC_NotSupportYet</a></td><td>Not support now. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a3e1142eeffc0ccaceda57ee45f2a0ba9" title="Set block count failed. ">kStatus_SDMMC_SetBlockCountFailed</a></td><td>Setting block count failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a8431f0a58374484158210c4858117168" title="Wait write complete failed. ">kStatus_SDMMC_WaitWriteCompleteFailed</a></td><td>Sending status failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a969247847528f8a186376988d0fb448c" title="Send command failed. ">kStatus_SDMMC_TransferFailed</a></td><td>Transfer failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a4bea51bb845aec7597b4eda78449457a" title="Stop transmission failed. ">kStatus_SDMMC_StopTransmissionFailed</a></td><td>Stop transmission failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00242.html#ggadf764cbdea00d65edcd07bb9953ad2b7a829bee76c6b02225d9c891ae8ef70881" title="Generic status for Success. ">kStatus_Success</a></td><td>Operation succeeded. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga90ca5cb83516ede64e9af6ece3439bab"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> MMC_EraseGroups </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>startGroup</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>endGroup</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>The erase command is best used to erase the entire device or a partition. Erase group is the smallest erase unit in MMC card. The erase range is [startGroup, endGroup].</p>
<dl class="section note"><dt>Note</dt><dd><ol type="1">
<li>It is a thread safe function.</li>
<li>This function always polls card busy status according to the timeout value defined in the card register after all the erase command sent out.</li>
</ol>
</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
<tr><td class="paramname">startGroup</td><td>Start group number. </td></tr>
<tr><td class="paramname">endGroup</td><td>End group number. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="a00242.html#ggadf764cbdea00d65edcd07bb9953ad2b7a9743ab3bec5065667c0b12510317e76c" title="Generic status for invalid argument check. ">kStatus_InvalidArgument</a></td><td>Invalid argument. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a8431f0a58374484158210c4858117168" title="Wait write complete failed. ">kStatus_SDMMC_WaitWriteCompleteFailed</a></td><td>Send status failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a969247847528f8a186376988d0fb448c" title="Send command failed. ">kStatus_SDMMC_TransferFailed</a></td><td>Transfer failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00242.html#ggadf764cbdea00d65edcd07bb9953ad2b7a829bee76c6b02225d9c891ae8ef70881" title="Generic status for Success. ">kStatus_Success</a></td><td>Operation succeeded. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gad36b22249e056b0dda1da583a5530d61"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> MMC_SelectPartition </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00038.html#ga7b803602e0fe1ea25dc7ae0dd25566f6">mmc_access_partition_t</a>&#160;</td>
<td class="paramname"><em>partitionNumber</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd>It is a thread safe function.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
<tr><td class="paramname">partitionNumber</td><td>The partition number. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4aaa4ade67474283a523a7baa2cc9fbe58" title="Configure EXT_CSD failed. ">kStatus_SDMMC_ConfigureExtendedCsdFailed</a></td><td>Configuring EXT_CSD failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00242.html#ggadf764cbdea00d65edcd07bb9953ad2b7a829bee76c6b02225d9c891ae8ef70881" title="Generic status for Success. ">kStatus_Success</a></td><td>Operation succeeded. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gafd26b8b19b85f99d23175bfb3ddf6ff0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> MMC_SetBootConfig </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="a00038.html#ga7342b4dea5ead99eb2a67644e4afa40e">mmc_boot_config_t</a> *&#160;</td>
<td class="paramname"><em>config</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
<tr><td class="paramname">config</td><td>Boot configuration structure. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a4bd8f4c0ddc86120d94a75e4e5b4c3e1" title="Haven&#39;t supported. ">kStatus_SDMMC_NotSupportYet</a></td><td>Not support now. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4aaa4ade67474283a523a7baa2cc9fbe58" title="Configure EXT_CSD failed. ">kStatus_SDMMC_ConfigureExtendedCsdFailed</a></td><td>Configuring EXT_CSD failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4ac14b3fbd314af14e4d86c9293f9fc561" title="Configure boot failed. ">kStatus_SDMMC_ConfigureBootFailed</a></td><td>Configuring boot failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00242.html#ggadf764cbdea00d65edcd07bb9953ad2b7a829bee76c6b02225d9c891ae8ef70881" title="Generic status for Success. ">kStatus_Success</a></td><td>Operation succeeded. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga86dbfbd824a0f5243a960d343e3f9176"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> MMC_StartBoot </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="a00038.html#ga7342b4dea5ead99eb2a67644e4afa40e">mmc_boot_config_t</a> *&#160;</td>
<td class="paramname"><em>mmcConfig</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>buffer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">sdmmchost_boot_config_t *&#160;</td>
<td class="paramname"><em>hostConfig</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
<tr><td class="paramname">mmcConfig</td><td>The mmc Boot configuration structure. </td></tr>
<tr><td class="paramname">buffer</td><td>Address to receive data. </td></tr>
<tr><td class="paramname">hostConfig</td><td>Host boot configurations. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="a00242.html#ggadf764cbdea00d65edcd07bb9953ad2b7a8692e71089c7e81bd5f4503ff55035db" title="Generic status for Fail. ">kStatus_Fail</a></td><td>Failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a969247847528f8a186376988d0fb448c" title="Send command failed. ">kStatus_SDMMC_TransferFailed</a></td><td>Transfer failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4aee037801937ac6781197e7cb2713bab3" title="Go idle failed. ">kStatus_SDMMC_GoIdleFailed</a></td><td>Resetting card failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00242.html#ggadf764cbdea00d65edcd07bb9953ad2b7a829bee76c6b02225d9c891ae8ef70881" title="Generic status for Success. ">kStatus_Success</a></td><td>Operation succeeded. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga9b18b799d48e0b39672d89d5f6148548"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> MMC_SetBootConfigWP </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>wp</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
<tr><td class="paramname">wp</td><td>Write protect value. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga1e27e4af5916f5f501cd1d9912a42643"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> MMC_ReadBootData </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>buffer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">sdmmchost_boot_config_t *&#160;</td>
<td class="paramname"><em>hostConfig</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
<tr><td class="paramname">buffer</td><td>Buffer address. </td></tr>
<tr><td class="paramname">hostConfig</td><td>Host boot configurations. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga1976bb2986bd2dd53de05101cde394a7"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> MMC_StopBoot </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>bootMode</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
<tr><td class="paramname">bootMode</td><td>Boot mode. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga4e212f50660aa5fd7ff36a9232fecf93"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> MMC_SetBootPartitionWP </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00038.html#gaf3390e9899ee7afbab1a66aeaea99ba6">mmc_boot_partition_wp_t</a>&#160;</td>
<td class="paramname"><em>bootPartitionWP</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
<tr><td class="paramname">bootPartitionWP</td><td>Boot partition write protect value. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gab41ad4bb9f654d8cd213effffcbbae06"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> MMC_EnableCacheControl </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>enable</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>The mmc device's cache is enabled by the driver by default. The cache should in typical case reduce the access time (compared to an access to the main nonvolatile storage) for both write and read.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
<tr><td class="paramname">enable</td><td>True is enabling the cache, false is disabling the cache. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga61bd93105cac69d83956086927d30dce"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> MMC_FlushCache </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>A Flush operation refers to the requirement, from the host to the device, to write the cached data to the nonvolatile memory. Prior to a flush, the device may autonomously write data to the nonvolatile memory, but after the flush operation all data in the volatile area must be written to nonvolatile memory. There is no requirement for flush due to switching between the partitions. (Note: This also implies that the cache data shall not be lost when switching between partitions). Cached data may be lost in SLEEP state, so host should flush the cache before placing the device into SLEEP state.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gac8ecc09f078dc2e7e8f85eb24d939ed0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> MMC_SetSleepAwake </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00039.html#gacd8cb5bb52d6eb3d5b5042bc887dbe47">mmc_sleep_awake_t</a>&#160;</td>
<td class="paramname"><em>state</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>The Sleep/Awake command is used to initiate the state transition between Standby state and Sleep state. The memory device indicates the transition phase busy by pulling down the DAT0 line. The Sleep/Standby state is reached when the memory device stops pulling down the DAT0 line, then the function returns.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
<tr><td class="paramname">state</td><td>The sleep/awake command argument, refer to <a class="el" href="a00039.html#gacd8cb5bb52d6eb3d5b5042bc887dbe47">mmc_sleep_awake_t</a>.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_SDMMC_NotSupportYet</td><td>Indicates the memory device doesn't support the Sleep/Awake command. </td></tr>
<tr><td class="paramname">kStatus_SDMMC_TransferFailed</td><td>Indicates command transferred fail. </td></tr>
<tr><td class="paramname">kStatus_SDMMC_PollingCardIdleFailed</td><td>Indicates polling DAT0 busy timeout. </td></tr>
<tr><td class="paramname">kStatus_SDMMC_DeselectCardFailed</td><td>Indicates deselect card command failed. </td></tr>
<tr><td class="paramname">kStatus_SDMMC_SelectCardFailed</td><td>Indicates select card command failed. </td></tr>
<tr><td class="paramname">kStatus_Success</td><td>Indicates the card state switched successfully. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga255bea62892cc6c3859caf2b1a57e24e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> MMC_PollingCardStatusBusy </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00039.html#gaaf83cf346c0bc8bad98979da67156257">mmc_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>checkStatus</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>timeoutMs</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function can be used to poll the status from busy to idle, the function will return with the card status being idle or timeout or command failed.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
<tr><td class="paramname">checkStatus</td><td>True is send CMD and read DAT0 status to check card status, false is read DAT0 status only. </td></tr>
<tr><td class="paramname">timeoutMs</td><td>Polling card status timeout value.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_SDMMC_CardStatusIdle</td><td>Card is idle. </td></tr>
<tr><td class="paramname">kStatus_SDMMC_CardStatusBusy</td><td>Card is busy. </td></tr>
<tr><td class="paramname">kStatus_SDMMC_TransferFailed</td><td>Command tranfer failed. </td></tr>
<tr><td class="paramname">kStatus_SDMMC_SwitchFailed</td><td>Status command reports switch error. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.5-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul class="foot">
<li class="footer">&copy; 2016 NXP Semiconductors. All rights reserved.
</li>
</ul>
</div>
</body>
</html>