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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
|
<table class="head">
<tr>
<td class="head-ltitle">ATA(4)</td>
<td class="head-vol">Device Drivers Manual</td>
<td class="head-rtitle">ATA(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">ata</code> — <span class="Nd">generic
ATA/SATA controller driver</span></p>
</section>
<section class="Sh">
<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
<p class="Pp">To compile this driver into the kernel, place the following lines
in your kernel configuration file:</p>
<div class="Bd Pp Bd-indent"><code class="Cd">device scbus</code>
<br/>
<code class="Cd">device ata</code></div>
<p class="Pp">Alternatively, to load the driver as set of modules at boot time,
place some of the following lines in <a class="Xr">loader.conf(5)</a>:</p>
<div class="Bd Pp Bd-indent Li">
<pre>ata_load="YES"
ataisa_load="YES"
atapci_load="YES"
ataacard_load="YES"
ataacerlabs_load="YES"
ataamd_load="YES"
ataati_load="YES"
atacenatek_load="YES"
atacypress_load="YES"
atacyrix_load="YES"
atahighpoint_load="YES"
ataintel_load="YES"
ataite_load="YES"
atajmicron_load="YES"
atamarvell_load="YES"
atamicron_load="YES"
atanational_load="YES"
atanetcell_load="YES"
atanvidia_load="YES"
atapromise_load="YES"
ataserverworks_load="YES"
atasiliconimage_load="YES"
atasis_load="YES"
atavia_load="YES"</pre>
</div>
<p class="Pp">The first line is for the common hardware independent code, and is
a prerequisite for the other modules. The next three lines are generic
bus-specific drivers. The rest are vendor-specific PCI drivers.</p>
<p class="Pp">The following tunables are settable from the
<a class="Xr">loader(8)</a>:</p>
<dl class="Bl-ohang">
<dt id="hw.ata.ata_dma_check_80pin"><var class="Va">hw.ata.ata_dma_check_80pin</var></dt>
<dd>set to 0 to disable the 80pin cable check (the default is 1, check the
cable).</dd>
<dt id="hint.atapci.X.msi"><var class="Va">hint.atapci.X.msi</var></dt>
<dd>set to 1 to allow Message Signalled Interrupts (MSI) to be used by the
specified PCI ATA controller, if supported.</dd>
<dt id="hint.ata.X.devX.mode"><var class="Va">hint.ata.X.devX.mode</var></dt>
<dd>limits the initial ATA mode for the specified device on the specified
channel.</dd>
<dt id="hint.ata.X.mode"><var class="Va">hint.ata.X.mode</var></dt>
<dd>limits the initial ATA mode for every device on the specified
channel.</dd>
<dt id="hint.ata.X.pm_level"><var class="Va">hint.ata.X.pm_level</var></dt>
<dd>controls SATA interface Power Management for the specified channel,
allowing some power savings at the cost of additional command latency.
Possible values:
<p class="Pp"></p>
<div class="Bd-indent">
<dl class="Bl-tag Bl-compact">
<dt>0</dt>
<dd>Interface Power Management is disabled. This is the default
value.</dd>
<dt>1</dt>
<dd>The device is allowed to initiate a PM state change; the host is
passive.</dd>
</dl>
</div>
</dd>
<dt id="hint.ata."><var class="Va">hint.ata.</var><var class="Ar">X</var><var class="Va">.dev</var><var class="Ar">X</var><var class="Va">.sata_rev</var></dt>
<dd>limits the initial SATA revision (speed) for the specified device on the
specified channel. Values 1, 2 and 3 are respectively 1.5, 3 and
6Gbps.</dd>
<dt id="hint.ata.~2"><var class="Va">hint.ata.</var><var class="Ar">X</var><var class="Va">.sata_rev</var></dt>
<dd>Same, but for every device on the specified channel.</dd>
</dl>
</section>
<section class="Sh">
<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
<p class="Pp">The <code class="Nm">ata</code> driver gives the
<a class="Xr">CAM(4)</a> subsystem access to the ATA (IDE) and SATA ports of
many generic controllers. Depending on the controller, each PATA (IDE) port
or each one or two SATA ports are represented to CAM as a separate bus with
one or two targets. Most of the bus-management details are handled by the
ATA/SATA-specific transport of CAM. Connected ATA disks are handled by the
ATA protocol disk peripheral driver <a class="Xr">ada(4)</a>. ATAPI devices
are handled by the SCSI protocol peripheral drivers <a class="Xr">cd(4)</a>,
<a class="Xr">da(4)</a>, <a class="Xr">sa(4)</a>, etc.</p>
<p class="Pp">This driver supports ATA, and for the most of controllers, ATAPI
devices. Command queuing and SATA port multipliers are not supported. Device
hot-plug and SATA interface power management is supported only on some
controllers.</p>
<p class="Pp">The <code class="Nm">ata</code> driver can change the transfer
mode when the system is up and running. See the
<code class="Cm">negotiate</code> subcommand of
<a class="Xr">camcontrol(8)</a>.</p>
<p class="Pp" id="DMA">The <code class="Nm">ata</code> driver sets the maximum
transfer mode supported by the hardware as default. However, the
<code class="Nm">ata</code> driver sometimes warns:
“<a class="permalink" href="#DMA"><b class="Sy">DMA limited to
UDMA33, non-ATA66 cable or device</b></a>”. This means that the
<code class="Nm">ata</code> driver has detected that the required 80
conductor cable is not present or could not be detected properly, or that
one of the devices on the channel only accepts up to UDMA2/ATA33. The
<var class="Va">hw.ata.ata_dma_check_80pin</var> tunable can be set to 0 to
disable this check.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="HARDWARE"><a class="permalink" href="#HARDWARE">HARDWARE</a></h1>
<p class="Pp">The <code class="Nm">ata</code> driver supports the IDE interface
on the following ATA/SATA controllers:</p>
<p class="Pp"></p>
<dl class="Bl-tag Bl-compact">
<dt>Acard:</dt>
<dd>ATP850P, ATP860A, ATP860R, ATP865A, ATP865R.</dd>
<dt>ALI:</dt>
<dd>M5228, M5229, M5281, M5283, M5287, M5288, M5289.</dd>
<dt>AMD:</dt>
<dd>AMD756, AMD766, AMD768, AMD8111, CS5536.</dd>
<dt>ATI:</dt>
<dd>IXP200, IXP300, IXP400, IXP600, IXP700, IXP800.</dd>
<dt>CMD:</dt>
<dd>CMD646, CMD646U2, CMD648, CMD649.</dd>
<dt>Cypress:</dt>
<dd>Cypress 82C693.</dd>
<dt>Cyrix:</dt>
<dd>Cyrix 5530.</dd>
<dt>HighPoint:</dt>
<dd>HPT302, HPT366, HPT368, HPT370, HPT371, HPT372, HPT372N, HPT374.</dd>
<dt>Intel:</dt>
<dd>6300ESB, 31244, PIIX, PIIX3, PIIX4, ESB2, ICH, ICH0, ICH2, ICH3, ICH4,
ICH5, ICH6, ICH7, ICH8, ICH9, ICH10, SCH, PCH.</dd>
<dt>ITE:</dt>
<dd>IT8211F, IT8212F, IT8213F.</dd>
<dt>JMicron:</dt>
<dd>JMB360, JMB361, JMB363, JMB365, JMB366, JMB368.</dd>
<dt>Marvell</dt>
<dd>88SE6101, 88SE6102, 88SE6111, 88SE6121, 88SE6141, 88SE6145.</dd>
<dt>National:</dt>
<dd>SC1100.</dd>
<dt>NetCell:</dt>
<dd>NC3000, NC5000.</dd>
<dt>nVidia:</dt>
<dd>nForce, nForce2, nForce2 MCP, nForce3, nForce3 MCP, nForce3 Pro, nForce4,
MCP51, MCP55, MCP61, MCP65, MCP67, MCP73, MCP77, MCP79, MCP89.</dd>
<dt>Promise:</dt>
<dd>PDC20246, PDC20262, PDC20263, PDC20265, PDC20267, PDC20268, PDC20269,
PDC20270, PDC20271, PDC20275, PDC20276, PDC20277, PDC20318, PDC20319,
PDC20371, PDC20375, PDC20376, PDC20377, PDC20378, PDC20379, PDC20571,
PDC20575, PDC20579, PDC20580, PDC20617, PDC20618, PDC20619, PDC20620,
PDC20621, PDC20622, PDC40518, PDC40519, PDC40718, PDC40719.</dd>
<dt>ServerWorks:</dt>
<dd>HT1000, ROSB4, CSB5, CSB6, K2, Frodo4, Frodo8.</dd>
<dt>Silicon Image:</dt>
<dd>SiI0680, SiI3112, SiI3114, SiI3512.</dd>
<dt>SiS:</dt>
<dd>SIS180, SIS181, SIS182, SIS5513, SIS530, SIS540, SIS550, SIS620, SIS630,
SIS630S, SIS633, SIS635, SIS730, SIS733, SIS735, SIS745, SIS961, SIS962,
SIS963, SIS964, SIS965.</dd>
<dt>VIA:</dt>
<dd>VT6410, VT6420, VT6421, VT82C586, VT82C586B, VT82C596, VT82C596B,
VT82C686, VT82C686A, VT82C686B, VT8231, VT8233, VT8233A, VT8233C, VT8235,
VT8237, VT8237A, VT8237S, VT8251, CX700, VX800, VX855, VX900.</dd>
</dl>
<p class="Pp">Some of above chips can be configured for AHCI mode. In such case
they are supported by <a class="Xr">ahci(4)</a> driver instead.</p>
<p class="Pp">Unknown ATA chipsets are supported in PIO modes, and if the
standard busmaster DMA registers are present and contain valid setup, DMA is
also enabled, although the max mode is limited to UDMA33, as it is not known
what the chipset can do and how to program it.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="NOTES"><a class="permalink" href="#NOTES">NOTES</a></h1>
<p class="Pp">Please remember that in order to use UDMA4/ATA66 and above modes
you <a class="permalink" href="#must"><i class="Em" id="must">must</i></a>
use 80 conductor cables. Please assure that ribbon cables are no longer than
45cm. In case of rounded ATA cables, the length depends on the quality of
the cables. SATA cables can be up to 1m long according to the specification.
External SATA cables can be 2m long and more, but not all controllers work
well on long cables, especially at high speeds.</p>
</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">ada(4)</a>, <a class="Xr">ahci(4)</a>,
<a class="Xr">cam(4)</a>, <a class="Xr">cd(4)</a>, <a class="Xr">mvs(4)</a>,
<a class="Xr">siis(4)</a>, <a class="Xr">camcontrol(8)</a></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">ata</code> driver first appeared in
<span class="Ux">FreeBSD 4.0</span>. It was turned into a
<a class="Xr">CAM(4)</a> interface module in <span class="Ux">FreeBSD
9.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">Alexander Motin</span>
<<a class="Mt" href="mailto:mav@FreeBSD.org">mav@FreeBSD.org</a>>
<br/>
<span class="An">Søren Schmidt</span>
<<a class="Mt" href="mailto:sos@FreeBSD.org">sos@FreeBSD.org</a>></p>
</section>
</div>
<table class="foot">
<tr>
<td class="foot-date">March 23, 2015</td>
<td class="foot-os">FreeBSD 15.0</td>
</tr>
</table>
|