Blame view
include/linux/libata.h
55.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> |
1da177e4c Linux-2.6.12-rc2 |
40 |
|
a6d967a48 [libata] No need ... |
41 42 43 44 45 |
/* * 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... |
46 |
#include <asm/libata-portmap.h> |
a6d967a48 [libata] No need ... |
47 48 49 |
#else #include <asm-generic/libata-portmap.h> #endif |
2ec7df045 [PATCH] libata: r... |
50 |
|
1da177e4c Linux-2.6.12-rc2 |
51 |
/* |
bfd605795 From: Borislav Pe... |
52 53 |
* 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 |
54 55 56 57 58 |
*/ #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 |
59 60 61 62 |
/* note: prints function name for you */ #ifdef ATA_DEBUG |
1f938d060 libata.h: replace... |
63 |
#define DPRINTK(fmt, args...) printk(KERN_ERR "%s: " fmt, __func__, ## args) |
1da177e4c Linux-2.6.12-rc2 |
64 |
#ifdef ATA_VERBOSE_DEBUG |
1f938d060 libata.h: replace... |
65 |
#define VPRINTK(fmt, args...) printk(KERN_ERR "%s: " fmt, __func__, ## args) |
1da177e4c Linux-2.6.12-rc2 |
66 67 68 69 70 71 72 |
#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... |
73 |
#define BPRINTK(fmt, args...) if (ap->flags & ATA_FLAG_DEBUGMSG) printk(KERN_ERR "%s: " fmt, __func__, ## args) |
2c13b7cee [libata] minor fi... |
74 |
|
bfd605795 From: Borislav Pe... |
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
/* 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 |
106 107 |
/* defines only for the constants which don't work well as enums */ #define ATA_TAG_POISON 0xfafbfcfdU |
1da177e4c Linux-2.6.12-rc2 |
108 109 110 |
enum { /* various global constants */ LIBATA_MAX_PRD = ATA_MAX_PRD / 2, |
d26fc9551 libata: Support c... |
111 |
LIBATA_DUMB_MAX_PRD = ATA_MAX_PRD / 4, /* Worst case */ |
1da177e4c Linux-2.6.12-rc2 |
112 |
ATA_DEF_QUEUE = 1, |
2ab7db1ff [PATCH] libata-eh... |
113 |
/* tag ATA_MAX_QUEUE - 1 is reserved for internal commands */ |
a6e6ce8e8 [PATCH] libata-nc... |
114 |
ATA_MAX_QUEUE = 32, |
2ab7db1ff [PATCH] libata-eh... |
115 |
ATA_TAG_INTERNAL = ATA_MAX_QUEUE - 1, |
341c2c958 libata: consisten... |
116 |
ATA_SHORT_PAUSE = 16, |
1da177e4c Linux-2.6.12-rc2 |
117 |
|
140b5e591 libata: fix ATAPI... |
118 |
ATAPI_MAX_DRAIN = 16 << 10, |
b558edddb libata: kill ata_... |
119 |
ATA_ALL_DEVICES = (1 << ATA_MAX_DEVICES) - 1, |
1da177e4c Linux-2.6.12-rc2 |
120 121 122 |
ATA_SHT_EMULATED = 1, ATA_SHT_CMD_PER_LUN = 1, ATA_SHT_THIS_ID = -1, |
cf482935c libata: turn on b... |
123 |
ATA_SHT_USE_CLUSTERING = 1, |
1da177e4c Linux-2.6.12-rc2 |
124 125 |
/* struct ata_device stuff */ |
949b38af4 [PATCH] libata: c... |
126 127 |
ATA_DFLAG_LBA = (1 << 0), /* device supports LBA */ ATA_DFLAG_LBA48 = (1 << 1), /* device supports LBA48 */ |
029f5468b Merge branch 'ups... |
128 |
ATA_DFLAG_CDB_INTR = (1 << 2), /* device asserts INTRQ when ready for CDB */ |
88e490340 [PATCH] libata-nc... |
129 |
ATA_DFLAG_NCQ = (1 << 3), /* device supports NCQ */ |
6fc49adb9 [PATCH] libata: u... |
130 |
ATA_DFLAG_FLUSH_EXT = (1 << 4), /* do FLUSH_EXT instead of FLUSH */ |
6746544c3 libata: reimpleme... |
131 132 |
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: ... |
133 |
ATA_DFLAG_AN = (1 << 7), /* AN configured */ |
ca77329fb [libata] Link pow... |
134 135 |
ATA_DFLAG_HIPM = (1 << 8), /* device supports HIPM */ ATA_DFLAG_DIPM = (1 << 9), /* device supports DIPM */ |
911630063 libata: automatic... |
136 |
ATA_DFLAG_DMADIR = (1 << 10), /* device requires DMADIR */ |
2557164e0 ata: increase all... |
137 |
ATA_DFLAG_CFG_MASK = (1 << 12) - 1, |
949b38af4 [PATCH] libata: c... |
138 |
|
2557164e0 ata: increase all... |
139 140 |
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... |
141 |
ATA_DFLAG_SLEEPING = (1 << 15), /* device is sleeping */ |
00115e0f5 libata: implement... |
142 |
ATA_DFLAG_DUBIOUS_XFER = (1 << 16), /* data transfer not verified */ |
45fabbb77 libata: Implement... |
143 |
ATA_DFLAG_NO_UNLOAD = (1 << 17), /* device doesn't support unload */ |
445d211b0 libata: unlock HP... |
144 |
ATA_DFLAG_UNLOCK_HPA = (1 << 18), /* unlock HPA */ |
f20ded38a libata: rearrange... |
145 |
ATA_DFLAG_INIT_MASK = (1 << 24) - 1, |
1da177e4c Linux-2.6.12-rc2 |
146 |
|
f20ded38a libata: rearrange... |
147 148 |
ATA_DFLAG_DETACH = (1 << 24), ATA_DFLAG_DETACHED = (1 << 25), |
abdda7331 [PATCH] libata-hp... |
149 |
|
1da177e4c Linux-2.6.12-rc2 |
150 151 152 153 154 |
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: ... |
155 156 157 158 159 |
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 |
160 |
|
0c88758b5 libata-link: make... |
161 |
/* struct ata_link flags */ |
05944bdf6 libata: implement... |
162 |
ATA_LFLAG_NO_HRST = (1 << 1), /* avoid hardreset */ |
ae791c056 libata-pmp-prep: ... |
163 164 165 166 |
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: ... |
167 |
ATA_LFLAG_NO_RETRY = (1 << 5), /* don't retry this link */ |
f9df58cb2 libata-pmp-prep: ... |
168 |
ATA_LFLAG_DISABLED = (1 << 6), /* link is disabled */ |
18f7ba4c2 libata/ahci: encl... |
169 |
ATA_LFLAG_SW_ACTIVITY = (1 << 7), /* keep activity stats */ |
0c88758b5 libata-link: make... |
170 |
|
1da177e4c Linux-2.6.12-rc2 |
171 |
/* struct ata_port flags */ |
949b38af4 [PATCH] libata: c... |
172 |
ATA_FLAG_SLAVE_POSS = (1 << 0), /* host supports slave dev */ |
1da177e4c Linux-2.6.12-rc2 |
173 |
/* (doesn't imply presence) */ |
949b38af4 [PATCH] libata: c... |
174 175 176 177 178 179 180 181 |
ATA_FLAG_SATA = (1 << 1), ATA_FLAG_NO_LEGACY = (1 << 2), /* no legacy mode check */ ATA_FLAG_MMIO = (1 << 3), /* use MMIO, not PIO */ ATA_FLAG_SRST = (1 << 4), /* (obsolete) use ATA SRST, not E.D.D. */ ATA_FLAG_SATA_RESET = (1 << 5), /* (obsolete) use COMRESET */ 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... |
182 183 184 |
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... |
185 186 |
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... |
187 |
ATA_FLAG_DEBUGMSG = (1 << 13), |
388539f3f [libata] add DMA ... |
188 |
ATA_FLAG_FPDMA_AA = (1 << 14), /* driver supports Auto-Activate */ |
b2a8bbe67 libata: implement... |
189 |
ATA_FLAG_IGN_SIMPLEX = (1 << 15), /* ignore SIMPLEX */ |
f834e49f1 libata: Add a hos... |
190 |
ATA_FLAG_NO_IORDY = (1 << 16), /* controller lacks iordy */ |
3cadbcc09 libata-acpi: add ... |
191 |
ATA_FLAG_ACPI_SATA = (1 << 17), /* need native SATA ACPI layout */ |
9f45cbd3f [libata] check fo... |
192 |
ATA_FLAG_AN = (1 << 18), /* controller supports AN */ |
e0a717526 libata-pmp-prep: ... |
193 |
ATA_FLAG_PMP = (1 << 19), /* controller supports PMP */ |
ca77329fb [libata] Link pow... |
194 |
ATA_FLAG_IPM = (1 << 20), /* driver can handle IPM */ |
18f7ba4c2 libata/ahci: encl... |
195 196 197 198 |
ATA_FLAG_EM = (1 << 21), /* driver supports enclosure * management */ ATA_FLAG_SW_ACTIVITY = (1 << 22), /* driver supports sw activity * led */ |
949b38af4 [PATCH] libata: c... |
199 |
|
b51e9e5db [PATCH] libata: a... |
200 |
/* bits 24:31 of ap->flags are reserved for LLD specific flags */ |
9ec957f20 [PATCH] libata-eh... |
201 |
|
e3cf95dd6 ata: Report 16/32... |
202 |
|
b51e9e5db [PATCH] libata: a... |
203 204 205 206 207 208 |
/* 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... |
209 |
ATA_PFLAG_SCSI_HOTPLUG = (1 << 6), /* SCSI hotplug scheduled */ |
f4d6d0046 libata: ignore EH... |
210 |
ATA_PFLAG_INITIALIZING = (1 << 7), /* being initialized, don't touch */ |
afaa5c373 libata: implement... |
211 |
ATA_PFLAG_RESETTING = (1 << 8), /* reset in progress */ |
ece180d1c libata: perform p... |
212 213 |
ATA_PFLAG_UNLOADING = (1 << 9), /* driver is being unloaded */ ATA_PFLAG_UNLOADED = (1 << 10), /* driver is unloaded */ |
949b38af4 [PATCH] libata: c... |
214 |
|
b51e9e5db [PATCH] libata: a... |
215 |
ATA_PFLAG_SUSPENDED = (1 << 17), /* port is suspended (power) */ |
500530f65 [PATCH] libata: r... |
216 |
ATA_PFLAG_PM_PENDING = (1 << 18), /* PM operation pending */ |
c05e6ff03 libata-acpi: impl... |
217 |
ATA_PFLAG_INIT_GTM_VALID = (1 << 19), /* initial gtm data valid */ |
949b38af4 [PATCH] libata: c... |
218 |
|
e3cf95dd6 ata: Report 16/32... |
219 220 |
ATA_PFLAG_PIO32 = (1 << 20), /* 32bit PIO */ ATA_PFLAG_PIO32CHANGE = (1 << 21), /* 32bit PIO can be turned on/off */ |
949b38af4 [PATCH] libata: c... |
221 222 |
/* struct ata_queued_cmd flags */ ATA_QCFLAG_ACTIVE = (1 << 0), /* cmd not yet ack'd to scsi lyer */ |
001102d78 libata: kill non-... |
223 |
ATA_QCFLAG_DMAMAP = (1 << 1), /* SG table is DMA mapped */ |
271973677 [PATCH] libata: a... |
224 |
ATA_QCFLAG_IO = (1 << 3), /* standard IO command */ |
e61e06722 [PATCH] libata: i... |
225 |
ATA_QCFLAG_RESULT_TF = (1 << 4), /* result TF requested */ |
da917d69d libata-pmp-prep: ... |
226 |
ATA_QCFLAG_CLEAR_EXCL = (1 << 5), /* clear excl_link on completion */ |
e027bd36c libata: implement... |
227 |
ATA_QCFLAG_QUIET = (1 << 6), /* don't report device error */ |
03faab782 libata: implement... |
228 |
ATA_QCFLAG_RETRY = (1 << 7), /* retry after failure */ |
e61e06722 [PATCH] libata: i... |
229 |
|
9ec957f20 [PATCH] libata-eh... |
230 231 232 |
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 |
233 |
|
4e5ec5dba [PATCH] libata: B... |
234 |
/* host set flags */ |
cca3974e4 libata: Grand ren... |
235 |
ATA_HOST_SIMPLEX = (1 << 0), /* Host is simplex, one DMA channel per host only */ |
ecef72532 libata: separate ... |
236 |
ATA_HOST_STARTED = (1 << 1), /* Host started */ |
886ad09fc libata: Add a per... |
237 |
ATA_HOST_PARALLEL_SCAN = (1 << 2), /* Ports on this host can be scanned in parallel */ |
9bec2e385 [libata] Trim tra... |
238 |
|
b8b275efc ata_piix: fix sus... |
239 |
/* bits 24:31 of host->flags are reserved for LLD specific flags */ |
1da177e4c Linux-2.6.12-rc2 |
240 |
/* various lengths of time */ |
341c2c958 libata: consisten... |
241 242 |
ATA_TMOUT_BOOT = 30000, /* heuristic */ ATA_TMOUT_BOOT_QUICK = 7000, /* heuristic */ |
341c2c958 libata: consisten... |
243 |
ATA_TMOUT_INTERNAL_QUICK = 5000, |
45fabbb77 libata: Implement... |
244 |
ATA_TMOUT_MAX_PARK = 30000, |
1da177e4c Linux-2.6.12-rc2 |
245 |
|
b48d58f55 libata: use longe... |
246 247 248 249 |
/* * 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... |
250 |
*/ |
b48d58f55 libata: use longe... |
251 252 |
ATA_TMOUT_FF_WAIT_LONG = 2000, ATA_TMOUT_FF_WAIT = 800, |
88ff6eafb libata: implement... |
253 |
|
705e76beb libata: restructu... |
254 255 256 257 258 259 260 261 262 263 |
/* 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... |
264 |
ATA_WAIT_AFTER_RESET = 150, |
705e76beb libata: restructu... |
265 |
|
9dadd45b2 libata: move gene... |
266 267 268 269 270 |
/* 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... |
271 |
ATA_TMOUT_PMP_SRST_WAIT = 5000, |
9dadd45b2 libata: move gene... |
272 |
|
1da177e4c Linux-2.6.12-rc2 |
273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 |
/* 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... |
291 |
* unsigned long bitmap |
1da177e4c Linux-2.6.12-rc2 |
292 |
*/ |
70cd071e4 libata: clean up ... |
293 294 295 |
ATA_NR_PIO_MODES = 7, ATA_NR_MWDMA_MODES = 5, ATA_NR_UDMA_MODES = 8, |
1da7b0d01 [PATCH] libata: i... |
296 297 |
ATA_SHIFT_PIO = 0, |
70cd071e4 libata: clean up ... |
298 299 |
ATA_SHIFT_MWDMA = ATA_SHIFT_PIO + ATA_NR_PIO_MODES, ATA_SHIFT_UDMA = ATA_SHIFT_MWDMA + ATA_NR_MWDMA_MODES, |
cedc9a478 libata: fix ATAPI... |
300 301 |
/* size of buffer to pad xfers ending on unaligned boundaries */ ATA_DMA_PAD_SZ = 4, |
949b38af4 [PATCH] libata: c... |
302 |
|
0c247c559 [PATCH] libata-eh... |
303 304 |
/* ering size */ ATA_ERING_SIZE = 32, |
31cc23b34 libata-pmp-prep: ... |
305 306 307 |
/* return values for ->qc_defer */ ATA_DEFER_LINK = 1, ATA_DEFER_PORT = 2, |
f3e81b19a [PATCH] libata-eh... |
308 309 |
/* desc_len for ata_eh_info and context */ ATA_EH_DESC_LEN = 80, |
9be1e979f [PATCH] libata-eh... |
310 311 |
/* reset / recovery action types */ ATA_EH_REVALIDATE = (1 << 0), |
cf4806265 libata: prefer ha... |
312 313 314 |
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: ... |
315 |
ATA_EH_ENABLE_LINK = (1 << 3), |
3ec25ebd6 libata: ATA_EHI_L... |
316 |
ATA_EH_LPM = (1 << 4), /* link power management action */ |
45fabbb77 libata: Implement... |
317 |
ATA_EH_PARK = (1 << 5), /* unload heads and stop I/O */ |
9be1e979f [PATCH] libata-eh... |
318 |
|
45fabbb77 libata: Implement... |
319 |
ATA_EH_PERDEV_MASK = ATA_EH_REVALIDATE | ATA_EH_PARK, |
b5b3fa386 libata: misc upda... |
320 321 |
ATA_EH_ALL_ACTIONS = ATA_EH_REVALIDATE | ATA_EH_RESET | ATA_EH_ENABLE_LINK | ATA_EH_LPM, |
9be1e979f [PATCH] libata-eh... |
322 |
|
f3e81b19a [PATCH] libata-eh... |
323 |
/* ata_eh_info->flags */ |
abdda7331 [PATCH] libata-hp... |
324 |
ATA_EHI_HOTPLUGGED = (1 << 0), /* could have been hotplugged */ |
1cdaf534f [PATCH] libata: i... |
325 326 |
ATA_EHI_NO_AUTOPSY = (1 << 2), /* no autopsy */ ATA_EHI_QUIET = (1 << 3), /* be quiet */ |
e2f3d75fc libata: skip EH a... |
327 |
ATA_EHI_NO_RECOVERY = (1 << 4), /* no recovery */ |
abdda7331 [PATCH] libata-hp... |
328 |
|
0d64a233f libata: separate ... |
329 330 331 332 333 |
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 */ ATA_EHI_POST_SETMODE = (1 << 20), /* revaildating after setmode */ |
f3e81b19a [PATCH] libata-eh... |
334 |
|
0d64a233f libata: separate ... |
335 |
ATA_EHI_DID_RESET = ATA_EHI_DID_SOFTRESET | ATA_EHI_DID_HARDRESET, |
13abf50df [PATCH] libata: i... |
336 |
|
848e4c68c libata: transfer ... |
337 338 |
/* 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... |
339 340 |
/* max tries if error condition is still set after ->error_handler */ ATA_EH_MAX_TRIES = 5, |
ad9e27624 [PATCH] libata-eh... |
341 |
|
5040ab67a libata: retry lin... |
342 343 |
/* sometimes resuming a link requires several retries */ ATA_LINK_RESUME_TRIES = 5, |
14d2bac18 [PATCH] libata: i... |
344 345 |
/* how hard are we gonna try to probe/recover devices */ ATA_PROBE_MAX_TRIES = 3, |
022bdb075 [PATCH] libata-eh... |
346 |
ATA_EH_DEV_TRIES = 3, |
e0a717526 libata-pmp-prep: ... |
347 348 |
ATA_EH_PMP_TRIES = 5, ATA_EH_PMP_LINK_TRIES = 3, |
bf1bff6fa libata: increase ... |
349 |
SATA_PMP_RW_TIMEOUT = 3000, /* PMP read/write timeout */ |
f5914a461 [PATCH] libata-hp... |
350 |
|
87fbc5a06 libata: improve E... |
351 352 353 |
/* This should match the actual table size of * ata_eh_cmd_timeout_table in libata-eh.c. */ |
6013efd88 libata: retry fai... |
354 |
ATA_EH_CMD_TIMEOUT_TABLE_SIZE = 6, |
87fbc5a06 libata: improve E... |
355 |
|
935908598 [PATCH] libata: i... |
356 357 358 359 |
/* Horkage types. May be set by libata or controller on drives (some horkage may be drive/controller pair dependant */ ATA_HORKAGE_DIAGNOSTIC = (1 << 0), /* Failed boot diag */ |
6919a0a6c [PATCH] libata: R... |
360 361 |
ATA_HORKAGE_NODMA = (1 << 1), /* DMA problems */ ATA_HORKAGE_NONCQ = (1 << 2), /* Don't use NCQ */ |
18d6e9d51 libata: Limit max... |
362 |
ATA_HORKAGE_MAX_SEC_128 = (1 << 3), /* Limit max sects to 128 */ |
16c55b038 libata: implement... |
363 |
ATA_HORKAGE_BROKEN_HPA = (1 << 4), /* Broken HPA */ |
50af2fa1e libata: ignore SI... |
364 |
ATA_HORKAGE_DISABLE = (1 << 5), /* Disable it */ |
93328e114 [PATCH] libata: F... |
365 |
ATA_HORKAGE_HPA_SIZE = (1 << 6), /* native size off by one */ |
ca77329fb [libata] Link pow... |
366 |
ATA_HORKAGE_IPM = (1 << 7), /* Link PM problems */ |
6bbfd53d4 libata: handle br... |
367 |
ATA_HORKAGE_IVB = (1 << 8), /* cbl det validity bit bugs */ |
2d3b8eea7 libata: workaroun... |
368 |
ATA_HORKAGE_STUCK_ERR = (1 << 9), /* stuck ERR on next PACKET */ |
9ce8e3073 libata: add white... |
369 |
ATA_HORKAGE_BRIDGE_OK = (1 << 10), /* no bridge limits */ |
6a87e42e9 libata: implement... |
370 371 |
ATA_HORKAGE_ATAPI_MOD16_DMA = (1 << 11), /* use ATAPI DMA for commands not multiple of 16 bytes */ |
877d03105 trivial: Fix miss... |
372 |
ATA_HORKAGE_FIRMWARE_WARN = (1 << 12), /* firmware update warning */ |
9062712fa libata: implement... |
373 |
ATA_HORKAGE_1_5_GBPS = (1 << 13), /* force 1.5 Gbps */ |
d0cb43b35 libata: implement... |
374 |
ATA_HORKAGE_NOSETXFER = (1 << 14), /* skip SETXFER, SATA only */ |
388539f3f [libata] add DMA ... |
375 |
ATA_HORKAGE_BROKEN_FPDMA_AA = (1 << 15), /* skip AA */ |
43c9c5918 libata: implement... |
376 |
ATA_HORKAGE_DUMP_ID = (1 << 16), /* dump IDENTIFY data */ |
b3a706014 libata: Add a dri... |
377 |
|
2dcb407e6 [libata] checkpat... |
378 |
/* DMA mask for user DMA control: User visible values; DO NOT |
b3a706014 libata: Add a dri... |
379 380 381 382 |
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... |
383 384 385 386 387 |
/* ATAPI command types */ ATAPI_READ = 0, /* READs */ ATAPI_WRITE = 1, /* WRITEs */ ATAPI_READ_CD = 2, /* READ CD [MSF] */ |
e52dcc489 libata: ATA_12/16... |
388 389 |
ATAPI_PASS_THRU = 3, /* SAT pass-thru */ ATAPI_MISC = 4, /* the rest */ |
624d5c514 libata: reorganiz... |
390 391 392 393 394 395 396 397 398 399 |
/* 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... |
400 401 402 |
ATA_TIMING_DMACK_HOLD = (1 << 6), ATA_TIMING_CYCLE = (1 << 7), ATA_TIMING_UDMA = (1 << 8), |
624d5c514 libata: reorganiz... |
403 404 405 |
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... |
406 407 |
ATA_TIMING_DMACK_HOLD | ATA_TIMING_CYCLE | ATA_TIMING_UDMA, |
f1bce7f80 libata: cosmetic ... |
408 409 410 411 412 |
/* ACPI constants */ ATA_ACPI_FILTER_SETXFER = 1 << 0, ATA_ACPI_FILTER_LOCK = 1 << 1, ATA_ACPI_FILTER_DIPM = 1 << 2, |
fa5b561c4 libata: implement... |
413 414 |
ATA_ACPI_FILTER_FPDMA_OFFSET = 1 << 3, /* FPDMA non-zero offset */ ATA_ACPI_FILTER_FPDMA_AA = 1 << 4, /* FPDMA auto activate */ |
f1bce7f80 libata: cosmetic ... |
415 416 417 418 |
ATA_ACPI_FILTER_DEFAULT = ATA_ACPI_FILTER_SETXFER | ATA_ACPI_FILTER_LOCK | ATA_ACPI_FILTER_DIPM, |
1da177e4c Linux-2.6.12-rc2 |
419 |
}; |
7dc951aef libata: xfer_mask... |
420 421 422 423 424 425 426 427 |
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... |
428 |
enum hsm_task_states { |
c56b14d2a [PATCH] libata ir... |
429 |
HSM_ST_IDLE, /* no command on going */ |
715276470 libata: reorder H... |
430 431 |
HSM_ST_FIRST, /* (waiting the device to) write CDB or first data block */ |
c56b14d2a [PATCH] libata ir... |
432 433 |
HSM_ST, /* (waiting the device to) transfer data */ HSM_ST_LAST, /* (waiting the device to) complete command */ |
c56b14d2a [PATCH] libata ir... |
434 |
HSM_ST_ERR, /* error */ |
1da177e4c Linux-2.6.12-rc2 |
435 |
}; |
a7dac447b [libata] change a... |
436 |
enum ata_completion_errors { |
11a56d243 [PATCH] libata: a... |
437 438 439 440 441 442 443 444 445 |
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... |
446 |
AC_ERR_NODEV_HINT = (1 << 9), /* polling device detection hint */ |
5335b7290 libata: implement... |
447 |
AC_ERR_NCQ = (1 << 10), /* marker for offending NCQ qc */ |
a7dac447b [libata] change a... |
448 |
}; |
1da177e4c Linux-2.6.12-rc2 |
449 450 451 452 |
/* forward declarations */ struct scsi_device; struct ata_port_operations; struct ata_port; |
cc0680a58 libata-link: link... |
453 |
struct ata_link; |
1da177e4c Linux-2.6.12-rc2 |
454 455 456 |
struct ata_queued_cmd; /* typedefs */ |
77853bf2b [PATCH] libata: m... |
457 |
typedef void (*ata_qc_cb_t) (struct ata_queued_cmd *qc); |
cc0680a58 libata-link: link... |
458 459 |
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... |
460 |
unsigned long deadline); |
cc0680a58 libata-link: link... |
461 |
typedef void (*ata_postreset_fn_t)(struct ata_link *link, unsigned int *classes); |
1da177e4c Linux-2.6.12-rc2 |
462 |
|
ca77329fb [libata] Link pow... |
463 464 465 466 467 468 469 470 471 472 |
/* * host pm policy: If you alter this, you also need to alter libata-scsi.c * (for the ascii descriptions) */ enum link_pm { NOT_AVAILABLE, MIN_POWER, MAX_PERFORMANCE, MEDIUM_POWER, }; |
ee959b00c SCSI: convert str... |
473 |
extern struct device_attribute dev_attr_link_power_management_policy; |
45fabbb77 libata: Implement... |
474 |
extern struct device_attribute dev_attr_unload_heads; |
18f7ba4c2 libata/ahci: encl... |
475 476 477 478 479 480 481 482 483 |
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... |
484 |
|
127102aea libata: make SFF ... |
485 |
#ifdef CONFIG_ATA_SFF |
1da177e4c Linux-2.6.12-rc2 |
486 |
struct ata_ioports { |
0d5ff5667 libata: convert t... |
487 488 489 490 491 492 493 494 495 496 497 498 499 |
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 ... |
500 |
#ifdef CONFIG_ATA_BMDMA |
0d5ff5667 libata: convert t... |
501 |
void __iomem *bmdma_addr; |
9a7780c9a libata-sff: make ... |
502 |
#endif /* CONFIG_ATA_BMDMA */ |
0d5ff5667 libata: convert t... |
503 |
void __iomem *scr_addr; |
1da177e4c Linux-2.6.12-rc2 |
504 |
}; |
127102aea libata: make SFF ... |
505 |
#endif /* CONFIG_ATA_SFF */ |
1da177e4c Linux-2.6.12-rc2 |
506 |
|
cca3974e4 libata: Grand ren... |
507 |
struct ata_host { |
1da177e4c Linux-2.6.12-rc2 |
508 509 |
spinlock_t lock; struct device *dev; |
0d5ff5667 libata: convert t... |
510 |
void __iomem * const *iomap; |
1da177e4c Linux-2.6.12-rc2 |
511 512 |
unsigned int n_ports; void *private_data; |
029cfd6b7 libata: implement... |
513 |
struct ata_port_operations *ops; |
5444a6f40 [PATCH] libata: S... |
514 |
unsigned long flags; |
fafbae87d libata-acpi: impl... |
515 516 517 |
#ifdef CONFIG_ATA_ACPI acpi_handle acpi_handle; #endif |
032af1ce1 libata-core: Fix ... |
518 |
struct ata_port *simplex_claimed; /* channel owning the DMA */ |
f0eb62b81 [PATCH] libata: a... |
519 |
struct ata_port *ports[0]; |
1da177e4c Linux-2.6.12-rc2 |
520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 |
}; 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... |
535 |
unsigned int orig_n_elem; |
1da177e4c Linux-2.6.12-rc2 |
536 537 |
int dma_dir; |
5a5dbd18a libata: add suppo... |
538 |
unsigned int sect_size; |
cedc9a478 libata: fix ATAPI... |
539 |
|
1da177e4c Linux-2.6.12-rc2 |
540 |
unsigned int nbytes; |
aacda3753 libata: implement... |
541 |
unsigned int extrabytes; |
1da177e4c Linux-2.6.12-rc2 |
542 |
unsigned int curbytes; |
872602162 libata: convert t... |
543 |
struct scatterlist *cursg; |
1da177e4c Linux-2.6.12-rc2 |
544 545 546 |
unsigned int cursg_ofs; struct scatterlist sgent; |
1da177e4c Linux-2.6.12-rc2 |
547 |
|
ff2aeb1eb libata: convert t... |
548 |
struct scatterlist *sg; |
1da177e4c Linux-2.6.12-rc2 |
549 |
|
a22e2eb07 [PATCH] libata: m... |
550 |
unsigned int err_mask; |
e61e06722 [PATCH] libata: i... |
551 |
struct ata_taskfile result_tf; |
1da177e4c Linux-2.6.12-rc2 |
552 |
ata_qc_cb_t complete_fn; |
1da177e4c Linux-2.6.12-rc2 |
553 |
void *private_data; |
1c50dc83f [SCSI] sas_ata: a... |
554 |
void *lldd_task; |
1da177e4c Linux-2.6.12-rc2 |
555 |
}; |
cca3974e4 libata: Grand ren... |
556 |
struct ata_port_stats { |
1da177e4c Linux-2.6.12-rc2 |
557 558 559 560 |
unsigned long unhandled_irq; unsigned long idle_irq; unsigned long rw_reqbuf; }; |
0c247c559 [PATCH] libata-eh... |
561 |
struct ata_ering_entry { |
3884f7b0a libata: clean up ... |
562 |
unsigned int eflags; |
0c247c559 [PATCH] libata-eh... |
563 564 565 566 567 568 569 570 |
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 |
571 |
struct ata_device { |
9af5c9c97 libata-link: intr... |
572 |
struct ata_link *link; |
72fa4b742 [PATCH] libata-hp... |
573 |
unsigned int devno; /* 0 or 1 */ |
75683fe71 libata: clean up ... |
574 |
unsigned int horkage; /* List of broken features */ |
6866e7bc8 libata: reorder a... |
575 |
unsigned long flags; /* ATA_DFLAG_xxx */ |
3edebac41 [PATCH] libata-hp... |
576 |
struct scsi_device *sdev; /* attached SCSI device */ |
95514fd8f libata: add priva... |
577 |
void *private_data; |
fafbae87d libata-acpi: impl... |
578 579 |
#ifdef CONFIG_ATA_ACPI acpi_handle acpi_handle; |
398e07826 libata-acpi: impl... |
580 |
union acpi_object *gtf_cache; |
110f66d25 libata: make gtf_... |
581 |
unsigned int gtf_filter; |
fafbae87d libata-acpi: impl... |
582 |
#endif |
99cf610aa libata: clear dev... |
583 |
/* n_sector is CLEAR_BEGIN, read comment above CLEAR_BEGIN */ |
72fa4b742 [PATCH] libata-hp... |
584 |
u64 n_sectors; /* size of device, if ATA */ |
5920dadfb libata: accept la... |
585 |
u64 n_native_sectors; /* native size, if ATA */ |
1da177e4c Linux-2.6.12-rc2 |
586 |
unsigned int class; /* ATA_DEV_xxx */ |
45fabbb77 libata: Implement... |
587 |
unsigned long unpark_deadline; |
e0a717526 libata-pmp-prep: ... |
588 |
|
1da177e4c Linux-2.6.12-rc2 |
589 590 591 592 |
u8 pio_mode; u8 dma_mode; u8 xfer_mode; unsigned int xfer_shift; /* ATA_SHIFT_xxx */ |
8cbd6df1f [PATCH] libata CH... |
593 594 |
unsigned int multi_count; /* sectors count for READ/WRITE MULTIPLE */ |
b00eec1d5 [PATCH] libata: a... |
595 |
unsigned int max_sectors; /* per-device max sectors */ |
6e7846e9c [PATCH] libata: m... |
596 |
unsigned int cdb_len; |
8bf62ecee [libata] C/H/S su... |
597 |
|
acf356b12 [PATCH] libata: a... |
598 |
/* per-dev xfer mask */ |
7dc951aef libata: xfer_mask... |
599 600 601 |
unsigned long pio_mask; unsigned long mwdma_mask; unsigned long udma_mask; |
acf356b12 [PATCH] libata: a... |
602 |
|
8bf62ecee [libata] C/H/S su... |
603 604 605 606 |
/* for CHS addressing */ u16 cylinders; /* Number of cylinders */ u16 heads; /* Number of heads */ u16 sectors; /* Number of sectors per track */ |
0c247c559 [PATCH] libata-eh... |
607 |
|
f7e989301 [libata] linux/li... |
608 609 610 611 |
union { u16 id[ATA_ID_WORDS]; /* IDENTIFY xxx DEVICE data */ u32 gscr[SATA_PMP_GSCR_DWORDS]; /* PMP GSCR block */ }; |
99cf610aa libata: clear dev... |
612 613 614 615 616 |
/* error history */ int spdn_cnt; /* ering is CLEAR_END, read comment above CLEAR_END */ struct ata_ering ering; |
1da177e4c Linux-2.6.12-rc2 |
617 |
}; |
99cf610aa libata: clear dev... |
618 619 |
/* Fields between ATA_DEVICE_CLEAR_BEGIN and ATA_DEVICE_CLEAR_END are * cleared to zero on ata_dev_init(). |
72fa4b742 [PATCH] libata-hp... |
620 |
*/ |
99cf610aa libata: clear dev... |
621 622 |
#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... |
623 |
|
f3e81b19a [PATCH] libata-eh... |
624 625 626 627 628 |
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... |
629 |
unsigned int dev_action[ATA_MAX_DEVICES]; /* dev EH action */ |
f3e81b19a [PATCH] libata-eh... |
630 |
unsigned int flags; /* ATA_EHI_* flags */ |
abdda7331 [PATCH] libata-hp... |
631 |
|
abdda7331 [PATCH] libata-hp... |
632 |
unsigned int probe_mask; |
f3e81b19a [PATCH] libata-eh... |
633 634 635 636 637 638 639 |
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... |
640 641 |
int cmd_timeout_idx[ATA_MAX_DEVICES] [ATA_EH_CMD_TIMEOUT_TABLE_SIZE]; |
abdda7331 [PATCH] libata-hp... |
642 643 |
unsigned int classes[ATA_MAX_DEVICES]; unsigned int did_probe_mask; |
45fabbb77 libata: Implement... |
644 |
unsigned int unloaded_mask; |
00115e0f5 libata: implement... |
645 646 |
unsigned int saved_ncq_enabled; u8 saved_xfer_mode[ATA_MAX_DEVICES]; |
0a2c0f561 libata: improve E... |
647 648 |
/* timestamp for the last reset attempt or success */ unsigned long last_reset; |
f3e81b19a [PATCH] libata-eh... |
649 |
}; |
64578a3de libata-acpi: impl... |
650 651 652 653 654 655 656 657 658 659 |
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... |
660 661 |
struct ata_link { struct ata_port *ap; |
8989805d6 libata-link: add ... |
662 |
int pmp; /* port multiplier port # */ |
9af5c9c97 libata-link: intr... |
663 664 665 |
unsigned int active_tag; /* active tag on this link */ u32 sactive; /* active NCQ commands */ |
0c88758b5 libata-link: make... |
666 |
unsigned int flags; /* ATA_LFLAG_xxx */ |
d127ea7b8 libata: restore S... |
667 |
u32 saved_scontrol; /* SControl on probe */ |
9af5c9c97 libata-link: intr... |
668 669 670 671 672 673 674 675 676 677 678 |
unsigned int hw_sata_spd_limit; unsigned int sata_spd_limit; unsigned int sata_spd; /* current SATA PHY speed */ /* 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]; }; |
1da177e4c Linux-2.6.12-rc2 |
679 |
struct ata_port { |
cca3974e4 libata: Grand ren... |
680 |
struct Scsi_Host *scsi_host; /* our co-allocated scsi host */ |
029cfd6b7 libata: implement... |
681 |
struct ata_port_operations *ops; |
ba6a13083 [libata] Add host... |
682 |
spinlock_t *lock; |
e3cf95dd6 ata: Report 16/32... |
683 684 |
/* Flags owned by the EH context. Only EH should touch these once the port is active */ |
1da177e4c Linux-2.6.12-rc2 |
685 |
unsigned long flags; /* ATA_FLAG_xxx */ |
e3cf95dd6 ata: Report 16/32... |
686 |
/* Flags that change dynamically, protected by ap->lock */ |
b51e9e5db [PATCH] libata: a... |
687 |
unsigned int pflags; /* ATA_PFLAG_xxx */ |
44877b4e2 libata: s/ap->id/... |
688 689 |
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 |
690 |
|
127102aea libata: make SFF ... |
691 |
#ifdef CONFIG_ATA_SFF |
1da177e4c Linux-2.6.12-rc2 |
692 |
struct ata_ioports ioaddr; /* ATA cmd/ctl/dma register blocks */ |
1da177e4c Linux-2.6.12-rc2 |
693 694 |
u8 ctl; /* cache of ATA control register */ u8 last_ctl; /* Cache last written value */ |
ea3c64506 libata-sff: Reena... |
695 |
struct ata_link* sff_pio_task_link; /* link currently used */ |
c429137a6 libata-sff: port_... |
696 |
struct delayed_work sff_pio_task; |
9a7780c9a libata-sff: make ... |
697 |
#ifdef CONFIG_ATA_BMDMA |
f60d70113 libata-sff: prd i... |
698 699 |
struct ata_bmdma_prd *bmdma_prd; /* BMDMA SG list */ dma_addr_t bmdma_prd_dma; /* and its DMA mapping */ |
9a7780c9a libata-sff: make ... |
700 |
#endif /* CONFIG_ATA_BMDMA */ |
5fe7454aa libata-sff: ap->[... |
701 |
#endif /* CONFIG_ATA_SFF */ |
1da177e4c Linux-2.6.12-rc2 |
702 703 704 705 |
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 |
706 707 |
struct ata_queued_cmd qcmd[ATA_MAX_QUEUE]; |
8a8bc2233 libata: revert co... |
708 |
unsigned long qc_allocated; |
dedaf2b03 [PATCH] libata-nc... |
709 |
unsigned int qc_active; |
da917d69d libata-pmp-prep: ... |
710 |
int nr_active_links; /* #links with active qcs */ |
dedaf2b03 [PATCH] libata-nc... |
711 |
|
b1c72916a libata: implement... |
712 713 |
struct ata_link link; /* host default link */ struct ata_link *slave_link; /* see ata_slave_link_init() */ |
1da177e4c Linux-2.6.12-rc2 |
714 |
|
8989805d6 libata-link: add ... |
715 716 |
int nr_pmp_links; /* nr of available PMP links */ struct ata_link *pmp_link; /* array of PMP links */ |
da917d69d libata-pmp-prep: ... |
717 |
struct ata_link *excl_link; /* for PMP qc exclusion */ |
8989805d6 libata-link: add ... |
718 |
|
cca3974e4 libata: Grand ren... |
719 720 |
struct ata_port_stats stats; struct ata_host *host; |
2f1f610b6 [PATCH] libata: R... |
721 |
struct device *dev; |
1da177e4c Linux-2.6.12-rc2 |
722 |
|
ad72cf988 libata: take adva... |
723 |
struct mutex scsi_scan_mutex; |
52bad64d9 WorkStruct: Separ... |
724 |
struct delayed_work hotplug_task; |
3b01b8af2 libata: fix build... |
725 |
struct work_struct scsi_rescan_task; |
86e45b6bd [PATCH] libata: i... |
726 |
|
14be71f4c [PATCH] libata: r... |
727 |
unsigned int hsm_task_state; |
1da177e4c Linux-2.6.12-rc2 |
728 |
|
bfd605795 From: Borislav Pe... |
729 |
u32 msg_enable; |
a72ec4ce6 [PATCH] libata: i... |
730 |
struct list_head eh_done_q; |
c6cf9e99d [PATCH] libata: i... |
731 |
wait_queue_head_t eh_wait_q; |
a1e10f7e6 libata: move EH r... |
732 |
int eh_tries; |
45fabbb77 libata: Implement... |
733 |
struct completion park_req_pending; |
bfd605795 From: Borislav Pe... |
734 |
|
500530f65 [PATCH] libata: r... |
735 736 |
pm_message_t pm_mesg; int *pm_result; |
ca77329fb [libata] Link pow... |
737 |
enum link_pm pm_policy; |
500530f65 [PATCH] libata: r... |
738 |
|
5ddf24c5e libata: implement... |
739 740 |
struct timer_list fastdrain_timer; unsigned long fastdrain_cnt; |
18f7ba4c2 libata/ahci: encl... |
741 |
int em_message_type; |
1da177e4c Linux-2.6.12-rc2 |
742 |
void *private_data; |
fe635c7e9 [PATCH] libata: u... |
743 |
|
fafbae87d libata-acpi: impl... |
744 745 |
#ifdef CONFIG_ATA_ACPI acpi_handle acpi_handle; |
c05e6ff03 libata-acpi: impl... |
746 |
struct ata_acpi_gtm __acpi_init_gtm; /* use ata_acpi_init_gtm() */ |
fafbae87d libata-acpi: impl... |
747 |
#endif |
84bda12af libata: align ap-... |
748 749 |
/* owned by EH */ u8 sector_buf[ATA_SECT_SIZE] ____cacheline_aligned; |
1da177e4c Linux-2.6.12-rc2 |
750 |
}; |
029cfd6b7 libata: implement... |
751 752 753 754 755 756 |
/* 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 |
757 |
struct ata_port_operations { |
c1bc899f5 libata: reorganiz... |
758 759 760 761 762 763 764 |
/* * 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... |
765 |
bool (*qc_fill_rtf)(struct ata_queued_cmd *qc); |
1da177e4c Linux-2.6.12-rc2 |
766 |
|
c1bc899f5 libata: reorganiz... |
767 768 769 770 771 772 773 774 |
/* * 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... |
775 |
unsigned int (*read_id)(struct ata_device *dev, struct ata_taskfile *tf, u16 *id); |
1da177e4c Linux-2.6.12-rc2 |
776 |
|
c1bc899f5 libata: reorganiz... |
777 |
void (*dev_config)(struct ata_device *dev); |
1da177e4c Linux-2.6.12-rc2 |
778 |
|
c1bc899f5 libata: reorganiz... |
779 780 |
void (*freeze)(struct ata_port *ap); void (*thaw)(struct ata_port *ap); |
a1efdaba2 libata: make rese... |
781 782 783 784 785 786 787 788 |
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... |
789 |
void (*error_handler)(struct ata_port *ap); |
c96f1732e [libata] Improve ... |
790 |
void (*lost_interrupt)(struct ata_port *ap); |
c1bc899f5 libata: reorganiz... |
791 792 793 794 795 |
void (*post_internal_cmd)(struct ata_queued_cmd *qc); /* * Optional features */ |
82ef04fb4 libata: make SCR ... |
796 797 |
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... |
798 799 800 801 802 803 804 805 806 807 808 809 810 |
void (*pmp_attach)(struct ata_port *ap); void (*pmp_detach)(struct ata_port *ap); int (*enable_pm)(struct ata_port *ap, enum link_pm policy); void (*disable_pm)(struct ata_port *ap); /* * 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 ... |
811 |
#ifdef CONFIG_ATA_SFF |
c1bc899f5 libata: reorganiz... |
812 813 814 |
/* * SFF / taskfile oriented ops */ |
5682ed33a libata: rename SF... |
815 |
void (*sff_dev_select)(struct ata_port *ap, unsigned int device); |
41dec29bc libata: introduce... |
816 |
void (*sff_set_devctl)(struct ata_port *ap, u8 ctl); |
5682ed33a libata: rename SF... |
817 818 819 820 821 822 823 824 |
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_... |
825 |
void (*sff_irq_on)(struct ata_port *); |
27943620c libata: implement... |
826 |
bool (*sff_irq_check)(struct ata_port *); |
5682ed33a libata: rename SF... |
827 |
void (*sff_irq_clear)(struct ata_port *); |
8244cd059 libata-sff: renam... |
828 |
void (*sff_drain_fifo)(struct ata_queued_cmd *qc); |
5682ed33a libata: rename SF... |
829 |
|
9a7780c9a libata-sff: make ... |
830 |
#ifdef CONFIG_ATA_BMDMA |
c1bc899f5 libata: reorganiz... |
831 832 833 834 |
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 ... |
835 |
#endif /* CONFIG_ATA_BMDMA */ |
127102aea libata: make SFF ... |
836 |
#endif /* CONFIG_ATA_SFF */ |
c1bc899f5 libata: reorganiz... |
837 |
|
18f7ba4c2 libata/ahci: encl... |
838 839 840 841 842 843 |
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... |
844 845 |
/* * Obsolete |
9ec957f20 [PATCH] libata-eh... |
846 |
*/ |
c1bc899f5 libata: reorganiz... |
847 848 |
void (*phy_reset)(struct ata_port *ap); void (*eng_timeout)(struct ata_port *ap); |
029cfd6b7 libata: implement... |
849 850 851 852 853 854 |
/* * ->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 |
855 856 857 |
}; struct ata_port_info { |
cca3974e4 libata: Grand ren... |
858 |
unsigned long flags; |
0c88758b5 libata-link: make... |
859 |
unsigned long link_flags; |
1da177e4c Linux-2.6.12-rc2 |
860 861 862 |
unsigned long pio_mask; unsigned long mwdma_mask; unsigned long udma_mask; |
029cfd6b7 libata: implement... |
863 |
struct ata_port_operations *port_ops; |
e99f8b5ef [PATCH] libata: p... |
864 |
void *private_data; |
1da177e4c Linux-2.6.12-rc2 |
865 |
}; |
452503f99 Add ide-timing fu... |
866 867 868 869 870 871 872 873 |
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... |
874 |
unsigned short dmack_hold; /* tj */ |
452503f99 Add ide-timing fu... |
875 876 877 |
unsigned short cycle; /* t0 */ unsigned short udma; /* t2CYCTYP/2 */ }; |
624d5c514 libata: reorganiz... |
878 879 880 |
/* * Core layer - drivers/ata/libata-core.c */ |
e9c839142 [PATCH] libata: c... |
881 882 883 |
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... |
884 |
extern struct ata_port_operations ata_dummy_port_ops; |
21b0ad4fb libata: add init ... |
885 |
extern const struct ata_port_info ata_dummy_port_info; |
dd5b06c49 [PATCH] libata: i... |
886 |
|
e9c839142 [PATCH] libata: c... |
887 888 889 890 891 892 893 894 |
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... |
895 |
|
dd5b06c49 [PATCH] libata: i... |
896 897 898 899 |
static inline int ata_port_is_dummy(struct ata_port *ap) { return ap->ops == &ata_dummy_port_ops; } |
936fd7328 libata-link: link... |
900 |
extern int sata_set_spd(struct ata_link *link); |
0aa1113d5 libata: separate ... |
901 |
extern int ata_std_prereset(struct ata_link *link, unsigned long deadline); |
aa2731ad9 libata: separate ... |
902 903 |
extern int ata_wait_after_reset(struct ata_link *link, unsigned long deadline, int (*check_ready)(struct ata_link *link)); |
936fd7328 libata-link: link... |
904 905 906 907 |
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); |
cc0680a58 libata-link: link... |
908 |
extern int sata_link_hardreset(struct ata_link *link, |
9dadd45b2 libata: move gene... |
909 910 |
const unsigned long *timing, unsigned long deadline, bool *online, int (*check_ready)(struct ata_link *)); |
57c9efdfb libata: implement... |
911 912 |
extern int sata_std_hardreset(struct ata_link *link, unsigned int *class, unsigned long deadline); |
203c75b82 libata: separate ... |
913 |
extern void ata_std_postreset(struct ata_link *link, unsigned int *classes); |
2855568b1 [libata] struct p... |
914 |
|
f31871951 libata: separate ... |
915 |
extern struct ata_host *ata_host_alloc(struct device *dev, int max_ports); |
f5cda2572 libata: implement... |
916 917 |
extern struct ata_host *ata_host_alloc_pinfo(struct device *dev, const struct ata_port_info * const * ppi, int n_ports); |
b1c72916a libata: implement... |
918 |
extern int ata_slave_link_init(struct ata_port *ap); |
ecef72532 libata: separate ... |
919 |
extern int ata_host_start(struct ata_host *host); |
f31871951 libata: separate ... |
920 921 |
extern int ata_host_register(struct ata_host *host, struct scsi_host_template *sht); |
f5cda2572 libata: implement... |
922 923 924 |
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... |
925 |
extern void ata_host_detach(struct ata_host *host); |
cca3974e4 libata: Grand ren... |
926 |
extern void ata_host_init(struct ata_host *, struct device *, |
029cfd6b7 libata: implement... |
927 |
unsigned long, struct ata_port_operations *); |
193515d51 [libata] eliminat... |
928 |
extern int ata_scsi_detect(struct scsi_host_template *sht); |
1da177e4c Linux-2.6.12-rc2 |
929 930 |
extern int ata_scsi_ioctl(struct scsi_device *dev, int cmd, void __user *arg); extern int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *)); |
94be9a58d [libata] get-iden... |
931 932 |
extern int ata_sas_scsi_ioctl(struct ata_port *ap, struct scsi_device *dev, int cmd, void __user *arg); |
80289167f [PATCH] libata: A... |
933 |
extern void ata_sas_port_destroy(struct ata_port *); |
cca3974e4 libata: Grand ren... |
934 |
extern struct ata_port *ata_sas_port_alloc(struct ata_host *, |
80289167f [PATCH] libata: A... |
935 936 937 938 939 940 941 |
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 *); extern int ata_sas_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *), struct ata_port *ap); |
936fd7328 libata-link: link... |
942 943 944 945 |
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... |
946 947 |
extern bool ata_link_online(struct ata_link *link); extern bool ata_link_offline(struct ata_link *link); |
6ffa01d88 libata: add CONFI... |
948 |
#ifdef CONFIG_PM |
cca3974e4 libata: Grand ren... |
949 950 |
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... |
951 |
#endif |
67846b301 libata: add ata_r... |
952 |
extern int ata_ratelimit(void); |
c22daff41 [PATCH] libata: i... |
953 |
extern u32 ata_wait_register(void __iomem *reg, u32 mask, u32 val, |
341c2c958 libata: consisten... |
954 |
unsigned long interval, unsigned long timeout); |
436d34b36 libata: uninline ... |
955 |
extern int atapi_cmd_type(u8 opcode); |
9977126c4 libata: add @is_c... |
956 957 |
extern void ata_tf_to_fis(const struct ata_taskfile *tf, u8 pmp, int is_cmd, u8 *fis); |
057ace5e7 libata: const-ifi... |
958 |
extern void ata_tf_from_fis(const u8 *fis, struct ata_taskfile *tf); |
7dc951aef libata: xfer_mask... |
959 960 961 962 963 964 965 966 967 968 |
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: ... |
969 |
extern int ata_std_qc_defer(struct ata_queued_cmd *qc); |
e46834cd2 [PATCH] libata: A... |
970 |
extern void ata_noop_qc_prep(struct ata_queued_cmd *qc); |
1da177e4c Linux-2.6.12-rc2 |
971 972 |
extern void ata_sg_init(struct ata_queued_cmd *qc, struct scatterlist *sg, unsigned int n_elem); |
057ace5e7 libata: const-ifi... |
973 |
extern unsigned int ata_dev_classify(const struct ata_taskfile *tf); |
10305f0f8 Add id_to_dma_mod... |
974 |
extern void ata_dev_disable(struct ata_device *adev); |
6a62a04d4 [PATCH] libata: r... |
975 976 977 978 |
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... |
979 980 |
extern unsigned int ata_do_dev_read_id(struct ata_device *dev, struct ata_taskfile *tf, u16 *id); |
f686bcb80 [PATCH] libata-eh... |
981 |
extern void ata_qc_complete(struct ata_queued_cmd *qc); |
79f97dadf libata: drop @fin... |
982 |
extern int ata_qc_complete_multiple(struct ata_port *ap, u32 qc_active); |
3373efd89 [PATCH] libata: u... |
983 |
extern void ata_scsi_simulate(struct ata_device *dev, struct scsi_cmnd *cmd, |
1da177e4c Linux-2.6.12-rc2 |
984 985 986 987 |
void (*done)(struct scsi_cmnd *)); extern int ata_std_bios_param(struct scsi_device *sdev, struct block_device *bdev, sector_t capacity, int geom[]); |
d8d9129ea libata: implement... |
988 |
extern void ata_scsi_unlock_native_capacity(struct scsi_device *sdev); |
1da177e4c Linux-2.6.12-rc2 |
989 |
extern int ata_scsi_slave_config(struct scsi_device *sdev); |
83c47bcb3 [PATCH] libata-hp... |
990 |
extern void ata_scsi_slave_destroy(struct scsi_device *sdev); |
a6e6ce8e8 [PATCH] libata-nc... |
991 |
extern int ata_scsi_change_queue_depth(struct scsi_device *sdev, |
e881a172d [SCSI] modify cha... |
992 |
int queue_depth, int reason); |
3373efd89 [PATCH] libata: u... |
993 |
extern struct ata_device *ata_dev_pair(struct ata_device *adev); |
0260731f0 libata-link: link... |
994 |
extern int ata_do_set_mode(struct ata_link *link, struct ata_device **r_failed_dev); |
1da177e4c Linux-2.6.12-rc2 |
995 |
|
be0d18dff libata: cable det... |
996 997 998 |
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... |
999 |
extern int ata_cable_ignore(struct ata_port *ap); |
be0d18dff libata: cable det... |
1000 |
extern int ata_cable_unknown(struct ata_port *ap); |
624d5c514 libata: reorganiz... |
1001 |
/* Timing helpers */ |
1bc4ccfff [PATCH] libata: a... |
1002 |
extern unsigned int ata_pio_need_iordy(const struct ata_device *); |
6357357ca libata: export xf... |
1003 |
extern const struct ata_timing *ata_timing_find_mode(u8 xfer_mode); |
452503f99 Add ide-timing fu... |
1004 1005 1006 1007 1008 |
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... |
1009 |
extern u8 ata_timing_cycle2mode(unsigned int xfer_shift, int cycle); |
452503f99 Add ide-timing fu... |
1010 |
|
624d5c514 libata: reorganiz... |
1011 1012 1013 1014 1015 1016 1017 1018 1019 |
/* 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... |
1020 |
}; |
624d5c514 libata: reorganiz... |
1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 |
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... |
1035 |
#ifdef CONFIG_ATA_ACPI |
c05e6ff03 libata-acpi: impl... |
1036 1037 1038 1039 1040 1041 |
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... |
1042 1043 |
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 ... |
1044 1045 |
unsigned long ata_acpi_gtm_xfermask(struct ata_device *dev, const struct ata_acpi_gtm *gtm); |
021ee9a6d libata: reimpleme... |
1046 |
int ata_acpi_cbl_80wire(struct ata_port *ap, const struct ata_acpi_gtm *gtm); |
e1ddb4b6a [libata] add ACPI... |
1047 |
#else |
c05e6ff03 libata-acpi: impl... |
1048 1049 1050 1051 |
static inline const struct ata_acpi_gtm *ata_acpi_init_gtm(struct ata_port *ap) { return NULL; } |
7c77fa4d5 libata: separate ... |
1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 |
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... |
1070 1071 1072 1073 1074 1075 |
static inline int ata_acpi_cbl_80wire(struct ata_port *ap, const struct ata_acpi_gtm *gtm) { return 0; } |
e1ddb4b6a [libata] add ACPI... |
1076 |
#endif |
1da177e4c Linux-2.6.12-rc2 |
1077 |
|
ece1d6361 [PATCH] libata: s... |
1078 |
/* |
624d5c514 libata: reorganiz... |
1079 |
* EH - drivers/ata/libata-eh.c |
ece1d6361 [PATCH] libata: s... |
1080 |
*/ |
7b70fc039 [PATCH] libata-eh... |
1081 |
extern void ata_port_schedule_eh(struct ata_port *ap); |
dbd826168 libata-link: impl... |
1082 |
extern int ata_link_abort(struct ata_link *link); |
7b70fc039 [PATCH] libata-eh... |
1083 |
extern int ata_port_abort(struct ata_port *ap); |
e31804994 [PATCH] libata-eh... |
1084 |
extern int ata_port_freeze(struct ata_port *ap); |
7d77b2470 libata-pmp-prep: ... |
1085 |
extern int sata_async_notification(struct ata_port *ap); |
e31804994 [PATCH] libata-eh... |
1086 1087 1088 |
extern void ata_eh_freeze_port(struct ata_port *ap); extern void ata_eh_thaw_port(struct ata_port *ap); |
7b70fc039 [PATCH] libata-eh... |
1089 |
|
ece1d6361 [PATCH] libata: s... |
1090 1091 |
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... |
1092 |
extern void ata_eh_analyze_ncq_error(struct ata_link *link); |
ece1d6361 [PATCH] libata: s... |
1093 |
|
f5914a461 [PATCH] libata-hp... |
1094 1095 1096 |
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... |
1097 |
extern void ata_std_error_handler(struct ata_port *ap); |
022bdb075 [PATCH] libata-eh... |
1098 |
|
61440db61 [PATCH] libata: i... |
1099 |
/* |
68d1d07b5 libata: implement... |
1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 |
* 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... |
1122 |
extern struct device_attribute *ata_common_sdev_attrs[]; |
68d1d07b5 libata: implement... |
1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 |
#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... |
1137 |
.bios_param = ata_std_bios_param, \ |
d8d9129ea libata: implement... |
1138 |
.unlock_native_capacity = ata_scsi_unlock_native_capacity, \ |
45fabbb77 libata: Implement... |
1139 |
.sdev_attrs = ata_common_sdev_attrs |
68d1d07b5 libata: implement... |
1140 |
|
68d1d07b5 libata: implement... |
1141 1142 1143 1144 1145 |
#define ATA_NCQ_SHT(drv_name) \ ATA_BASE_SHT(drv_name), \ .change_queue_depth = ata_scsi_change_queue_depth /* |
071f44b1d libata: implement... |
1146 1147 |
* PMP helpers */ |
88fcd5627 libata: make PMP ... |
1148 |
#ifdef CONFIG_SATA_PMP |
071f44b1d libata: implement... |
1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 |
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... |
1161 |
return link == &link->ap->link || link == link->ap->slave_link; |
071f44b1d libata: implement... |
1162 |
} |
88fcd5627 libata: make PMP ... |
1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 |
#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... |
1179 1180 1181 1182 1183 1184 1185 1186 1187 |
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... |
1188 1189 1190 |
* printk helpers */ #define ata_port_printk(ap, lv, fmt, args...) \ |
c2e366a10 libata: update at... |
1191 |
printk("%sata%u: "fmt, lv, (ap)->print_id , ##args) |
61440db61 [PATCH] libata: i... |
1192 |
|
8989805d6 libata-link: add ... |
1193 |
#define ata_link_printk(link, lv, fmt, args...) do { \ |
b1c72916a libata: implement... |
1194 |
if (sata_pmp_attached((link)->ap) || (link)->ap->slave_link) \ |
c2e366a10 libata: update at... |
1195 |
printk("%sata%u.%02u: "fmt, lv, (link)->ap->print_id, \ |
8989805d6 libata-link: add ... |
1196 1197 |
(link)->pmp , ##args); \ else \ |
c2e366a10 libata: update at... |
1198 |
printk("%sata%u: "fmt, lv, (link)->ap->print_id , ##args); \ |
8989805d6 libata-link: add ... |
1199 |
} while(0) |
9af5c9c97 libata-link: intr... |
1200 |
|
61440db61 [PATCH] libata: i... |
1201 |
#define ata_dev_printk(dev, lv, fmt, args...) \ |
c2e366a10 libata: update at... |
1202 |
printk("%sata%u.%02u: "fmt, lv, (dev)->link->ap->print_id, \ |
8989805d6 libata-link: add ... |
1203 |
(dev)->link->pmp + (dev)->devno , ##args) |
1da177e4c Linux-2.6.12-rc2 |
1204 |
|
61440db61 [PATCH] libata: i... |
1205 |
/* |
f3e81b19a [PATCH] libata-eh... |
1206 1207 |
* ata_eh_info helpers */ |
cb94c1cf5 libata: add print... |
1208 1209 1210 1211 |
extern void __ata_ehi_push_desc(struct ata_eh_info *ehi, const char *fmt, ...) __attribute__ ((format (printf, 2, 3))); extern void ata_ehi_push_desc(struct ata_eh_info *ehi, const char *fmt, ...) __attribute__ ((format (printf, 2, 3))); |
b64bbc39f libata: improve E... |
1212 |
extern void ata_ehi_clear_desc(struct ata_eh_info *ehi); |
f3e81b19a [PATCH] libata-eh... |
1213 |
|
c0b6c0377 [PATCH] libata: s... |
1214 1215 |
static inline void ata_ehi_hotplugged(struct ata_eh_info *ehi) { |
b558edddb libata: kill ata_... |
1216 |
ehi->probe_mask |= (1 << ATA_MAX_DEVICES) - 1; |
f8f1e1cc0 libata: reorganiz... |
1217 |
ehi->flags |= ATA_EHI_HOTPLUGGED; |
b558edddb libata: kill ata_... |
1218 |
ehi->action |= ATA_EH_RESET | ATA_EH_ENABLE_LINK; |
c0b6c0377 [PATCH] libata: s... |
1219 1220 |
ehi->err_mask |= AC_ERR_ATA_BUS; } |
f3e81b19a [PATCH] libata-eh... |
1221 |
/* |
cbcdd8759 libata: implement... |
1222 1223 1224 1225 1226 1227 1228 1229 |
* port description helpers */ extern void ata_port_desc(struct ata_port *ap, const char *fmt, ...) __attribute__ ((format (printf, 2, 3))); #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 |
1230 1231 1232 1233 |
static inline unsigned int ata_tag_valid(unsigned int tag) { return (tag < ATA_MAX_QUEUE) ? 1 : 0; } |
2ab7db1ff [PATCH] libata-eh... |
1234 1235 |
static inline unsigned int ata_tag_internal(unsigned int tag) { |
83c063dd7 use ATA_TAG_INTER... |
1236 |
return tag == ATA_TAG_INTERNAL; |
2ab7db1ff [PATCH] libata-eh... |
1237 |
} |
5806db22c [PATCH] libata: i... |
1238 1239 1240 |
/* * device helpers */ |
e1211e3fa [PATCH] libata: i... |
1241 |
static inline unsigned int ata_class_enabled(unsigned int class) |
597afd214 [PATCH] libata: s... |
1242 |
{ |
e0a717526 libata-pmp-prep: ... |
1243 1244 |
return class == ATA_DEV_ATA || class == ATA_DEV_ATAPI || class == ATA_DEV_PMP || class == ATA_DEV_SEMB; |
597afd214 [PATCH] libata: s... |
1245 |
} |
e1211e3fa [PATCH] libata: i... |
1246 |
static inline unsigned int ata_class_disabled(unsigned int class) |
1da177e4c Linux-2.6.12-rc2 |
1247 |
{ |
e0a717526 libata-pmp-prep: ... |
1248 1249 |
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... |
1250 |
} |
002c8054f [PATCH] libata: i... |
1251 1252 1253 1254 |
static inline unsigned int ata_class_absent(unsigned int class) { return !ata_class_enabled(class) && !ata_class_disabled(class); } |
e1211e3fa [PATCH] libata: i... |
1255 1256 1257 1258 1259 1260 1261 1262 |
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 |
1263 |
} |
002c8054f [PATCH] libata: i... |
1264 1265 1266 1267 |
static inline unsigned int ata_dev_absent(const struct ata_device *dev) { return ata_class_absent(dev->class); } |
5806db22c [PATCH] libata: i... |
1268 |
/* |
f58229f80 libata-link: impl... |
1269 |
* link helpers |
5806db22c [PATCH] libata: i... |
1270 |
*/ |
f58229f80 libata-link: impl... |
1271 |
static inline int ata_link_max_devices(const struct ata_link *link) |
5806db22c [PATCH] libata: i... |
1272 |
{ |
8989805d6 libata-link: add ... |
1273 |
if (ata_is_host_link(link) && link->ap->flags & ATA_FLAG_SLAVE_POSS) |
5806db22c [PATCH] libata: i... |
1274 1275 1276 |
return 2; return 1; } |
da917d69d libata-pmp-prep: ... |
1277 1278 1279 1280 |
static inline int ata_link_active(struct ata_link *link) { return ata_tag_valid(link->active_tag) || link->sactive; } |
1eca4365b libata: beef up i... |
1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 |
/* * 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... |
1337 |
|
6d1245bf2 libata: separate ... |
1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 |
/** * 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... |
1353 |
|
1da177e4c Linux-2.6.12-rc2 |
1354 1355 1356 1357 |
static inline void ata_qc_set_polling(struct ata_queued_cmd *qc) { qc->tf.ctl |= ATA_NIEN; } |
f69499f42 [PATCH] libata-eh... |
1358 1359 |
static inline struct ata_queued_cmd *__ata_qc_from_tag(struct ata_port *ap, unsigned int tag) |
1da177e4c Linux-2.6.12-rc2 |
1360 1361 1362 1363 1364 |
{ if (likely(ata_tag_valid(tag))) return &ap->qcmd[tag]; return NULL; } |
f69499f42 [PATCH] libata-eh... |
1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 |
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... |
1379 1380 1381 1382 |
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... |
1383 |
static inline void ata_tf_init(struct ata_device *dev, struct ata_taskfile *tf) |
1da177e4c Linux-2.6.12-rc2 |
1384 1385 |
{ memset(tf, 0, sizeof(*tf)); |
5fe7454aa libata-sff: ap->[... |
1386 |
#ifdef CONFIG_ATA_SFF |
9af5c9c97 libata-link: intr... |
1387 |
tf->ctl = dev->link->ap->ctl; |
5fe7454aa libata-sff: ap->[... |
1388 1389 1390 |
#else tf->ctl = ATA_DEVCTL_OBS; #endif |
3373efd89 [PATCH] libata: u... |
1391 |
if (dev->devno == 0) |
1da177e4c Linux-2.6.12-rc2 |
1392 1393 1394 1395 |
tf->device = ATA_DEVICE_OBS; else tf->device = ATA_DEVICE_OBS | ATA_DEV1; } |
2c13b7cee [libata] minor fi... |
1396 1397 |
static inline void ata_qc_reinit(struct ata_queued_cmd *qc) { |
501e0c500 libata: initializ... |
1398 |
qc->dma_dir = DMA_NONE; |
ff2aeb1eb libata: convert t... |
1399 |
qc->sg = NULL; |
2c13b7cee [libata] minor fi... |
1400 |
qc->flags = 0; |
872602162 libata: convert t... |
1401 1402 |
qc->cursg = NULL; qc->cursg_ofs = 0; |
aacda3753 libata: implement... |
1403 |
qc->nbytes = qc->extrabytes = qc->curbytes = 0; |
7a801184f libata: Fixup n_e... |
1404 |
qc->n_elem = 0; |
a22e2eb07 [PATCH] libata: m... |
1405 |
qc->err_mask = 0; |
5a5dbd18a libata: add suppo... |
1406 |
qc->sect_size = ATA_SECT_SIZE; |
2c13b7cee [libata] minor fi... |
1407 |
|
3373efd89 [PATCH] libata: u... |
1408 |
ata_tf_init(qc->dev, &qc->tf); |
e61e06722 [PATCH] libata: i... |
1409 1410 1411 1412 |
/* init result_tf such that it indicates normal completion */ qc->result_tf.command = ATA_DRDY; qc->result_tf.feature = 0; |
2c13b7cee [libata] minor fi... |
1413 |
} |
057ace5e7 libata: const-ifi... |
1414 |
static inline int ata_try_flush_cache(const struct ata_device *dev) |
1da177e4c Linux-2.6.12-rc2 |
1415 1416 1417 1418 1419 |
{ return ata_id_wcache_enabled(dev->id) || ata_id_has_flush(dev->id) || ata_id_has_flush_ext(dev->id); } |
a7dac447b [libata] change a... |
1420 1421 |
static inline unsigned int ac_err_mask(u8 status) { |
3655d1d32 [PATCH] libata: F... |
1422 |
if (status & (ATA_BUSY | ATA_DRQ)) |
11a56d243 [PATCH] libata: a... |
1423 |
return AC_ERR_HSM; |
a7dac447b [libata] change a... |
1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 |
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... |
1436 1437 |
static inline struct ata_port *ata_shost_to_port(struct Scsi_Host *host) { |
4911487a3 libata: allocate ... |
1438 |
return *(struct ata_port **)&host->hostdata[0]; |
35bb94b11 libata: Add helpe... |
1439 |
} |
78ab88f04 libata: improve p... |
1440 1441 |
static inline int ata_check_ready(u8 status) { |
005b1f749 [libata] revert n... |
1442 1443 |
if (!(status & ATA_BUSY)) return 1; |
78ab88f04 libata: improve p... |
1444 1445 1446 1447 |
/* 0xff indicates either no device or device not ready */ if (status == 0xff) return -ENODEV; |
005b1f749 [libata] revert n... |
1448 |
return 0; |
78ab88f04 libata: improve p... |
1449 |
} |
341c2c958 libata: consisten... |
1450 1451 1452 1453 1454 |
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... |
1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 |
/* 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 ... |
1477 1478 1479 1480 |
/************************************************************************** * PMP - drivers/ata/libata-pmp.c */ |
88fcd5627 libata: make PMP ... |
1481 |
#ifdef CONFIG_SATA_PMP |
48515f6c0 libata: separate ... |
1482 1483 1484 1485 |
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 ... |
1486 1487 1488 1489 1490 1491 1492 |
#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 ... |
1493 |
|
624d5c514 libata: reorganiz... |
1494 1495 1496 |
/************************************************************************** * SFF - drivers/ata/libata-sff.c */ |
127102aea libata: make SFF ... |
1497 |
#ifdef CONFIG_ATA_SFF |
624d5c514 libata: reorganiz... |
1498 |
extern const struct ata_port_operations ata_sff_port_ops; |
871af1210 libata: Add 32bit... |
1499 |
extern const struct ata_port_operations ata_bmdma32_port_ops; |
624d5c514 libata: reorganiz... |
1500 1501 1502 1503 1504 1505 |
/* 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... |
1506 1507 |
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... |
1508 1509 |
extern void ata_sff_pause(struct ata_port *ap); extern void ata_sff_dma_pause(struct ata_port *ap); |
9363c3825 libata: rename SF... |
1510 1511 |
extern int ata_sff_busy_sleep(struct ata_port *ap, unsigned long timeout_pat, unsigned long timeout); |
705e76beb libata: restructu... |
1512 |
extern int ata_sff_wait_ready(struct ata_link *link, unsigned long deadline); |
9363c3825 libata: rename SF... |
1513 1514 1515 1516 1517 |
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... |
1518 |
unsigned char *buf, unsigned int buflen, int rw); |
871af1210 libata: Add 32bit... |
1519 1520 |
extern unsigned int ata_sff_data_xfer32(struct ata_device *dev, unsigned char *buf, unsigned int buflen, int rw); |
9363c3825 libata: rename SF... |
1521 |
extern unsigned int ata_sff_data_xfer_noirq(struct ata_device *dev, |
624d5c514 libata: reorganiz... |
1522 |
unsigned char *buf, unsigned int buflen, int rw); |
e42a542ba libata: make sff_... |
1523 |
extern void ata_sff_irq_on(struct ata_port *ap); |
9363c3825 libata: rename SF... |
1524 1525 1526 |
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); |
ea3c64506 libata-sff: Reena... |
1527 |
extern void ata_sff_queue_pio_task(struct ata_link *link, unsigned long delay); |
9363c3825 libata: rename SF... |
1528 |
extern unsigned int ata_sff_qc_issue(struct ata_queued_cmd *qc); |
22183bf56 libata: add qc_fi... |
1529 |
extern bool ata_sff_qc_fill_rtf(struct ata_queued_cmd *qc); |
c3b288942 libata-sff: separ... |
1530 |
extern unsigned int ata_sff_port_intr(struct ata_port *ap, |
9363c3825 libata: rename SF... |
1531 1532 |
struct ata_queued_cmd *qc); extern irqreturn_t ata_sff_interrupt(int irq, void *dev_instance); |
c96f1732e [libata] Improve ... |
1533 |
extern void ata_sff_lost_interrupt(struct ata_port *ap); |
9363c3825 libata: rename SF... |
1534 1535 1536 1537 1538 |
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... |
1539 1540 |
extern int ata_sff_wait_after_reset(struct ata_link *link, unsigned int devmask, unsigned long deadline); |
9363c3825 libata: rename SF... |
1541 |
extern int ata_sff_softreset(struct ata_link *link, unsigned int *classes, |
624d5c514 libata: reorganiz... |
1542 |
unsigned long deadline); |
9363c3825 libata: rename SF... |
1543 1544 1545 |
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... |
1546 |
extern void ata_sff_drain_fifo(struct ata_queued_cmd *qc); |
9363c3825 libata: rename SF... |
1547 |
extern void ata_sff_error_handler(struct ata_port *ap); |
9363c3825 libata: rename SF... |
1548 |
extern void ata_sff_std_ports(struct ata_ioports *ioaddr); |
624d5c514 libata: reorganiz... |
1549 |
#ifdef CONFIG_PCI |
9363c3825 libata: rename SF... |
1550 1551 |
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... |
1552 1553 |
const struct ata_port_info * const * ppi, struct ata_host **r_host); |
9363c3825 libata: rename SF... |
1554 |
extern int ata_pci_sff_activate_host(struct ata_host *host, |
624d5c514 libata: reorganiz... |
1555 1556 |
irq_handler_t irq_handler, struct scsi_host_template *sht); |
9363c3825 libata: rename SF... |
1557 |
extern int ata_pci_sff_init_one(struct pci_dev *pdev, |
16ea0fc98 libata: Pass host... |
1558 1559 |
const struct ata_port_info * const * ppi, struct scsi_host_template *sht, void *host_priv, int hflags); |
624d5c514 libata: reorganiz... |
1560 |
#endif /* CONFIG_PCI */ |
9a7780c9a libata-sff: make ... |
1561 1562 1563 1564 1565 1566 1567 1568 |
#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... |
1569 |
extern void ata_bmdma_qc_prep(struct ata_queued_cmd *qc); |
360ff7833 libata-sff: separ... |
1570 |
extern unsigned int ata_bmdma_qc_issue(struct ata_queued_cmd *qc); |
f47451c45 libata-sff: ata_s... |
1571 |
extern void ata_bmdma_dumb_qc_prep(struct ata_queued_cmd *qc); |
c3b288942 libata-sff: separ... |
1572 1573 1574 |
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... |
1575 1576 |
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... |
1577 |
extern void ata_bmdma_irq_clear(struct ata_port *ap); |
9f2f72107 libata-sff: reord... |
1578 1579 1580 1581 |
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... |
1582 1583 |
extern int ata_bmdma_port_start(struct ata_port *ap); extern int ata_bmdma_port_start32(struct ata_port *ap); |
9f2f72107 libata-sff: reord... |
1584 1585 1586 |
#ifdef CONFIG_PCI extern int ata_pci_bmdma_clear_simplex(struct pci_dev *pdev); |
c7087652e libata-sff: clean... |
1587 |
extern void ata_pci_bmdma_init(struct ata_host *host); |
1c5afdf7a libata-sff: separ... |
1588 1589 1590 1591 1592 1593 1594 |
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... |
1595 |
#endif /* CONFIG_PCI */ |
9a7780c9a libata-sff: make ... |
1596 |
#endif /* CONFIG_ATA_BMDMA */ |
9f2f72107 libata-sff: reord... |
1597 |
|
624d5c514 libata: reorganiz... |
1598 |
/** |
9363c3825 libata: rename SF... |
1599 |
* ata_sff_busy_wait - Wait for a port status register |
624d5c514 libata: reorganiz... |
1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 |
* @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... |
1611 1612 |
static inline u8 ata_sff_busy_wait(struct ata_port *ap, unsigned int bits, unsigned int max) |
624d5c514 libata: reorganiz... |
1613 1614 1615 1616 1617 |
{ u8 status; do { udelay(10); |
5682ed33a libata: rename SF... |
1618 |
status = ap->ops->sff_check_status(ap); |
624d5c514 libata: reorganiz... |
1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 |
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... |
1637 |
u8 status = ata_sff_busy_wait(ap, ATA_BUSY | ATA_DRQ, 1000); |
624d5c514 libata: reorganiz... |
1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 |
#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 ... |
1648 |
#endif /* CONFIG_ATA_SFF */ |
624d5c514 libata: reorganiz... |
1649 |
|
1da177e4c Linux-2.6.12-rc2 |
1650 |
#endif /* __LINUX_LIBATA_H__ */ |