1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
<table class="head">
<tr>
<td class="head-ltitle">SLHCI(4)</td>
<td class="head-vol">Device Drivers Manual</td>
<td class="head-rtitle">SLHCI(4)</td>
</tr>
</table>
<div class="manual-text">
<section class="Sh">
<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
<p class="Pp"><code class="Nm">slhci</code> —
<span class="Nd">Cypress/ScanLogic SL811HS USB Host Controller
driver</span></p>
</section>
<section class="Sh">
<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
<section class="Ss">
<h2 class="Ss" id="amiga"><a class="permalink" href="#amiga">amiga</a></h2>
<p class="Pp"><code class="Cd">slhci* at zbus?</code></p>
</section>
<section class="Ss">
<h2 class="Ss" id="PCMCIA_(CF)_controllers"><a class="permalink" href="#PCMCIA_(CF)_controllers">PCMCIA
(CF) controllers</a></h2>
<p class="Pp"><code class="Cd">slhci* at pcmcia? function ?</code>
<br/>
<code class="Cd">usb* at slhci?</code></p>
</section>
<section class="Ss">
<h2 class="Ss" id="ISA_controllers"><a class="permalink" href="#ISA_controllers">ISA
controllers</a></h2>
<p class="Pp"><code class="Cd">slhci* at isa? port ? irq ?</code>
<br/>
<code class="Cd">usb* at slhci?</code></p>
</section>
<section class="Ss">
<h2 class="Ss" id="TURBOchannel_controllers"><a class="permalink" href="#TURBOchannel_controllers">TURBOchannel
controllers</a></h2>
<p class="Pp"><code class="Cd">tcu* at tc? slot ? offset ?</code>
<br/>
<code class="Cd">slhci* at tcu?</code>
<br/>
<code class="Cd">usb* at slhci?</code></p>
</section>
<section class="Ss">
<h2 class="Ss" id="x68k"><a class="permalink" href="#x68k">x68k</a></h2>
<p class="Pp"><code class="Cd">slhci0 at intio0 addr 0xece380 intr 251</code>
<br/>
<code class="Cd">slhci1 at intio0 addr 0xeceb80 intr 250</code>
<br/>
<code class="Cd">usb* at slhci?</code></p>
<p class="Pp">
<br/>
<code class="Cd">options SLHCI_TRY_LSVH</code></p>
</section>
</section>
<section class="Sh">
<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
<p class="Pp">The <code class="Nm">slhci</code> driver provides support for
Cypress/ScanLogic SL811HS USB Host Controller.</p>
<p class="Pp">The driver supports control, bulk, and interrupt transfers but not
isochronous (audio), which cannot be supported by this chip without
perfectly reliable 1ms interrupts. USB is polled and this chip requires the
driver to initiate all transfers. The driver interrupts at least once every
ms when a device is attached even if no data is transferred. The driver
polls the chip when the transfer is expected to be completed soon; with
maximum use of the bus, the driver will not exit for most of each ms. Use of
this driver can easily have a significant performance impact on any
system.</p>
<p class="Pp">The chip is unreliable in some conditions, possibly due in part to
difficulty meeting timing restrictions (this is likely to be worse on
multiprocessor systems). Unexpected device behavior may trigger some
problems; power cycling externally powered devices may help resolve
persistent problems. Detection of invalid chip state will usually cause the
driver to halt, however is recommended that all data transfers be verified.
Data corruption due to controller error will not be detected automatically.
Unmounting and remounting a device is necessary to prevent use of cached
data.</p>
<p class="Pp">The driver currently will start the next incoming packet before
copying in the previous packet but will not copy the next outgoing packet
before the previous packet is transferred. Reading or writing the chip is
about the same speed as the USB bus, so this means that one outgoing
transfer is half the speed of one incoming transfer and two outgoing
transfers are needed to use the full available bandwidth.</p>
<p class="Pp">All revisions of the SL811HS have trouble with low speed devices
attached to some (likely most) hubs. Low speed traffic via hub is not
allowed by default, but can be enabled with <code class="Cd">options
SLHCI_TRY_LSVH</code> in the kernel config file or by setting the
<var class="Va">slhci_try_lsvh</var> variable to non-zero using
<a class="Xr">ddb(4)</a> or <a class="Xr">gdb(1)</a>.</p>
<p class="Pp">Many USB keyboards have built in hubs and may be low speed
devices. All USB mice I have seen are low speed devices, however a serial
mouse should be usable on a hub with a full speed Serial-USB converter. A
PS2-USB keyboard and mouse converter is likely to be a single low speed
device.</p>
<p class="Pp">Some hardware using this chip does not provide the USB minimum
100mA current, which could potentially cause problems even with externally
powered hubs. The system can allow excess power use in some other cases as
well. Some signs of excess power draw may cause the driver to halt, however
this may not stop the power draw. To be safe verify power use and
availability before connecting any device.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="HARDWARE"><a class="permalink" href="#HARDWARE">HARDWARE</a></h1>
<p class="Pp">Hardware supported by the <code class="Nm">slhci</code> driver
includes:</p>
<ul class="Bl-item Bd-indent">
<li>Ratoc CFU1U</li>
<li>Nereid Ethernet/USB/Memory board</li>
<li>Thylacine USB Host Controller</li>
<li>flxd TC-USB</li>
</ul>
</section>
<section class="Sh">
<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
ALSO</a></h1>
<p class="Pp"><a class="Xr">config(1)</a>, <a class="Xr">isa(4)</a>,
<a class="Xr">pcmcia(4)</a>, <a class="Xr">tc(4)</a>,
<a class="Xr">tcu(4)</a>, <a class="Xr">usb(4)</a></p>
<p class="Pp"><cite class="Rs"><span class="RsT">Cypress SL811HS datasheet,
errata, and application note</span>,
<a class="RsU" href="http://www.cypress.com">http://www.cypress.com</a>.</cite></p>
</section>
<section class="Sh">
<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
<p class="Pp">The <code class="Nm">slhci</code> driver appeared in
<span class="Ux">NetBSD 2.0</span> and was rewritten in
<span class="Ux">NetBSD 5.0</span>.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
<p class="Pp"><span class="An">Tetsuya Isaki</span>
⟨isaki@NetBSD.org⟩
<br/>
<span class="An">Matthew Orgass</span></p>
</section>
</div>
<table class="foot">
<tr>
<td class="foot-date">October 14, 2017</td>
<td class="foot-os">NetBSD 10.1</td>
</tr>
</table>
|