📄 toshiba.c.htm
字号:
<a class="hl" name="70"> 70 </a> <b>if</b> (<a href="/source/s?defs=uscsi">uscsi</a>(<a href="/source/s?defs=fd">fd</a>, <a href="/source/s?defs=scmd">scmd</a>) < <span class="n">0</span>)<a class="l" name="71"> 71 </a> <b>return</b> (<span class="n">0</span>);<a class="l" name="72"> 72 </a> <b>return</b> (<span class="n">1</span>);<a class="l" name="73"> 73 </a>}<a class="l" name="74"> 74 </a><a class="l" name="75"> 75 </a><b>int</b><a class="l" name="76"> 76 </a><a href="/source/s?defs=toshiba_read_audio">toshiba_read_audio</a>(<a href="/source/s?defs=cd_device">cd_device</a> *<a href="/source/s?defs=target">target</a>, <a href="/source/s?defs=uint_t">uint_t</a> <a href="/source/s?defs=start_blk">start_blk</a>, <a href="/source/s?defs=uint_t">uint_t</a> <a href="/source/s?defs=nblk">nblk</a>,<a class="l" name="77"> 77 </a> <a href="/source/s?defs=uchar_t">uchar_t</a> *<a href="/source/s?defs=buf">buf</a>)<a class="l" name="78"> 78 </a>{<a class="l" name="79"> 79 </a> <b>struct</b> <a href="/source/s?defs=uscsi_cmd">uscsi_cmd</a> *<a href="/source/s?defs=scmd">scmd</a>;<a class="hl" name="80"> 80 </a> <b>int</b> <a href="/source/s?defs=ret">ret</a>, <a href="/source/s?defs=retry">retry</a>;<a class="l" name="81"> 81 </a><a class="l" name="82"> 82 </a> <a href="/source/s?defs=scmd">scmd</a> = <a href="/source/s?defs=get_uscsi_cmd">get_uscsi_cmd</a>();<a class="l" name="83"> 83 </a> <a href="/source/s?defs=scmd">scmd</a>-><a href="/source/s?defs=uscsi_flags">uscsi_flags</a> = <a href="/source/s?defs=USCSI_READ">USCSI_READ</a>|<a href="/source/s?defs=USCSI_SILENT">USCSI_SILENT</a>;<a class="l" name="84"> 84 </a> <a href="/source/s?defs=scmd">scmd</a>-><a href="/source/s?defs=uscsi_timeout">uscsi_timeout</a> = <span class="n">60</span>;<a class="l" name="85"> 85 </a> ((<a href="/source/s?defs=uchar_t">uchar_t</a> *)<a href="/source/s?defs=scmd">scmd</a>-><a href="/source/s?defs=uscsi_cdb">uscsi_cdb</a>)[<span class="n">0</span>] = <a href="/source/s?defs=READ_AUDIO_CMD">READ_AUDIO_CMD</a>;<a class="l" name="86"> 86 </a> <a href="/source/s?defs=scmd">scmd</a>-><a href="/source/s?defs=uscsi_cdb">uscsi_cdb</a>[<span class="n">5</span>] = <a href="/source/s?defs=start_blk">start_blk</a> & <span class="n">0xff</span>;<a class="l" name="87"> 87 </a> <a href="/source/s?defs=scmd">scmd</a>-><a href="/source/s?defs=uscsi_cdb">uscsi_cdb</a>[<span class="n">4</span>] = (<a href="/source/s?defs=start_blk">start_blk</a> >> <span class="n">8</span>) & <span class="n">0xff</span>;<a class="l" name="88"> 88 </a> <a href="/source/s?defs=scmd">scmd</a>-><a href="/source/s?defs=uscsi_cdb">uscsi_cdb</a>[<span class="n">3</span>] = (<a href="/source/s?defs=start_blk">start_blk</a> >> <span class="n">16</span>) & <span class="n">0xff</span>;<a class="l" name="89"> 89 </a> <a href="/source/s?defs=scmd">scmd</a>-><a href="/source/s?defs=uscsi_cdb">uscsi_cdb</a>[<span class="n">2</span>] = (<a href="/source/s?defs=start_blk">start_blk</a> >> <span class="n">24</span>) & <span class="n">0xff</span>;<a class="hl" name="90"> 90 </a> <a href="/source/s?defs=scmd">scmd</a>-><a href="/source/s?defs=uscsi_cdb">uscsi_cdb</a>[<span class="n">9</span>] = <a href="/source/s?defs=nblk">nblk</a> & <span class="n">0xff</span>;<a class="l" name="91"> 91 </a> <a href="/source/s?defs=scmd">scmd</a>-><a href="/source/s?defs=uscsi_cdb">uscsi_cdb</a>[<span class="n">8</span>] = (<a href="/source/s?defs=nblk">nblk</a> >> <span class="n">8</span>) & <span class="n">0xff</span>;<a class="l" name="92"> 92 </a> <a href="/source/s?defs=scmd">scmd</a>-><a href="/source/s?defs=uscsi_cdb">uscsi_cdb</a>[<span class="n">7</span>] = (<a href="/source/s?defs=nblk">nblk</a> >> <span class="n">16</span>) & <span class="n">0xff</span>;<a class="l" name="93"> 93 </a> <a href="/source/s?defs=scmd">scmd</a>-><a href="/source/s?defs=uscsi_cdb">uscsi_cdb</a>[<span class="n">6</span>] = (<a href="/source/s?defs=nblk">nblk</a> >> <span class="n">24</span>) & <span class="n">0xff</span>;<a class="l" name="94"> 94 </a> <a href="/source/s?defs=scmd">scmd</a>-><a href="/source/s?defs=uscsi_cdblen">uscsi_cdblen</a> = <span class="n">12</span>;<a class="l" name="95"> 95 </a> <a href="/source/s?defs=scmd">scmd</a>-><a href="/source/s?defs=uscsi_bufaddr">uscsi_bufaddr</a> = (<b>char</b> *)<a href="/source/s?defs=buf">buf</a>;<a class="l" name="96"> 96 </a> <a href="/source/s?defs=scmd">scmd</a>-><a href="/source/s?defs=uscsi_buflen">uscsi_buflen</a> = <a href="/source/s?defs=nblk">nblk</a>*<span class="n">2352</span>;<a class="l" name="97"> 97 </a><a class="l" name="98"> 98 </a> <b>for</b> (<a href="/source/s?defs=retry">retry</a> = <span class="n">0</span>; <a href="/source/s?defs=retry">retry</a> < <span class="n">3</span>; <a href="/source/s?defs=retry">retry</a>++) {<a class="l" name="99"> 99 </a> <a href="/source/s?defs=ret">ret</a> = <a href="/source/s?defs=uscsi">uscsi</a>(<a href="/source/s?defs=target">target</a>-><a href="/source/s?defs=d_fd">d_fd</a>, <a href="/source/s?defs=scmd">scmd</a>);<a class="hl" name="100"> 100 </a> <b>if</b> (<a href="/source/s?defs=ret">ret</a> >= <span class="n">0</span>)<a class="l" name="101"> 101 </a> <b>break</b>;<a class="l" name="102"> 102 </a> }<a class="l" name="103"> 103 </a><a class="l" name="104"> 104 </a> <b>if</b> (<a href="/source/s?defs=ret">ret</a> < <span class="n">0</span>)<a class="l" name="105"> 105 </a> <b>return</b> (<span class="n">0</span>);<a class="l" name="106"> 106 </a> <b>return</b> (<span class="n">1</span>);<a class="l" name="107"> 107 </a>}<a class="l" name="108"> 108 </a><a class="l" name="109"> 109 </a><b>int</b><a class="hl" name="110"> 110 </a><a href="/source/s?defs=toshiba_speed_ctrl">toshiba_speed_ctrl</a>(<a href="/source/s?defs=cd_device">cd_device</a> *<a href="/source/s?defs=dev">dev</a>, <b>int</b> <a href="/source/s?defs=cmd">cmd</a>, <b>int</b> <a href="/source/s?defs=speed">speed</a>)<a class="l" name="111"> 111 </a>{<a class="l" name="112"> 112 </a> <a href="/source/s?defs=uchar_t">uchar_t</a> *<a href="/source/s?defs=mpage">mpage</a>;<a class="l" name="113"> 113 </a> <b>struct</b> <a href="/source/s?defs=uscsi_cmd">uscsi_cmd</a> *<a href="/source/s?defs=scmd">scmd</a>;<a class="l" name="114"> 114 </a> <b>int</b> <a href="/source/s?defs=ret">ret</a>;<a class="l" name="115"> 115 </a><a class="l" name="116"> 116 </a> <b>if</b> ((<a href="/source/s?defs=cmd">cmd</a> == <a href="/source/s?defs=GET_WRITE_SPEED">GET_WRITE_SPEED</a>) || (<a href="/source/s?defs=cmd">cmd</a> == <a href="/source/s?defs=SET_WRITE_SPEED">SET_WRITE_SPEED</a>)) {<a class="l" name="117"> 117 </a> <b>if</b> (<a href="/source/s?defs=debug">debug</a>) {<a class="l" name="118"> 118 </a> (<b>void</b>) <a href="/source/s?defs=printf">printf</a>(<span class="s">"toshiba_speed_ctrl: WRONG CMD %d\n"</span>,<a class="l" name="119"> 119 </a> <a href="/source/s?defs=cmd">cmd</a>);<a class="hl" name="120"> 120 </a> }<a class="l" name="121"> 121 </a> <b>return</b> (<span class="n">0</span>);<a class="l" name="122"> 122 </a> }<a class="l" name="123"> 123 </a><a class="l" name="124"> 124 </a> <b>if</b> (<a href="/source/s?defs=cmd">cmd</a> == <a href="/source/s?defs=SET_READ_SPEED">SET_READ_SPEED</a>) {<a class="l" name="125"> 125 </a> <b>if</b> (<a href="/source/s?defs=dev">dev</a>-><a href="/source/s?defs=d_cap">d_cap</a> & <a href="/source/s?defs=DEV_CAP_SETTING_SPEED_NOT_ALLOWED">DEV_CAP_SETTING_SPEED_NOT_ALLOWED</a>) {<a class="l" name="126"> 126 </a> <b>if</b> (<a href="/source/s?defs=verbose">verbose</a>)<a class="l" name="127"> 127 </a> <a href="/source/s?defs=err_msg">err_msg</a>(<a href="/source/s?defs=gettext">gettext</a>(<a class="l" name="128"> 128 </a> <span class="s">"Cannot set speed on this device.\n"</span>));<a class="l" name="129"> 129 </a> <b>return</b> (<span class="n">0</span>);<a class="hl" name="130"> 130 </a> }<a class="l" name="131"> 131 </a> <b>if</b> (<a href="/source/s?defs=speed">speed</a> == <span class="n">32</span>) {<a class="l" name="132"> 132 </a> <b>if</b> (<a href="/source/s?defs=strncmp">strncmp</a>(<span class="s">"SUN32XCD"</span>,<a class="l" name="133"> 133 </a> (<b>const</b> <b>char</b> *)&<a href="/source/s?defs=dev">dev</a>-><a href="/source/s?defs=d_inq">d_inq</a>[<span class="n">24</span>], <span class="n">8</span>) == <span class="n">0</span>)<a class="l" name="134"> 134 </a> <b>return</b> (<span class="n">1</span>);<a class="l" name="135"> 135 </a> }<a class="l" name="136"> 136 </a> <b>if</b> ((<a href="/source/s?defs=speed">speed</a> != <span class="n">1</span>) && (<a href="/source/s?defs=speed">speed</a> != <span class="n">2</span>) && (<a href="/source/s?defs=speed">speed</a> != <span class="n">4</span>) &&<a class="l" name="137"> 137 </a> (<a href="/source/s?defs=speed">speed</a> != <span class="n">12</span>)) {<a class="l" name="138"> 138 </a> <b>if</b> (<a href="/source/s?defs=verbose">verbose</a>)<a class="l" name="139"> 139 </a> <a href="/source/s?defs=err_msg">err_msg</a>(<a href="/source/s?defs=gettext">gettext</a>(<a class="hl" name="140"> 140 </a> <span class="s">"%dx speed is not supported by the device.\n"</span>));<a class="l" name="141"> 141 </a> <b>return</b> (<span class="n">0</span>);<a class="l" name="142"> 142 </a> }<a class="l" name="143"> 143 </a> }<a class="l" name="144"> 144 </a><a class="l" name="145"> 145 </a> <a href="/source/s?defs=ret">ret</a> = <span class="n">0</span>;<a class="l" name="146"> 146 </a> <a href="/source/s?defs=mpage">mpage</a> = (<a href="/source/s?defs=uchar_t">uchar_t</a> *)<a href="/source/s?defs=my_zalloc">my_zalloc</a>(<span class="n">16</span>);<a class="l" name="147"> 147 </a> <a href="/source/s?defs=scmd">scmd</a> = <a href="/source/s?defs=get_uscsi_cmd">get_uscsi_cmd</a>();<a class="l" name="148"> 148 </a> <a href="/source/s?defs=scmd">scmd</a>-><a href="/source/s?defs=uscsi_flags">uscsi_flags</a> = <a href="/source/s?defs=USCSI_READ">USCSI_READ</a>|<a href="/source/s?defs=USCSI_SILENT">USCSI_SILENT</a>;<a class="l" name="149"> 149 </a> <a href="/source/s?defs=scmd">scmd</a>-><a href="/source/s?defs=uscsi_timeout">uscsi_timeout</a> = <span class="n">60</span>;<a class="hl" name="150"> 150 </a> <a href="/source/s?defs=scmd">scmd</a>-><a href="/source/s?defs=uscsi_cdblen">uscsi_cdblen</a> = <span class="n">6</span>;<a class="l" name="151"> 151 </a> <a href="/source/s?defs=scmd">scmd</a>-><a href="/source/s?defs=uscsi_bufaddr">uscsi_bufaddr</a> = (<b>char</b> *)<a href="/source/s?defs=mpage">mpage</a>;<a class="l" name="152"> 152 </a> <a href="/source/s?defs=scmd">scmd</a>-><a href="/source/s?defs=uscsi_buflen">uscsi_buflen</a> = <span class="n">16</span>;<a class="l" name="153"> 153 </a> <span class="c">/* 6 byte mode sense for older drives */</span><a class="l" name="154"> 154 </a> <a href="/source/s?defs=scmd">scmd</a>-><a href="/source/s?defs=uscsi_cdb">uscsi_cdb</a>[<span class="n">0</span>] = <a href="/source/s?defs=MODE_SENSE_6_CMD">MODE_SENSE_6_CMD</a>;<a class="l" name="155"> 155 </a> <a href="/source/s?defs=scmd">scmd</a>-><a href="/source/s?defs=uscsi_cdb">uscsi_cdb</a>[<span class="n">2</span>] = <span class="n">0x31</span>;<a class="l" name="156"> 156 </a> <a href="/source/s?defs=scmd">scmd</a>-><a href="/source/s?defs=uscsi_cdb">uscsi_cdb</a>[<span class="n">4</span>] = <span class="n">16</span>;<a class="l" name="157"> 157 </a> <b>if</b> (<a href="/source/s?defs=uscsi">uscsi</a>(<a href="/source/s?defs=dev">dev</a>-><a href="/source/s?defs=d_fd">d_fd</a>, <a href="/source/s?defs=scmd">scmd</a>) < <span class="n">0</span>)<a class="l" name="158"> 158 </a> <b>goto</b> <a href="/source/s?defs=end_speed_ctrl">end_speed_ctrl</a>;<a class="l" name="159"> 159 </a> <b>if</b> (<a href="/source/s?defs=cmd">cmd</a> == <a href="/source/s?defs=GET_READ_SPEED">GET_READ_SPEED</a>) {<a class="hl" name="160"> 160 </a> <a href="/source/s?defs=ret">ret</a> = <a href="/source/s?defs=speed_tbl">speed_tbl</a>[<a href="/source/s?defs=mpage">mpage</a>[<span class="n">14</span>] & <span class="n">0x3</span>];<a class="l" name="161"> 161 </a> <b>goto</b> <a href="/source/s?defs=end_speed_ctrl">end_speed_ctrl</a>;<a class="l" name="162"> 162 </a> }<a class="l" name="163"> 163 </a> <b>if</b> (<a href="/source/s?defs=cmd">cmd</a> == <a href="/source/s?defs=SET_READ_SPEED">SET_READ_SPEED</a>) {<a class="l" name="164"> 164 </a> (<b>void</b>) <a href="/source/s?defs=memset">memset</a>(<a href="/source/s?defs=mpage">mpage</a>, <span class="n">0</span>, <span class="n">9</span>);<a class="l" name="165"> 165 </a> <a href="/source/s?defs=mpage">mpage</a>[<span class="n">3</span>] = <span class="n">8</span>;<a class="l" name="166"> 166 </a> <a href="/source/s?defs=mpage">mpage</a>[<span class="n">12</span>] = <span class="n">0x31</span>;<a class="l" name="167"> 167 </a> <a href="/source/s?defs=mpage">mpage</a>[<span class="n">13</span>] = <span class="n">2</span>;<a class="l" name="168"> 168 </a> <a href="/source/s?defs=mpage">mpage</a>[<span class="n">14</span>] = <a href="/source/s?defs=rev_speed_tbl">rev_speed_tbl</a>[<a href="/source/s?defs=speed">speed</a>];<a class="l" name="169"> 169 </a> <a href="/source/s?defs=scmd">scmd</a> = <a href="/source/s?defs=get_uscsi_cmd">get_uscsi_cmd</a>();<a class="hl" name="170"> 170 </a> <a href="/source/s?defs=scmd">scmd</a>-><a href="/source/s?defs=uscsi_flags">uscsi_flags</a> = <a href="/source/s?defs=USCSI_WRITE">USCSI_WRITE</a>|<a href="/source/s?defs=USCSI_SILENT">USCSI_SILENT</a>;<a class="l" name="171"> 171 </a> <a href="/source/s?defs=scmd">scmd</a>-><a href="/source/s?defs=uscsi_timeout">uscsi_timeout</a> = <span class="n">60</span>;<a class="l" name="172"> 172 </a> <a href="/source/s?defs=scmd">scmd</a>-><a href="/source/s?defs=uscsi_cdblen">uscsi_cdblen</a> = <span class="n">6</span>;<a class="l" name="173"> 173 </a> <a href="/source/s?defs=scmd">scmd</a>-><a href="/source/s?defs=uscsi_bufaddr">uscsi_bufaddr</a> = (<b>char</b> *)<a href="/source/s?defs=mpage">mpage</a>;<a class="l" name="174"> 174 </a> <a href="/source/s?defs=scmd">scmd</a>-><a href="/source/s?defs=uscsi_buflen">uscsi_buflen</a> = <span class="n">16</span>;<a class="l" name="175"> 175 </a> <span class="c">/* 6 byte mode sense command for older drives */</span><a class="l" name="176"> 176 </a> <a href="/source/s?defs=scmd">scmd</a>-><a href="/source/s?defs=uscsi_cdb">uscsi_cdb</a>[<span class="n">0</span>] = <a href="/source/s?defs=MODE_SELECT_6_CMD">MODE_SELECT_6_CMD</a>;<a class="l" name="177"> 177 </a> <a href="/source/s?defs=scmd">scmd</a>-><a href="/source/s?defs=uscsi_cdb">uscsi_cdb</a>[<span class="n">1</span>] = <span class="n">0x10</span>;<a class="l" name="178"> 178 </a> <a href="/source/s?defs=scmd">scmd</a>-><a href="/source/s?defs=uscsi_cdb">uscsi_cdb</a>[<span class="n">4</span>] = <span class="n">16</span>;<a class="l" name="179"> 179 </a> <b>if</b> (<a href="/source/s?defs=uscsi">uscsi</a>(<a href="/source/s?defs=dev">dev</a>-><a href="/source/s?defs=d_fd">d_fd</a>, <a href="/source/s?defs=scmd">scmd</a>) < <span class="n">0</span>)<a class="hl" name="180"> 180 </a> <b>goto</b> <a href="/source/s?defs=end_speed_ctrl">end_speed_ctrl</a>;<a class="l" name="181"> 181 </a> <a href="/source/s?defs=ret">ret</a> = <span class="n">1</span>;<a class="l" name="182"> 182 </a> }<a class="l" name="183"> 183 </a><a href="/source/s?defs=end_speed_ctrl">end_speed_ctrl</a>:<a class="l" name="184"> 184 </a> <a href="/source/s?defs=free">free</a>(<a href="/source/s?defs=mpage">mpage</a>);<a class="l" name="185"> 185 </a> <b>return</b> (<a href="/source/s?defs=ret">ret</a>);<a class="l" name="186"> 186 </a>}<a class="l" name="187"> 187 </a></pre></div><div id="Footer"><p class="Center"><a href="http://www.opensolaris.org/os/project/opengrok/"><img src="/source/default/img/servedby.png" alt="Served by OpenGrok" title="Served by OpenGrok"/></a></p><p class="Center"><a href="http://www.opensolaris.org/os/tou/">Terms of Use</a> |<a href="http://www.sun.com/privacy/">Privacy</a> |<a href="http://www.opensolaris.org/os/trademark/">Trademarks</a> |<a href="http://www.opensolaris.org/os/copyrights/">Copyright Policy</a> |<a href="http://www.opensolaris.org/os/site_guidelines/">Site Guidelines</a> |<a href="http://www.opensolaris.org/os/about/help/">Help</a><br />Your use of this web site or any of its content or software indicates your agreement to be bound by these Terms of Use.<br />Copyright © 1995-2008 Sun Microsystems, Inc.<br /></p><script type="text/javascript" src="http://www.opensolaris.org/js/s_code_remote.js"></script></div></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -