Line data Source code
1 : /*
2 : * Copyright 2003-2005 Red Hat, Inc. All rights reserved.
3 : * Copyright 2003-2005 Jeff Garzik
4 : *
5 : *
6 : * This program is free software; you can redistribute it and/or modify
7 : * it under the terms of the GNU General Public License as published by
8 : * the Free Software Foundation; either version 2, or (at your option)
9 : * any later version.
10 : *
11 : * This program is distributed in the hope that it will be useful,
12 : * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 : * GNU General Public License for more details.
15 : *
16 : * You should have received a copy of the GNU General Public License
17 : * along with this program; see the file COPYING. If not, write to
18 : * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
19 : *
20 : *
21 : * libata documentation is available via 'make {ps|pdf}docs',
22 : * as Documentation/DocBook/libata.*
23 : *
24 : */
25 :
26 : #ifndef __LINUX_LIBATA_H__
27 : #define __LINUX_LIBATA_H__
28 :
29 : #include <linux/delay.h>
30 : #include <linux/jiffies.h>
31 : #include <linux/interrupt.h>
32 : #include <linux/dma-mapping.h>
33 : #include <linux/scatterlist.h>
34 : #include <linux/io.h>
35 : #include <linux/ata.h>
36 : #include <linux/workqueue.h>
37 : #include <scsi/scsi_host.h>
38 : #include <linux/acpi.h>
39 : #include <linux/cdrom.h>
40 :
41 : /*
42 : * Define if arch has non-standard setup. This is a _PCI_ standard
43 : * not a legacy or ISA standard.
44 : */
45 : #ifdef CONFIG_ATA_NONSTANDARD
46 : #include <asm/libata-portmap.h>
47 : #else
48 : #include <asm-generic/libata-portmap.h>
49 : #endif
50 :
51 : /*
52 : * compile-time options: to be removed as soon as all the drivers are
53 : * converted to the new debugging mechanism
54 : */
55 : #undef ATA_DEBUG /* debugging output */
56 : #undef ATA_VERBOSE_DEBUG /* yet more debugging output */
57 : #undef ATA_IRQ_TRAP /* define to ack screaming irqs */
58 : #undef ATA_NDEBUG /* define to disable quick runtime checks */
59 :
60 :
61 : /* note: prints function name for you */
62 : #ifdef ATA_DEBUG
63 : #define DPRINTK(fmt, args...) printk(KERN_ERR "%s: " fmt, __func__, ## args)
64 : #ifdef ATA_VERBOSE_DEBUG
65 : #define VPRINTK(fmt, args...) printk(KERN_ERR "%s: " fmt, __func__, ## args)
66 : #else
67 : #define VPRINTK(fmt, args...)
68 : #endif /* ATA_VERBOSE_DEBUG */
69 : #else
70 : #define DPRINTK(fmt, args...)
71 : #define VPRINTK(fmt, args...)
72 : #endif /* ATA_DEBUG */
73 :
74 : #define BPRINTK(fmt, args...) if (ap->flags & ATA_FLAG_DEBUGMSG) printk(KERN_ERR "%s: " fmt, __func__, ## args)
75 :
76 : /* NEW: debug levels */
77 : #define HAVE_LIBATA_MSG 1
78 :
79 : enum {
80 : ATA_MSG_DRV = 0x0001,
81 : ATA_MSG_INFO = 0x0002,
82 : ATA_MSG_PROBE = 0x0004,
83 : ATA_MSG_WARN = 0x0008,
84 : ATA_MSG_MALLOC = 0x0010,
85 : ATA_MSG_CTL = 0x0020,
86 : ATA_MSG_INTR = 0x0040,
87 : ATA_MSG_ERR = 0x0080,
88 : };
89 :
90 : #define ata_msg_drv(p) ((p)->msg_enable & ATA_MSG_DRV)
91 : #define ata_msg_info(p) ((p)->msg_enable & ATA_MSG_INFO)
92 : #define ata_msg_probe(p) ((p)->msg_enable & ATA_MSG_PROBE)
93 : #define ata_msg_warn(p) ((p)->msg_enable & ATA_MSG_WARN)
94 : #define ata_msg_malloc(p) ((p)->msg_enable & ATA_MSG_MALLOC)
95 : #define ata_msg_ctl(p) ((p)->msg_enable & ATA_MSG_CTL)
96 : #define ata_msg_intr(p) ((p)->msg_enable & ATA_MSG_INTR)
97 : #define ata_msg_err(p) ((p)->msg_enable & ATA_MSG_ERR)
98 :
99 : static inline u32 ata_msg_init(int dval, int default_msg_enable_bits)
100 : {
101 : if (dval < 0 || dval >= (sizeof(u32) * 8))
102 : return default_msg_enable_bits; /* should be 0x1 - only driver info msgs */
103 : if (!dval)
104 : return 0;
105 : return (1 << dval) - 1;
106 : }
107 :
108 : /* defines only for the constants which don't work well as enums */
109 : #define ATA_TAG_POISON 0xfafbfcfdU
110 :
111 : enum {
112 : /* various global constants */
113 : LIBATA_MAX_PRD = ATA_MAX_PRD / 2,
114 : LIBATA_DUMB_MAX_PRD = ATA_MAX_PRD / 4, /* Worst case */
115 : ATA_DEF_QUEUE = 1,
116 : /* tag ATA_MAX_QUEUE - 1 is reserved for internal commands */
117 : ATA_MAX_QUEUE = 32,
118 : ATA_TAG_INTERNAL = ATA_MAX_QUEUE - 1,
119 : ATA_SHORT_PAUSE = 16,
120 :
121 : ATAPI_MAX_DRAIN = 16 << 10,
122 :
123 : ATA_ALL_DEVICES = (1 << ATA_MAX_DEVICES) - 1,
124 :
125 : ATA_SHT_EMULATED = 1,
126 : ATA_SHT_CMD_PER_LUN = 1,
127 : ATA_SHT_THIS_ID = -1,
128 : ATA_SHT_USE_CLUSTERING = 1,
129 :
130 : /* struct ata_device stuff */
131 : ATA_DFLAG_LBA = (1 << 0), /* device supports LBA */
132 : ATA_DFLAG_LBA48 = (1 << 1), /* device supports LBA48 */
133 : ATA_DFLAG_CDB_INTR = (1 << 2), /* device asserts INTRQ when ready for CDB */
134 : ATA_DFLAG_NCQ = (1 << 3), /* device supports NCQ */
135 : ATA_DFLAG_FLUSH_EXT = (1 << 4), /* do FLUSH_EXT instead of FLUSH */
136 : ATA_DFLAG_ACPI_PENDING = (1 << 5), /* ACPI resume action pending */
137 : ATA_DFLAG_ACPI_FAILED = (1 << 6), /* ACPI on devcfg has failed */
138 : ATA_DFLAG_AN = (1 << 7), /* AN configured */
139 : ATA_DFLAG_HIPM = (1 << 8), /* device supports HIPM */
140 : ATA_DFLAG_DIPM = (1 << 9), /* device supports DIPM */
141 : ATA_DFLAG_DMADIR = (1 << 10), /* device requires DMADIR */
142 : ATA_DFLAG_CFG_MASK = (1 << 12) - 1,
143 :
144 : ATA_DFLAG_PIO = (1 << 12), /* device limited to PIO mode */
145 : ATA_DFLAG_NCQ_OFF = (1 << 13), /* device limited to non-NCQ mode */
146 : ATA_DFLAG_SLEEPING = (1 << 15), /* device is sleeping */
147 : ATA_DFLAG_DUBIOUS_XFER = (1 << 16), /* data transfer not verified */
148 : ATA_DFLAG_NO_UNLOAD = (1 << 17), /* device doesn't support unload */
149 : ATA_DFLAG_INIT_MASK = (1 << 24) - 1,
150 :
151 : ATA_DFLAG_DETACH = (1 << 24),
152 : ATA_DFLAG_DETACHED = (1 << 25),
153 :
154 : ATA_DEV_UNKNOWN = 0, /* unknown device */
155 : ATA_DEV_ATA = 1, /* ATA device */
156 : ATA_DEV_ATA_UNSUP = 2, /* ATA device (unsupported) */
157 : ATA_DEV_ATAPI = 3, /* ATAPI device */
158 : ATA_DEV_ATAPI_UNSUP = 4, /* ATAPI device (unsupported) */
159 : ATA_DEV_PMP = 5, /* SATA port multiplier */
160 : ATA_DEV_PMP_UNSUP = 6, /* SATA port multiplier (unsupported) */
161 : ATA_DEV_SEMB = 7, /* SEMB */
162 : ATA_DEV_SEMB_UNSUP = 8, /* SEMB (unsupported) */
163 : ATA_DEV_NONE = 9, /* no device */
164 :
165 : /* struct ata_link flags */
166 : ATA_LFLAG_NO_HRST = (1 << 1), /* avoid hardreset */
167 : ATA_LFLAG_NO_SRST = (1 << 2), /* avoid softreset */
168 : ATA_LFLAG_ASSUME_ATA = (1 << 3), /* assume ATA class */
169 : ATA_LFLAG_ASSUME_SEMB = (1 << 4), /* assume SEMB class */
170 : ATA_LFLAG_ASSUME_CLASS = ATA_LFLAG_ASSUME_ATA | ATA_LFLAG_ASSUME_SEMB,
171 : ATA_LFLAG_NO_RETRY = (1 << 5), /* don't retry this link */
172 : ATA_LFLAG_DISABLED = (1 << 6), /* link is disabled */
173 : ATA_LFLAG_SW_ACTIVITY = (1 << 7), /* keep activity stats */
174 :
175 : /* struct ata_port flags */
176 : ATA_FLAG_SLAVE_POSS = (1 << 0), /* host supports slave dev */
177 : /* (doesn't imply presence) */
178 : ATA_FLAG_SATA = (1 << 1),
179 : ATA_FLAG_NO_LEGACY = (1 << 2), /* no legacy mode check */
180 : ATA_FLAG_MMIO = (1 << 3), /* use MMIO, not PIO */
181 : ATA_FLAG_SRST = (1 << 4), /* (obsolete) use ATA SRST, not E.D.D. */
182 : ATA_FLAG_SATA_RESET = (1 << 5), /* (obsolete) use COMRESET */
183 : ATA_FLAG_NO_ATAPI = (1 << 6), /* No ATAPI support */
184 : ATA_FLAG_PIO_DMA = (1 << 7), /* PIO cmds via DMA */
185 : ATA_FLAG_PIO_LBA48 = (1 << 8), /* Host DMA engine is LBA28 only */
186 : ATA_FLAG_PIO_POLLING = (1 << 9), /* use polling PIO if LLD
187 : * doesn't handle PIO interrupts */
188 : ATA_FLAG_NCQ = (1 << 10), /* host supports NCQ */
189 : ATA_FLAG_NO_POWEROFF_SPINDOWN = (1 << 11), /* don't spindown before poweroff */
190 : ATA_FLAG_NO_HIBERNATE_SPINDOWN = (1 << 12), /* don't spindown before hibernation */
191 : ATA_FLAG_DEBUGMSG = (1 << 13),
192 : ATA_FLAG_FPDMA_AA = (1 << 14), /* driver supports Auto-Activate */
193 : ATA_FLAG_IGN_SIMPLEX = (1 << 15), /* ignore SIMPLEX */
194 : ATA_FLAG_NO_IORDY = (1 << 16), /* controller lacks iordy */
195 : ATA_FLAG_ACPI_SATA = (1 << 17), /* need native SATA ACPI layout */
196 : ATA_FLAG_AN = (1 << 18), /* controller supports AN */
197 : ATA_FLAG_PMP = (1 << 19), /* controller supports PMP */
198 : ATA_FLAG_IPM = (1 << 20), /* driver can handle IPM */
199 : ATA_FLAG_EM = (1 << 21), /* driver supports enclosure
200 : * management */
201 : ATA_FLAG_SW_ACTIVITY = (1 << 22), /* driver supports sw activity
202 : * led */
203 :
204 : /* The following flag belongs to ap->pflags but is kept in
205 : * ap->flags because it's referenced in many LLDs and will be
206 : * removed in not-too-distant future.
207 : */
208 : ATA_FLAG_DISABLED = (1 << 23), /* port is disabled, ignore it */
209 :
210 : /* bits 24:31 of ap->flags are reserved for LLD specific flags */
211 :
212 :
213 : /* struct ata_port pflags */
214 : ATA_PFLAG_EH_PENDING = (1 << 0), /* EH pending */
215 : ATA_PFLAG_EH_IN_PROGRESS = (1 << 1), /* EH in progress */
216 : ATA_PFLAG_FROZEN = (1 << 2), /* port is frozen */
217 : ATA_PFLAG_RECOVERED = (1 << 3), /* recovery action performed */
218 : ATA_PFLAG_LOADING = (1 << 4), /* boot/loading probe */
219 : ATA_PFLAG_SCSI_HOTPLUG = (1 << 6), /* SCSI hotplug scheduled */
220 : ATA_PFLAG_INITIALIZING = (1 << 7), /* being initialized, don't touch */
221 : ATA_PFLAG_RESETTING = (1 << 8), /* reset in progress */
222 : ATA_PFLAG_UNLOADING = (1 << 9), /* driver is being unloaded */
223 : ATA_PFLAG_UNLOADED = (1 << 10), /* driver is unloaded */
224 :
225 : ATA_PFLAG_SUSPENDED = (1 << 17), /* port is suspended (power) */
226 : ATA_PFLAG_PM_PENDING = (1 << 18), /* PM operation pending */
227 : ATA_PFLAG_INIT_GTM_VALID = (1 << 19), /* initial gtm data valid */
228 :
229 : ATA_PFLAG_PIO32 = (1 << 20), /* 32bit PIO */
230 : ATA_PFLAG_PIO32CHANGE = (1 << 21), /* 32bit PIO can be turned on/off */
231 :
232 : /* struct ata_queued_cmd flags */
233 : ATA_QCFLAG_ACTIVE = (1 << 0), /* cmd not yet ack'd to scsi lyer */
234 : ATA_QCFLAG_DMAMAP = (1 << 1), /* SG table is DMA mapped */
235 : ATA_QCFLAG_IO = (1 << 3), /* standard IO command */
236 : ATA_QCFLAG_RESULT_TF = (1 << 4), /* result TF requested */
237 : ATA_QCFLAG_CLEAR_EXCL = (1 << 5), /* clear excl_link on completion */
238 : ATA_QCFLAG_QUIET = (1 << 6), /* don't report device error */
239 : ATA_QCFLAG_RETRY = (1 << 7), /* retry after failure */
240 :
241 : ATA_QCFLAG_FAILED = (1 << 16), /* cmd failed and is owned by EH */
242 : ATA_QCFLAG_SENSE_VALID = (1 << 17), /* sense data valid */
243 : ATA_QCFLAG_EH_SCHEDULED = (1 << 18), /* EH scheduled (obsolete) */
244 :
245 : /* host set flags */
246 : ATA_HOST_SIMPLEX = (1 << 0), /* Host is simplex, one DMA channel per host only */
247 : ATA_HOST_STARTED = (1 << 1), /* Host started */
248 : ATA_HOST_PARALLEL_SCAN = (1 << 2), /* Ports on this host can be scanned in parallel */
249 :
250 : /* bits 24:31 of host->flags are reserved for LLD specific flags */
251 :
252 : /* various lengths of time */
253 : ATA_TMOUT_BOOT = 30000, /* heuristic */
254 : ATA_TMOUT_BOOT_QUICK = 7000, /* heuristic */
255 : ATA_TMOUT_INTERNAL_QUICK = 5000,
256 : ATA_TMOUT_MAX_PARK = 30000,
257 :
258 : /* FIXME: GoVault needs 2s but we can't afford that without
259 : * parallel probing. 800ms is enough for iVDR disk
260 : * HHD424020F7SV00. Increase to 2secs when parallel probing
261 : * is in place.
262 : */
263 : ATA_TMOUT_FF_WAIT = 800,
264 :
265 : /* Spec mandates to wait for ">= 2ms" before checking status
266 : * after reset. We wait 150ms, because that was the magic
267 : * delay used for ATAPI devices in Hale Landis's ATADRVR, for
268 : * the period of time between when the ATA command register is
269 : * written, and then status is checked. Because waiting for
270 : * "a while" before checking status is fine, post SRST, we
271 : * perform this magic delay here as well.
272 : *
273 : * Old drivers/ide uses the 2mS rule and then waits for ready.
274 : */
275 : ATA_WAIT_AFTER_RESET = 150,
276 :
277 : /* If PMP is supported, we have to do follow-up SRST. As some
278 : * PMPs don't send D2H Reg FIS after hardreset, LLDs are
279 : * advised to wait only for the following duration before
280 : * doing SRST.
281 : */
282 : ATA_TMOUT_PMP_SRST_WAIT = 5000,
283 :
284 : /* ATA bus states */
285 : BUS_UNKNOWN = 0,
286 : BUS_DMA = 1,
287 : BUS_IDLE = 2,
288 : BUS_NOINTR = 3,
289 : BUS_NODATA = 4,
290 : BUS_TIMER = 5,
291 : BUS_PIO = 6,
292 : BUS_EDD = 7,
293 : BUS_IDENTIFY = 8,
294 : BUS_PACKET = 9,
295 :
296 : /* SATA port states */
297 : PORT_UNKNOWN = 0,
298 : PORT_ENABLED = 1,
299 : PORT_DISABLED = 2,
300 :
301 : /* encoding various smaller bitmaps into a single
302 : * unsigned long bitmap
303 : */
304 : ATA_NR_PIO_MODES = 7,
305 : ATA_NR_MWDMA_MODES = 5,
306 : ATA_NR_UDMA_MODES = 8,
307 :
308 : ATA_SHIFT_PIO = 0,
309 : ATA_SHIFT_MWDMA = ATA_SHIFT_PIO + ATA_NR_PIO_MODES,
310 : ATA_SHIFT_UDMA = ATA_SHIFT_MWDMA + ATA_NR_MWDMA_MODES,
311 :
312 : /* size of buffer to pad xfers ending on unaligned boundaries */
313 : ATA_DMA_PAD_SZ = 4,
314 :
315 : /* ering size */
316 : ATA_ERING_SIZE = 32,
317 :
318 : /* return values for ->qc_defer */
319 : ATA_DEFER_LINK = 1,
320 : ATA_DEFER_PORT = 2,
321 :
322 : /* desc_len for ata_eh_info and context */
323 : ATA_EH_DESC_LEN = 80,
324 :
325 : /* reset / recovery action types */
326 : ATA_EH_REVALIDATE = (1 << 0),
327 : ATA_EH_SOFTRESET = (1 << 1), /* meaningful only in ->prereset */
328 : ATA_EH_HARDRESET = (1 << 2), /* meaningful only in ->prereset */
329 : ATA_EH_RESET = ATA_EH_SOFTRESET | ATA_EH_HARDRESET,
330 : ATA_EH_ENABLE_LINK = (1 << 3),
331 : ATA_EH_LPM = (1 << 4), /* link power management action */
332 : ATA_EH_PARK = (1 << 5), /* unload heads and stop I/O */
333 :
334 : ATA_EH_PERDEV_MASK = ATA_EH_REVALIDATE | ATA_EH_PARK,
335 : ATA_EH_ALL_ACTIONS = ATA_EH_REVALIDATE | ATA_EH_RESET |
336 : ATA_EH_ENABLE_LINK | ATA_EH_LPM,
337 :
338 : /* ata_eh_info->flags */
339 1 : ATA_EHI_HOTPLUGGED = (1 << 0), /* could have been hotplugged */
340 1 : ATA_EHI_NO_AUTOPSY = (1 << 2), /* no autopsy */
341 1 : ATA_EHI_QUIET = (1 << 3), /* be quiet */
342 1 :
343 : ATA_EHI_DID_SOFTRESET = (1 << 16), /* already soft-reset this port */
344 : ATA_EHI_DID_HARDRESET = (1 << 17), /* already soft-reset this port */
345 : ATA_EHI_PRINTINFO = (1 << 18), /* print configuration info */
346 : ATA_EHI_SETMODE = (1 << 19), /* configure transfer mode */
347 : ATA_EHI_POST_SETMODE = (1 << 20), /* revaildating after setmode */
348 :
349 : ATA_EHI_DID_RESET = ATA_EHI_DID_SOFTRESET | ATA_EHI_DID_HARDRESET,
350 :
351 : /* mask of flags to transfer *to* the slave link */
352 : ATA_EHI_TO_SLAVE_MASK = ATA_EHI_NO_AUTOPSY | ATA_EHI_QUIET,
353 :
354 : /* max tries if error condition is still set after ->error_handler */
355 : ATA_EH_MAX_TRIES = 5,
356 :
357 : /* sometimes resuming a link requires several retries */
358 : ATA_LINK_RESUME_TRIES = 5,
359 :
360 : /* how hard are we gonna try to probe/recover devices */
361 : ATA_PROBE_MAX_TRIES = 3,
362 : ATA_EH_DEV_TRIES = 3,
363 : ATA_EH_PMP_TRIES = 5,
364 : ATA_EH_PMP_LINK_TRIES = 3,
365 :
366 : SATA_PMP_RW_TIMEOUT = 3000, /* PMP read/write timeout */
367 :
368 : /* This should match the actual table size of
369 : * ata_eh_cmd_timeout_table in libata-eh.c.
370 : */
371 : ATA_EH_CMD_TIMEOUT_TABLE_SIZE = 6,
372 :
373 : /* Horkage types. May be set by libata or controller on drives
374 : (some horkage may be drive/controller pair dependant */
375 :
376 : ATA_HORKAGE_DIAGNOSTIC = (1 << 0), /* Failed boot diag */
377 : ATA_HORKAGE_NODMA = (1 << 1), /* DMA problems */
378 : ATA_HORKAGE_NONCQ = (1 << 2), /* Don't use NCQ */
379 : ATA_HORKAGE_MAX_SEC_128 = (1 << 3), /* Limit max sects to 128 */
380 : ATA_HORKAGE_BROKEN_HPA = (1 << 4), /* Broken HPA */
381 : ATA_HORKAGE_DISABLE = (1 << 5), /* Disable it */
382 : ATA_HORKAGE_HPA_SIZE = (1 << 6), /* native size off by one */
383 : ATA_HORKAGE_IPM = (1 << 7), /* Link PM problems */
384 : ATA_HORKAGE_IVB = (1 << 8), /* cbl det validity bit bugs */
385 : ATA_HORKAGE_STUCK_ERR = (1 << 9), /* stuck ERR on next PACKET */
386 : ATA_HORKAGE_BRIDGE_OK = (1 << 10), /* no bridge limits */
387 : ATA_HORKAGE_ATAPI_MOD16_DMA = (1 << 11), /* use ATAPI DMA for commands
388 : not multiple of 16 bytes */
389 : ATA_HORKAGE_FIRMWARE_WARN = (1 << 12), /* firmware update warning */
390 : ATA_HORKAGE_1_5_GBPS = (1 << 13), /* force 1.5 Gbps */
391 : ATA_HORKAGE_NOSETXFER = (1 << 14), /* skip SETXFER, SATA only */
392 : ATA_HORKAGE_BROKEN_FPDMA_AA = (1 << 15), /* skip AA */
393 :
394 : /* DMA mask for user DMA control: User visible values; DO NOT
395 : renumber */
396 : ATA_DMA_MASK_ATA = (1 << 0), /* DMA on ATA Disk */
397 : ATA_DMA_MASK_ATAPI = (1 << 1), /* DMA on ATAPI */
398 : ATA_DMA_MASK_CFA = (1 << 2), /* DMA on CF Card */
399 :
400 : /* ATAPI command types */
401 : ATAPI_READ = 0, /* READs */
402 : ATAPI_WRITE = 1, /* WRITEs */
403 : ATAPI_READ_CD = 2, /* READ CD [MSF] */
404 : ATAPI_PASS_THRU = 3, /* SAT pass-thru */
405 : ATAPI_MISC = 4, /* the rest */
406 :
407 : /* Timing constants */
408 : ATA_TIMING_SETUP = (1 << 0),
409 : ATA_TIMING_ACT8B = (1 << 1),
410 : ATA_TIMING_REC8B = (1 << 2),
411 : ATA_TIMING_CYC8B = (1 << 3),
412 : ATA_TIMING_8BIT = ATA_TIMING_ACT8B | ATA_TIMING_REC8B |
413 : ATA_TIMING_CYC8B,
414 : ATA_TIMING_ACTIVE = (1 << 4),
415 : ATA_TIMING_RECOVER = (1 << 5),
416 : ATA_TIMING_DMACK_HOLD = (1 << 6),
417 : ATA_TIMING_CYCLE = (1 << 7),
418 : ATA_TIMING_UDMA = (1 << 8),
419 : ATA_TIMING_ALL = ATA_TIMING_SETUP | ATA_TIMING_ACT8B |
420 : ATA_TIMING_REC8B | ATA_TIMING_CYC8B |
421 : ATA_TIMING_ACTIVE | ATA_TIMING_RECOVER |
422 : ATA_TIMING_DMACK_HOLD | ATA_TIMING_CYCLE |
423 : ATA_TIMING_UDMA,
424 :
425 : /* ACPI constants */
426 : ATA_ACPI_FILTER_SETXFER = 1 << 0,
427 : ATA_ACPI_FILTER_LOCK = 1 << 1,
428 : ATA_ACPI_FILTER_DIPM = 1 << 2,
429 : ATA_ACPI_FILTER_FPDMA_OFFSET = 1 << 3, /* FPDMA non-zero offset */
430 : ATA_ACPI_FILTER_FPDMA_AA = 1 << 4, /* FPDMA auto activate */
431 :
432 : ATA_ACPI_FILTER_DEFAULT = ATA_ACPI_FILTER_SETXFER |
433 : ATA_ACPI_FILTER_LOCK |
434 : ATA_ACPI_FILTER_DIPM,
435 : };
436 :
437 : enum ata_xfer_mask {
438 : ATA_MASK_PIO = ((1LU << ATA_NR_PIO_MODES) - 1)
439 : << ATA_SHIFT_PIO,
440 : ATA_MASK_MWDMA = ((1LU << ATA_NR_MWDMA_MODES) - 1)
441 : << ATA_SHIFT_MWDMA,
442 : ATA_MASK_UDMA = ((1LU << ATA_NR_UDMA_MODES) - 1)
443 : << ATA_SHIFT_UDMA,
444 : };
445 :
446 : enum hsm_task_states {
447 : HSM_ST_IDLE, /* no command on going */
448 : HSM_ST_FIRST, /* (waiting the device to)
449 : write CDB or first data block */
450 : HSM_ST, /* (waiting the device to) transfer data */
451 : HSM_ST_LAST, /* (waiting the device to) complete command */
452 : HSM_ST_ERR, /* error */
453 : };
454 :
455 : enum ata_completion_errors {
456 : AC_ERR_DEV = (1 << 0), /* device reported error */
457 : AC_ERR_HSM = (1 << 1), /* host state machine violation */
458 : AC_ERR_TIMEOUT = (1 << 2), /* timeout */
459 : AC_ERR_MEDIA = (1 << 3), /* media error */
460 : AC_ERR_ATA_BUS = (1 << 4), /* ATA bus error */
461 : AC_ERR_HOST_BUS = (1 << 5), /* host bus error */
462 : AC_ERR_SYSTEM = (1 << 6), /* system error */
463 : AC_ERR_INVALID = (1 << 7), /* invalid argument */
464 : AC_ERR_OTHER = (1 << 8), /* unknown */
465 : AC_ERR_NODEV_HINT = (1 << 9), /* polling device detection hint */
466 : AC_ERR_NCQ = (1 << 10), /* marker for offending NCQ qc */
467 : };
468 :
469 : /* forward declarations */
470 : struct scsi_device;
471 : struct ata_port_operations;
472 : struct ata_port;
473 : struct ata_link;
474 : struct ata_queued_cmd;
475 :
476 : /* typedefs */
477 : typedef void (*ata_qc_cb_t) (struct ata_queued_cmd *qc);
478 : typedef int (*ata_prereset_fn_t)(struct ata_link *link, unsigned long deadline);
479 : typedef int (*ata_reset_fn_t)(struct ata_link *link, unsigned int *classes,
480 : unsigned long deadline);
481 : typedef void (*ata_postreset_fn_t)(struct ata_link *link, unsigned int *classes);
482 1 :
483 : /*
484 : * host pm policy: If you alter this, you also need to alter libata-scsi.c
485 : * (for the ascii descriptions)
486 : */
487 : enum link_pm {
488 : NOT_AVAILABLE,
489 : MIN_POWER,
490 : MAX_PERFORMANCE,
491 : MEDIUM_POWER,
492 : };
493 1 : extern struct device_attribute dev_attr_link_power_management_policy;
494 1 : extern struct device_attribute dev_attr_unload_heads;
495 1 : extern struct device_attribute dev_attr_em_message_type;
496 1 : extern struct device_attribute dev_attr_em_message;
497 1 : extern struct device_attribute dev_attr_sw_activity;
498 1 :
499 : enum sw_activity {
500 : OFF,
501 : BLINK_ON,
502 : BLINK_OFF,
503 : };
504 1 :
505 : #ifdef CONFIG_ATA_SFF
506 : struct ata_ioports {
507 : void __iomem *cmd_addr;
508 : void __iomem *data_addr;
509 : void __iomem *error_addr;
510 : void __iomem *feature_addr;
511 : void __iomem *nsect_addr;
512 : void __iomem *lbal_addr;
513 : void __iomem *lbam_addr;
514 : void __iomem *lbah_addr;
515 : void __iomem *device_addr;
516 : void __iomem *status_addr;
517 : void __iomem *command_addr;
518 : void __iomem *altstatus_addr;
519 : void __iomem *ctl_addr;
520 : void __iomem *bmdma_addr;
521 : void __iomem *scr_addr;
522 : };
523 : #endif /* CONFIG_ATA_SFF */
524 :
525 : struct ata_host {
526 : spinlock_t lock;
527 : struct device *dev;
528 : void __iomem * const *iomap;
529 : unsigned int n_ports;
530 : void *private_data;
531 : struct ata_port_operations *ops;
532 : unsigned long flags;
533 : #ifdef CONFIG_ATA_ACPI
534 : acpi_handle acpi_handle;
535 : #endif
536 : struct ata_port *simplex_claimed; /* channel owning the DMA */
537 : struct ata_port *ports[0];
538 : };
539 2 :
540 : struct ata_queued_cmd {
541 : struct ata_port *ap;
542 : struct ata_device *dev;
543 :
544 : struct scsi_cmnd *scsicmd;
545 : void (*scsidone)(struct scsi_cmnd *);
546 :
547 : struct ata_taskfile tf;
548 : u8 cdb[ATAPI_CDB_LEN];
549 :
550 : unsigned long flags; /* ATA_QCFLAG_xxx */
551 : unsigned int tag;
552 : unsigned int n_elem;
553 : unsigned int orig_n_elem;
554 :
555 : int dma_dir;
556 :
557 : unsigned int sect_size;
558 :
559 : unsigned int nbytes;
560 : unsigned int extrabytes;
561 : unsigned int curbytes;
562 :
563 : struct scatterlist *cursg;
564 : unsigned int cursg_ofs;
565 :
566 : struct scatterlist sgent;
567 :
568 : struct scatterlist *sg;
569 :
570 : unsigned int err_mask;
571 : struct ata_taskfile result_tf;
572 : ata_qc_cb_t complete_fn;
573 :
574 : void *private_data;
575 : void *lldd_task;
576 : };
577 1 :
578 : struct ata_port_stats {
579 : unsigned long unhandled_irq;
580 : unsigned long idle_irq;
581 : unsigned long rw_reqbuf;
582 : };
583 1 :
584 : struct ata_ering_entry {
585 : unsigned int eflags;
586 : unsigned int err_mask;
587 : u64 timestamp;
588 : };
589 1 :
590 : struct ata_ering {
591 : int cursor;
592 : struct ata_ering_entry ring[ATA_ERING_SIZE];
593 : };
594 2 :
595 : struct ata_device {
596 : struct ata_link *link;
597 : unsigned int devno; /* 0 or 1 */
598 : unsigned int horkage; /* List of broken features */
599 : unsigned long flags; /* ATA_DFLAG_xxx */
600 : struct scsi_device *sdev; /* attached SCSI device */
601 : void *private_data;
602 : #ifdef CONFIG_ATA_ACPI
603 : acpi_handle acpi_handle;
604 : union acpi_object *gtf_cache;
605 : unsigned int gtf_filter;
606 : #endif
607 : /* n_sector is CLEAR_BEGIN, read comment above CLEAR_BEGIN */
608 : u64 n_sectors; /* size of device, if ATA */
609 : u64 n_native_sectors; /* native size, if ATA */
610 : unsigned int class; /* ATA_DEV_xxx */
611 : unsigned long unpark_deadline;
612 :
613 : u8 pio_mode;
614 : u8 dma_mode;
615 : u8 xfer_mode;
616 : unsigned int xfer_shift; /* ATA_SHIFT_xxx */
617 :
618 : unsigned int multi_count; /* sectors count for
619 : READ/WRITE MULTIPLE */
620 : unsigned int max_sectors; /* per-device max sectors */
621 : unsigned int cdb_len;
622 :
623 : /* per-dev xfer mask */
624 : unsigned long pio_mask;
625 : unsigned long mwdma_mask;
626 : unsigned long udma_mask;
627 :
628 : /* for CHS addressing */
629 : u16 cylinders; /* Number of cylinders */
630 : u16 heads; /* Number of heads */
631 : u16 sectors; /* Number of sectors per track */
632 :
633 : union {
634 : u16 id[ATA_ID_WORDS]; /* IDENTIFY xxx DEVICE data */
635 : u32 gscr[SATA_PMP_GSCR_DWORDS]; /* PMP GSCR block */
636 : };
637 :
638 : /* error history */
639 : int spdn_cnt;
640 : /* ering is CLEAR_END, read comment above CLEAR_END */
641 : struct ata_ering ering;
642 : };
643 1 :
644 : /* Fields between ATA_DEVICE_CLEAR_BEGIN and ATA_DEVICE_CLEAR_END are
645 : * cleared to zero on ata_dev_init().
646 : */
647 : #define ATA_DEVICE_CLEAR_BEGIN offsetof(struct ata_device, n_sectors)
648 : #define ATA_DEVICE_CLEAR_END offsetof(struct ata_device, ering)
649 :
650 : struct ata_eh_info {
651 : struct ata_device *dev; /* offending device */
652 : u32 serror; /* SError from LLDD */
653 : unsigned int err_mask; /* port-wide err_mask */
654 : unsigned int action; /* ATA_EH_* action mask */
655 : unsigned int dev_action[ATA_MAX_DEVICES]; /* dev EH action */
656 : unsigned int flags; /* ATA_EHI_* flags */
657 :
658 : unsigned int probe_mask;
659 :
660 : char desc[ATA_EH_DESC_LEN];
661 : int desc_len;
662 : };
663 1 :
664 : struct ata_eh_context {
665 : struct ata_eh_info i;
666 : int tries[ATA_MAX_DEVICES];
667 : int cmd_timeout_idx[ATA_MAX_DEVICES]
668 : [ATA_EH_CMD_TIMEOUT_TABLE_SIZE];
669 : unsigned int classes[ATA_MAX_DEVICES];
670 : unsigned int did_probe_mask;
671 : unsigned int unloaded_mask;
672 : unsigned int saved_ncq_enabled;
673 : u8 saved_xfer_mode[ATA_MAX_DEVICES];
674 : /* timestamp for the last reset attempt or success */
675 : unsigned long last_reset;
676 : };
677 :
678 : struct ata_acpi_drive
679 : {
680 : u32 pio;
681 : u32 dma;
682 : } __packed;
683 :
684 : struct ata_acpi_gtm {
685 : struct ata_acpi_drive drive[2];
686 : u32 flags;
687 : } __packed;
688 1 :
689 : struct ata_link {
690 : struct ata_port *ap;
691 : int pmp; /* port multiplier port # */
692 :
693 : unsigned int active_tag; /* active tag on this link */
694 : u32 sactive; /* active NCQ commands */
695 :
696 : unsigned int flags; /* ATA_LFLAG_xxx */
697 :
698 : u32 saved_scontrol; /* SControl on probe */
699 : unsigned int hw_sata_spd_limit;
700 : unsigned int sata_spd_limit;
701 : unsigned int sata_spd; /* current SATA PHY speed */
702 :
703 : /* record runtime error info, protected by host_set lock */
704 : struct ata_eh_info eh_info;
705 : /* EH context */
706 : struct ata_eh_context eh_context;
707 :
708 : struct ata_device device[ATA_MAX_DEVICES];
709 : };
710 1 :
711 : struct ata_port {
712 : struct Scsi_Host *scsi_host; /* our co-allocated scsi host */
713 : struct ata_port_operations *ops;
714 : spinlock_t *lock;
715 : /* Flags owned by the EH context. Only EH should touch these once the
716 : port is active */
717 : unsigned long flags; /* ATA_FLAG_xxx */
718 : /* Flags that change dynamically, protected by ap->lock */
719 : unsigned int pflags; /* ATA_PFLAG_xxx */
720 : unsigned int print_id; /* user visible unique port ID */
721 : unsigned int port_no; /* 0 based port no. inside the host */
722 :
723 : struct ata_prd *prd; /* our SG list */
724 : dma_addr_t prd_dma; /* and its DMA mapping */
725 :
726 : #ifdef CONFIG_ATA_SFF
727 : struct ata_ioports ioaddr; /* ATA cmd/ctl/dma register blocks */
728 : #endif /* CONFIG_ATA_SFF */
729 :
730 : u8 ctl; /* cache of ATA control register */
731 : u8 last_ctl; /* Cache last written value */
732 : unsigned int pio_mask;
733 : unsigned int mwdma_mask;
734 : unsigned int udma_mask;
735 : unsigned int cbl; /* cable type; ATA_CBL_xxx */
736 :
737 : struct ata_queued_cmd qcmd[ATA_MAX_QUEUE];
738 : unsigned long qc_allocated;
739 : unsigned int qc_active;
740 : int nr_active_links; /* #links with active qcs */
741 :
742 : struct ata_link link; /* host default link */
743 : struct ata_link *slave_link; /* see ata_slave_link_init() */
744 :
745 : int nr_pmp_links; /* nr of available PMP links */
746 : struct ata_link *pmp_link; /* array of PMP links */
747 : struct ata_link *excl_link; /* for PMP qc exclusion */
748 :
749 : struct ata_port_stats stats;
750 : struct ata_host *host;
751 : struct device *dev;
752 :
753 : void *port_task_data;
754 : struct delayed_work port_task;
755 : struct delayed_work hotplug_task;
756 : struct work_struct scsi_rescan_task;
757 :
758 : unsigned int hsm_task_state;
759 :
760 : u32 msg_enable;
761 : struct list_head eh_done_q;
762 : wait_queue_head_t eh_wait_q;
763 : int eh_tries;
764 : struct completion park_req_pending;
765 :
766 : pm_message_t pm_mesg;
767 : int *pm_result;
768 : enum link_pm pm_policy;
769 :
770 : struct timer_list fastdrain_timer;
771 : unsigned long fastdrain_cnt;
772 :
773 : int em_message_type;
774 : void *private_data;
775 :
776 : #ifdef CONFIG_ATA_ACPI
777 : acpi_handle acpi_handle;
778 : struct ata_acpi_gtm __acpi_init_gtm; /* use ata_acpi_init_gtm() */
779 : #endif
780 : /* owned by EH */
781 : u8 sector_buf[ATA_SECT_SIZE] ____cacheline_aligned;
782 : };
783 1 :
784 : /* The following initializer overrides a method to NULL whether one of
785 : * its parent has the method defined or not. This is equivalent to
786 : * ERR_PTR(-ENOENT). Unfortunately, ERR_PTR doesn't render a constant
787 : * expression and thus can't be used as an initializer.
788 : */
789 : #define ATA_OP_NULL (void *)(unsigned long)(-ENOENT)
790 :
791 : struct ata_port_operations {
792 : /*
793 : * Command execution
794 : */
795 : int (*qc_defer)(struct ata_queued_cmd *qc);
796 : int (*check_atapi_dma)(struct ata_queued_cmd *qc);
797 : void (*qc_prep)(struct ata_queued_cmd *qc);
798 : unsigned int (*qc_issue)(struct ata_queued_cmd *qc);
799 : bool (*qc_fill_rtf)(struct ata_queued_cmd *qc);
800 :
801 : /*
802 : * Configuration and exception handling
803 : */
804 : int (*cable_detect)(struct ata_port *ap);
805 : unsigned long (*mode_filter)(struct ata_device *dev, unsigned long xfer_mask);
806 : void (*set_piomode)(struct ata_port *ap, struct ata_device *dev);
807 : void (*set_dmamode)(struct ata_port *ap, struct ata_device *dev);
808 : int (*set_mode)(struct ata_link *link, struct ata_device **r_failed_dev);
809 : unsigned int (*read_id)(struct ata_device *dev, struct ata_taskfile *tf, u16 *id);
810 :
811 : void (*dev_config)(struct ata_device *dev);
812 :
813 : void (*freeze)(struct ata_port *ap);
814 : void (*thaw)(struct ata_port *ap);
815 : ata_prereset_fn_t prereset;
816 : ata_reset_fn_t softreset;
817 : ata_reset_fn_t hardreset;
818 : ata_postreset_fn_t postreset;
819 : ata_prereset_fn_t pmp_prereset;
820 : ata_reset_fn_t pmp_softreset;
821 : ata_reset_fn_t pmp_hardreset;
822 : ata_postreset_fn_t pmp_postreset;
823 : void (*error_handler)(struct ata_port *ap);
824 : void (*lost_interrupt)(struct ata_port *ap);
825 : void (*post_internal_cmd)(struct ata_queued_cmd *qc);
826 :
827 : /*
828 : * Optional features
829 : */
830 : int (*scr_read)(struct ata_link *link, unsigned int sc_reg, u32 *val);
831 : int (*scr_write)(struct ata_link *link, unsigned int sc_reg, u32 val);
832 : void (*pmp_attach)(struct ata_port *ap);
833 : void (*pmp_detach)(struct ata_port *ap);
834 : int (*enable_pm)(struct ata_port *ap, enum link_pm policy);
835 : void (*disable_pm)(struct ata_port *ap);
836 :
837 : /*
838 : * Start, stop, suspend and resume
839 : */
840 : int (*port_suspend)(struct ata_port *ap, pm_message_t mesg);
841 : int (*port_resume)(struct ata_port *ap);
842 : int (*port_start)(struct ata_port *ap);
843 : void (*port_stop)(struct ata_port *ap);
844 : void (*host_stop)(struct ata_host *host);
845 :
846 : #ifdef CONFIG_ATA_SFF
847 : /*
848 : * SFF / taskfile oriented ops
849 : */
850 : void (*sff_dev_select)(struct ata_port *ap, unsigned int device);
851 : u8 (*sff_check_status)(struct ata_port *ap);
852 : u8 (*sff_check_altstatus)(struct ata_port *ap);
853 : void (*sff_tf_load)(struct ata_port *ap, const struct ata_taskfile *tf);
854 : void (*sff_tf_read)(struct ata_port *ap, struct ata_taskfile *tf);
855 : void (*sff_exec_command)(struct ata_port *ap,
856 : const struct ata_taskfile *tf);
857 : unsigned int (*sff_data_xfer)(struct ata_device *dev,
858 : unsigned char *buf, unsigned int buflen, int rw);
859 : u8 (*sff_irq_on)(struct ata_port *);
860 : void (*sff_irq_clear)(struct ata_port *);
861 :
862 : void (*bmdma_setup)(struct ata_queued_cmd *qc);
863 : void (*bmdma_start)(struct ata_queued_cmd *qc);
864 : void (*bmdma_stop)(struct ata_queued_cmd *qc);
865 : u8 (*bmdma_status)(struct ata_port *ap);
866 :
867 : void (*drain_fifo)(struct ata_queued_cmd *qc);
868 : #endif /* CONFIG_ATA_SFF */
869 :
870 : ssize_t (*em_show)(struct ata_port *ap, char *buf);
871 : ssize_t (*em_store)(struct ata_port *ap, const char *message,
872 : size_t size);
873 : ssize_t (*sw_activity_show)(struct ata_device *dev, char *buf);
874 : ssize_t (*sw_activity_store)(struct ata_device *dev,
875 : enum sw_activity val);
876 : /*
877 : * Obsolete
878 : */
879 : void (*phy_reset)(struct ata_port *ap);
880 : void (*eng_timeout)(struct ata_port *ap);
881 :
882 : /*
883 : * ->inherits must be the last field and all the preceding
884 : * fields must be pointers.
885 : */
886 : const struct ata_port_operations *inherits;
887 : };
888 1 :
889 : struct ata_port_info {
890 : unsigned long flags;
891 : unsigned long link_flags;
892 : unsigned long pio_mask;
893 : unsigned long mwdma_mask;
894 : unsigned long udma_mask;
895 : struct ata_port_operations *port_ops;
896 : void *private_data;
897 : };
898 :
899 : struct ata_timing {
900 : unsigned short mode; /* ATA mode */
901 : unsigned short setup; /* t1 */
902 : unsigned short act8b; /* t2 for 8-bit I/O */
903 : unsigned short rec8b; /* t2i for 8-bit I/O */
904 : unsigned short cyc8b; /* t0 for 8-bit I/O */
905 : unsigned short active; /* t2 or tD */
906 : unsigned short recover; /* t2i or tK */
907 : unsigned short dmack_hold; /* tj */
908 : unsigned short cycle; /* t0 */
909 : unsigned short udma; /* t2CYCTYP/2 */
910 : };
911 :
912 : /*
913 : * Core layer - drivers/ata/libata-core.c
914 : */
915 1 : extern const unsigned long sata_deb_timing_normal[];
916 1 : extern const unsigned long sata_deb_timing_hotplug[];
917 : extern const unsigned long sata_deb_timing_long[];
918 :
919 1 : extern struct ata_port_operations ata_dummy_port_ops;
920 : extern const struct ata_port_info ata_dummy_port_info;
921 :
922 : static inline const unsigned long *
923 : sata_ehc_deb_timing(struct ata_eh_context *ehc)
924 : {
925 4 : if (ehc->i.flags & ATA_EHI_HOTPLUGGED)
926 2 : return sata_deb_timing_hotplug;
927 : else
928 2 : return sata_deb_timing_normal;
929 : }
930 :
931 : static inline int ata_port_is_dummy(struct ata_port *ap)
932 : {
933 2 : return ap->ops == &ata_dummy_port_ops;
934 : }
935 :
936 : extern void ata_port_probe(struct ata_port *);
937 : extern int sata_set_spd(struct ata_link *link);
938 : extern int ata_std_prereset(struct ata_link *link, unsigned long deadline);
939 : extern int ata_wait_after_reset(struct ata_link *link, unsigned long deadline,
940 : int (*check_ready)(struct ata_link *link));
941 : extern int sata_link_debounce(struct ata_link *link,
942 : const unsigned long *params, unsigned long deadline);
943 : extern int sata_link_resume(struct ata_link *link, const unsigned long *params,
944 : unsigned long deadline);
945 : extern int sata_link_hardreset(struct ata_link *link,
946 : const unsigned long *timing, unsigned long deadline,
947 : bool *online, int (*check_ready)(struct ata_link *));
948 : extern int sata_std_hardreset(struct ata_link *link, unsigned int *class,
949 : unsigned long deadline);
950 : extern void ata_std_postreset(struct ata_link *link, unsigned int *classes);
951 : extern void ata_port_disable(struct ata_port *);
952 :
953 : extern struct ata_host *ata_host_alloc(struct device *dev, int max_ports);
954 : extern struct ata_host *ata_host_alloc_pinfo(struct device *dev,
955 : const struct ata_port_info * const * ppi, int n_ports);
956 : extern int ata_slave_link_init(struct ata_port *ap);
957 : extern int ata_host_start(struct ata_host *host);
958 : extern int ata_host_register(struct ata_host *host,
959 : struct scsi_host_template *sht);
960 : extern int ata_host_activate(struct ata_host *host, int irq,
961 : irq_handler_t irq_handler, unsigned long irq_flags,
962 : struct scsi_host_template *sht);
963 : extern void ata_host_detach(struct ata_host *host);
964 : extern void ata_host_init(struct ata_host *, struct device *,
965 : unsigned long, struct ata_port_operations *);
966 : extern int ata_scsi_detect(struct scsi_host_template *sht);
967 : extern int ata_scsi_ioctl(struct scsi_device *dev, int cmd, void __user *arg);
968 : extern int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *));
969 : extern int ata_sas_scsi_ioctl(struct ata_port *ap, struct scsi_device *dev,
970 : int cmd, void __user *arg);
971 : extern void ata_sas_port_destroy(struct ata_port *);
972 : extern struct ata_port *ata_sas_port_alloc(struct ata_host *,
973 : struct ata_port_info *, struct Scsi_Host *);
974 : extern int ata_sas_port_init(struct ata_port *);
975 : extern int ata_sas_port_start(struct ata_port *ap);
976 : extern void ata_sas_port_stop(struct ata_port *ap);
977 : extern int ata_sas_slave_configure(struct scsi_device *, struct ata_port *);
978 : extern int ata_sas_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *),
979 : struct ata_port *ap);
980 : extern int sata_scr_valid(struct ata_link *link);
981 : extern int sata_scr_read(struct ata_link *link, int reg, u32 *val);
982 : extern int sata_scr_write(struct ata_link *link, int reg, u32 val);
983 : extern int sata_scr_write_flush(struct ata_link *link, int reg, u32 val);
984 : extern bool ata_link_online(struct ata_link *link);
985 : extern bool ata_link_offline(struct ata_link *link);
986 : #ifdef CONFIG_PM
987 : extern int ata_host_suspend(struct ata_host *host, pm_message_t mesg);
988 : extern void ata_host_resume(struct ata_host *host);
989 : #endif
990 : extern int ata_ratelimit(void);
991 : extern u32 ata_wait_register(void __iomem *reg, u32 mask, u32 val,
992 : unsigned long interval, unsigned long timeout);
993 : extern int atapi_cmd_type(u8 opcode);
994 : extern void ata_tf_to_fis(const struct ata_taskfile *tf,
995 : u8 pmp, int is_cmd, u8 *fis);
996 : extern void ata_tf_from_fis(const u8 *fis, struct ata_taskfile *tf);
997 : extern unsigned long ata_pack_xfermask(unsigned long pio_mask,
998 : unsigned long mwdma_mask, unsigned long udma_mask);
999 : extern void ata_unpack_xfermask(unsigned long xfer_mask,
1000 : unsigned long *pio_mask, unsigned long *mwdma_mask,
1001 : unsigned long *udma_mask);
1002 : extern u8 ata_xfer_mask2mode(unsigned long xfer_mask);
1003 : extern unsigned long ata_xfer_mode2mask(u8 xfer_mode);
1004 : extern int ata_xfer_mode2shift(unsigned long xfer_mode);
1005 : extern const char *ata_mode_string(unsigned long xfer_mask);
1006 : extern unsigned long ata_id_xfermask(const u16 *id);
1007 : extern int ata_port_start(struct ata_port *ap);
1008 : extern int ata_std_qc_defer(struct ata_queued_cmd *qc);
1009 : extern void ata_noop_qc_prep(struct ata_queued_cmd *qc);
1010 : extern void ata_sg_init(struct ata_queued_cmd *qc, struct scatterlist *sg,
1011 : unsigned int n_elem);
1012 : extern unsigned int ata_dev_classify(const struct ata_taskfile *tf);
1013 : extern void ata_dev_disable(struct ata_device *adev);
1014 : extern void ata_id_string(const u16 *id, unsigned char *s,
1015 : unsigned int ofs, unsigned int len);
1016 : extern void ata_id_c_string(const u16 *id, unsigned char *s,
1017 : unsigned int ofs, unsigned int len);
1018 : extern unsigned int ata_do_dev_read_id(struct ata_device *dev,
1019 : struct ata_taskfile *tf, u16 *id);
1020 : extern void ata_qc_complete(struct ata_queued_cmd *qc);
1021 : extern int ata_qc_complete_multiple(struct ata_port *ap, u32 qc_active);
1022 : extern void ata_scsi_simulate(struct ata_device *dev, struct scsi_cmnd *cmd,
1023 : void (*done)(struct scsi_cmnd *));
1024 : extern int ata_std_bios_param(struct scsi_device *sdev,
1025 : struct block_device *bdev,
1026 : sector_t capacity, int geom[]);
1027 : extern int ata_scsi_slave_config(struct scsi_device *sdev);
1028 : extern void ata_scsi_slave_destroy(struct scsi_device *sdev);
1029 : extern int ata_scsi_change_queue_depth(struct scsi_device *sdev,
1030 : int queue_depth, int reason);
1031 : extern struct ata_device *ata_dev_pair(struct ata_device *adev);
1032 : extern int ata_do_set_mode(struct ata_link *link, struct ata_device **r_failed_dev);
1033 :
1034 : extern int ata_cable_40wire(struct ata_port *ap);
1035 : extern int ata_cable_80wire(struct ata_port *ap);
1036 : extern int ata_cable_sata(struct ata_port *ap);
1037 : extern int ata_cable_ignore(struct ata_port *ap);
1038 : extern int ata_cable_unknown(struct ata_port *ap);
1039 :
1040 : extern void ata_pio_queue_task(struct ata_port *ap, void *data,
1041 : unsigned long delay);
1042 :
1043 : /* Timing helpers */
1044 : extern unsigned int ata_pio_need_iordy(const struct ata_device *);
1045 : extern const struct ata_timing *ata_timing_find_mode(u8 xfer_mode);
1046 : extern int ata_timing_compute(struct ata_device *, unsigned short,
1047 : struct ata_timing *, int, int);
1048 : extern void ata_timing_merge(const struct ata_timing *,
1049 : const struct ata_timing *, struct ata_timing *,
1050 : unsigned int);
1051 : extern u8 ata_timing_cycle2mode(unsigned int xfer_shift, int cycle);
1052 :
1053 : /* PCI */
1054 : #ifdef CONFIG_PCI
1055 : struct pci_dev;
1056 :
1057 : struct pci_bits {
1058 : unsigned int reg; /* PCI config register to read */
1059 : unsigned int width; /* 1 (8 bit), 2 (16 bit), 4 (32 bit) */
1060 : unsigned long mask;
1061 : unsigned long val;
1062 : };
1063 :
1064 : extern int pci_test_config_bits(struct pci_dev *pdev, const struct pci_bits *bits);
1065 : extern void ata_pci_remove_one(struct pci_dev *pdev);
1066 :
1067 : #ifdef CONFIG_PM
1068 : extern void ata_pci_device_do_suspend(struct pci_dev *pdev, pm_message_t mesg);
1069 : extern int __must_check ata_pci_device_do_resume(struct pci_dev *pdev);
1070 : extern int ata_pci_device_suspend(struct pci_dev *pdev, pm_message_t mesg);
1071 : extern int ata_pci_device_resume(struct pci_dev *pdev);
1072 : #endif /* CONFIG_PM */
1073 : #endif /* CONFIG_PCI */
1074 :
1075 : /*
1076 : * ACPI - drivers/ata/libata-acpi.c
1077 : */
1078 : #ifdef CONFIG_ATA_ACPI
1079 : static inline const struct ata_acpi_gtm *ata_acpi_init_gtm(struct ata_port *ap)
1080 : {
1081 : if (ap->pflags & ATA_PFLAG_INIT_GTM_VALID)
1082 : return &ap->__acpi_init_gtm;
1083 : return NULL;
1084 : }
1085 : int ata_acpi_stm(struct ata_port *ap, const struct ata_acpi_gtm *stm);
1086 : int ata_acpi_gtm(struct ata_port *ap, struct ata_acpi_gtm *stm);
1087 : unsigned long ata_acpi_gtm_xfermask(struct ata_device *dev,
1088 : const struct ata_acpi_gtm *gtm);
1089 : int ata_acpi_cbl_80wire(struct ata_port *ap, const struct ata_acpi_gtm *gtm);
1090 : #else
1091 : static inline const struct ata_acpi_gtm *ata_acpi_init_gtm(struct ata_port *ap)
1092 : {
1093 : return NULL;
1094 : }
1095 :
1096 : static inline int ata_acpi_stm(const struct ata_port *ap,
1097 : struct ata_acpi_gtm *stm)
1098 : {
1099 : return -ENOSYS;
1100 : }
1101 :
1102 : static inline int ata_acpi_gtm(const struct ata_port *ap,
1103 : struct ata_acpi_gtm *stm)
1104 : {
1105 : return -ENOSYS;
1106 : }
1107 :
1108 : static inline unsigned int ata_acpi_gtm_xfermask(struct ata_device *dev,
1109 : const struct ata_acpi_gtm *gtm)
1110 : {
1111 : return 0;
1112 : }
1113 :
1114 : static inline int ata_acpi_cbl_80wire(struct ata_port *ap,
1115 : const struct ata_acpi_gtm *gtm)
1116 : {
1117 : return 0;
1118 : }
1119 : #endif
1120 :
1121 : /*
1122 : * EH - drivers/ata/libata-eh.c
1123 : */
1124 : extern void ata_port_schedule_eh(struct ata_port *ap);
1125 : extern int ata_link_abort(struct ata_link *link);
1126 : extern int ata_port_abort(struct ata_port *ap);
1127 : extern int ata_port_freeze(struct ata_port *ap);
1128 : extern int sata_async_notification(struct ata_port *ap);
1129 :
1130 : extern void ata_eh_freeze_port(struct ata_port *ap);
1131 : extern void ata_eh_thaw_port(struct ata_port *ap);
1132 :
1133 : extern void ata_eh_qc_complete(struct ata_queued_cmd *qc);
1134 : extern void ata_eh_qc_retry(struct ata_queued_cmd *qc);
1135 : extern void ata_eh_analyze_ncq_error(struct ata_link *link);
1136 :
1137 : extern void ata_do_eh(struct ata_port *ap, ata_prereset_fn_t prereset,
1138 : ata_reset_fn_t softreset, ata_reset_fn_t hardreset,
1139 : ata_postreset_fn_t postreset);
1140 : extern void ata_std_error_handler(struct ata_port *ap);
1141 :
1142 : /*
1143 : * Base operations to inherit from and initializers for sht
1144 : *
1145 : * Operations
1146 : *
1147 : * base : Common to all libata drivers.
1148 : * sata : SATA controllers w/ native interface.
1149 : * pmp : SATA controllers w/ PMP support.
1150 : * sff : SFF ATA controllers w/o BMDMA support.
1151 : * bmdma : SFF ATA controllers w/ BMDMA support.
1152 : *
1153 : * sht initializers
1154 : *
1155 : * BASE : Common to all libata drivers. The user must set
1156 : * sg_tablesize and dma_boundary.
1157 : * PIO : SFF ATA controllers w/ only PIO support.
1158 : * BMDMA : SFF ATA controllers w/ BMDMA support. sg_tablesize and
1159 : * dma_boundary are set to BMDMA limits.
1160 : * NCQ : SATA controllers supporting NCQ. The user must set
1161 : * sg_tablesize, dma_boundary and can_queue.
1162 : */
1163 : extern const struct ata_port_operations ata_base_port_ops;
1164 : extern const struct ata_port_operations sata_port_ops;
1165 : extern struct device_attribute *ata_common_sdev_attrs[];
1166 :
1167 : #define ATA_BASE_SHT(drv_name) \
1168 : .module = THIS_MODULE, \
1169 : .name = drv_name, \
1170 : .ioctl = ata_scsi_ioctl, \
1171 : .queuecommand = ata_scsi_queuecmd, \
1172 : .can_queue = ATA_DEF_QUEUE, \
1173 : .this_id = ATA_SHT_THIS_ID, \
1174 : .cmd_per_lun = ATA_SHT_CMD_PER_LUN, \
1175 : .emulated = ATA_SHT_EMULATED, \
1176 : .use_clustering = ATA_SHT_USE_CLUSTERING, \
1177 : .proc_name = drv_name, \
1178 : .slave_configure = ata_scsi_slave_config, \
1179 : .slave_destroy = ata_scsi_slave_destroy, \
1180 : .bios_param = ata_std_bios_param, \
1181 : .sdev_attrs = ata_common_sdev_attrs
1182 :
1183 : #define ATA_NCQ_SHT(drv_name) \
1184 : ATA_BASE_SHT(drv_name), \
1185 : .change_queue_depth = ata_scsi_change_queue_depth
1186 :
1187 : /*
1188 : * PMP helpers
1189 : */
1190 : #ifdef CONFIG_SATA_PMP
1191 : static inline bool sata_pmp_supported(struct ata_port *ap)
1192 : {
1193 4 : return ap->flags & ATA_FLAG_PMP;
1194 : }
1195 :
1196 : static inline bool sata_pmp_attached(struct ata_port *ap)
1197 : {
1198 33 : return ap->nr_pmp_links != 0;
1199 : }
1200 :
1201 : static inline int ata_is_host_link(const struct ata_link *link)
1202 : {
1203 28 : return link == &link->ap->link || link == link->ap->slave_link;
1204 : }
1205 : #else /* CONFIG_SATA_PMP */
1206 : static inline bool sata_pmp_supported(struct ata_port *ap)
1207 : {
1208 : return false;
1209 : }
1210 :
1211 : static inline bool sata_pmp_attached(struct ata_port *ap)
1212 : {
1213 : return false;
1214 : }
1215 :
1216 : static inline int ata_is_host_link(const struct ata_link *link)
1217 : {
1218 : return 1;
1219 : }
1220 : #endif /* CONFIG_SATA_PMP */
1221 :
1222 : static inline int sata_srst_pmp(struct ata_link *link)
1223 : {
1224 36 : if (sata_pmp_supported(link->ap) && ata_is_host_link(link))
1225 8 : return SATA_PMP_CTRL_PORT;
1226 8 : return link->pmp;
1227 : }
1228 :
1229 : /*
1230 : * printk helpers
1231 : */
1232 : #define ata_port_printk(ap, lv, fmt, args...) \
1233 : printk("%sata%u: "fmt, lv, (ap)->print_id , ##args)
1234 :
1235 : #define ata_link_printk(link, lv, fmt, args...) do { \
1236 : if (sata_pmp_attached((link)->ap) || (link)->ap->slave_link) \
1237 : printk("%sata%u.%02u: "fmt, lv, (link)->ap->print_id, \
1238 : (link)->pmp , ##args); \
1239 : else \
1240 : printk("%sata%u: "fmt, lv, (link)->ap->print_id , ##args); \
1241 : } while(0)
1242 :
1243 : #define ata_dev_printk(dev, lv, fmt, args...) \
1244 : printk("%sata%u.%02u: "fmt, lv, (dev)->link->ap->print_id, \
1245 : (dev)->link->pmp + (dev)->devno , ##args)
1246 :
1247 : /*
1248 : * ata_eh_info helpers
1249 : */
1250 : extern void __ata_ehi_push_desc(struct ata_eh_info *ehi, const char *fmt, ...)
1251 : __attribute__ ((format (printf, 2, 3)));
1252 : extern void ata_ehi_push_desc(struct ata_eh_info *ehi, const char *fmt, ...)
1253 : __attribute__ ((format (printf, 2, 3)));
1254 : extern void ata_ehi_clear_desc(struct ata_eh_info *ehi);
1255 :
1256 : static inline void ata_ehi_hotplugged(struct ata_eh_info *ehi)
1257 : {
1258 0 : ehi->probe_mask |= (1 << ATA_MAX_DEVICES) - 1;
1259 0 : ehi->flags |= ATA_EHI_HOTPLUGGED;
1260 0 : ehi->action |= ATA_EH_RESET | ATA_EH_ENABLE_LINK;
1261 0 : ehi->err_mask |= AC_ERR_ATA_BUS;
1262 0 : }
1263 :
1264 : /*
1265 : * port description helpers
1266 : */
1267 : extern void ata_port_desc(struct ata_port *ap, const char *fmt, ...)
1268 : __attribute__ ((format (printf, 2, 3)));
1269 : #ifdef CONFIG_PCI
1270 : extern void ata_port_pbar_desc(struct ata_port *ap, int bar, ssize_t offset,
1271 : const char *name);
1272 : #endif
1273 :
1274 : static inline unsigned int ata_tag_valid(unsigned int tag)
1275 : {
1276 0 : return (tag < ATA_MAX_QUEUE) ? 1 : 0;
1277 : }
1278 :
1279 : static inline unsigned int ata_tag_internal(unsigned int tag)
1280 : {
1281 : return tag == ATA_TAG_INTERNAL;
1282 : }
1283 :
1284 : /*
1285 : * device helpers
1286 : */
1287 : static inline unsigned int ata_class_enabled(unsigned int class)
1288 : {
1289 : return class == ATA_DEV_ATA || class == ATA_DEV_ATAPI ||
1290 : class == ATA_DEV_PMP || class == ATA_DEV_SEMB;
1291 : }
1292 :
1293 : static inline unsigned int ata_class_disabled(unsigned int class)
1294 : {
1295 : return class == ATA_DEV_ATA_UNSUP || class == ATA_DEV_ATAPI_UNSUP ||
1296 : class == ATA_DEV_PMP_UNSUP || class == ATA_DEV_SEMB_UNSUP;
1297 : }
1298 :
1299 : static inline unsigned int ata_class_absent(unsigned int class)
1300 : {
1301 : return !ata_class_enabled(class) && !ata_class_disabled(class);
1302 : }
1303 :
1304 : static inline unsigned int ata_dev_enabled(const struct ata_device *dev)
1305 : {
1306 : return ata_class_enabled(dev->class);
1307 : }
1308 :
1309 : static inline unsigned int ata_dev_disabled(const struct ata_device *dev)
1310 : {
1311 : return ata_class_disabled(dev->class);
1312 : }
1313 :
1314 : static inline unsigned int ata_dev_absent(const struct ata_device *dev)
1315 : {
1316 : return ata_class_absent(dev->class);
1317 : }
1318 :
1319 : /*
1320 : * link helpers
1321 : */
1322 : static inline int ata_link_max_devices(const struct ata_link *link)
1323 : {
1324 : if (ata_is_host_link(link) && link->ap->flags & ATA_FLAG_SLAVE_POSS)
1325 : return 2;
1326 : return 1;
1327 : }
1328 :
1329 : static inline int ata_link_active(struct ata_link *link)
1330 : {
1331 0 : return ata_tag_valid(link->active_tag) || link->sactive;
1332 : }
1333 1 :
1334 : /*
1335 : * Iterators
1336 : *
1337 : * ATA_LITER_* constants are used to select link iteration mode and
1338 : * ATA_DITER_* device iteration mode.
1339 : *
1340 : * For a custom iteration directly using ata_{link|dev}_next(), if
1341 : * @link or @dev, respectively, is NULL, the first element is
1342 : * returned. @dev and @link can be any valid device or link and the
1343 : * next element according to the iteration mode will be returned.
1344 : * After the last element, NULL is returned.
1345 : */
1346 : enum ata_link_iter_mode {
1347 : ATA_LITER_EDGE, /* if present, PMP links only; otherwise,
1348 : * host link. no slave link */
1349 : ATA_LITER_HOST_FIRST, /* host link followed by PMP or slave links */
1350 : ATA_LITER_PMP_FIRST, /* PMP links followed by host link,
1351 : * slave link still comes after host link */
1352 : };
1353 :
1354 : enum ata_dev_iter_mode {
1355 : ATA_DITER_ENABLED,
1356 : ATA_DITER_ENABLED_REVERSE,
1357 : ATA_DITER_ALL,
1358 : ATA_DITER_ALL_REVERSE,
1359 : };
1360 :
1361 : extern struct ata_link *ata_link_next(struct ata_link *link,
1362 : struct ata_port *ap,
1363 : enum ata_link_iter_mode mode);
1364 :
1365 : extern struct ata_device *ata_dev_next(struct ata_device *dev,
1366 : struct ata_link *link,
1367 : enum ata_dev_iter_mode mode);
1368 :
1369 : /*
1370 : * Shortcut notation for iterations
1371 : *
1372 : * ata_for_each_link() iterates over each link of @ap according to
1373 : * @mode. @link points to the current link in the loop. @link is
1374 : * NULL after loop termination. ata_for_each_dev() works the same way
1375 : * except that it iterates over each device of @link.
1376 : *
1377 : * Note that the mode prefixes ATA_{L|D}ITER_ shouldn't need to be
1378 : * specified when using the following shorthand notations. Only the
1379 : * mode itself (EDGE, HOST_FIRST, ENABLED, etc...) should be
1380 : * specified. This not only increases brevity but also makes it
1381 : * impossible to use ATA_LITER_* for device iteration or vice-versa.
1382 : */
1383 : #define ata_for_each_link(link, ap, mode) \
1384 : for ((link) = ata_link_next(NULL, (ap), ATA_LITER_##mode); (link); \
1385 : (link) = ata_link_next((link), (ap), ATA_LITER_##mode))
1386 :
1387 : #define ata_for_each_dev(dev, link, mode) \
1388 : for ((dev) = ata_dev_next(NULL, (link), ATA_DITER_##mode); (dev); \
1389 : (dev) = ata_dev_next((dev), (link), ATA_DITER_##mode))
1390 :
1391 : /**
1392 : * ata_ncq_enabled - Test whether NCQ is enabled
1393 : * @dev: ATA device to test for
1394 : *
1395 : * LOCKING:
1396 : * spin_lock_irqsave(host lock)
1397 : *
1398 : * RETURNS:
1399 : * 1 if NCQ is enabled for @dev, 0 otherwise.
1400 : */
1401 : static inline int ata_ncq_enabled(struct ata_device *dev)
1402 : {
1403 : return (dev->flags & (ATA_DFLAG_PIO | ATA_DFLAG_NCQ_OFF |
1404 : ATA_DFLAG_NCQ)) == ATA_DFLAG_NCQ;
1405 : }
1406 :
1407 : static inline void ata_qc_set_polling(struct ata_queued_cmd *qc)
1408 : {
1409 : qc->tf.ctl |= ATA_NIEN;
1410 : }
1411 :
1412 : static inline struct ata_queued_cmd *__ata_qc_from_tag(struct ata_port *ap,
1413 : unsigned int tag)
1414 0 : {
1415 0 : if (likely(ata_tag_valid(tag)))
1416 0 : return &ap->qcmd[tag];
1417 0 : return NULL;
1418 : }
1419 :
1420 : static inline struct ata_queued_cmd *ata_qc_from_tag(struct ata_port *ap,
1421 : unsigned int tag)
1422 0 : {
1423 0 : struct ata_queued_cmd *qc = __ata_qc_from_tag(ap, tag);
1424 0 :
1425 0 : if (unlikely(!qc) || !ap->ops->error_handler)
1426 0 : return qc;
1427 :
1428 0 : if ((qc->flags & (ATA_QCFLAG_ACTIVE |
1429 : ATA_QCFLAG_FAILED)) == ATA_QCFLAG_ACTIVE)
1430 0 : return qc;
1431 :
1432 0 : return NULL;
1433 : }
1434 :
1435 : static inline unsigned int ata_qc_raw_nbytes(struct ata_queued_cmd *qc)
1436 : {
1437 : return qc->nbytes - min(qc->extrabytes, qc->nbytes);
1438 : }
1439 :
1440 : static inline void ata_tf_init(struct ata_device *dev, struct ata_taskfile *tf)
1441 : {
1442 9 : memset(tf, 0, sizeof(*tf));
1443 :
1444 9 : tf->ctl = dev->link->ap->ctl;
1445 18 : if (dev->devno == 0)
1446 9 : tf->device = ATA_DEVICE_OBS;
1447 : else
1448 9 : tf->device = ATA_DEVICE_OBS | ATA_DEV1;
1449 9 : }
1450 :
1451 : static inline void ata_qc_reinit(struct ata_queued_cmd *qc)
1452 : {
1453 : qc->dma_dir = DMA_NONE;
1454 : qc->sg = NULL;
1455 : qc->flags = 0;
1456 : qc->cursg = NULL;
1457 : qc->cursg_ofs = 0;
1458 : qc->nbytes = qc->extrabytes = qc->curbytes = 0;
1459 : qc->n_elem = 0;
1460 : qc->err_mask = 0;
1461 : qc->sect_size = ATA_SECT_SIZE;
1462 :
1463 : ata_tf_init(qc->dev, &qc->tf);
1464 :
1465 : /* init result_tf such that it indicates normal completion */
1466 : qc->result_tf.command = ATA_DRDY;
1467 : qc->result_tf.feature = 0;
1468 : }
1469 :
1470 : static inline int ata_try_flush_cache(const struct ata_device *dev)
1471 : {
1472 : return ata_id_wcache_enabled(dev->id) ||
1473 : ata_id_has_flush(dev->id) ||
1474 : ata_id_has_flush_ext(dev->id);
1475 : }
1476 :
1477 : static inline unsigned int ac_err_mask(u8 status)
1478 : {
1479 : if (status & (ATA_BUSY | ATA_DRQ))
1480 : return AC_ERR_HSM;
1481 : if (status & (ATA_ERR | ATA_DF))
1482 : return AC_ERR_DEV;
1483 : return 0;
1484 : }
1485 :
1486 : static inline unsigned int __ac_err_mask(u8 status)
1487 : {
1488 : unsigned int mask = ac_err_mask(status);
1489 : if (mask == 0)
1490 : return AC_ERR_OTHER;
1491 : return mask;
1492 : }
1493 :
1494 : static inline struct ata_port *ata_shost_to_port(struct Scsi_Host *host)
1495 : {
1496 4 : return *(struct ata_port **)&host->hostdata[0];
1497 : }
1498 :
1499 : static inline int ata_check_ready(u8 status)
1500 : {
1501 0 : if (!(status & ATA_BUSY))
1502 0 : return 1;
1503 :
1504 : /* 0xff indicates either no device or device not ready */
1505 0 : if (status == 0xff)
1506 0 : return -ENODEV;
1507 :
1508 0 : return 0;
1509 : }
1510 :
1511 : static inline unsigned long ata_deadline(unsigned long from_jiffies,
1512 : unsigned long timeout_msecs)
1513 : {
1514 : return from_jiffies + msecs_to_jiffies(timeout_msecs);
1515 : }
1516 :
1517 : /* Don't open code these in drivers as there are traps. Firstly the range may
1518 : change in future hardware and specs, secondly 0xFF means 'no DMA' but is
1519 : > UDMA_0. Dyma ddreigiau */
1520 :
1521 : static inline int ata_using_mwdma(struct ata_device *adev)
1522 : {
1523 : if (adev->dma_mode >= XFER_MW_DMA_0 && adev->dma_mode <= XFER_MW_DMA_4)
1524 : return 1;
1525 : return 0;
1526 : }
1527 :
1528 : static inline int ata_using_udma(struct ata_device *adev)
1529 : {
1530 : if (adev->dma_mode >= XFER_UDMA_0 && adev->dma_mode <= XFER_UDMA_7)
1531 : return 1;
1532 : return 0;
1533 : }
1534 :
1535 : static inline int ata_dma_enabled(struct ata_device *adev)
1536 : {
1537 : return (adev->dma_mode == 0xFF ? 0 : 1);
1538 : }
1539 :
1540 : /**************************************************************************
1541 : * PMP - drivers/ata/libata-pmp.c
1542 : */
1543 : #ifdef CONFIG_SATA_PMP
1544 :
1545 1 : extern const struct ata_port_operations sata_pmp_port_ops;
1546 :
1547 : extern int sata_pmp_qc_defer_cmd_switch(struct ata_queued_cmd *qc);
1548 : extern void sata_pmp_error_handler(struct ata_port *ap);
1549 :
1550 : #else /* CONFIG_SATA_PMP */
1551 :
1552 : #define sata_pmp_port_ops sata_port_ops
1553 : #define sata_pmp_qc_defer_cmd_switch ata_std_qc_defer
1554 : #define sata_pmp_error_handler ata_std_error_handler
1555 :
1556 : #endif /* CONFIG_SATA_PMP */
1557 :
1558 :
1559 : /**************************************************************************
1560 : * SFF - drivers/ata/libata-sff.c
1561 : */
1562 : #ifdef CONFIG_ATA_SFF
1563 :
1564 : extern const struct ata_port_operations ata_sff_port_ops;
1565 : extern const struct ata_port_operations ata_bmdma_port_ops;
1566 : extern const struct ata_port_operations ata_bmdma32_port_ops;
1567 :
1568 : /* PIO only, sg_tablesize and dma_boundary limits can be removed */
1569 : #define ATA_PIO_SHT(drv_name) \
1570 : ATA_BASE_SHT(drv_name), \
1571 : .sg_tablesize = LIBATA_MAX_PRD, \
1572 : .dma_boundary = ATA_DMA_BOUNDARY
1573 :
1574 : #define ATA_BMDMA_SHT(drv_name) \
1575 : ATA_BASE_SHT(drv_name), \
1576 : .sg_tablesize = LIBATA_MAX_PRD, \
1577 : .dma_boundary = ATA_DMA_BOUNDARY
1578 :
1579 : extern void ata_sff_qc_prep(struct ata_queued_cmd *qc);
1580 : extern void ata_sff_dumb_qc_prep(struct ata_queued_cmd *qc);
1581 : extern void ata_sff_dev_select(struct ata_port *ap, unsigned int device);
1582 : extern u8 ata_sff_check_status(struct ata_port *ap);
1583 : extern void ata_sff_pause(struct ata_port *ap);
1584 : extern void ata_sff_dma_pause(struct ata_port *ap);
1585 : extern int ata_sff_busy_sleep(struct ata_port *ap,
1586 : unsigned long timeout_pat, unsigned long timeout);
1587 : extern int ata_sff_wait_ready(struct ata_link *link, unsigned long deadline);
1588 : extern void ata_sff_tf_load(struct ata_port *ap, const struct ata_taskfile *tf);
1589 : extern void ata_sff_tf_read(struct ata_port *ap, struct ata_taskfile *tf);
1590 : extern void ata_sff_exec_command(struct ata_port *ap,
1591 : const struct ata_taskfile *tf);
1592 : extern unsigned int ata_sff_data_xfer(struct ata_device *dev,
1593 : unsigned char *buf, unsigned int buflen, int rw);
1594 : extern unsigned int ata_sff_data_xfer32(struct ata_device *dev,
1595 : unsigned char *buf, unsigned int buflen, int rw);
1596 : extern unsigned int ata_sff_data_xfer_noirq(struct ata_device *dev,
1597 : unsigned char *buf, unsigned int buflen, int rw);
1598 : extern u8 ata_sff_irq_on(struct ata_port *ap);
1599 : extern void ata_sff_irq_clear(struct ata_port *ap);
1600 : extern int ata_sff_hsm_move(struct ata_port *ap, struct ata_queued_cmd *qc,
1601 : u8 status, int in_wq);
1602 : extern unsigned int ata_sff_qc_issue(struct ata_queued_cmd *qc);
1603 : extern bool ata_sff_qc_fill_rtf(struct ata_queued_cmd *qc);
1604 : extern unsigned int ata_sff_host_intr(struct ata_port *ap,
1605 : struct ata_queued_cmd *qc);
1606 : extern irqreturn_t ata_sff_interrupt(int irq, void *dev_instance);
1607 : extern void ata_sff_lost_interrupt(struct ata_port *ap);
1608 : extern void ata_sff_freeze(struct ata_port *ap);
1609 : extern void ata_sff_thaw(struct ata_port *ap);
1610 : extern int ata_sff_prereset(struct ata_link *link, unsigned long deadline);
1611 : extern unsigned int ata_sff_dev_classify(struct ata_device *dev, int present,
1612 : u8 *r_err);
1613 : extern int ata_sff_wait_after_reset(struct ata_link *link, unsigned int devmask,
1614 : unsigned long deadline);
1615 : extern int ata_sff_softreset(struct ata_link *link, unsigned int *classes,
1616 : unsigned long deadline);
1617 : extern int sata_sff_hardreset(struct ata_link *link, unsigned int *class,
1618 : unsigned long deadline);
1619 : extern void ata_sff_postreset(struct ata_link *link, unsigned int *classes);
1620 : extern void ata_sff_drain_fifo(struct ata_queued_cmd *qc);
1621 : extern void ata_sff_error_handler(struct ata_port *ap);
1622 : extern void ata_sff_post_internal_cmd(struct ata_queued_cmd *qc);
1623 : extern int ata_sff_port_start(struct ata_port *ap);
1624 : extern int ata_sff_port_start32(struct ata_port *ap);
1625 : extern void ata_sff_std_ports(struct ata_ioports *ioaddr);
1626 : extern unsigned long ata_bmdma_mode_filter(struct ata_device *dev,
1627 : unsigned long xfer_mask);
1628 : extern void ata_bmdma_setup(struct ata_queued_cmd *qc);
1629 : extern void ata_bmdma_start(struct ata_queued_cmd *qc);
1630 : extern void ata_bmdma_stop(struct ata_queued_cmd *qc);
1631 : extern u8 ata_bmdma_status(struct ata_port *ap);
1632 : extern void ata_bus_reset(struct ata_port *ap);
1633 :
1634 : #ifdef CONFIG_PCI
1635 : extern int ata_pci_bmdma_clear_simplex(struct pci_dev *pdev);
1636 : extern int ata_pci_bmdma_init(struct ata_host *host);
1637 : extern int ata_pci_sff_init_host(struct ata_host *host);
1638 : extern int ata_pci_sff_prepare_host(struct pci_dev *pdev,
1639 : const struct ata_port_info * const * ppi,
1640 : struct ata_host **r_host);
1641 : extern int ata_pci_sff_activate_host(struct ata_host *host,
1642 : irq_handler_t irq_handler,
1643 : struct scsi_host_template *sht);
1644 : extern int ata_pci_sff_init_one(struct pci_dev *pdev,
1645 : const struct ata_port_info * const * ppi,
1646 : struct scsi_host_template *sht, void *host_priv);
1647 : #endif /* CONFIG_PCI */
1648 :
1649 : /**
1650 : * ata_sff_busy_wait - Wait for a port status register
1651 : * @ap: Port to wait for.
1652 : * @bits: bits that must be clear
1653 : * @max: number of 10uS waits to perform
1654 : *
1655 : * Waits up to max*10 microseconds for the selected bits in the port's
1656 : * status register to be cleared.
1657 : * Returns final value of status register.
1658 : *
1659 : * LOCKING:
1660 : * Inherited from caller.
1661 : */
1662 : static inline u8 ata_sff_busy_wait(struct ata_port *ap, unsigned int bits,
1663 : unsigned int max)
1664 : {
1665 : u8 status;
1666 :
1667 : do {
1668 : udelay(10);
1669 : status = ap->ops->sff_check_status(ap);
1670 : max--;
1671 : } while (status != 0xff && (status & bits) && (max > 0));
1672 :
1673 : return status;
1674 : }
1675 :
1676 : /**
1677 : * ata_wait_idle - Wait for a port to be idle.
1678 : * @ap: Port to wait for.
1679 : *
1680 : * Waits up to 10ms for port's BUSY and DRQ signals to clear.
1681 : * Returns final value of status register.
1682 : *
1683 : * LOCKING:
1684 : * Inherited from caller.
1685 : */
1686 : static inline u8 ata_wait_idle(struct ata_port *ap)
1687 : {
1688 : u8 status = ata_sff_busy_wait(ap, ATA_BUSY | ATA_DRQ, 1000);
1689 :
1690 : #ifdef ATA_DEBUG
1691 : if (status != 0xff && (status & (ATA_BUSY | ATA_DRQ)))
1692 : ata_port_printk(ap, KERN_DEBUG, "abnormal Status 0x%X\n",
1693 : status);
1694 : #endif
1695 :
1696 : return status;
1697 : }
1698 : #endif /* CONFIG_ATA_SFF */
1699 :
1700 : #endif /* __LINUX_LIBATA_H__ */
|