Sophie

Sophie

distrib > CentOS > 6 > i386 > by-pkgid > 2c51d8eb79f8810ada971ee8c30ce1e5 > files > 2403

kernel-doc-2.6.32-71.14.1.el6.noarch.rpm

<?xml version="1.0" encoding="ANSI_X3.4-1968" standalone="no"?>
<!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/html; charset=ANSI_X3.4-1968" /><title>ata_slave_link_init</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><link rel="home" href="index.html" title="libATA Developer's Guide" /><link rel="up" href="ch04.html" title="Chapter&#160;4.&#160;libata Library" /><link rel="prev" href="re51.html" title="ata_host_alloc_pinfo" /><link rel="next" href="re53.html" title="ata_host_start" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"><span>ata_slave_link_init</span></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="re51.html">Prev</a>&#160;</td><th width="60%" align="center">Chapter&#160;4.&#160;libata Library</th><td width="20%" align="right">&#160;<a accesskey="n" href="re53.html">Next</a></td></tr></table><hr /></div><div class="refentry" title="ata_slave_link_init"><a id="API-ata-slave-link-init"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ata_slave_link_init &#8212; 
     initialize slave link
 </p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">int <b class="fsfunc">ata_slave_link_init </b>(</code></td><td>struct ata_port * <var class="pdparam">ap</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer">&#160;</div></div></div><div class="refsect1" title="Arguments"><a id="id2899976"></a><h2>Arguments</h2><div class="variablelist"><dl><dt><span class="term"><em class="parameter"><code>ap</code></em></span></dt><dd><p>
     port to initialize slave link for
    </p></dd></dl></div></div><div class="refsect1" title="Description"><a id="id2900003"></a><h2>Description</h2><p>
   Create and initialize slave link for <em class="parameter"><code>ap</code></em>.  This enables slave
   link handling on the port.
   </p><p>

   In libata, a port contains links and a link contains devices.
   There is single host link but if a PMP is attached to it,
   there can be multiple fan-out links.  On SATA, there's usually
   a single device connected to a link but PATA and SATA
   controllers emulating TF based interface can have two - master
   and slave.
   </p><p>

   However, there are a few controllers which don't fit into this
   abstraction too well - SATA controllers which emulate TF
   interface with both master and slave devices but also have
   separate SCR register sets for each device.  These controllers
   need separate links for physical link handling
   (e.g. onlineness, link speed) but should be treated like a
   traditional M/S controller for everything else (e.g. command
   issue, softreset).
   </p><p>

   slave_link is libata's way of handling this class of
   controllers without impacting core layer too much.  For
   anything other than physical link handling, the default host
   link is used for both master and slave.  For physical link
   handling, separate <em class="parameter"><code>ap</code></em>-&gt;slave_link is used.  All dirty details
   are implemented inside libata core layer.  From LLD's POV, the
   only difference is that prereset, hardreset and postreset are
   called once more for the slave link, so the reset sequence
   looks like the following.
   </p><p>

   prereset(M) -&gt; prereset(S) -&gt; hardreset(M) -&gt; hardreset(S) -&gt;
   softreset(M) -&gt; postreset(M) -&gt; postreset(S)
   </p><p>

   Note that softreset is called only for the master.  Softreset
   resets both M/S by definition, so SRST on master should handle
   both (the standard method will work just fine).
</p></div><div class="refsect1" title="LOCKING"><a id="id2900070"></a><h2>LOCKING</h2><p>
   Should be called before host is registered.
</p></div><div class="refsect1" title="RETURNS"><a id="id2900081"></a><h2>RETURNS</h2><p>
   0 on success, -errno on failure.
</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="re51.html">Prev</a>&#160;</td><td width="20%" align="center"><a accesskey="u" href="ch04.html">Up</a></td><td width="40%" align="right">&#160;<a accesskey="n" href="re53.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span>ata_host_alloc_pinfo</span>&#160;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&#160;<span>ata_host_start</span></td></tr></table></div></body></html>