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