<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>UbixOS V2: src/sys/pci/lnc.c Source File</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> <link href="tabs.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.4.7 --> <div class="tabs"> <ul> <li><a href="main.html"><span>Main Page</span></a></li> <li><a href="classes.html"><span>Data Structures</span></a></li> <li id="current"><a href="files.html"><span>Files</span></a></li> <li><a href="dirs.html"><span>Directories</span></a></li> <li> <form action="search.php" method="get"> <table cellspacing="0" cellpadding="0" border="0"> <tr> <td><label> <u>S</u>earch for </label></td> <td><input type="text" name="query" value="" size="20" accesskey="s"/></td> </tr> </table> </form> </li> </ul></div> <div class="tabs"> <ul> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>Globals</span></a></li> </ul></div> <div class="nav"> <a class="el" href="dir_897b6a2d7bab147dd1db58381aad3984.html">src</a> » <a class="el" href="dir_832905b1f7f5feaf61a306b40c0ac817.html">sys</a> » <a class="el" href="dir_b683da389ddfd9a2385307147d6c30b8.html">pci</a></div> <h1>lnc.c</h1><a href="lnc_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*****************************************************************************************</span> <a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2002 The UbixOS Project</span> <a name="l00003"></a>00003 <span class="comment"> All rights reserved.</span> <a name="l00004"></a>00004 <span class="comment"></span> <a name="l00005"></a>00005 <span class="comment">Redistribution and use in source and binary forms, with or without modification, are</span> <a name="l00006"></a>00006 <span class="comment">permitted provided that the following conditions are met:</span> <a name="l00007"></a>00007 <span class="comment"></span> <a name="l00008"></a>00008 <span class="comment">Redistributions of source code must retain the above copyright notice, this list of</span> <a name="l00009"></a>00009 <span class="comment">conditions, the following disclaimer and the list of authors. Redistributions in binary</span> <a name="l00010"></a>00010 <span class="comment">form must reproduce the above copyright notice, this list of conditions, the following</span> <a name="l00011"></a>00011 <span class="comment">disclaimer and the list of authors in the documentation and/or other materials provided</span> <a name="l00012"></a>00012 <span class="comment">with the distribution. Neither the name of the UbixOS Project nor the names of its</span> <a name="l00013"></a>00013 <span class="comment">contributors may be used to endorse or promote products derived from this software</span> <a name="l00014"></a>00014 <span class="comment">without specific prior written permission.</span> <a name="l00015"></a>00015 <span class="comment"></span> <a name="l00016"></a>00016 <span class="comment">THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY</span> <a name="l00017"></a>00017 <span class="comment">EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF</span> <a name="l00018"></a>00018 <span class="comment">MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL</span> <a name="l00019"></a>00019 <span class="comment">THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span> <a name="l00020"></a>00020 <span class="comment">SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT</span> <a name="l00021"></a>00021 <span class="comment">OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</span> <a name="l00022"></a>00022 <span class="comment">HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR</span> <a name="l00023"></a>00023 <span class="comment">TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS</span> <a name="l00024"></a>00024 <span class="comment">SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span> <a name="l00025"></a>00025 <span class="comment"></span> <a name="l00026"></a>00026 <span class="comment"> $Log: lnc_8c-source.html,v $ <a name="l00026"></a>00026 <span class="comment"> Revision 1.7 2006/12/15 17:47:06 reddawg <a name="l00026"></a>00026 <span class="comment"> Updates <a name="l00026"></a>00026 <span class="comment"></span> <a name="l00027"></a>00027 <span class="comment"> Revision 1.1.1.1 2006/06/01 12:46:16 reddawg</span> <a name="l00028"></a>00028 <span class="comment"> ubix2</span> <a name="l00029"></a>00029 <span class="comment"></span> <a name="l00030"></a>00030 <span class="comment"> Revision 1.2 2005/10/12 00:13:37 reddawg</span> <a name="l00031"></a>00031 <span class="comment"> Removed</span> <a name="l00032"></a>00032 <span class="comment"></span> <a name="l00033"></a>00033 <span class="comment"> Revision 1.1.1.1 2005/09/26 17:24:35 reddawg</span> <a name="l00034"></a>00034 <span class="comment"> no message</span> <a name="l00035"></a>00035 <span class="comment"></span> <a name="l00036"></a>00036 <span class="comment"> Revision 1.1.1.1 2004/04/15 12:07:15 reddawg</span> <a name="l00037"></a>00037 <span class="comment"> UbixOS v1.0</span> <a name="l00038"></a>00038 <span class="comment"></span> <a name="l00039"></a>00039 <span class="comment"> Revision 1.4 2004/04/13 16:36:33 reddawg</span> <a name="l00040"></a>00040 <span class="comment"> Changed our copyright, it is all now under a BSD-Style license</span> <a name="l00041"></a>00041 <span class="comment"></span> <a name="l00042"></a>00042 <span class="comment"></span> <a name="l00043"></a>00043 <span class="comment"></span> <a name="l00044"></a>00044 <span class="comment"> $Id: lnc_8c-source.html 88 2016-01-12 00:11:29Z reddawg $</span> <a name="l00045"></a>00045 <span class="comment"></span> <a name="l00046"></a>00046 <span class="comment">*****************************************************************************************/</span> <a name="l00047"></a>00047 <a name="l00048"></a>00048 <span class="preprocessor">#include <<a class="code" href="lnc_8h.html">pci/lnc.h</a>></span> <a name="l00049"></a>00049 <span class="preprocessor">#include <<a class="code" href="io_8h.html">sys/io.h</a>></span> <a name="l00050"></a>00050 <span class="preprocessor">#include <<a class="code" href="types_8h.html">ubixos/types.h</a>></span> <a name="l00051"></a>00051 <span class="preprocessor">#include <<a class="code" href="idt_8h.html">sys/idt.h</a>></span> <a name="l00052"></a>00052 <span class="preprocessor">#include <<a class="code" href="gdt_8h.html">sys/gdt.h</a>></span> <a name="l00053"></a>00053 <span class="preprocessor">#include <<a class="code" href="kmalloc_8h.html">lib/kmalloc.h</a>></span> <a name="l00054"></a>00054 <span class="preprocessor">#include <<a class="code" href="kprintf_8h.html">lib/kprintf.h</a>></span> <a name="l00055"></a>00055 <span class="preprocessor">#include <<a class="code" href="video_8h.html">sys/video.h</a>></span> <a name="l00056"></a>00056 <span class="preprocessor">#include <<a class="code" href="8259_8h.html">isa/8259.h</a>></span> <a name="l00057"></a>00057 <a name="l00058"></a><a class="code" href="lnc_8c.html#f5e66182cc3ee40ca7dab1a2449d002e">00058</a> <span class="keyword">struct </span><a class="code" href="structlncInfo.html">lncInfo</a> *<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a> = 0x0; <a name="l00059"></a>00059 <a name="l00060"></a><a class="code" href="lnc_8c.html#efadd74e9a9786e9fb67f6d994da3366">00060</a> <span class="keyword">static</span> <span class="keywordtype">char</span> <span class="keyword">const</span> * <span class="keyword">const</span> <a class="code" href="lnc_8c.html#efadd74e9a9786e9fb67f6d994da3366">nicIdent</a>[] = { <a name="l00061"></a>00061 <span class="stringliteral">"Unknown"</span>, <a name="l00062"></a>00062 <span class="stringliteral">"BICC"</span>, <a name="l00063"></a>00063 <span class="stringliteral">"NE2100"</span>, <a name="l00064"></a>00064 <span class="stringliteral">"DEPCA"</span>, <a name="l00065"></a>00065 <span class="stringliteral">"CNET98S"</span>, <span class="comment">/* PC-98 */</span> <a name="l00066"></a>00066 }; <a name="l00067"></a>00067 <a name="l00068"></a><a class="code" href="lnc_8c.html#f979fe05542c79a6de2a45efeb75cb01">00068</a> <span class="keyword">static</span> <span class="keywordtype">char</span> <span class="keyword">const</span> * <span class="keyword">const</span> <a class="code" href="lnc_8c.html#f979fe05542c79a6de2a45efeb75cb01">icIdent</a>[] = { <a name="l00069"></a>00069 <span class="stringliteral">"Unknown"</span>, <a name="l00070"></a>00070 <span class="stringliteral">"LANCE"</span>, <a name="l00071"></a>00071 <span class="stringliteral">"C-LANCE"</span>, <a name="l00072"></a>00072 <span class="stringliteral">"PCnet-ISA"</span>, <a name="l00073"></a>00073 <span class="stringliteral">"PCnet-ISA+"</span>, <a name="l00074"></a>00074 <span class="stringliteral">"PCnet-ISA II"</span>, <a name="l00075"></a>00075 <span class="stringliteral">"PCnet-32 VL-Bus"</span>, <a name="l00076"></a>00076 <span class="stringliteral">"PCnet-PCI"</span>, <a name="l00077"></a>00077 <span class="stringliteral">"PCnet-PCI II"</span>, <a name="l00078"></a>00078 <span class="stringliteral">"PCnet-FAST"</span>, <a name="l00079"></a>00079 <span class="stringliteral">"PCnet-FAST+"</span>, <a name="l00080"></a>00080 <span class="stringliteral">"PCnet-Home"</span>, <a name="l00081"></a>00081 }; <a name="l00082"></a>00082 <a name="l00083"></a><a class="code" href="lnc_8c.html#af11bb0f1b848f3c3a5db96eec6d03bc">00083</a> <span class="keywordtype">void</span> <a class="code" href="lnc_8h.html#af11bb0f1b848f3c3a5db96eec6d03bc">writeCsr</a>(<span class="keyword">struct</span> <a class="code" href="structlncInfo.html">lncInfo</a> *<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>, <a class="code" href="types_8h.html#3b65128d2644e9b80cec9a69bfa7e094">uInt16</a> port, <a class="code" href="types_8h.html#3b65128d2644e9b80cec9a69bfa7e094">uInt16</a> val) { <a name="l00084"></a>00084 <a class="code" href="io_8h.html#243f6b6d22cc5948908b764d58efc2b0">outportWord</a>(<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#3aa36dce92c5b6f53b9d09ef02cf8f92">rap</a>, port); <a name="l00085"></a>00085 <a class="code" href="io_8h.html#243f6b6d22cc5948908b764d58efc2b0">outportWord</a>(<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#c7ddba88874d67bc22ca36aa5a30ec9b">rdp</a>, val); <a name="l00086"></a>00086 } <a name="l00087"></a>00087 <a name="l00088"></a><a class="code" href="lnc_8c.html#f2a608bc5f930aedcb878db277a6bad0">00088</a> <a class="code" href="types_8h.html#3b65128d2644e9b80cec9a69bfa7e094">uInt16</a> <a class="code" href="lnc_8h.html#f2a608bc5f930aedcb878db277a6bad0">readCsr</a>(<span class="keyword">struct</span> <a class="code" href="structlncInfo.html">lncInfo</a> *<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>, <a class="code" href="types_8h.html#3b65128d2644e9b80cec9a69bfa7e094">uInt16</a> port) { <a name="l00089"></a>00089 <a class="code" href="io_8h.html#243f6b6d22cc5948908b764d58efc2b0">outportWord</a>(<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#3aa36dce92c5b6f53b9d09ef02cf8f92">rap</a>, port); <a name="l00090"></a>00090 <span class="keywordflow">return</span>(<a class="code" href="io_8h.html#fb703b187feb4b92444454df6c3dd9e6">inportWord</a>(<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#c7ddba88874d67bc22ca36aa5a30ec9b">rdp</a>)); <a name="l00091"></a>00091 } <a name="l00092"></a>00092 <a name="l00093"></a><a class="code" href="lnc_8c.html#c77dcbd7df5a9a8cacc3f684fd59e389">00093</a> <span class="keywordtype">void</span> <a class="code" href="lnc_8h.html#c77dcbd7df5a9a8cacc3f684fd59e389">writeBcr</a>(<span class="keyword">struct</span> <a class="code" href="structlncInfo.html">lncInfo</a> *<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>, <a class="code" href="types_8h.html#3b65128d2644e9b80cec9a69bfa7e094">uInt16</a> port, <a class="code" href="types_8h.html#3b65128d2644e9b80cec9a69bfa7e094">uInt16</a> val) { <a name="l00094"></a>00094 <a class="code" href="io_8h.html#243f6b6d22cc5948908b764d58efc2b0">outportWord</a>(<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#3aa36dce92c5b6f53b9d09ef02cf8f92">rap</a>, port); <a name="l00095"></a>00095 <a class="code" href="io_8h.html#243f6b6d22cc5948908b764d58efc2b0">outportWord</a>(<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#e39a5151bfee43405df118538307a604">bdp</a>, val); <a name="l00096"></a>00096 } <a name="l00097"></a>00097 <a name="l00098"></a><a class="code" href="lnc_8c.html#d560806451deb128b0e343a0caa8995f">00098</a> <a class="code" href="types_8h.html#3b65128d2644e9b80cec9a69bfa7e094">uInt16</a> <a class="code" href="lnc_8h.html#b26b4568cde86b4006a54e4aae74d0e7">readBcr</a>(<span class="keyword">struct</span> <a class="code" href="structlncInfo.html">lncInfo</a> *sc, <a class="code" href="types_8h.html#3b65128d2644e9b80cec9a69bfa7e094">uInt16</a> port) { <a name="l00099"></a>00099 <a class="code" href="io_8h.html#243f6b6d22cc5948908b764d58efc2b0">outportWord</a>(sc-><a class="code" href="structlncInfo.html#3aa36dce92c5b6f53b9d09ef02cf8f92">rap</a>, port); <a name="l00100"></a>00100 <span class="keywordflow">return</span> (<a class="code" href="io_8h.html#fb703b187feb4b92444454df6c3dd9e6">inportWord</a>(sc-><a class="code" href="structlncInfo.html#e39a5151bfee43405df118538307a604">bdp</a>)); <a name="l00101"></a>00101 } <a name="l00102"></a>00102 <a name="l00103"></a>00103 <a name="l00104"></a><a class="code" href="lnc_8c.html#0b7fb4f8833ed743dc1f3c4c90c28731">00104</a> <span class="keywordtype">void</span> <a class="code" href="lnc_8h.html#0b7fb4f8833ed743dc1f3c4c90c28731">initLNC</a>() { <a name="l00105"></a>00105 <span class="keywordtype">int</span> i = 0x0; <a name="l00106"></a>00106 <a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a> = <a class="code" href="kmalloc_8h.html#150eab2ac4ce4553e21ca10e7f441762">kmalloc</a>(<span class="keyword">sizeof</span>(<span class="keyword">struct</span> <a class="code" href="structlncInfo.html">lncInfo</a>),-2); <a name="l00107"></a>00107 <a name="l00108"></a>00108 <a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#3aa36dce92c5b6f53b9d09ef02cf8f92">rap</a> = 0x1000 + <a class="code" href="lnc_8h.html#4b84cf377a1b65f8597fb5a1a6b165cf">PCNET_RAP</a>; <a name="l00109"></a>00109 <a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#c7ddba88874d67bc22ca36aa5a30ec9b">rdp</a> = 0x1000 + <a class="code" href="lnc_8h.html#80e710fa02e057090e7212fc4e52a09f">PCNET_RDP</a>; <a name="l00110"></a>00110 <a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#e39a5151bfee43405df118538307a604">bdp</a> = 0x1000 + <a class="code" href="lnc_8h.html#a3d9c098a27fad92e011c8642149245a">PCNET_BDP</a>; <a name="l00111"></a>00111 <a name="l00112"></a>00112 <a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#eccb5006639cf653b6a42de7b4ae1555">nic</a>.<a class="code" href="structnicInfo.html#ce0bfd3296cc049fa333e59b1b272072">ic</a> = <a class="code" href="lnc_8h.html#7b84655da5c5a354e1dd00faf729506c">probe</a>(<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>); <a name="l00113"></a>00113 <span class="keywordflow">if</span> ((<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#eccb5006639cf653b6a42de7b4ae1555">nic</a>.<a class="code" href="structnicInfo.html#ce0bfd3296cc049fa333e59b1b272072">ic</a> > 0) && (<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#eccb5006639cf653b6a42de7b4ae1555">nic</a>.<a class="code" href="structnicInfo.html#ce0bfd3296cc049fa333e59b1b272072">ic</a> >= <a class="code" href="lnc_8h.html#f1a6cf2caeea69b144932f488e69ef9a">PCnet_32</a>)) { <a name="l00114"></a>00114 <a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#eccb5006639cf653b6a42de7b4ae1555">nic</a>.<a class="code" href="structnicInfo.html#bc40ed67a91dece36218837e90a90218">ident</a> = <a class="code" href="lnc_8h.html#0f13e1c33c723fb1751c67d8dcd54df3">NE2100</a>; <a name="l00115"></a>00115 <a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#eccb5006639cf653b6a42de7b4ae1555">nic</a>.<a class="code" href="structnicInfo.html#1260a18062e5cb16aac9b3f2b253409c">memMode</a> = <a class="code" href="lnc_8h.html#c7329f246bfda2b0fc34bba5cae18380">DMA_FIXED</a>; <a name="l00116"></a>00116 <a name="l00117"></a>00117 <a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#7520aa6929e2407573acaa5d408c7af4">nrdre</a> = <a class="code" href="lnc_8h.html#9a6f0938f7533adf6aebf030c2cff3d6">NRDRE</a>; <a name="l00118"></a>00118 <a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#1ca5c65a2fbc6bc1cd56930eeec0b7eb">ntdre</a> = <a class="code" href="lnc_8h.html#5feb2f9782070ea70e997a934dba38b1">NTDRE</a>; <a name="l00119"></a>00119 <a name="l00120"></a>00120 <span class="comment">/* Extract MAC address from PROM */</span> <a name="l00121"></a>00121 <span class="keywordflow">for</span> (i = 0; i < <a class="code" href="lnc_8h.html#bf4fcaacb1ad2010711b7c880ec2ed20">ETHER_ADDR_LEN</a>; i++) { <a name="l00122"></a>00122 <a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#6ab65edc0c5bba6523ed5b95f3a25fd5">arpcom</a>.<a class="code" href="structarpcom.html#8335c2422b63415a71353f12d70b1e05">ac_enaddr</a>[i] = <a class="code" href="io_8h.html#77b934268de1b3ecdcf3f275413b3108">inportByte</a>(0<a class="code" href="ap-boot_8S.html#f78b91f02427adef14bb8b28aa93baa5">x1000</a> + i); <a name="l00123"></a>00123 <a class="code" href="kprint_8h.html#b2761bdf0cca73ad0fb5880895210cd8">kprintf</a>(<span class="stringliteral">"[0x%X]"</span>,<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#6ab65edc0c5bba6523ed5b95f3a25fd5">arpcom</a>.<a class="code" href="structarpcom.html#8335c2422b63415a71353f12d70b1e05">ac_enaddr</a>[i]); <a name="l00124"></a>00124 } <a name="l00125"></a>00125 } <a name="l00126"></a>00126 <span class="keywordflow">else</span> { <a name="l00127"></a>00127 <a class="code" href="kprint_8h.html#b2761bdf0cca73ad0fb5880895210cd8">kprintf</a>(<span class="stringliteral">"LNC Init Error\n"</span>); <a name="l00128"></a>00128 <span class="keywordflow">return</span>; <a name="l00129"></a>00129 } <a name="l00130"></a>00130 <a class="code" href="lnc_8h.html#86e977fd8113976b87da564f2b53a2d7">lncAttach</a>(<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>,0); <a name="l00131"></a>00131 <a class="code" href="lnc_8h.html#af11bb0f1b848f3c3a5db96eec6d03bc">writeCsr</a>(<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>, <a class="code" href="lnc_8h.html#accfc3c68d398428c31b3c26cf3c7d5f">CSR3</a>, 0); <a name="l00132"></a>00132 <a class="code" href="lnc_8h.html#af11bb0f1b848f3c3a5db96eec6d03bc">writeCsr</a>(<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>, <a class="code" href="lnc_8h.html#09512b5b7cf54991bf82200f66bd1b8c">CSR0</a>, <a class="code" href="lnc_8h.html#b5889105dcd019008c9448dff61323f6">INIT</a>); <a name="l00133"></a>00133 <span class="keywordflow">for</span> (i = 0; i < 1000; i++) <a name="l00134"></a>00134 <span class="keywordflow">if</span> (<a class="code" href="lnc_8h.html#f2a608bc5f930aedcb878db277a6bad0">readCsr</a>(<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>, <a class="code" href="lnc_8h.html#09512b5b7cf54991bf82200f66bd1b8c">CSR0</a>) & <a class="code" href="lnc_8h.html#ca0dae20ad119b8bf8f368693eb2bff8">IDON</a>) <a name="l00135"></a>00135 <span class="keywordflow">break</span>; <a name="l00136"></a>00136 <a name="l00137"></a>00137 <span class="keywordflow">if</span> (<a class="code" href="lnc_8h.html#f2a608bc5f930aedcb878db277a6bad0">readCsr</a>(lnc, <a class="code" href="lnc_8h.html#09512b5b7cf54991bf82200f66bd1b8c">CSR0</a>) & IDON) { <a name="l00138"></a>00138 <a class="code" href="lnc_8h.html#af11bb0f1b848f3c3a5db96eec6d03bc">writeCsr</a>(lnc, <a class="code" href="lnc_8h.html#09512b5b7cf54991bf82200f66bd1b8c">CSR0</a>, <a class="code" href="lnc_8h.html#39aaa2cb5148aec0a6c4599feaf3a7d3">STRT</a> | <a class="code" href="lnc_8h.html#93d733faa9617c2136ecc02953be45d5">INEA</a>); <a name="l00139"></a>00139 <a class="code" href="idt_8h.html#174a47ed653fc64fff6b5bb1b895c2cf">setVector</a>(<a class="code" href="lnc_8h.html#d155cde754cb2beb8403810b0a651ba7">_lncInt</a>,<a class="code" href="8259_8h.html#7d84962c1a1c225344a94545309f92fc">mVec</a>+9, (<a class="code" href="gdt_8h.html#7eb6dc7004c613df58764da5df7d85d8">dInt</a> + <a class="code" href="gdt_8h.html#be5eb76416aff1d9114e1cdb8b0797fe">dPresent</a> + <a class="code" href="gdt_8h.html#2e29d1e158d5e81dc70dfae75f17d7f4">dDpl3</a>)); <a name="l00140"></a>00140 enableIrq(9); <a name="l00141"></a>00141 <span class="comment">/* </span> <a name="l00142"></a>00142 <span class="comment"> * sc->arpcom.ac_if.if_flags |= IFF_RUNNING;</span> <a name="l00143"></a>00143 <span class="comment"> * sc->arpcom.ac_if.if_flags &= ~IFF_OACTIVE;</span> <a name="l00144"></a>00144 <span class="comment"> * lnc_start(&sc->arpcom.ac_if);</span> <a name="l00145"></a>00145 <span class="comment"> */</span> <a name="l00146"></a>00146 } <a name="l00147"></a>00147 <span class="keywordflow">else</span> { <a name="l00148"></a>00148 <a class="code" href="kprint_8h.html#b2761bdf0cca73ad0fb5880895210cd8">kprintf</a>(<span class="stringliteral">"LNC init Error\n"</span>); <a name="l00149"></a>00149 <span class="keywordflow">return</span>; <a name="l00150"></a>00150 } <a name="l00151"></a>00151 <span class="keywordflow">return</span>; <a name="l00152"></a>00152 } <a name="l00153"></a>00153 <a name="l00154"></a><a class="code" href="lnc_8c.html#7b84655da5c5a354e1dd00faf729506c">00154</a> <span class="keywordtype">int</span> <a class="code" href="lnc_8h.html#7b84655da5c5a354e1dd00faf729506c">probe</a>(<span class="keyword">struct</span> <a class="code" href="structlncInfo.html">lncInfo</a> *<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>) { <a name="l00155"></a>00155 <a class="code" href="types_8h.html#5847ea0262a5aa61eee48cbe95544a78">uInt32</a> chipId = 0x0; <a name="l00156"></a>00156 <span class="keywordtype">int</span> type = 0x0; <a name="l00157"></a>00157 <a name="l00158"></a>00158 <span class="keywordflow">if</span> ((type = <a class="code" href="lnc_8h.html#c698a392b34b41b9aa3eed6ec7c2f8db">lanceProbe</a>(<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>))) { <a name="l00159"></a>00159 chipId = <a class="code" href="lnc_8h.html#f2a608bc5f930aedcb878db277a6bad0">readCsr</a>(<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>, <a class="code" href="lnc_8h.html#64a850bd91da43c547e18e1b4cba0af2">CSR89</a>); <a name="l00160"></a>00160 chipId <<= 16; <a name="l00161"></a>00161 chipId |= <a class="code" href="lnc_8h.html#f2a608bc5f930aedcb878db277a6bad0">readCsr</a>(<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>, <a class="code" href="lnc_8h.html#c2969c1f9783df74d1315e32c8d7e512">CSR88</a>); <a name="l00162"></a>00162 <span class="keywordflow">if</span> (chipId & <a class="code" href="lnc_8h.html#e3685f97383506d96630657d40139121">AMD_MASK</a>) { <a name="l00163"></a>00163 chipId >>= 12; <a name="l00164"></a>00164 <span class="keywordflow">switch</span> (chipId & <a class="code" href="lnc_8h.html#f09868a61f66925c57b5d3e7fe36596b">PART_MASK</a>) { <a name="l00165"></a>00165 <span class="keywordflow">case</span> <a class="code" href="lnc_8h.html#05aca4c2607e5cf418d26c6471c6df91">Am79C960</a>: <a name="l00166"></a>00166 <span class="keywordflow">return</span>(<a class="code" href="lnc_8h.html#3baa99ddd1afd3e15b0895fd678db39e">PCnet_ISA</a>); <a name="l00167"></a>00167 <span class="keywordflow">case</span> <a class="code" href="lnc_8h.html#91e4b6782cdb439f7d1493924b06036d">Am79C961</a>: <a name="l00168"></a>00168 <span class="keywordflow">return</span> (<a class="code" href="lnc_8h.html#9ad716fd5d7913ddf296a963b88c74e6">PCnet_ISAplus</a>); <a name="l00169"></a>00169 <span class="keywordflow">case</span> <a class="code" href="lnc_8h.html#3e6e658373fd814ca74785d82fb483df">Am79C961A</a>: <a name="l00170"></a>00170 <span class="keywordflow">return</span> (<a class="code" href="lnc_8h.html#ed1e84c250032911bffed1b2f49fcf6e">PCnet_ISA_II</a>); <a name="l00171"></a>00171 <span class="keywordflow">case</span> <a class="code" href="lnc_8h.html#be2e36dbd6a0dda5f7132f496d560751">Am79C965</a>: <a name="l00172"></a>00172 <span class="keywordflow">return</span> (<a class="code" href="lnc_8h.html#f1a6cf2caeea69b144932f488e69ef9a">PCnet_32</a>); <a name="l00173"></a>00173 <span class="keywordflow">case</span> <a class="code" href="lnc_8h.html#901c0fbc5ca77f43baa5468a0c554148">Am79C970</a>: <a name="l00174"></a>00174 <span class="keywordflow">return</span> (<a class="code" href="lnc_8h.html#2da9a3ce30e040d19856a3aa23d11d09">PCnet_PCI</a>); <a name="l00175"></a>00175 <span class="keywordflow">case</span> <a class="code" href="lnc_8h.html#26c7d28ffe133b74501f6c3cd3ee0afc">Am79C970A</a>: <a name="l00176"></a>00176 <span class="keywordflow">return</span> (<a class="code" href="lnc_8h.html#e4152589aa28996d4f456ea1e3841613">PCnet_PCI_II</a>); <a name="l00177"></a>00177 <span class="keywordflow">case</span> <a class="code" href="lnc_8h.html#77cd476f0f327589173897cace2a6d5d">Am79C971</a>: <a name="l00178"></a>00178 <span class="keywordflow">return</span> (<a class="code" href="lnc_8h.html#33e34c2221d08ac7e5e4a76ad5fe5f2c">PCnet_FAST</a>); <a name="l00179"></a>00179 <span class="keywordflow">case</span> <a class="code" href="lnc_8h.html#ec4eaac1bfb06a8d9d33802cd3481a71">Am79C972</a>: <a name="l00180"></a>00180 <span class="keywordflow">case</span> <a class="code" href="lnc_8h.html#2418761a3aa861593c41df8a9c75c84b">Am79C973</a>: <a name="l00181"></a>00181 <span class="keywordflow">return</span> (<a class="code" href="lnc_8h.html#132ccf085a33454d996e0a80d804c391">PCnet_FASTplus</a>); <a name="l00182"></a>00182 <span class="keywordflow">case</span> <a class="code" href="lnc_8h.html#4377d3112a6628c997cd2a4fe9a5e3d8">Am79C978</a>: <a name="l00183"></a>00183 <span class="keywordflow">return</span> (<a class="code" href="lnc_8h.html#42619f0c436d20482c7cb4b76fc643a5">PCnet_Home</a>); <a name="l00184"></a>00184 <span class="keywordflow">default</span>: <a name="l00185"></a>00185 <span class="keywordflow">break</span>; <a name="l00186"></a>00186 } <a name="l00187"></a>00187 } <a name="l00188"></a>00188 } <a name="l00189"></a>00189 <span class="keywordflow">return</span> (type); <a name="l00190"></a>00190 } <a name="l00191"></a>00191 <a name="l00192"></a><a class="code" href="lnc_8c.html#c698a392b34b41b9aa3eed6ec7c2f8db">00192</a> <span class="keywordtype">int</span> <a class="code" href="lnc_8h.html#c698a392b34b41b9aa3eed6ec7c2f8db">lanceProbe</a>(<span class="keyword">struct</span> <a class="code" href="structlncInfo.html">lncInfo</a> *<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>) { <a name="l00193"></a>00193 <a class="code" href="lnc_8h.html#af11bb0f1b848f3c3a5db96eec6d03bc">writeCsr</a>(<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>, <a class="code" href="lnc_8h.html#09512b5b7cf54991bf82200f66bd1b8c">CSR0</a>, <a class="code" href="lnc_8h.html#e19b6bb2940d2fbe0a79852b070eeafd">STOP</a>); <a name="l00194"></a>00194 <span class="keywordflow">if</span> ((<a class="code" href="io_8h.html#fb703b187feb4b92444454df6c3dd9e6">inportWord</a>(<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#c7ddba88874d67bc22ca36aa5a30ec9b">rdp</a>) & <a class="code" href="lnc_8h.html#e19b6bb2940d2fbe0a79852b070eeafd">STOP</a>) && !(<a class="code" href="lnc_8h.html#f2a608bc5f930aedcb878db277a6bad0">readCsr</a>(<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>, <a class="code" href="lnc_8h.html#accfc3c68d398428c31b3c26cf3c7d5f">CSR3</a>))) { <a name="l00195"></a>00195 <a class="code" href="lnc_8h.html#af11bb0f1b848f3c3a5db96eec6d03bc">writeCsr</a>(<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>, <a class="code" href="lnc_8h.html#09512b5b7cf54991bf82200f66bd1b8c">CSR0</a>, <a class="code" href="lnc_8h.html#93d733faa9617c2136ecc02953be45d5">INEA</a>); <a name="l00196"></a>00196 <span class="keywordflow">if</span> (<a class="code" href="lnc_8h.html#f2a608bc5f930aedcb878db277a6bad0">readCsr</a>(lnc, <a class="code" href="lnc_8h.html#09512b5b7cf54991bf82200f66bd1b8c">CSR0</a>) & <a class="code" href="lnc_8h.html#93d733faa9617c2136ecc02953be45d5">INEA</a>) { <a name="l00197"></a>00197 <span class="keywordflow">return</span>(<a class="code" href="lnc_8h.html#26eec45c0879e59438a7d2ca16fa8067">C_LANCE</a>); <a name="l00198"></a>00198 } <a name="l00199"></a>00199 <span class="keywordflow">else</span> { <a name="l00200"></a>00200 <span class="keywordflow">return</span>(<a class="code" href="lnc_8h.html#67dedc055b2e31a97ac3561a4a16b9af">LANCE</a>); <a name="l00201"></a>00201 } <a name="l00202"></a>00202 } <a name="l00203"></a>00203 <span class="keywordflow">else</span> { <a name="l00204"></a>00204 <span class="keywordflow">return</span>(<a class="code" href="lnc_8h.html#c1ae4add974b9cfc6b5aaf8a578f01ab">UNKNOWN</a>); <a name="l00205"></a>00205 } <a name="l00206"></a>00206 } <a name="l00207"></a>00207 <a name="l00208"></a><a class="code" href="lnc_8c.html#6fdabac3834c12782583e0a42f928295">00208</a> <span class="keywordtype">void</span> <a class="code" href="lnc_8h.html#6fdabac3834c12782583e0a42f928295">lncInt</a>() { <a name="l00209"></a>00209 <a class="code" href="types_8h.html#3b65128d2644e9b80cec9a69bfa7e094">uInt16</a> csr0 = 0x0; <a name="l00210"></a>00210 <span class="keywordflow">while</span> ((csr0 = <a class="code" href="io_8h.html#fb703b187feb4b92444454df6c3dd9e6">inportWord</a>(<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#c7ddba88874d67bc22ca36aa5a30ec9b">rdp</a>)) & <a class="code" href="lnc_8h.html#71e19ac3883e6cdbc2a19126e1b590ab">INTR</a>) { <a name="l00211"></a>00211 <a class="code" href="io_8h.html#243f6b6d22cc5948908b764d58efc2b0">outportWord</a>(<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#c7ddba88874d67bc22ca36aa5a30ec9b">rdp</a>, csr0); <a name="l00212"></a>00212 <a class="code" href="kprint_8h.html#b2761bdf0cca73ad0fb5880895210cd8">kprintf</a>(<span class="stringliteral">"CSR0: [0x%X]\n"</span>,csr0); <a name="l00213"></a>00213 <span class="keywordflow">if</span> (csr0 & <a class="code" href="lnc_8h.html#735563036dced0b7d6cc98f97ea4978b">ERR</a>) { <a name="l00214"></a>00214 <a class="code" href="kprint_8h.html#b2761bdf0cca73ad0fb5880895210cd8">kprintf</a>(<span class="stringliteral">"Error: [0x%X]\n"</span>,csr0); <a name="l00215"></a>00215 } <a name="l00216"></a>00216 <span class="keywordflow">if</span> (csr0 & <a class="code" href="lnc_8h.html#4810d8325791be718f1bcb2a92fd3a0f">RINT</a>) { <a name="l00217"></a>00217 <a class="code" href="kprint_8h.html#b2761bdf0cca73ad0fb5880895210cd8">kprintf</a>(<span class="stringliteral">"RINT\n"</span>); <a name="l00218"></a>00218 } <a name="l00219"></a>00219 <span class="keywordflow">if</span> (csr0 & <a class="code" href="lnc_8h.html#c6f30425a8221b25e8ebf4cdeb804b0e">TINT</a>) { <a name="l00220"></a>00220 <a class="code" href="kprint_8h.html#b2761bdf0cca73ad0fb5880895210cd8">kprintf</a>(<span class="stringliteral">"TINT\n"</span>); <a name="l00221"></a>00221 } <a name="l00222"></a>00222 } <a name="l00223"></a>00223 <a class="code" href="kprint_8h.html#b2761bdf0cca73ad0fb5880895210cd8">kprintf</a>(<span class="stringliteral">"Finished!!!\n"</span>); <a name="l00224"></a>00224 <a class="code" href="io_8h.html#8acc1a06073db2e7b92ffbd00fbd0cf1">outportByte</a>(0<a class="code" href="start_8S.html#62df326d54f8b2ece412319c4360ef3e">x20</a>,0<a class="code" href="start_8S.html#62df326d54f8b2ece412319c4360ef3e">x20</a>); <a name="l00225"></a>00225 <span class="keywordflow">return</span>; <a name="l00226"></a>00226 } <a name="l00227"></a>00227 <a name="l00228"></a>00228 <span class="keyword">asm</span>( <a name="l00229"></a>00229 <span class="stringliteral">".global _lncInt \n"</span> <a name="l00230"></a>00230 <span class="stringliteral">"_lncInt : \n"</span> <a name="l00231"></a>00231 <a name="l00232"></a>00232 <span class="stringliteral">" pusha \n"</span> <span class="comment">/* Save all registers */</span> <a name="l00233"></a>00233 <span class="stringliteral">" pushw %ds \n"</span> <span class="comment">/* Set up the data segment */</span> <a name="l00234"></a>00234 <span class="stringliteral">" pushw %es \n"</span> <a name="l00235"></a>00235 <span class="stringliteral">" pushw %ss \n"</span> <span class="comment">/* Note that ss is always valid */</span> <a name="l00236"></a>00236 <span class="stringliteral">" pushw %ss \n"</span> <a name="l00237"></a>00237 <span class="stringliteral">" popw %ds \n"</span> <a name="l00238"></a>00238 <span class="stringliteral">" popw %es \n"</span> <a name="l00239"></a>00239 <span class="stringliteral">" call lncInt \n"</span> <a name="l00240"></a>00240 <span class="stringliteral">" popw %es \n"</span> <a name="l00241"></a>00241 <span class="stringliteral">" popw %ds \n"</span> <span class="comment">/* Restore registers */</span> <a name="l00242"></a>00242 <span class="stringliteral">" popa \n"</span> <a name="l00243"></a>00243 <span class="stringliteral">" iret \n"</span> <span class="comment">/* Exit interrupt */</span> <a name="l00244"></a>00244 ); <a name="l00245"></a>00245 <a name="l00246"></a><a class="code" href="lnc_8c.html#86e977fd8113976b87da564f2b53a2d7">00246</a> <span class="keywordtype">int</span> <a class="code" href="lnc_8h.html#86e977fd8113976b87da564f2b53a2d7">lncAttach</a>(<span class="keyword">struct</span> <a class="code" href="structlncInfo.html">lncInfo</a> *<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>,<span class="keywordtype">int</span> unit) { <a name="l00247"></a>00247 <span class="keywordtype">int</span> lncMemSize = 0x0; <a name="l00248"></a>00248 <a name="l00249"></a>00249 lncMemSize = ((<a class="code" href="lnc_8h.html#3924669c8950a7f0b9b30e2841c21986">NDESC</a>(<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#7520aa6929e2407573acaa5d408c7af4">nrdre</a>) + <a class="code" href="lnc_8h.html#3924669c8950a7f0b9b30e2841c21986">NDESC</a>(<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#1ca5c65a2fbc6bc1cd56930eeec0b7eb">ntdre</a>)) * <span class="keyword">sizeof</span>(<span class="keyword">struct</span> <a class="code" href="structhostRingEntry.html">hostRingEntry</a>)); <a name="l00250"></a>00250 <a name="l00251"></a>00251 <span class="keywordflow">if</span> (<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#eccb5006639cf653b6a42de7b4ae1555">nic</a>.<a class="code" href="structnicInfo.html#1260a18062e5cb16aac9b3f2b253409c">memMode</a> != <a class="code" href="lnc_8h.html#ef3765fe92001684a71af27e0d738038">SHMEM</a>) <a name="l00252"></a>00252 lncMemSize += <span class="keyword">sizeof</span>(<span class="keyword">struct </span><a class="code" href="structinitBlock.html">initBlock</a>) + (sizeof(struct mds) * (<a class="code" href="lnc_8h.html#3924669c8950a7f0b9b30e2841c21986">NDESC</a>(<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#7520aa6929e2407573acaa5d408c7af4">nrdre</a>) + <a class="code" href="lnc_8h.html#3924669c8950a7f0b9b30e2841c21986">NDESC</a>(<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#1ca5c65a2fbc6bc1cd56930eeec0b7eb">ntdre</a>))) + <a class="code" href="lnc_8h.html#f52baa205a87ca363ed5b4121a5f80a9">MEM_SLEW</a>; <a name="l00253"></a>00253 <a name="l00254"></a>00254 <span class="keywordflow">if</span> (<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#eccb5006639cf653b6a42de7b4ae1555">nic</a>.<a class="code" href="structnicInfo.html#1260a18062e5cb16aac9b3f2b253409c">memMode</a> == <a class="code" href="lnc_8h.html#c7329f246bfda2b0fc34bba5cae18380">DMA_FIXED</a>) <a name="l00255"></a>00255 lncMemSize += (<a class="code" href="lnc_8h.html#3924669c8950a7f0b9b30e2841c21986">NDESC</a>(<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#7520aa6929e2407573acaa5d408c7af4">nrdre</a>) * <a class="code" href="lnc_8h.html#7f410619679156a88b8f9e878e5badcf">RECVBUFSIZE</a>) + (<a class="code" href="lnc_8h.html#3924669c8950a7f0b9b30e2841c21986">NDESC</a>(<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#1ca5c65a2fbc6bc1cd56930eeec0b7eb">ntdre</a>) * <a class="code" href="lnc_8h.html#0d38de8b1de05fb25c7899244cc7a7df">TRANSBUFSIZE</a>); <a name="l00256"></a>00256 <a name="l00257"></a>00257 <span class="keywordflow">if</span> (<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#eccb5006639cf653b6a42de7b4ae1555">nic</a>.<a class="code" href="structnicInfo.html#1260a18062e5cb16aac9b3f2b253409c">memMode</a> != <a class="code" href="lnc_8h.html#ef3765fe92001684a71af27e0d738038">SHMEM</a>) { <a name="l00258"></a>00258 <span class="keywordflow">if</span> (<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#eccb5006639cf653b6a42de7b4ae1555">nic</a>.<a class="code" href="structnicInfo.html#ce0bfd3296cc049fa333e59b1b272072">ic</a> < <a class="code" href="lnc_8h.html#f1a6cf2caeea69b144932f488e69ef9a">PCnet_32</a>) { <a name="l00259"></a>00259 <span class="comment">/* ISA based cards */</span> <a name="l00260"></a>00260 <a class="code" href="kprint_8h.html#b2761bdf0cca73ad0fb5880895210cd8">kprintf</a>(<span class="stringliteral">"ISA Board\n"</span>); <a name="l00261"></a>00261 <span class="comment">/* sc->recv_ring = contigmalloc(lnc_mem_size, M_DEVBUF, M_NOWAIT,0ul, 0xfffffful, 4ul, 0x1000000); */</span> <a name="l00262"></a>00262 } <a name="l00263"></a>00263 <span class="keywordflow">else</span> { <a name="l00264"></a>00264 <span class="comment">/*</span> <a name="l00265"></a>00265 <span class="comment"> * For now it still needs to be below 16MB because the</span> <a name="l00266"></a>00266 <span class="comment"> * descriptor's can only hold 16 bit addresses.</span> <a name="l00267"></a>00267 <span class="comment"> */</span> <a name="l00268"></a>00268 <span class="comment">/* sc->recv_ring = contigmalloc(lnc_mem_size, M_DEVBUF, M_NOWAIT,0ul, 0xfffffful, 4ul, 0x1000000); */</span> <a name="l00269"></a>00269 <a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#49f921775c4d249ce90af5afed331bd9">recvRing</a> = <a class="code" href="kmalloc_8h.html#150eab2ac4ce4553e21ca10e7f441762">kmalloc</a>(lncMemSize,-2); <a name="l00270"></a>00270 <a class="code" href="kprint_8h.html#b2761bdf0cca73ad0fb5880895210cd8">kprintf</a>(<span class="stringliteral">"PCI Board\n"</span>); <a name="l00271"></a>00271 } <a name="l00272"></a>00272 } <a name="l00273"></a>00273 <a name="l00274"></a>00274 <span class="keywordflow">if</span> (!<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#49f921775c4d249ce90af5afed331bd9">recvRing</a>) { <a name="l00275"></a>00275 <a class="code" href="kprint_8h.html#b2761bdf0cca73ad0fb5880895210cd8">kprintf</a>(<span class="stringliteral">"lnc%d: Couldn't allocate memory for NIC\n"</span>, unit); <a name="l00276"></a>00276 <span class="keywordflow">return</span> (0); <a name="l00277"></a>00277 } <a name="l00278"></a>00278 <a name="l00279"></a>00279 <a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#eccb5006639cf653b6a42de7b4ae1555">nic</a>.<a class="code" href="structnicInfo.html#3dc304d78fecc9112cf979b7b1fc3525">mode</a> = <a class="code" href="lnc_8h.html#1291f416b069313021b519eea62d5bf1">NORMAL</a>; <a name="l00280"></a>00280 <a name="l00281"></a>00281 <span class="comment">/* Fill in arpcom structure entries */</span> <a name="l00282"></a>00282 <span class="comment">/*</span> <a name="l00283"></a>00283 <span class="comment"> lnc->arpcom.ac_if.if_softc = sc;</span> <a name="l00284"></a>00284 <span class="comment"> lnc->arpcom.ac_if.if_name = lncdriver.name;</span> <a name="l00285"></a>00285 <span class="comment"> lnc->arpcom.ac_if.if_unit = unit;</span> <a name="l00286"></a>00286 <span class="comment"> lnc->arpcom.ac_if.if_mtu = ETHERMTU;</span> <a name="l00287"></a>00287 <span class="comment"> lnc->arpcom.ac_if.if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;</span> <a name="l00288"></a>00288 <span class="comment"> lnc->arpcom.ac_if.if_timer = 0;</span> <a name="l00289"></a>00289 <span class="comment"> lnc->arpcom.ac_if.if_output = ether_output;</span> <a name="l00290"></a>00290 <span class="comment"> lnc->arpcom.ac_if.if_start = lnc_start;</span> <a name="l00291"></a>00291 <span class="comment"> lnc->arpcom.ac_if.if_ioctl = lnc_ioctl;</span> <a name="l00292"></a>00292 <span class="comment"> lnc->arpcom.ac_if.if_watchdog = lnc_watchdog;</span> <a name="l00293"></a>00293 <span class="comment"> lnc->arpcom.ac_if.if_init = lnc_init;</span> <a name="l00294"></a>00294 <span class="comment"> lnc->arpcom.ac_if.if_type = IFT_ETHER;</span> <a name="l00295"></a>00295 <span class="comment"> lnc->arpcom.ac_if.if_addrlen = ETHER_ADDR_LEN;</span> <a name="l00296"></a>00296 <span class="comment"> lnc->arpcom.ac_if.if_hdrlen = ETHER_HDR_LEN;</span> <a name="l00297"></a>00297 <span class="comment"> lnc->arpcom.ac_if.if_snd.ifq_maxlen = IFQ_MAXLEN;</span> <a name="l00298"></a>00298 <span class="comment"> */</span> <a name="l00299"></a>00299 <span class="comment">/* ether_ifattach(&sc->arpcom.ac_if, ETHER_BPF_SUPPORTED); */</span> <a name="l00300"></a>00300 <a name="l00301"></a>00301 <a class="code" href="kprint_8h.html#b2761bdf0cca73ad0fb5880895210cd8">kprintf</a>(<span class="stringliteral">"lnc%d: "</span>, unit); <a name="l00302"></a>00302 <span class="keywordflow">if</span> (<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#eccb5006639cf653b6a42de7b4ae1555">nic</a>.<a class="code" href="structnicInfo.html#ce0bfd3296cc049fa333e59b1b272072">ic</a> == <a class="code" href="lnc_8h.html#67dedc055b2e31a97ac3561a4a16b9af">LANCE</a> || <a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#eccb5006639cf653b6a42de7b4ae1555">nic</a>.<a class="code" href="structnicInfo.html#ce0bfd3296cc049fa333e59b1b272072">ic</a> == <a class="code" href="lnc_8h.html#26eec45c0879e59438a7d2ca16fa8067">C_LANCE</a>) <a name="l00303"></a>00303 <a class="code" href="kprint_8h.html#b2761bdf0cca73ad0fb5880895210cd8">kprintf</a>(<span class="stringliteral">"%s (%s)"</span>,<a class="code" href="lnc_8c.html#efadd74e9a9786e9fb67f6d994da3366">nicIdent</a>[<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#eccb5006639cf653b6a42de7b4ae1555">nic</a>.<a class="code" href="structnicInfo.html#bc40ed67a91dece36218837e90a90218">ident</a>], <a class="code" href="lnc_8c.html#f979fe05542c79a6de2a45efeb75cb01">icIdent</a>[<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#eccb5006639cf653b6a42de7b4ae1555">nic</a>.<a class="code" href="structnicInfo.html#ce0bfd3296cc049fa333e59b1b272072">ic</a>]); <a name="l00304"></a>00304 <span class="keywordflow">else</span> <a name="l00305"></a>00305 <a class="code" href="kprint_8h.html#b2761bdf0cca73ad0fb5880895210cd8">kprintf</a>(<span class="stringliteral">"%s"</span>, <a class="code" href="lnc_8c.html#f979fe05542c79a6de2a45efeb75cb01">icIdent</a>[<a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#eccb5006639cf653b6a42de7b4ae1555">nic</a>.<a class="code" href="structnicInfo.html#ce0bfd3296cc049fa333e59b1b272072">ic</a>]); <a name="l00306"></a>00306 <a class="code" href="kprint_8h.html#b2761bdf0cca73ad0fb5880895210cd8">kprintf</a>(<span class="stringliteral">" address 0x%X\n"</span>, <a class="code" href="lnc_8h.html#f5e66182cc3ee40ca7dab1a2449d002e">lnc</a>-><a class="code" href="structlncInfo.html#6ab65edc0c5bba6523ed5b95f3a25fd5">arpcom</a>.<a class="code" href="structarpcom.html#8335c2422b63415a71353f12d70b1e05">ac_enaddr</a>); <a name="l00307"></a>00307 <span class="keywordflow">return</span>(1); <a name="l00308"></a>00308 } <a name="l00309"></a>00309 <a name="l00310"></a>00310 <span class="comment">/***</span> <a name="l00311"></a>00311 <span class="comment"> END</span> <a name="l00312"></a>00312 <span class="comment"> ***/</span> <a name="l00313"></a>00313 </pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Dec 15 11:18:55 2006 for UbixOS V2 by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address> </body> </html>