1e5aec839041de78b0b37ee4f9f7c6483911402b
[linux-2.6-block.git] / include / linux / libata.h
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  *  Copyright 2003-2005 Red Hat, Inc.  All rights reserved.
4  *  Copyright 2003-2005 Jeff Garzik
5  *
6  *  libata documentation is available via 'make {ps|pdf}docs',
7  *  as Documentation/driver-api/libata.rst
8  */
9
10 #ifndef __LINUX_LIBATA_H__
11 #define __LINUX_LIBATA_H__
12
13 #include <linux/delay.h>
14 #include <linux/jiffies.h>
15 #include <linux/interrupt.h>
16 #include <linux/dma-mapping.h>
17 #include <linux/scatterlist.h>
18 #include <linux/io.h>
19 #include <linux/ata.h>
20 #include <linux/workqueue.h>
21 #include <scsi/scsi_host.h>
22 #include <linux/acpi.h>
23 #include <linux/cdrom.h>
24 #include <linux/sched.h>
25 #include <linux/async.h>
26
27 /*
28  * Define if arch has non-standard setup.  This is a _PCI_ standard
29  * not a legacy or ISA standard.
30  */
31 #ifdef CONFIG_ATA_NONSTANDARD
32 #include <asm/libata-portmap.h>
33 #else
34 #define ATA_PRIMARY_IRQ(dev)    14
35 #define ATA_SECONDARY_IRQ(dev)  15
36 #endif
37
38 /*
39  * compile-time options: to be removed as soon as all the drivers are
40  * converted to the new debugging mechanism
41  */
42 #undef ATA_IRQ_TRAP             /* define to ack screaming irqs */
43
44 /* defines only for the constants which don't work well as enums */
45 #define ATA_TAG_POISON          0xfafbfcfdU
46
47 /*
48  * Quirk flags bits.
49  * ata_device->quirks is an unsigned int, so __ATA_QUIRK_MAX must not exceed 32.
50  */
51 enum ata_quirks {
52         __ATA_QUIRK_DIAGNOSTIC,         /* Failed boot diag */
53         __ATA_QUIRK_NODMA,              /* DMA problems */
54         __ATA_QUIRK_NONCQ,              /* Don't use NCQ */
55         __ATA_QUIRK_MAX_SEC_128,        /* Limit max sects to 128 */
56         __ATA_QUIRK_BROKEN_HPA,         /* Broken HPA */
57         __ATA_QUIRK_DISABLE,            /* Disable it */
58         __ATA_QUIRK_HPA_SIZE,           /* Native size off by one */
59         __ATA_QUIRK_IVB,                /* cbl det validity bit bugs */
60         __ATA_QUIRK_STUCK_ERR,          /* Stuck ERR on next PACKET */
61         __ATA_QUIRK_BRIDGE_OK,          /* No bridge limits */
62         __ATA_QUIRK_ATAPI_MOD16_DMA,    /* Use ATAPI DMA for commands that */
63                                         /* are not a multiple of 16 bytes */
64         __ATA_QUIRK_FIRMWARE_WARN,      /* Firmware update warning */
65         __ATA_QUIRK_1_5_GBPS,           /* Force 1.5 Gbps */
66         __ATA_QUIRK_NOSETXFER,          /* Skip SETXFER, SATA only */
67         __ATA_QUIRK_BROKEN_FPDMA_AA,    /* Skip AA */
68         __ATA_QUIRK_DUMP_ID,            /* Dump IDENTIFY data */
69         __ATA_QUIRK_MAX_SEC_LBA48,      /* Set max sects to 65535 */
70         __ATA_QUIRK_ATAPI_DMADIR,       /* Device requires dmadir */
71         __ATA_QUIRK_NO_NCQ_TRIM,        /* Do not use queued TRIM */
72         __ATA_QUIRK_NOLPM,              /* Do not use LPM */
73         __ATA_QUIRK_WD_BROKEN_LPM,      /* Some WDs have broken LPM */
74         __ATA_QUIRK_ZERO_AFTER_TRIM,    /* Guarantees zero after trim */
75         __ATA_QUIRK_NO_DMA_LOG,         /* Do not use DMA for log read */
76         __ATA_QUIRK_NOTRIM,             /* Do not use TRIM */
77         __ATA_QUIRK_MAX_SEC_1024,       /* Limit max sects to 1024 */
78         __ATA_QUIRK_MAX_TRIM_128M,      /* Limit max trim size to 128M */
79         __ATA_QUIRK_NO_NCQ_ON_ATI,      /* Disable NCQ on ATI chipset */
80         __ATA_QUIRK_NO_LPM_ON_ATI,      /* Disable LPM on ATI chipset */
81         __ATA_QUIRK_NO_ID_DEV_LOG,      /* Identify device log missing */
82         __ATA_QUIRK_NO_LOG_DIR,         /* Do not read log directory */
83         __ATA_QUIRK_NO_FUA,             /* Do not use FUA */
84
85         __ATA_QUIRK_MAX,
86 };
87
88 enum {
89         /* various global constants */
90         LIBATA_MAX_PRD          = ATA_MAX_PRD / 2,
91         LIBATA_DUMB_MAX_PRD     = ATA_MAX_PRD / 4,      /* Worst case */
92         ATA_DEF_QUEUE           = 1,
93         ATA_MAX_QUEUE           = 32,
94         ATA_TAG_INTERNAL        = ATA_MAX_QUEUE,
95         ATA_SHORT_PAUSE         = 16,
96
97         ATAPI_MAX_DRAIN         = 16 << 10,
98
99         ATA_ALL_DEVICES         = (1 << ATA_MAX_DEVICES) - 1,
100
101         ATA_SHT_EMULATED        = 1,
102         ATA_SHT_THIS_ID         = -1,
103
104         /* struct ata_taskfile flags */
105         ATA_TFLAG_LBA48         = (1 << 0), /* enable 48-bit LBA and "HOB" */
106         ATA_TFLAG_ISADDR        = (1 << 1), /* enable r/w to nsect/lba regs */
107         ATA_TFLAG_DEVICE        = (1 << 2), /* enable r/w to device reg */
108         ATA_TFLAG_WRITE         = (1 << 3), /* data dir: host->dev==1 (write) */
109         ATA_TFLAG_LBA           = (1 << 4), /* enable LBA */
110         ATA_TFLAG_FUA           = (1 << 5), /* enable FUA */
111         ATA_TFLAG_POLLING       = (1 << 6), /* set nIEN to 1 and use polling */
112
113         /* struct ata_device stuff */
114         ATA_DFLAG_LBA           = (1 << 0), /* device supports LBA */
115         ATA_DFLAG_LBA48         = (1 << 1), /* device supports LBA48 */
116         ATA_DFLAG_CDB_INTR      = (1 << 2), /* device asserts INTRQ when ready for CDB */
117         ATA_DFLAG_NCQ           = (1 << 3), /* device supports NCQ */
118         ATA_DFLAG_FLUSH_EXT     = (1 << 4), /* do FLUSH_EXT instead of FLUSH */
119         ATA_DFLAG_ACPI_PENDING  = (1 << 5), /* ACPI resume action pending */
120         ATA_DFLAG_ACPI_FAILED   = (1 << 6), /* ACPI on devcfg has failed */
121         ATA_DFLAG_AN            = (1 << 7), /* AN configured */
122         ATA_DFLAG_TRUSTED       = (1 << 8), /* device supports trusted send/recv */
123         ATA_DFLAG_FUA           = (1 << 9), /* device supports FUA */
124         ATA_DFLAG_DMADIR        = (1 << 10), /* device requires DMADIR */
125         ATA_DFLAG_NCQ_SEND_RECV = (1 << 11), /* device supports NCQ SEND and RECV */
126         ATA_DFLAG_NCQ_PRIO      = (1 << 12), /* device supports NCQ priority */
127         ATA_DFLAG_CDL           = (1 << 13), /* supports cmd duration limits */
128         ATA_DFLAG_CFG_MASK      = (1 << 14) - 1,
129
130         ATA_DFLAG_PIO           = (1 << 14), /* device limited to PIO mode */
131         ATA_DFLAG_NCQ_OFF       = (1 << 15), /* device limited to non-NCQ mode */
132         ATA_DFLAG_SLEEPING      = (1 << 16), /* device is sleeping */
133         ATA_DFLAG_DUBIOUS_XFER  = (1 << 17), /* data transfer not verified */
134         ATA_DFLAG_NO_UNLOAD     = (1 << 18), /* device doesn't support unload */
135         ATA_DFLAG_UNLOCK_HPA    = (1 << 19), /* unlock HPA */
136         ATA_DFLAG_INIT_MASK     = (1 << 20) - 1,
137
138         ATA_DFLAG_NCQ_PRIO_ENABLED = (1 << 20), /* Priority cmds sent to dev */
139         ATA_DFLAG_CDL_ENABLED   = (1 << 21), /* cmd duration limits is enabled */
140         ATA_DFLAG_RESUMING      = (1 << 22),  /* Device is resuming */
141         ATA_DFLAG_DETACH        = (1 << 24),
142         ATA_DFLAG_DETACHED      = (1 << 25),
143         ATA_DFLAG_DA            = (1 << 26), /* device supports Device Attention */
144         ATA_DFLAG_DEVSLP        = (1 << 27), /* device supports Device Sleep */
145         ATA_DFLAG_ACPI_DISABLED = (1 << 28), /* ACPI for the device is disabled */
146         ATA_DFLAG_D_SENSE       = (1 << 29), /* Descriptor sense requested */
147         ATA_DFLAG_ZAC           = (1 << 30), /* ZAC device */
148
149         ATA_DFLAG_FEATURES_MASK = (ATA_DFLAG_TRUSTED | ATA_DFLAG_DA |   \
150                                    ATA_DFLAG_DEVSLP | ATA_DFLAG_NCQ_SEND_RECV | \
151                                    ATA_DFLAG_NCQ_PRIO | ATA_DFLAG_FUA | \
152                                    ATA_DFLAG_CDL),
153
154         ATA_DEV_UNKNOWN         = 0,    /* unknown device */
155         ATA_DEV_ATA             = 1,    /* ATA device */
156         ATA_DEV_ATA_UNSUP       = 2,    /* ATA device (unsupported) */
157         ATA_DEV_ATAPI           = 3,    /* ATAPI device */
158         ATA_DEV_ATAPI_UNSUP     = 4,    /* ATAPI device (unsupported) */
159         ATA_DEV_PMP             = 5,    /* SATA port multiplier */
160         ATA_DEV_PMP_UNSUP       = 6,    /* SATA port multiplier (unsupported) */
161         ATA_DEV_SEMB            = 7,    /* SEMB */
162         ATA_DEV_SEMB_UNSUP      = 8,    /* SEMB (unsupported) */
163         ATA_DEV_ZAC             = 9,    /* ZAC device */
164         ATA_DEV_ZAC_UNSUP       = 10,   /* ZAC device (unsupported) */
165         ATA_DEV_NONE            = 11,   /* no device */
166
167         /* struct ata_link flags */
168         /* NOTE: struct ata_force_param currently stores lflags in u16 */
169         ATA_LFLAG_NO_HRST       = (1 << 1), /* avoid hardreset */
170         ATA_LFLAG_NO_SRST       = (1 << 2), /* avoid softreset */
171         ATA_LFLAG_ASSUME_ATA    = (1 << 3), /* assume ATA class */
172         ATA_LFLAG_ASSUME_SEMB   = (1 << 4), /* assume SEMB class */
173         ATA_LFLAG_ASSUME_CLASS  = ATA_LFLAG_ASSUME_ATA | ATA_LFLAG_ASSUME_SEMB,
174         ATA_LFLAG_NO_RETRY      = (1 << 5), /* don't retry this link */
175         ATA_LFLAG_DISABLED      = (1 << 6), /* link is disabled */
176         ATA_LFLAG_SW_ACTIVITY   = (1 << 7), /* keep activity stats */
177         ATA_LFLAG_NO_LPM        = (1 << 8), /* disable LPM on this link */
178         ATA_LFLAG_RST_ONCE      = (1 << 9), /* limit recovery to one reset */
179         ATA_LFLAG_CHANGED       = (1 << 10), /* LPM state changed on this link */
180         ATA_LFLAG_NO_DEBOUNCE_DELAY = (1 << 11), /* no debounce delay on link resume */
181
182         /* struct ata_port flags */
183         ATA_FLAG_SLAVE_POSS     = (1 << 0), /* host supports slave dev */
184                                             /* (doesn't imply presence) */
185         ATA_FLAG_SATA           = (1 << 1),
186         ATA_FLAG_NO_LPM         = (1 << 2), /* host not happy with LPM */
187         ATA_FLAG_NO_LOG_PAGE    = (1 << 5), /* do not issue log page read */
188         ATA_FLAG_NO_ATAPI       = (1 << 6), /* No ATAPI support */
189         ATA_FLAG_PIO_DMA        = (1 << 7), /* PIO cmds via DMA */
190         ATA_FLAG_PIO_LBA48      = (1 << 8), /* Host DMA engine is LBA28 only */
191         ATA_FLAG_PIO_POLLING    = (1 << 9), /* use polling PIO if LLD
192                                              * doesn't handle PIO interrupts */
193         ATA_FLAG_NCQ            = (1 << 10), /* host supports NCQ */
194         ATA_FLAG_NO_POWEROFF_SPINDOWN = (1 << 11), /* don't spindown before poweroff */
195         ATA_FLAG_NO_HIBERNATE_SPINDOWN = (1 << 12), /* don't spindown before hibernation */
196         ATA_FLAG_DEBUGMSG       = (1 << 13),
197         ATA_FLAG_FPDMA_AA               = (1 << 14), /* driver supports Auto-Activate */
198         ATA_FLAG_IGN_SIMPLEX    = (1 << 15), /* ignore SIMPLEX */
199         ATA_FLAG_NO_IORDY       = (1 << 16), /* controller lacks iordy */
200         ATA_FLAG_ACPI_SATA      = (1 << 17), /* need native SATA ACPI layout */
201         ATA_FLAG_AN             = (1 << 18), /* controller supports AN */
202         ATA_FLAG_PMP            = (1 << 19), /* controller supports PMP */
203         ATA_FLAG_FPDMA_AUX      = (1 << 20), /* controller supports H2DFIS aux field */
204         ATA_FLAG_EM             = (1 << 21), /* driver supports enclosure
205                                               * management */
206         ATA_FLAG_SW_ACTIVITY    = (1 << 22), /* driver supports sw activity
207                                               * led */
208         ATA_FLAG_NO_DIPM        = (1 << 23), /* host not happy with DIPM */
209         ATA_FLAG_SAS_HOST       = (1 << 24), /* SAS host */
210
211         /* bits 24:31 of ap->flags are reserved for LLD specific flags */
212
213
214         /* struct ata_port pflags */
215         ATA_PFLAG_EH_PENDING    = (1 << 0), /* EH pending */
216         ATA_PFLAG_EH_IN_PROGRESS = (1 << 1), /* EH in progress */
217         ATA_PFLAG_FROZEN        = (1 << 2), /* port is frozen */
218         ATA_PFLAG_RECOVERED     = (1 << 3), /* recovery action performed */
219         ATA_PFLAG_LOADING       = (1 << 4), /* boot/loading probe */
220         ATA_PFLAG_SCSI_HOTPLUG  = (1 << 6), /* SCSI hotplug scheduled */
221         ATA_PFLAG_INITIALIZING  = (1 << 7), /* being initialized, don't touch */
222         ATA_PFLAG_RESETTING     = (1 << 8), /* reset in progress */
223         ATA_PFLAG_UNLOADING     = (1 << 9), /* driver is being unloaded */
224         ATA_PFLAG_UNLOADED      = (1 << 10), /* driver is unloaded */
225
226         ATA_PFLAG_RESUMING      = (1 << 16),  /* port is being resumed */
227         ATA_PFLAG_SUSPENDED     = (1 << 17), /* port is suspended (power) */
228         ATA_PFLAG_PM_PENDING    = (1 << 18), /* PM operation pending */
229         ATA_PFLAG_INIT_GTM_VALID = (1 << 19), /* initial gtm data valid */
230
231         ATA_PFLAG_PIO32         = (1 << 20),  /* 32bit PIO */
232         ATA_PFLAG_PIO32CHANGE   = (1 << 21),  /* 32bit PIO can be turned on/off */
233         ATA_PFLAG_EXTERNAL      = (1 << 22),  /* eSATA/external port */
234
235         /* struct ata_queued_cmd flags */
236         ATA_QCFLAG_ACTIVE       = (1 << 0), /* cmd not yet ack'd to scsi lyer */
237         ATA_QCFLAG_DMAMAP       = (1 << 1), /* SG table is DMA mapped */
238         ATA_QCFLAG_RTF_FILLED   = (1 << 2), /* result TF has been filled */
239         ATA_QCFLAG_IO           = (1 << 3), /* standard IO command */
240         ATA_QCFLAG_RESULT_TF    = (1 << 4), /* result TF requested */
241         ATA_QCFLAG_CLEAR_EXCL   = (1 << 5), /* clear excl_link on completion */
242         ATA_QCFLAG_QUIET        = (1 << 6), /* don't report device error */
243         ATA_QCFLAG_RETRY        = (1 << 7), /* retry after failure */
244         ATA_QCFLAG_HAS_CDL      = (1 << 8), /* qc has CDL a descriptor set */
245
246         ATA_QCFLAG_EH           = (1 << 16), /* cmd aborted and owned by EH */
247         ATA_QCFLAG_SENSE_VALID  = (1 << 17), /* sense data valid */
248         ATA_QCFLAG_EH_SCHEDULED = (1 << 18), /* EH scheduled (obsolete) */
249         ATA_QCFLAG_EH_SUCCESS_CMD = (1 << 19), /* EH should fetch sense for this successful cmd */
250
251         /* host set flags */
252         ATA_HOST_SIMPLEX        = (1 << 0),     /* Host is simplex, one DMA channel per host only */
253         ATA_HOST_STARTED        = (1 << 1),     /* Host started */
254         ATA_HOST_PARALLEL_SCAN  = (1 << 2),     /* Ports on this host can be scanned in parallel */
255         ATA_HOST_IGNORE_ATA     = (1 << 3),     /* Ignore ATA devices on this host. */
256
257         ATA_HOST_NO_PART        = (1 << 4), /* Host does not support partial */
258         ATA_HOST_NO_SSC         = (1 << 5), /* Host does not support slumber */
259         ATA_HOST_NO_DEVSLP      = (1 << 6), /* Host does not support devslp */
260
261         /* bits 24:31 of host->flags are reserved for LLD specific flags */
262
263         /* Various lengths of time */
264         ATA_TMOUT_INTERNAL_QUICK = 5000,
265         ATA_TMOUT_MAX_PARK      = 30000,
266
267         /*
268          * GoVault needs 2s and iVDR disk HHD424020F7SV00 800ms.  2s
269          * is too much without parallel probing.  Use 2s if parallel
270          * probing is available, 800ms otherwise.
271          */
272         ATA_TMOUT_FF_WAIT_LONG  =  2000,
273         ATA_TMOUT_FF_WAIT       =   800,
274
275         /* Spec mandates to wait for ">= 2ms" before checking status
276          * after reset.  We wait 150ms, because that was the magic
277          * delay used for ATAPI devices in Hale Landis's ATADRVR, for
278          * the period of time between when the ATA command register is
279          * written, and then status is checked.  Because waiting for
280          * "a while" before checking status is fine, post SRST, we
281          * perform this magic delay here as well.
282          *
283          * Old drivers/ide uses the 2mS rule and then waits for ready.
284          */
285         ATA_WAIT_AFTER_RESET    =  150,
286
287         /* If PMP is supported, we have to do follow-up SRST.  As some
288          * PMPs don't send D2H Reg FIS after hardreset, LLDs are
289          * advised to wait only for the following duration before
290          * doing SRST.
291          */
292         ATA_TMOUT_PMP_SRST_WAIT = 10000,
293
294         /* When the LPM policy is set to ATA_LPM_MAX_POWER, there might
295          * be a spurious PHY event, so ignore the first PHY event that
296          * occurs within 10s after the policy change.
297          */
298         ATA_TMOUT_SPURIOUS_PHY  = 10000,
299
300         /* ATA bus states */
301         BUS_UNKNOWN             = 0,
302         BUS_DMA                 = 1,
303         BUS_IDLE                = 2,
304         BUS_NOINTR              = 3,
305         BUS_NODATA              = 4,
306         BUS_TIMER               = 5,
307         BUS_PIO                 = 6,
308         BUS_EDD                 = 7,
309         BUS_IDENTIFY            = 8,
310         BUS_PACKET              = 9,
311
312         /* SATA port states */
313         PORT_UNKNOWN            = 0,
314         PORT_ENABLED            = 1,
315         PORT_DISABLED           = 2,
316
317         /* encoding various smaller bitmaps into a single
318          * unsigned int bitmap
319          */
320         ATA_NR_PIO_MODES        = 7,
321         ATA_NR_MWDMA_MODES      = 5,
322         ATA_NR_UDMA_MODES       = 8,
323
324         ATA_SHIFT_PIO           = 0,
325         ATA_SHIFT_MWDMA         = ATA_SHIFT_PIO + ATA_NR_PIO_MODES,
326         ATA_SHIFT_UDMA          = ATA_SHIFT_MWDMA + ATA_NR_MWDMA_MODES,
327         ATA_SHIFT_PRIO          = 6,
328
329         ATA_PRIO_HIGH           = 2,
330         /* size of buffer to pad xfers ending on unaligned boundaries */
331         ATA_DMA_PAD_SZ          = 4,
332
333         /* ering size */
334         ATA_ERING_SIZE          = 32,
335
336         /* return values for ->qc_defer */
337         ATA_DEFER_LINK          = 1,
338         ATA_DEFER_PORT          = 2,
339
340         /* desc_len for ata_eh_info and context */
341         ATA_EH_DESC_LEN         = 80,
342
343         /* reset / recovery action types */
344         ATA_EH_REVALIDATE       = (1 << 0),
345         ATA_EH_SOFTRESET        = (1 << 1), /* meaningful only in ->prereset */
346         ATA_EH_HARDRESET        = (1 << 2), /* meaningful only in ->prereset */
347         ATA_EH_RESET            = ATA_EH_SOFTRESET | ATA_EH_HARDRESET,
348         ATA_EH_ENABLE_LINK      = (1 << 3),
349         ATA_EH_PARK             = (1 << 5), /* unload heads and stop I/O */
350         ATA_EH_GET_SUCCESS_SENSE = (1 << 6), /* Get sense data for successful cmd */
351         ATA_EH_SET_ACTIVE       = (1 << 7), /* Set a device to active power mode */
352
353         ATA_EH_PERDEV_MASK      = ATA_EH_REVALIDATE | ATA_EH_PARK |
354                                   ATA_EH_GET_SUCCESS_SENSE | ATA_EH_SET_ACTIVE,
355         ATA_EH_ALL_ACTIONS      = ATA_EH_REVALIDATE | ATA_EH_RESET |
356                                   ATA_EH_ENABLE_LINK,
357
358         /* ata_eh_info->flags */
359         ATA_EHI_HOTPLUGGED      = (1 << 0),  /* could have been hotplugged */
360         ATA_EHI_NO_AUTOPSY      = (1 << 2),  /* no autopsy */
361         ATA_EHI_QUIET           = (1 << 3),  /* be quiet */
362         ATA_EHI_NO_RECOVERY     = (1 << 4),  /* no recovery */
363
364         ATA_EHI_DID_SOFTRESET   = (1 << 16), /* already soft-reset this port */
365         ATA_EHI_DID_HARDRESET   = (1 << 17), /* already soft-reset this port */
366         ATA_EHI_PRINTINFO       = (1 << 18), /* print configuration info */
367         ATA_EHI_SETMODE         = (1 << 19), /* configure transfer mode */
368         ATA_EHI_POST_SETMODE    = (1 << 20), /* revalidating after setmode */
369         ATA_EHI_DID_PRINT_QUIRKS = (1 << 21), /* already printed quirks info */
370
371         ATA_EHI_DID_RESET       = ATA_EHI_DID_SOFTRESET | ATA_EHI_DID_HARDRESET,
372
373         /* mask of flags to transfer *to* the slave link */
374         ATA_EHI_TO_SLAVE_MASK   = ATA_EHI_NO_AUTOPSY | ATA_EHI_QUIET,
375
376         /* max tries if error condition is still set after ->error_handler */
377         ATA_EH_MAX_TRIES        = 5,
378
379         /* sometimes resuming a link requires several retries */
380         ATA_LINK_RESUME_TRIES   = 5,
381
382         /* how hard are we gonna try to probe/recover devices */
383         ATA_EH_DEV_TRIES        = 3,
384         ATA_EH_PMP_TRIES        = 5,
385         ATA_EH_PMP_LINK_TRIES   = 3,
386
387         SATA_PMP_RW_TIMEOUT     = 3000,         /* PMP read/write timeout */
388
389         /* This should match the actual table size of
390          * ata_eh_cmd_timeout_table in libata-eh.c.
391          */
392         ATA_EH_CMD_TIMEOUT_TABLE_SIZE = 8,
393
394         /*
395          * Quirk flags: may be set by libata or controller drivers on drives.
396          * Some quirks may be drive/controller pair dependent.
397          */
398         ATA_QUIRK_DIAGNOSTIC            = (1U << __ATA_QUIRK_DIAGNOSTIC),
399         ATA_QUIRK_NODMA                 = (1U << __ATA_QUIRK_NODMA),
400         ATA_QUIRK_NONCQ                 = (1U << __ATA_QUIRK_NONCQ),
401         ATA_QUIRK_MAX_SEC_128           = (1U << __ATA_QUIRK_MAX_SEC_128),
402         ATA_QUIRK_BROKEN_HPA            = (1U << __ATA_QUIRK_BROKEN_HPA),
403         ATA_QUIRK_DISABLE               = (1U << __ATA_QUIRK_DISABLE),
404         ATA_QUIRK_HPA_SIZE              = (1U << __ATA_QUIRK_HPA_SIZE),
405         ATA_QUIRK_IVB                   = (1U << __ATA_QUIRK_IVB),
406         ATA_QUIRK_STUCK_ERR             = (1U << __ATA_QUIRK_STUCK_ERR),
407         ATA_QUIRK_BRIDGE_OK             = (1U << __ATA_QUIRK_BRIDGE_OK),
408         ATA_QUIRK_ATAPI_MOD16_DMA       = (1U << __ATA_QUIRK_ATAPI_MOD16_DMA),
409         ATA_QUIRK_FIRMWARE_WARN         = (1U << __ATA_QUIRK_FIRMWARE_WARN),
410         ATA_QUIRK_1_5_GBPS              = (1U << __ATA_QUIRK_1_5_GBPS),
411         ATA_QUIRK_NOSETXFER             = (1U << __ATA_QUIRK_NOSETXFER),
412         ATA_QUIRK_BROKEN_FPDMA_AA       = (1U << __ATA_QUIRK_BROKEN_FPDMA_AA),
413         ATA_QUIRK_DUMP_ID               = (1U << __ATA_QUIRK_DUMP_ID),
414         ATA_QUIRK_MAX_SEC_LBA48         = (1U << __ATA_QUIRK_MAX_SEC_LBA48),
415         ATA_QUIRK_ATAPI_DMADIR          = (1U << __ATA_QUIRK_ATAPI_DMADIR),
416         ATA_QUIRK_NO_NCQ_TRIM           = (1U << __ATA_QUIRK_NO_NCQ_TRIM),
417         ATA_QUIRK_NOLPM                 = (1U << __ATA_QUIRK_NOLPM),
418         ATA_QUIRK_WD_BROKEN_LPM         = (1U << __ATA_QUIRK_WD_BROKEN_LPM),
419         ATA_QUIRK_ZERO_AFTER_TRIM       = (1U << __ATA_QUIRK_ZERO_AFTER_TRIM),
420         ATA_QUIRK_NO_DMA_LOG            = (1U << __ATA_QUIRK_NO_DMA_LOG),
421         ATA_QUIRK_NOTRIM                = (1U << __ATA_QUIRK_NOTRIM),
422         ATA_QUIRK_MAX_SEC_1024          = (1U << __ATA_QUIRK_MAX_SEC_1024),
423         ATA_QUIRK_MAX_TRIM_128M         = (1U << __ATA_QUIRK_MAX_TRIM_128M),
424         ATA_QUIRK_NO_NCQ_ON_ATI         = (1U << __ATA_QUIRK_NO_NCQ_ON_ATI),
425         ATA_QUIRK_NO_LPM_ON_ATI         = (1U << __ATA_QUIRK_NO_LPM_ON_ATI),
426         ATA_QUIRK_NO_ID_DEV_LOG         = (1U << __ATA_QUIRK_NO_ID_DEV_LOG),
427         ATA_QUIRK_NO_LOG_DIR            = (1U << __ATA_QUIRK_NO_LOG_DIR),
428         ATA_QUIRK_NO_FUA                = (1U << __ATA_QUIRK_NO_FUA),
429
430         /* User visible DMA mask for DMA control. DO NOT renumber. */
431         ATA_DMA_MASK_ATA        = (1 << 0),     /* DMA on ATA Disk */
432         ATA_DMA_MASK_ATAPI      = (1 << 1),     /* DMA on ATAPI */
433         ATA_DMA_MASK_CFA        = (1 << 2),     /* DMA on CF Card */
434
435         /* ATAPI command types */
436         ATAPI_READ              = 0,            /* READs */
437         ATAPI_WRITE             = 1,            /* WRITEs */
438         ATAPI_READ_CD           = 2,            /* READ CD [MSF] */
439         ATAPI_PASS_THRU         = 3,            /* SAT pass-thru */
440         ATAPI_MISC              = 4,            /* the rest */
441
442         /* Timing constants */
443         ATA_TIMING_SETUP        = (1 << 0),
444         ATA_TIMING_ACT8B        = (1 << 1),
445         ATA_TIMING_REC8B        = (1 << 2),
446         ATA_TIMING_CYC8B        = (1 << 3),
447         ATA_TIMING_8BIT         = ATA_TIMING_ACT8B | ATA_TIMING_REC8B |
448                                   ATA_TIMING_CYC8B,
449         ATA_TIMING_ACTIVE       = (1 << 4),
450         ATA_TIMING_RECOVER      = (1 << 5),
451         ATA_TIMING_DMACK_HOLD   = (1 << 6),
452         ATA_TIMING_CYCLE        = (1 << 7),
453         ATA_TIMING_UDMA         = (1 << 8),
454         ATA_TIMING_ALL          = ATA_TIMING_SETUP | ATA_TIMING_ACT8B |
455                                   ATA_TIMING_REC8B | ATA_TIMING_CYC8B |
456                                   ATA_TIMING_ACTIVE | ATA_TIMING_RECOVER |
457                                   ATA_TIMING_DMACK_HOLD | ATA_TIMING_CYCLE |
458                                   ATA_TIMING_UDMA,
459
460         /* ACPI constants */
461         ATA_ACPI_FILTER_SETXFER = 1 << 0,
462         ATA_ACPI_FILTER_LOCK    = 1 << 1,
463         ATA_ACPI_FILTER_DIPM    = 1 << 2,
464         ATA_ACPI_FILTER_FPDMA_OFFSET = 1 << 3,  /* FPDMA non-zero offset */
465         ATA_ACPI_FILTER_FPDMA_AA = 1 << 4,      /* FPDMA auto activate */
466
467         ATA_ACPI_FILTER_DEFAULT = ATA_ACPI_FILTER_SETXFER |
468                                   ATA_ACPI_FILTER_LOCK |
469                                   ATA_ACPI_FILTER_DIPM,
470 };
471
472 enum ata_xfer_mask {
473         ATA_MASK_PIO            = ((1U << ATA_NR_PIO_MODES) - 1) << ATA_SHIFT_PIO,
474         ATA_MASK_MWDMA          = ((1U << ATA_NR_MWDMA_MODES) - 1) << ATA_SHIFT_MWDMA,
475         ATA_MASK_UDMA           = ((1U << ATA_NR_UDMA_MODES) - 1) << ATA_SHIFT_UDMA,
476 };
477
478 enum hsm_task_states {
479         HSM_ST_IDLE,            /* no command on going */
480         HSM_ST_FIRST,           /* (waiting the device to)
481                                    write CDB or first data block */
482         HSM_ST,                 /* (waiting the device to) transfer data */
483         HSM_ST_LAST,            /* (waiting the device to) complete command */
484         HSM_ST_ERR,             /* error */
485 };
486
487 enum ata_completion_errors {
488         AC_ERR_OK               = 0,        /* no error */
489         AC_ERR_DEV              = (1 << 0), /* device reported error */
490         AC_ERR_HSM              = (1 << 1), /* host state machine violation */
491         AC_ERR_TIMEOUT          = (1 << 2), /* timeout */
492         AC_ERR_MEDIA            = (1 << 3), /* media error */
493         AC_ERR_ATA_BUS          = (1 << 4), /* ATA bus error */
494         AC_ERR_HOST_BUS         = (1 << 5), /* host bus error */
495         AC_ERR_SYSTEM           = (1 << 6), /* system error */
496         AC_ERR_INVALID          = (1 << 7), /* invalid argument */
497         AC_ERR_OTHER            = (1 << 8), /* unknown */
498         AC_ERR_NODEV_HINT       = (1 << 9), /* polling device detection hint */
499         AC_ERR_NCQ              = (1 << 10), /* marker for offending NCQ qc */
500 };
501
502 /*
503  * Link power management policy: If you alter this, you also need to
504  * alter libata-sata.c (for the ascii descriptions)
505  */
506 enum ata_lpm_policy {
507         ATA_LPM_UNKNOWN,
508         ATA_LPM_MAX_POWER,
509         ATA_LPM_MED_POWER,
510         ATA_LPM_MED_POWER_WITH_DIPM, /* Med power + DIPM as win IRST does */
511         ATA_LPM_MIN_POWER_WITH_PARTIAL, /* Min Power + partial and slumber */
512         ATA_LPM_MIN_POWER, /* Min power + no partial (slumber only) */
513 };
514
515 enum ata_lpm_hints {
516         ATA_LPM_EMPTY           = (1 << 0), /* port empty/probing */
517         ATA_LPM_HIPM            = (1 << 1), /* may use HIPM */
518         ATA_LPM_WAKE_ONLY       = (1 << 2), /* only wake up link */
519 };
520
521 /* forward declarations */
522 struct scsi_device;
523 struct ata_port_operations;
524 struct ata_port;
525 struct ata_link;
526 struct ata_queued_cmd;
527
528 /* typedefs */
529 typedef void (*ata_qc_cb_t) (struct ata_queued_cmd *qc);
530 typedef int (*ata_prereset_fn_t)(struct ata_link *link, unsigned long deadline);
531 typedef int (*ata_reset_fn_t)(struct ata_link *link, unsigned int *classes,
532                               unsigned long deadline);
533 typedef void (*ata_postreset_fn_t)(struct ata_link *link, unsigned int *classes);
534
535 extern struct device_attribute dev_attr_unload_heads;
536 #ifdef CONFIG_SATA_HOST
537 extern struct device_attribute dev_attr_link_power_management_policy;
538 extern struct device_attribute dev_attr_ncq_prio_supported;
539 extern struct device_attribute dev_attr_ncq_prio_enable;
540 extern struct device_attribute dev_attr_em_message_type;
541 extern struct device_attribute dev_attr_em_message;
542 extern struct device_attribute dev_attr_sw_activity;
543 #endif
544
545 enum sw_activity {
546         OFF,
547         BLINK_ON,
548         BLINK_OFF,
549 };
550
551 struct ata_taskfile {
552         unsigned long           flags;          /* ATA_TFLAG_xxx */
553         u8                      protocol;       /* ATA_PROT_xxx */
554
555         u8                      ctl;            /* control reg */
556
557         u8                      hob_feature;    /* additional data */
558         u8                      hob_nsect;      /* to support LBA48 */
559         u8                      hob_lbal;
560         u8                      hob_lbam;
561         u8                      hob_lbah;
562
563         union {
564                 u8              error;
565                 u8              feature;
566         };
567         u8                      nsect;
568         u8                      lbal;
569         u8                      lbam;
570         u8                      lbah;
571
572         u8                      device;
573
574         union {
575                 u8              status;
576                 u8              command;
577         };
578
579         u32                     auxiliary;      /* auxiliary field */
580                                                 /* from SATA 3.1 and */
581                                                 /* ATA-8 ACS-3 */
582 };
583
584 #ifdef CONFIG_ATA_SFF
585 struct ata_ioports {
586         void __iomem            *cmd_addr;
587         void __iomem            *data_addr;
588         void __iomem            *error_addr;
589         void __iomem            *feature_addr;
590         void __iomem            *nsect_addr;
591         void __iomem            *lbal_addr;
592         void __iomem            *lbam_addr;
593         void __iomem            *lbah_addr;
594         void __iomem            *device_addr;
595         void __iomem            *status_addr;
596         void __iomem            *command_addr;
597         void __iomem            *altstatus_addr;
598         void __iomem            *ctl_addr;
599 #ifdef CONFIG_ATA_BMDMA
600         void __iomem            *bmdma_addr;
601 #endif /* CONFIG_ATA_BMDMA */
602         void __iomem            *scr_addr;
603 };
604 #endif /* CONFIG_ATA_SFF */
605
606 struct ata_host {
607         spinlock_t              lock;
608         struct device           *dev;
609         void __iomem * const    *iomap;
610         unsigned int            n_ports;
611         unsigned int            n_tags;                 /* nr of NCQ tags */
612         void                    *private_data;
613         struct ata_port_operations *ops;
614         unsigned long           flags;
615         struct kref             kref;
616
617         struct mutex            eh_mutex;
618         struct task_struct      *eh_owner;
619
620         struct ata_port         *simplex_claimed;       /* channel owning the DMA */
621         struct ata_port         *ports[];
622 };
623
624 struct ata_queued_cmd {
625         struct ata_port         *ap;
626         struct ata_device       *dev;
627
628         struct scsi_cmnd        *scsicmd;
629         void                    (*scsidone)(struct scsi_cmnd *);
630
631         struct ata_taskfile     tf;
632         u8                      cdb[ATAPI_CDB_LEN];
633
634         unsigned long           flags;          /* ATA_QCFLAG_xxx */
635         unsigned int            tag;            /* libata core tag */
636         unsigned int            hw_tag;         /* driver tag */
637         unsigned int            n_elem;
638         unsigned int            orig_n_elem;
639
640         int                     dma_dir;
641
642         unsigned int            sect_size;
643
644         unsigned int            nbytes;
645         unsigned int            extrabytes;
646         unsigned int            curbytes;
647
648         struct scatterlist      sgent;
649
650         struct scatterlist      *sg;
651
652         struct scatterlist      *cursg;
653         unsigned int            cursg_ofs;
654
655         unsigned int            err_mask;
656         struct ata_taskfile     result_tf;
657         ata_qc_cb_t             complete_fn;
658
659         void                    *private_data;
660         void                    *lldd_task;
661 };
662
663 struct ata_port_stats {
664         unsigned long           unhandled_irq;
665         unsigned long           idle_irq;
666         unsigned long           rw_reqbuf;
667 };
668
669 struct ata_ering_entry {
670         unsigned int            eflags;
671         unsigned int            err_mask;
672         u64                     timestamp;
673 };
674
675 struct ata_ering {
676         int                     cursor;
677         struct ata_ering_entry  ring[ATA_ERING_SIZE];
678 };
679
680 struct ata_cpr {
681         u8                      num;
682         u8                      num_storage_elements;
683         u64                     start_lba;
684         u64                     num_lbas;
685 };
686
687 struct ata_cpr_log {
688         u8                      nr_cpr;
689         struct ata_cpr          cpr[] __counted_by(nr_cpr);
690 };
691
692 struct ata_cdl {
693         /*
694          * Buffer to cache the CDL log page 18h (command duration descriptors)
695          * for SCSI-ATA translation.
696          */
697         u8                      desc_log_buf[ATA_LOG_CDL_SIZE];
698
699         /*
700          * Buffer to handle reading the sense data for successful NCQ Commands
701          * log page for commands using a CDL with one of the limits policy set
702          * to 0xD (successful completion with sense data available bit set).
703          */
704         u8                      ncq_sense_log_buf[ATA_LOG_SENSE_NCQ_SIZE];
705 };
706
707 struct ata_device {
708         struct ata_link         *link;
709         unsigned int            devno;          /* 0 or 1 */
710         unsigned int            quirks;         /* List of broken features */
711         unsigned long           flags;          /* ATA_DFLAG_xxx */
712         struct scsi_device      *sdev;          /* attached SCSI device */
713         void                    *private_data;
714 #ifdef CONFIG_ATA_ACPI
715         union acpi_object       *gtf_cache;
716         unsigned int            gtf_filter;
717 #endif
718 #ifdef CONFIG_SATA_ZPODD
719         void                    *zpodd;
720 #endif
721         struct device           tdev;
722         /* n_sector is CLEAR_BEGIN, read comment above CLEAR_BEGIN */
723         u64                     n_sectors;      /* size of device, if ATA */
724         u64                     n_native_sectors; /* native size, if ATA */
725         unsigned int            class;          /* ATA_DEV_xxx */
726         unsigned long           unpark_deadline;
727
728         u8                      pio_mode;
729         u8                      dma_mode;
730         u8                      xfer_mode;
731         unsigned int            xfer_shift;     /* ATA_SHIFT_xxx */
732
733         unsigned int            multi_count;    /* sectors count for
734                                                    READ/WRITE MULTIPLE */
735         unsigned int            max_sectors;    /* per-device max sectors */
736         unsigned int            cdb_len;
737
738         /* per-dev xfer mask */
739         unsigned int            pio_mask;
740         unsigned int            mwdma_mask;
741         unsigned int            udma_mask;
742
743         /* for CHS addressing */
744         u16                     cylinders;      /* Number of cylinders */
745         u16                     heads;          /* Number of heads */
746         u16                     sectors;        /* Number of sectors per track */
747
748         union {
749                 u16             id[ATA_ID_WORDS]; /* IDENTIFY xxx DEVICE data */
750                 u32             gscr[SATA_PMP_GSCR_DWORDS]; /* PMP GSCR block */
751         } ____cacheline_aligned;
752
753         /* DEVSLP Timing Variables from Identify Device Data Log */
754         u8                      devslp_timing[ATA_LOG_DEVSLP_SIZE];
755
756         /* NCQ send and receive log subcommand support */
757         u8                      ncq_send_recv_cmds[ATA_LOG_NCQ_SEND_RECV_SIZE];
758         u8                      ncq_non_data_cmds[ATA_LOG_NCQ_NON_DATA_SIZE];
759
760         /* ZAC zone configuration */
761         u32                     zac_zoned_cap;
762         u32                     zac_zones_optimal_open;
763         u32                     zac_zones_optimal_nonseq;
764         u32                     zac_zones_max_open;
765
766         /* Concurrent positioning ranges */
767         struct ata_cpr_log      *cpr_log;
768
769         /* Command Duration Limits support */
770         struct ata_cdl          *cdl;
771
772         /* error history */
773         int                     spdn_cnt;
774         /* ering is CLEAR_END, read comment above CLEAR_END */
775         struct ata_ering        ering;
776
777         /* For EH */
778         u8                      sector_buf[ATA_SECT_SIZE] ____cacheline_aligned;
779 };
780
781 /* Fields between ATA_DEVICE_CLEAR_BEGIN and ATA_DEVICE_CLEAR_END are
782  * cleared to zero on ata_dev_init().
783  */
784 #define ATA_DEVICE_CLEAR_BEGIN          offsetof(struct ata_device, n_sectors)
785 #define ATA_DEVICE_CLEAR_END            offsetof(struct ata_device, ering)
786
787 struct ata_eh_info {
788         struct ata_device       *dev;           /* offending device */
789         u32                     serror;         /* SError from LLDD */
790         unsigned int            err_mask;       /* port-wide err_mask */
791         unsigned int            action;         /* ATA_EH_* action mask */
792         unsigned int            dev_action[ATA_MAX_DEVICES]; /* dev EH action */
793         unsigned int            flags;          /* ATA_EHI_* flags */
794
795         unsigned int            probe_mask;
796
797         char                    desc[ATA_EH_DESC_LEN];
798         int                     desc_len;
799 };
800
801 struct ata_eh_context {
802         struct ata_eh_info      i;
803         int                     tries[ATA_MAX_DEVICES];
804         int                     cmd_timeout_idx[ATA_MAX_DEVICES]
805                                                [ATA_EH_CMD_TIMEOUT_TABLE_SIZE];
806         unsigned int            classes[ATA_MAX_DEVICES];
807         unsigned int            did_probe_mask;
808         unsigned int            unloaded_mask;
809         unsigned int            saved_ncq_enabled;
810         u8                      saved_xfer_mode[ATA_MAX_DEVICES];
811         /* timestamp for the last reset attempt or success */
812         unsigned long           last_reset;
813 };
814
815 struct ata_acpi_drive
816 {
817         u32 pio;
818         u32 dma;
819 } __packed;
820
821 struct ata_acpi_gtm {
822         struct ata_acpi_drive drive[2];
823         u32 flags;
824 } __packed;
825
826 struct ata_link {
827         struct ata_port         *ap;
828         int                     pmp;            /* port multiplier port # */
829
830         struct device           tdev;
831         unsigned int            active_tag;     /* active tag on this link */
832         u32                     sactive;        /* active NCQ commands */
833
834         unsigned int            flags;          /* ATA_LFLAG_xxx */
835
836         u32                     saved_scontrol; /* SControl on probe */
837         unsigned int            hw_sata_spd_limit;
838         unsigned int            sata_spd_limit;
839         unsigned int            sata_spd;       /* current SATA PHY speed */
840         enum ata_lpm_policy     lpm_policy;
841
842         /* record runtime error info, protected by host_set lock */
843         struct ata_eh_info      eh_info;
844         /* EH context */
845         struct ata_eh_context   eh_context;
846
847         struct ata_device       device[ATA_MAX_DEVICES];
848
849         unsigned long           last_lpm_change; /* when last LPM change happened */
850 };
851 #define ATA_LINK_CLEAR_BEGIN            offsetof(struct ata_link, active_tag)
852 #define ATA_LINK_CLEAR_END              offsetof(struct ata_link, device[0])
853
854 struct ata_port {
855         struct Scsi_Host        *scsi_host; /* our co-allocated scsi host */
856         struct ata_port_operations *ops;
857         spinlock_t              *lock;
858         /* Flags owned by the EH context. Only EH should touch these once the
859            port is active */
860         unsigned long           flags;  /* ATA_FLAG_xxx */
861         /* Flags that change dynamically, protected by ap->lock */
862         unsigned int            pflags; /* ATA_PFLAG_xxx */
863         unsigned int            print_id; /* user visible unique port ID */
864         unsigned int            port_no; /* 0 based port no. inside the host */
865
866 #ifdef CONFIG_ATA_SFF
867         struct ata_ioports      ioaddr; /* ATA cmd/ctl/dma register blocks */
868         u8                      ctl;    /* cache of ATA control register */
869         u8                      last_ctl;       /* Cache last written value */
870         struct ata_link*        sff_pio_task_link; /* link currently used */
871         struct delayed_work     sff_pio_task;
872 #ifdef CONFIG_ATA_BMDMA
873         struct ata_bmdma_prd    *bmdma_prd;     /* BMDMA SG list */
874         dma_addr_t              bmdma_prd_dma;  /* and its DMA mapping */
875 #endif /* CONFIG_ATA_BMDMA */
876 #endif /* CONFIG_ATA_SFF */
877
878         unsigned int            pio_mask;
879         unsigned int            mwdma_mask;
880         unsigned int            udma_mask;
881         unsigned int            cbl;    /* cable type; ATA_CBL_xxx */
882
883         struct ata_queued_cmd   qcmd[ATA_MAX_QUEUE + 1];
884         u64                     qc_active;
885         int                     nr_active_links; /* #links with active qcs */
886
887         struct ata_link         link;           /* host default link */
888         struct ata_link         *slave_link;    /* see ata_slave_link_init() */
889
890         int                     nr_pmp_links;   /* nr of available PMP links */
891         struct ata_link         *pmp_link;      /* array of PMP links */
892         struct ata_link         *excl_link;     /* for PMP qc exclusion */
893
894         struct ata_port_stats   stats;
895         struct ata_host         *host;
896         struct device           *dev;
897         struct device           tdev;
898
899         struct mutex            scsi_scan_mutex;
900         struct delayed_work     hotplug_task;
901         struct delayed_work     scsi_rescan_task;
902
903         unsigned int            hsm_task_state;
904
905         struct list_head        eh_done_q;
906         wait_queue_head_t       eh_wait_q;
907         int                     eh_tries;
908         struct completion       park_req_pending;
909
910         pm_message_t            pm_mesg;
911         enum ata_lpm_policy     target_lpm_policy;
912
913         struct timer_list       fastdrain_timer;
914         unsigned int            fastdrain_cnt;
915
916         async_cookie_t          cookie;
917
918         int                     em_message_type;
919         void                    *private_data;
920
921 #ifdef CONFIG_ATA_ACPI
922         struct ata_acpi_gtm     __acpi_init_gtm; /* use ata_acpi_init_gtm() */
923 #endif
924 };
925
926 /* The following initializer overrides a method to NULL whether one of
927  * its parent has the method defined or not.  This is equivalent to
928  * ERR_PTR(-ENOENT).  Unfortunately, ERR_PTR doesn't render a constant
929  * expression and thus can't be used as an initializer.
930  */
931 #define ATA_OP_NULL             (void *)(unsigned long)(-ENOENT)
932
933 struct ata_port_operations {
934         /*
935          * Command execution
936          */
937         int (*qc_defer)(struct ata_queued_cmd *qc);
938         int (*check_atapi_dma)(struct ata_queued_cmd *qc);
939         enum ata_completion_errors (*qc_prep)(struct ata_queued_cmd *qc);
940         unsigned int (*qc_issue)(struct ata_queued_cmd *qc);
941         void (*qc_fill_rtf)(struct ata_queued_cmd *qc);
942         void (*qc_ncq_fill_rtf)(struct ata_port *ap, u64 done_mask);
943
944         /*
945          * Configuration and exception handling
946          */
947         int  (*cable_detect)(struct ata_port *ap);
948         unsigned int (*mode_filter)(struct ata_device *dev, unsigned int xfer_mask);
949         void (*set_piomode)(struct ata_port *ap, struct ata_device *dev);
950         void (*set_dmamode)(struct ata_port *ap, struct ata_device *dev);
951         int  (*set_mode)(struct ata_link *link, struct ata_device **r_failed_dev);
952         unsigned int (*read_id)(struct ata_device *dev, struct ata_taskfile *tf,
953                                 __le16 *id);
954
955         void (*dev_config)(struct ata_device *dev);
956
957         void (*freeze)(struct ata_port *ap);
958         void (*thaw)(struct ata_port *ap);
959         ata_prereset_fn_t       prereset;
960         ata_reset_fn_t          softreset;
961         ata_reset_fn_t          hardreset;
962         ata_postreset_fn_t      postreset;
963         ata_prereset_fn_t       pmp_prereset;
964         ata_reset_fn_t          pmp_softreset;
965         ata_reset_fn_t          pmp_hardreset;
966         ata_postreset_fn_t      pmp_postreset;
967         void (*error_handler)(struct ata_port *ap);
968         void (*lost_interrupt)(struct ata_port *ap);
969         void (*post_internal_cmd)(struct ata_queued_cmd *qc);
970         void (*sched_eh)(struct ata_port *ap);
971         void (*end_eh)(struct ata_port *ap);
972
973         /*
974          * Optional features
975          */
976         int  (*scr_read)(struct ata_link *link, unsigned int sc_reg, u32 *val);
977         int  (*scr_write)(struct ata_link *link, unsigned int sc_reg, u32 val);
978         void (*pmp_attach)(struct ata_port *ap);
979         void (*pmp_detach)(struct ata_port *ap);
980         int  (*set_lpm)(struct ata_link *link, enum ata_lpm_policy policy,
981                         unsigned hints);
982
983         /*
984          * Start, stop, suspend and resume
985          */
986         int  (*port_suspend)(struct ata_port *ap, pm_message_t mesg);
987         int  (*port_resume)(struct ata_port *ap);
988         int  (*port_start)(struct ata_port *ap);
989         void (*port_stop)(struct ata_port *ap);
990         void (*host_stop)(struct ata_host *host);
991
992 #ifdef CONFIG_ATA_SFF
993         /*
994          * SFF / taskfile oriented ops
995          */
996         void (*sff_dev_select)(struct ata_port *ap, unsigned int device);
997         void (*sff_set_devctl)(struct ata_port *ap, u8 ctl);
998         u8   (*sff_check_status)(struct ata_port *ap);
999         u8   (*sff_check_altstatus)(struct ata_port *ap);
1000         void (*sff_tf_load)(struct ata_port *ap, const struct ata_taskfile *tf);
1001         void (*sff_tf_read)(struct ata_port *ap, struct ata_taskfile *tf);
1002         void (*sff_exec_command)(struct ata_port *ap,
1003                                  const struct ata_taskfile *tf);
1004         unsigned int (*sff_data_xfer)(struct ata_queued_cmd *qc,
1005                         unsigned char *buf, unsigned int buflen, int rw);
1006         void (*sff_irq_on)(struct ata_port *);
1007         bool (*sff_irq_check)(struct ata_port *);
1008         void (*sff_irq_clear)(struct ata_port *);
1009         void (*sff_drain_fifo)(struct ata_queued_cmd *qc);
1010
1011 #ifdef CONFIG_ATA_BMDMA
1012         void (*bmdma_setup)(struct ata_queued_cmd *qc);
1013         void (*bmdma_start)(struct ata_queued_cmd *qc);
1014         void (*bmdma_stop)(struct ata_queued_cmd *qc);
1015         u8   (*bmdma_status)(struct ata_port *ap);
1016 #endif /* CONFIG_ATA_BMDMA */
1017 #endif /* CONFIG_ATA_SFF */
1018
1019         ssize_t (*em_show)(struct ata_port *ap, char *buf);
1020         ssize_t (*em_store)(struct ata_port *ap, const char *message,
1021                             size_t size);
1022         ssize_t (*sw_activity_show)(struct ata_device *dev, char *buf);
1023         ssize_t (*sw_activity_store)(struct ata_device *dev,
1024                                      enum sw_activity val);
1025         ssize_t (*transmit_led_message)(struct ata_port *ap, u32 state,
1026                                         ssize_t size);
1027
1028         /*
1029          * ->inherits must be the last field and all the preceding
1030          * fields must be pointers.
1031          */
1032         const struct ata_port_operations        *inherits;
1033 };
1034
1035 struct ata_port_info {
1036         unsigned long           flags;
1037         unsigned long           link_flags;
1038         unsigned int            pio_mask;
1039         unsigned int            mwdma_mask;
1040         unsigned int            udma_mask;
1041         struct ata_port_operations *port_ops;
1042         void                    *private_data;
1043 };
1044
1045 struct ata_timing {
1046         unsigned short mode;            /* ATA mode */
1047         unsigned short setup;           /* t1 */
1048         unsigned short act8b;           /* t2 for 8-bit I/O */
1049         unsigned short rec8b;           /* t2i for 8-bit I/O */
1050         unsigned short cyc8b;           /* t0 for 8-bit I/O */
1051         unsigned short active;          /* t2 or tD */
1052         unsigned short recover;         /* t2i or tK */
1053         unsigned short dmack_hold;      /* tj */
1054         unsigned short cycle;           /* t0 */
1055         unsigned short udma;            /* t2CYCTYP/2 */
1056 };
1057
1058 /*
1059  * Core layer - drivers/ata/libata-core.c
1060  */
1061 extern struct ata_port_operations ata_dummy_port_ops;
1062 extern const struct ata_port_info ata_dummy_port_info;
1063
1064 static inline bool ata_is_atapi(u8 prot)
1065 {
1066         return prot & ATA_PROT_FLAG_ATAPI;
1067 }
1068
1069 static inline bool ata_is_pio(u8 prot)
1070 {
1071         return prot & ATA_PROT_FLAG_PIO;
1072 }
1073
1074 static inline bool ata_is_dma(u8 prot)
1075 {
1076         return prot & ATA_PROT_FLAG_DMA;
1077 }
1078
1079 static inline bool ata_is_ncq(u8 prot)
1080 {
1081         return prot & ATA_PROT_FLAG_NCQ;
1082 }
1083
1084 static inline bool ata_is_data(u8 prot)
1085 {
1086         return prot & (ATA_PROT_FLAG_PIO | ATA_PROT_FLAG_DMA);
1087 }
1088
1089 static inline int is_multi_taskfile(struct ata_taskfile *tf)
1090 {
1091         return (tf->command == ATA_CMD_READ_MULTI) ||
1092                (tf->command == ATA_CMD_WRITE_MULTI) ||
1093                (tf->command == ATA_CMD_READ_MULTI_EXT) ||
1094                (tf->command == ATA_CMD_WRITE_MULTI_EXT) ||
1095                (tf->command == ATA_CMD_WRITE_MULTI_FUA_EXT);
1096 }
1097
1098 static inline int ata_port_is_dummy(struct ata_port *ap)
1099 {
1100         return ap->ops == &ata_dummy_port_ops;
1101 }
1102
1103 static inline bool ata_port_is_frozen(const struct ata_port *ap)
1104 {
1105         return ap->pflags & ATA_PFLAG_FROZEN;
1106 }
1107
1108 extern int ata_std_prereset(struct ata_link *link, unsigned long deadline);
1109 extern int ata_wait_after_reset(struct ata_link *link, unsigned long deadline,
1110                                 int (*check_ready)(struct ata_link *link));
1111 extern void ata_std_postreset(struct ata_link *link, unsigned int *classes);
1112
1113 extern struct ata_host *ata_host_alloc(struct device *dev, int n_ports);
1114 extern struct ata_host *ata_host_alloc_pinfo(struct device *dev,
1115                         const struct ata_port_info * const * ppi, int n_ports);
1116 extern void ata_host_get(struct ata_host *host);
1117 extern void ata_host_put(struct ata_host *host);
1118 extern int ata_host_start(struct ata_host *host);
1119 extern int ata_host_register(struct ata_host *host,
1120                              const struct scsi_host_template *sht);
1121 extern int ata_host_activate(struct ata_host *host, int irq,
1122                              irq_handler_t irq_handler, unsigned long irq_flags,
1123                              const struct scsi_host_template *sht);
1124 extern void ata_host_detach(struct ata_host *host);
1125 extern void ata_host_init(struct ata_host *, struct device *, struct ata_port_operations *);
1126 extern int ata_scsi_ioctl(struct scsi_device *dev, unsigned int cmd,
1127                           void __user *arg);
1128 #ifdef CONFIG_COMPAT
1129 #define ATA_SCSI_COMPAT_IOCTL .compat_ioctl = ata_scsi_ioctl,
1130 #else
1131 #define ATA_SCSI_COMPAT_IOCTL /* empty */
1132 #endif
1133 extern int ata_scsi_queuecmd(struct Scsi_Host *h, struct scsi_cmnd *cmd);
1134 #if IS_REACHABLE(CONFIG_ATA)
1135 bool ata_scsi_dma_need_drain(struct request *rq);
1136 #else
1137 #define ata_scsi_dma_need_drain NULL
1138 #endif
1139 extern int ata_sas_scsi_ioctl(struct ata_port *ap, struct scsi_device *dev,
1140                             unsigned int cmd, void __user *arg);
1141 extern bool ata_link_online(struct ata_link *link);
1142 extern bool ata_link_offline(struct ata_link *link);
1143 #ifdef CONFIG_PM
1144 extern void ata_host_suspend(struct ata_host *host, pm_message_t mesg);
1145 extern void ata_host_resume(struct ata_host *host);
1146 extern void ata_sas_port_suspend(struct ata_port *ap);
1147 extern void ata_sas_port_resume(struct ata_port *ap);
1148 #else
1149 static inline void ata_sas_port_suspend(struct ata_port *ap)
1150 {
1151 }
1152 static inline void ata_sas_port_resume(struct ata_port *ap)
1153 {
1154 }
1155 #endif
1156 extern int ata_ratelimit(void);
1157 extern void ata_msleep(struct ata_port *ap, unsigned int msecs);
1158 extern u32 ata_wait_register(struct ata_port *ap, void __iomem *reg, u32 mask,
1159                              u32 val, unsigned int interval, unsigned int timeout);
1160 extern int atapi_cmd_type(u8 opcode);
1161 extern unsigned int ata_pack_xfermask(unsigned int pio_mask,
1162                                       unsigned int mwdma_mask,
1163                                       unsigned int udma_mask);
1164 extern void ata_unpack_xfermask(unsigned int xfer_mask,
1165                                 unsigned int *pio_mask,
1166                                 unsigned int *mwdma_mask,
1167                                 unsigned int *udma_mask);
1168 extern u8 ata_xfer_mask2mode(unsigned int xfer_mask);
1169 extern unsigned int ata_xfer_mode2mask(u8 xfer_mode);
1170 extern int ata_xfer_mode2shift(u8 xfer_mode);
1171 extern const char *ata_mode_string(unsigned int xfer_mask);
1172 extern unsigned int ata_id_xfermask(const u16 *id);
1173 extern int ata_std_qc_defer(struct ata_queued_cmd *qc);
1174 extern void ata_sg_init(struct ata_queued_cmd *qc, struct scatterlist *sg,
1175                  unsigned int n_elem);
1176 extern unsigned int ata_dev_classify(const struct ata_taskfile *tf);
1177 extern unsigned int ata_port_classify(struct ata_port *ap,
1178                                       const struct ata_taskfile *tf);
1179 extern void ata_dev_disable(struct ata_device *adev);
1180 extern void ata_id_string(const u16 *id, unsigned char *s,
1181                           unsigned int ofs, unsigned int len);
1182 extern void ata_id_c_string(const u16 *id, unsigned char *s,
1183                             unsigned int ofs, unsigned int len);
1184 extern unsigned int ata_do_dev_read_id(struct ata_device *dev,
1185                                        struct ata_taskfile *tf, __le16 *id);
1186 extern void ata_qc_complete(struct ata_queued_cmd *qc);
1187 extern u64 ata_qc_get_active(struct ata_port *ap);
1188 extern void ata_scsi_simulate(struct ata_device *dev, struct scsi_cmnd *cmd);
1189 extern int ata_std_bios_param(struct scsi_device *sdev,
1190                               struct block_device *bdev,
1191                               sector_t capacity, int geom[]);
1192 extern void ata_scsi_unlock_native_capacity(struct scsi_device *sdev);
1193 extern int ata_scsi_sdev_init(struct scsi_device *sdev);
1194 int ata_scsi_sdev_configure(struct scsi_device *sdev, struct queue_limits *lim);
1195 extern void ata_scsi_sdev_destroy(struct scsi_device *sdev);
1196 extern int ata_scsi_change_queue_depth(struct scsi_device *sdev,
1197                                        int queue_depth);
1198 extern int ata_change_queue_depth(struct ata_port *ap, struct scsi_device *sdev,
1199                                   int queue_depth);
1200 extern int ata_ncq_prio_supported(struct ata_port *ap, struct scsi_device *sdev,
1201                                   bool *supported);
1202 extern int ata_ncq_prio_enabled(struct ata_port *ap, struct scsi_device *sdev,
1203                                 bool *enabled);
1204 extern int ata_ncq_prio_enable(struct ata_port *ap, struct scsi_device *sdev,
1205                                bool enable);
1206 extern struct ata_device *ata_dev_pair(struct ata_device *adev);
1207 extern int ata_do_set_mode(struct ata_link *link, struct ata_device **r_failed_dev);
1208 extern void ata_scsi_port_error_handler(struct Scsi_Host *host, struct ata_port *ap);
1209 extern void ata_scsi_cmd_error_handler(struct Scsi_Host *host, struct ata_port *ap, struct list_head *eh_q);
1210
1211 /*
1212  * SATA specific code - drivers/ata/libata-sata.c
1213  */
1214 #ifdef CONFIG_SATA_HOST
1215 extern const unsigned int sata_deb_timing_normal[];
1216 extern const unsigned int sata_deb_timing_hotplug[];
1217 extern const unsigned int sata_deb_timing_long[];
1218
1219 static inline const unsigned int *
1220 sata_ehc_deb_timing(struct ata_eh_context *ehc)
1221 {
1222         if (ehc->i.flags & ATA_EHI_HOTPLUGGED)
1223                 return sata_deb_timing_hotplug;
1224         else
1225                 return sata_deb_timing_normal;
1226 }
1227
1228 extern int sata_scr_valid(struct ata_link *link);
1229 extern int sata_scr_read(struct ata_link *link, int reg, u32 *val);
1230 extern int sata_scr_write(struct ata_link *link, int reg, u32 val);
1231 extern int sata_scr_write_flush(struct ata_link *link, int reg, u32 val);
1232 extern int sata_set_spd(struct ata_link *link);
1233 int sata_std_hardreset(struct ata_link *link, unsigned int *class,
1234                        unsigned long deadline);
1235 extern int sata_link_hardreset(struct ata_link *link,
1236                         const unsigned int *timing, unsigned long deadline,
1237                         bool *online, int (*check_ready)(struct ata_link *));
1238 extern int sata_link_resume(struct ata_link *link, const unsigned int *params,
1239                             unsigned long deadline);
1240 extern void ata_eh_analyze_ncq_error(struct ata_link *link);
1241 #else
1242 static inline const unsigned int *
1243 sata_ehc_deb_timing(struct ata_eh_context *ehc)
1244 {
1245         return NULL;
1246 }
1247 static inline int sata_scr_valid(struct ata_link *link) { return 0; }
1248 static inline int sata_scr_read(struct ata_link *link, int reg, u32 *val)
1249 {
1250         return -EOPNOTSUPP;
1251 }
1252 static inline int sata_scr_write(struct ata_link *link, int reg, u32 val)
1253 {
1254         return -EOPNOTSUPP;
1255 }
1256 static inline int sata_scr_write_flush(struct ata_link *link, int reg, u32 val)
1257 {
1258         return -EOPNOTSUPP;
1259 }
1260 static inline int sata_set_spd(struct ata_link *link) { return -EOPNOTSUPP; }
1261 static inline int sata_std_hardreset(struct ata_link *link, unsigned int *class,
1262                                      unsigned long deadline)
1263 {
1264         return -EOPNOTSUPP;
1265 }
1266 static inline int sata_link_hardreset(struct ata_link *link,
1267                                       const unsigned int *timing,
1268                                       unsigned long deadline,
1269                                       bool *online,
1270                                       int (*check_ready)(struct ata_link *))
1271 {
1272         if (online)
1273                 *online = false;
1274         return -EOPNOTSUPP;
1275 }
1276 static inline int sata_link_resume(struct ata_link *link,
1277                                    const unsigned int *params,
1278                                    unsigned long deadline)
1279 {
1280         return -EOPNOTSUPP;
1281 }
1282 static inline void ata_eh_analyze_ncq_error(struct ata_link *link) { }
1283 #endif
1284 extern int sata_link_debounce(struct ata_link *link,
1285                               const unsigned int *params, unsigned long deadline);
1286 extern int sata_link_scr_lpm(struct ata_link *link, enum ata_lpm_policy policy,
1287                              bool spm_wakeup);
1288 extern int ata_slave_link_init(struct ata_port *ap);
1289 extern void ata_port_probe(struct ata_port *ap);
1290 extern struct ata_port *ata_port_alloc(struct ata_host *host);
1291 extern void ata_port_free(struct ata_port *ap);
1292 extern int ata_tport_add(struct device *parent, struct ata_port *ap);
1293 extern void ata_tport_delete(struct ata_port *ap);
1294 int ata_sas_sdev_configure(struct scsi_device *sdev, struct queue_limits *lim,
1295                            struct ata_port *ap);
1296 extern int ata_sas_queuecmd(struct scsi_cmnd *cmd, struct ata_port *ap);
1297 extern void ata_tf_to_fis(const struct ata_taskfile *tf,
1298                           u8 pmp, int is_cmd, u8 *fis);
1299 extern void ata_tf_from_fis(const u8 *fis, struct ata_taskfile *tf);
1300 extern int ata_qc_complete_multiple(struct ata_port *ap, u64 qc_active);
1301 extern bool sata_lpm_ignore_phy_events(struct ata_link *link);
1302 extern int sata_async_notification(struct ata_port *ap);
1303
1304 extern int ata_cable_40wire(struct ata_port *ap);
1305 extern int ata_cable_80wire(struct ata_port *ap);
1306 extern int ata_cable_sata(struct ata_port *ap);
1307 extern int ata_cable_ignore(struct ata_port *ap);
1308 extern int ata_cable_unknown(struct ata_port *ap);
1309
1310 /* Timing helpers */
1311 extern unsigned int ata_pio_need_iordy(const struct ata_device *);
1312 extern u8 ata_timing_cycle2mode(unsigned int xfer_shift, int cycle);
1313
1314 /* PCI */
1315 #ifdef CONFIG_PCI
1316 struct pci_dev;
1317
1318 struct pci_bits {
1319         unsigned int            reg;    /* PCI config register to read */
1320         unsigned int            width;  /* 1 (8 bit), 2 (16 bit), 4 (32 bit) */
1321         unsigned long           mask;
1322         unsigned long           val;
1323 };
1324
1325 extern int pci_test_config_bits(struct pci_dev *pdev, const struct pci_bits *bits);
1326 extern void ata_pci_shutdown_one(struct pci_dev *pdev);
1327 extern void ata_pci_remove_one(struct pci_dev *pdev);
1328
1329 #ifdef CONFIG_PM
1330 extern void ata_pci_device_do_suspend(struct pci_dev *pdev, pm_message_t mesg);
1331 extern int __must_check ata_pci_device_do_resume(struct pci_dev *pdev);
1332 extern int ata_pci_device_suspend(struct pci_dev *pdev, pm_message_t mesg);
1333 extern int ata_pci_device_resume(struct pci_dev *pdev);
1334 #endif /* CONFIG_PM */
1335 #endif /* CONFIG_PCI */
1336
1337 struct platform_device;
1338
1339 extern void ata_platform_remove_one(struct platform_device *pdev);
1340
1341 /*
1342  * ACPI - drivers/ata/libata-acpi.c
1343  */
1344 #ifdef CONFIG_ATA_ACPI
1345 static inline const struct ata_acpi_gtm *ata_acpi_init_gtm(struct ata_port *ap)
1346 {
1347         if (ap->pflags & ATA_PFLAG_INIT_GTM_VALID)
1348                 return &ap->__acpi_init_gtm;
1349         return NULL;
1350 }
1351 int ata_acpi_stm(struct ata_port *ap, const struct ata_acpi_gtm *stm);
1352 int ata_acpi_gtm(struct ata_port *ap, struct ata_acpi_gtm *stm);
1353 unsigned int ata_acpi_gtm_xfermask(struct ata_device *dev,
1354                                    const struct ata_acpi_gtm *gtm);
1355 int ata_acpi_cbl_pata_type(struct ata_port *ap);
1356 #else
1357 static inline const struct ata_acpi_gtm *ata_acpi_init_gtm(struct ata_port *ap)
1358 {
1359         return NULL;
1360 }
1361
1362 static inline int ata_acpi_stm(const struct ata_port *ap,
1363                                struct ata_acpi_gtm *stm)
1364 {
1365         return -ENOSYS;
1366 }
1367
1368 static inline int ata_acpi_gtm(const struct ata_port *ap,
1369                                struct ata_acpi_gtm *stm)
1370 {
1371         return -ENOSYS;
1372 }
1373
1374 static inline unsigned int ata_acpi_gtm_xfermask(struct ata_device *dev,
1375                                         const struct ata_acpi_gtm *gtm)
1376 {
1377         return 0;
1378 }
1379
1380 static inline int ata_acpi_cbl_pata_type(struct ata_port *ap)
1381 {
1382         return ATA_CBL_PATA40;
1383 }
1384 #endif
1385
1386 /*
1387  * EH - drivers/ata/libata-eh.c
1388  */
1389 extern void ata_port_schedule_eh(struct ata_port *ap);
1390 extern void ata_port_wait_eh(struct ata_port *ap);
1391 extern int ata_link_abort(struct ata_link *link);
1392 extern int ata_port_abort(struct ata_port *ap);
1393 extern int ata_port_freeze(struct ata_port *ap);
1394
1395 extern void ata_eh_freeze_port(struct ata_port *ap);
1396 extern void ata_eh_thaw_port(struct ata_port *ap);
1397
1398 extern void ata_eh_qc_complete(struct ata_queued_cmd *qc);
1399 extern void ata_eh_qc_retry(struct ata_queued_cmd *qc);
1400
1401 extern void ata_do_eh(struct ata_port *ap, ata_prereset_fn_t prereset,
1402                       ata_reset_fn_t softreset, ata_reset_fn_t hardreset,
1403                       ata_postreset_fn_t postreset);
1404 extern void ata_std_error_handler(struct ata_port *ap);
1405 extern void ata_std_sched_eh(struct ata_port *ap);
1406 extern void ata_std_end_eh(struct ata_port *ap);
1407 extern int ata_link_nr_enabled(struct ata_link *link);
1408
1409 /*
1410  * Base operations to inherit from and initializers for sht
1411  *
1412  * Operations
1413  *
1414  * base  : Common to all libata drivers.
1415  * sata  : SATA controllers w/ native interface.
1416  * pmp   : SATA controllers w/ PMP support.
1417  * sff   : SFF ATA controllers w/o BMDMA support.
1418  * bmdma : SFF ATA controllers w/ BMDMA support.
1419  *
1420  * sht initializers
1421  *
1422  * BASE  : Common to all libata drivers.  The user must set
1423  *         sg_tablesize and dma_boundary.
1424  * PIO   : SFF ATA controllers w/ only PIO support.
1425  * BMDMA : SFF ATA controllers w/ BMDMA support.  sg_tablesize and
1426  *         dma_boundary are set to BMDMA limits.
1427  * NCQ   : SATA controllers supporting NCQ.  The user must set
1428  *         sg_tablesize, dma_boundary and can_queue.
1429  */
1430 extern const struct ata_port_operations ata_base_port_ops;
1431 extern const struct ata_port_operations sata_port_ops;
1432 extern const struct attribute_group *ata_common_sdev_groups[];
1433
1434 /*
1435  * All sht initializers (BASE, PIO, BMDMA, NCQ) must be instantiated
1436  * by the edge drivers.  Because the 'module' field of sht must be the
1437  * edge driver's module reference, otherwise the driver can be unloaded
1438  * even if the scsi_device is being accessed.
1439  */
1440 #define __ATA_BASE_SHT(drv_name)                                \
1441         .module                 = THIS_MODULE,                  \
1442         .name                   = drv_name,                     \
1443         .ioctl                  = ata_scsi_ioctl,               \
1444         ATA_SCSI_COMPAT_IOCTL                                   \
1445         .queuecommand           = ata_scsi_queuecmd,            \
1446         .dma_need_drain         = ata_scsi_dma_need_drain,      \
1447         .this_id                = ATA_SHT_THIS_ID,              \
1448         .emulated               = ATA_SHT_EMULATED,             \
1449         .proc_name              = drv_name,                     \
1450         .sdev_init              = ata_scsi_sdev_init,           \
1451         .sdev_destroy           = ata_scsi_sdev_destroy,        \
1452         .bios_param             = ata_std_bios_param,           \
1453         .unlock_native_capacity = ata_scsi_unlock_native_capacity,\
1454         .max_sectors            = ATA_MAX_SECTORS_LBA48
1455
1456 #define ATA_SUBBASE_SHT(drv_name)                               \
1457         __ATA_BASE_SHT(drv_name),                               \
1458         .can_queue              = ATA_DEF_QUEUE,                \
1459         .tag_alloc_policy_rr    = true,                         \
1460         .sdev_configure         = ata_scsi_sdev_configure
1461
1462 #define ATA_SUBBASE_SHT_QD(drv_name, drv_qd)                    \
1463         __ATA_BASE_SHT(drv_name),                               \
1464         .can_queue              = drv_qd,                       \
1465         .tag_alloc_policy_rr    = true,                         \
1466         .sdev_configure         = ata_scsi_sdev_configure
1467
1468 #define ATA_BASE_SHT(drv_name)                                  \
1469         ATA_SUBBASE_SHT(drv_name),                              \
1470         .sdev_groups            = ata_common_sdev_groups
1471
1472 #ifdef CONFIG_SATA_HOST
1473 extern const struct attribute_group *ata_ncq_sdev_groups[];
1474
1475 #define ATA_NCQ_SHT(drv_name)                                   \
1476         ATA_SUBBASE_SHT(drv_name),                              \
1477         .sdev_groups            = ata_ncq_sdev_groups,          \
1478         .change_queue_depth     = ata_scsi_change_queue_depth
1479
1480 #define ATA_NCQ_SHT_QD(drv_name, drv_qd)                        \
1481         ATA_SUBBASE_SHT_QD(drv_name, drv_qd),                   \
1482         .sdev_groups            = ata_ncq_sdev_groups,          \
1483         .change_queue_depth     = ata_scsi_change_queue_depth
1484 #endif
1485
1486 /*
1487  * PMP helpers
1488  */
1489 #ifdef CONFIG_SATA_PMP
1490 static inline bool sata_pmp_supported(struct ata_port *ap)
1491 {
1492         return ap->flags & ATA_FLAG_PMP;
1493 }
1494
1495 static inline bool sata_pmp_attached(struct ata_port *ap)
1496 {
1497         return ap->nr_pmp_links != 0;
1498 }
1499
1500 static inline bool ata_is_host_link(const struct ata_link *link)
1501 {
1502         return link == &link->ap->link || link == link->ap->slave_link;
1503 }
1504 #else /* CONFIG_SATA_PMP */
1505 static inline bool sata_pmp_supported(struct ata_port *ap)
1506 {
1507         return false;
1508 }
1509
1510 static inline bool sata_pmp_attached(struct ata_port *ap)
1511 {
1512         return false;
1513 }
1514
1515 static inline bool ata_is_host_link(const struct ata_link *link)
1516 {
1517         return true;
1518 }
1519 #endif /* CONFIG_SATA_PMP */
1520
1521 static inline int sata_srst_pmp(struct ata_link *link)
1522 {
1523         if (sata_pmp_supported(link->ap) && ata_is_host_link(link))
1524                 return SATA_PMP_CTRL_PORT;
1525         return link->pmp;
1526 }
1527
1528 #define ata_port_printk(level, ap, fmt, ...)                    \
1529         pr_ ## level ("ata%u: " fmt, (ap)->print_id, ##__VA_ARGS__)
1530
1531 #define ata_port_err(ap, fmt, ...)                              \
1532         ata_port_printk(err, ap, fmt, ##__VA_ARGS__)
1533 #define ata_port_warn(ap, fmt, ...)                             \
1534         ata_port_printk(warn, ap, fmt, ##__VA_ARGS__)
1535 #define ata_port_notice(ap, fmt, ...)                           \
1536         ata_port_printk(notice, ap, fmt, ##__VA_ARGS__)
1537 #define ata_port_info(ap, fmt, ...)                             \
1538         ata_port_printk(info, ap, fmt, ##__VA_ARGS__)
1539 #define ata_port_dbg(ap, fmt, ...)                              \
1540         ata_port_printk(debug, ap, fmt, ##__VA_ARGS__)
1541
1542 #define ata_link_printk(level, link, fmt, ...)                  \
1543 do {                                                            \
1544         if (sata_pmp_attached((link)->ap) ||                    \
1545             (link)->ap->slave_link)                             \
1546                 pr_ ## level ("ata%u.%02u: " fmt,               \
1547                               (link)->ap->print_id,             \
1548                               (link)->pmp,                      \
1549                               ##__VA_ARGS__);                   \
1550         else                                                    \
1551                 pr_ ## level ("ata%u: " fmt,                    \
1552                               (link)->ap->print_id,             \
1553                               ##__VA_ARGS__);                   \
1554 } while (0)
1555
1556 #define ata_link_err(link, fmt, ...)                            \
1557         ata_link_printk(err, link, fmt, ##__VA_ARGS__)
1558 #define ata_link_warn(link, fmt, ...)                           \
1559         ata_link_printk(warn, link, fmt, ##__VA_ARGS__)
1560 #define ata_link_notice(link, fmt, ...)                         \
1561         ata_link_printk(notice, link, fmt, ##__VA_ARGS__)
1562 #define ata_link_info(link, fmt, ...)                           \
1563         ata_link_printk(info, link, fmt, ##__VA_ARGS__)
1564 #define ata_link_dbg(link, fmt, ...)                            \
1565         ata_link_printk(debug, link, fmt, ##__VA_ARGS__)
1566
1567 #define ata_dev_printk(level, dev, fmt, ...)                    \
1568         pr_ ## level("ata%u.%02u: " fmt,                        \
1569                (dev)->link->ap->print_id,                       \
1570                (dev)->link->pmp + (dev)->devno,                 \
1571                ##__VA_ARGS__)
1572
1573 #define ata_dev_err(dev, fmt, ...)                              \
1574         ata_dev_printk(err, dev, fmt, ##__VA_ARGS__)
1575 #define ata_dev_warn(dev, fmt, ...)                             \
1576         ata_dev_printk(warn, dev, fmt, ##__VA_ARGS__)
1577 #define ata_dev_notice(dev, fmt, ...)                           \
1578         ata_dev_printk(notice, dev, fmt, ##__VA_ARGS__)
1579 #define ata_dev_info(dev, fmt, ...)                             \
1580         ata_dev_printk(info, dev, fmt, ##__VA_ARGS__)
1581 #define ata_dev_dbg(dev, fmt, ...)                              \
1582         ata_dev_printk(debug, dev, fmt, ##__VA_ARGS__)
1583
1584 static inline void ata_print_version_once(const struct device *dev,
1585                                           const char *version)
1586 {
1587         dev_dbg_once(dev, "version %s\n", version);
1588 }
1589
1590 /*
1591  * ata_eh_info helpers
1592  */
1593 extern __printf(2, 3)
1594 void __ata_ehi_push_desc(struct ata_eh_info *ehi, const char *fmt, ...);
1595 extern __printf(2, 3)
1596 void ata_ehi_push_desc(struct ata_eh_info *ehi, const char *fmt, ...);
1597 extern void ata_ehi_clear_desc(struct ata_eh_info *ehi);
1598
1599 static inline void ata_ehi_hotplugged(struct ata_eh_info *ehi)
1600 {
1601         ehi->probe_mask |= (1 << ATA_MAX_DEVICES) - 1;
1602         ehi->flags |= ATA_EHI_HOTPLUGGED;
1603         ehi->action |= ATA_EH_RESET | ATA_EH_ENABLE_LINK;
1604         ehi->err_mask |= AC_ERR_ATA_BUS;
1605 }
1606
1607 /*
1608  * port description helpers
1609  */
1610 extern __printf(2, 3)
1611 void ata_port_desc(struct ata_port *ap, const char *fmt, ...);
1612 #ifdef CONFIG_PCI
1613 extern void ata_port_pbar_desc(struct ata_port *ap, int bar, ssize_t offset,
1614                                const char *name);
1615 #endif
1616 static inline void ata_port_desc_misc(struct ata_port *ap, int irq)
1617 {
1618         ata_port_desc(ap, "irq %d", irq);
1619         ata_port_desc(ap, "lpm-pol %d", ap->target_lpm_policy);
1620         if (ap->pflags & ATA_PFLAG_EXTERNAL)
1621                 ata_port_desc(ap, "ext");
1622 }
1623
1624 static inline bool ata_tag_internal(unsigned int tag)
1625 {
1626         return tag == ATA_TAG_INTERNAL;
1627 }
1628
1629 static inline bool ata_tag_valid(unsigned int tag)
1630 {
1631         return tag < ATA_MAX_QUEUE || ata_tag_internal(tag);
1632 }
1633
1634 #define __ata_qc_for_each(ap, qc, tag, max_tag, fn)             \
1635         for ((tag) = 0; (tag) < (max_tag) &&                    \
1636              ({ qc = fn((ap), (tag)); 1; }); (tag)++)           \
1637
1638 /*
1639  * Internal use only, iterate commands ignoring error handling and
1640  * status of 'qc'.
1641  */
1642 #define ata_qc_for_each_raw(ap, qc, tag)                                        \
1643         __ata_qc_for_each(ap, qc, tag, ATA_MAX_QUEUE, __ata_qc_from_tag)
1644
1645 /*
1646  * Iterate all potential commands that can be queued
1647  */
1648 #define ata_qc_for_each(ap, qc, tag)                                    \
1649         __ata_qc_for_each(ap, qc, tag, ATA_MAX_QUEUE, ata_qc_from_tag)
1650
1651 /*
1652  * Like ata_qc_for_each, but with the internal tag included
1653  */
1654 #define ata_qc_for_each_with_internal(ap, qc, tag)                      \
1655         __ata_qc_for_each(ap, qc, tag, ATA_MAX_QUEUE + 1, ata_qc_from_tag)
1656
1657 /*
1658  * device helpers
1659  */
1660 static inline unsigned int ata_class_enabled(unsigned int class)
1661 {
1662         return class == ATA_DEV_ATA || class == ATA_DEV_ATAPI ||
1663                 class == ATA_DEV_PMP || class == ATA_DEV_SEMB ||
1664                 class == ATA_DEV_ZAC;
1665 }
1666
1667 static inline unsigned int ata_class_disabled(unsigned int class)
1668 {
1669         return class == ATA_DEV_ATA_UNSUP || class == ATA_DEV_ATAPI_UNSUP ||
1670                 class == ATA_DEV_PMP_UNSUP || class == ATA_DEV_SEMB_UNSUP ||
1671                 class == ATA_DEV_ZAC_UNSUP;
1672 }
1673
1674 static inline unsigned int ata_class_absent(unsigned int class)
1675 {
1676         return !ata_class_enabled(class) && !ata_class_disabled(class);
1677 }
1678
1679 static inline unsigned int ata_dev_enabled(const struct ata_device *dev)
1680 {
1681         return ata_class_enabled(dev->class);
1682 }
1683
1684 static inline unsigned int ata_dev_disabled(const struct ata_device *dev)
1685 {
1686         return ata_class_disabled(dev->class);
1687 }
1688
1689 static inline unsigned int ata_dev_absent(const struct ata_device *dev)
1690 {
1691         return ata_class_absent(dev->class);
1692 }
1693
1694 /*
1695  * link helpers
1696  */
1697 static inline int ata_link_max_devices(const struct ata_link *link)
1698 {
1699         if (ata_is_host_link(link) && link->ap->flags & ATA_FLAG_SLAVE_POSS)
1700                 return 2;
1701         return 1;
1702 }
1703
1704 static inline int ata_link_active(struct ata_link *link)
1705 {
1706         return ata_tag_valid(link->active_tag) || link->sactive;
1707 }
1708
1709 /*
1710  * Iterators
1711  *
1712  * ATA_LITER_* constants are used to select link iteration mode and
1713  * ATA_DITER_* device iteration mode.
1714  *
1715  * For a custom iteration directly using ata_{link|dev}_next(), if
1716  * @link or @dev, respectively, is NULL, the first element is
1717  * returned.  @dev and @link can be any valid device or link and the
1718  * next element according to the iteration mode will be returned.
1719  * After the last element, NULL is returned.
1720  */
1721 enum ata_link_iter_mode {
1722         ATA_LITER_EDGE,         /* if present, PMP links only; otherwise,
1723                                  * host link.  no slave link */
1724         ATA_LITER_HOST_FIRST,   /* host link followed by PMP or slave links */
1725         ATA_LITER_PMP_FIRST,    /* PMP links followed by host link,
1726                                  * slave link still comes after host link */
1727 };
1728
1729 enum ata_dev_iter_mode {
1730         ATA_DITER_ENABLED,
1731         ATA_DITER_ENABLED_REVERSE,
1732         ATA_DITER_ALL,
1733         ATA_DITER_ALL_REVERSE,
1734 };
1735
1736 extern struct ata_link *ata_link_next(struct ata_link *link,
1737                                       struct ata_port *ap,
1738                                       enum ata_link_iter_mode mode);
1739
1740 extern struct ata_device *ata_dev_next(struct ata_device *dev,
1741                                        struct ata_link *link,
1742                                        enum ata_dev_iter_mode mode);
1743
1744 /*
1745  * Shortcut notation for iterations
1746  *
1747  * ata_for_each_link() iterates over each link of @ap according to
1748  * @mode.  @link points to the current link in the loop.  @link is
1749  * NULL after loop termination.  ata_for_each_dev() works the same way
1750  * except that it iterates over each device of @link.
1751  *
1752  * Note that the mode prefixes ATA_{L|D}ITER_ shouldn't need to be
1753  * specified when using the following shorthand notations.  Only the
1754  * mode itself (EDGE, HOST_FIRST, ENABLED, etc...) should be
1755  * specified.  This not only increases brevity but also makes it
1756  * impossible to use ATA_LITER_* for device iteration or vice-versa.
1757  */
1758 #define ata_for_each_link(link, ap, mode) \
1759         for ((link) = ata_link_next(NULL, (ap), ATA_LITER_##mode); (link); \
1760              (link) = ata_link_next((link), (ap), ATA_LITER_##mode))
1761
1762 #define ata_for_each_dev(dev, link, mode) \
1763         for ((dev) = ata_dev_next(NULL, (link), ATA_DITER_##mode); (dev); \
1764              (dev) = ata_dev_next((dev), (link), ATA_DITER_##mode))
1765
1766 /**
1767  *      ata_ncq_supported - Test whether NCQ is supported
1768  *      @dev: ATA device to test
1769  *
1770  *      LOCKING:
1771  *      spin_lock_irqsave(host lock)
1772  *
1773  *      RETURNS:
1774  *      true if @dev supports NCQ, false otherwise.
1775  */
1776 static inline bool ata_ncq_supported(struct ata_device *dev)
1777 {
1778         if (!IS_ENABLED(CONFIG_SATA_HOST))
1779                 return false;
1780         return (dev->flags & (ATA_DFLAG_PIO | ATA_DFLAG_NCQ)) == ATA_DFLAG_NCQ;
1781 }
1782
1783 /**
1784  *      ata_ncq_enabled - Test whether NCQ is enabled
1785  *      @dev: ATA device to test
1786  *
1787  *      LOCKING:
1788  *      spin_lock_irqsave(host lock)
1789  *
1790  *      RETURNS:
1791  *      true if NCQ is enabled for @dev, false otherwise.
1792  */
1793 static inline bool ata_ncq_enabled(struct ata_device *dev)
1794 {
1795         return ata_ncq_supported(dev) && !(dev->flags & ATA_DFLAG_NCQ_OFF);
1796 }
1797
1798 static inline bool ata_fpdma_dsm_supported(struct ata_device *dev)
1799 {
1800         return (dev->flags & ATA_DFLAG_NCQ_SEND_RECV) &&
1801                 (dev->ncq_send_recv_cmds[ATA_LOG_NCQ_SEND_RECV_DSM_OFFSET] &
1802                  ATA_LOG_NCQ_SEND_RECV_DSM_TRIM);
1803 }
1804
1805 static inline bool ata_fpdma_read_log_supported(struct ata_device *dev)
1806 {
1807         return (dev->flags & ATA_DFLAG_NCQ_SEND_RECV) &&
1808                 (dev->ncq_send_recv_cmds[ATA_LOG_NCQ_SEND_RECV_RD_LOG_OFFSET] &
1809                  ATA_LOG_NCQ_SEND_RECV_RD_LOG_SUPPORTED);
1810 }
1811
1812 static inline bool ata_fpdma_zac_mgmt_in_supported(struct ata_device *dev)
1813 {
1814         return (dev->flags & ATA_DFLAG_NCQ_SEND_RECV) &&
1815                 (dev->ncq_send_recv_cmds[ATA_LOG_NCQ_SEND_RECV_ZAC_MGMT_OFFSET] &
1816                 ATA_LOG_NCQ_SEND_RECV_ZAC_MGMT_IN_SUPPORTED);
1817 }
1818
1819 static inline bool ata_fpdma_zac_mgmt_out_supported(struct ata_device *dev)
1820 {
1821         return (dev->ncq_non_data_cmds[ATA_LOG_NCQ_NON_DATA_ZAC_MGMT_OFFSET] &
1822                 ATA_LOG_NCQ_NON_DATA_ZAC_MGMT_OUT);
1823 }
1824
1825 static inline void ata_qc_set_polling(struct ata_queued_cmd *qc)
1826 {
1827         qc->tf.ctl |= ATA_NIEN;
1828 }
1829
1830 static inline struct ata_queued_cmd *__ata_qc_from_tag(struct ata_port *ap,
1831                                                        unsigned int tag)
1832 {
1833         if (ata_tag_valid(tag))
1834                 return &ap->qcmd[tag];
1835         return NULL;
1836 }
1837
1838 static inline struct ata_queued_cmd *ata_qc_from_tag(struct ata_port *ap,
1839                                                      unsigned int tag)
1840 {
1841         struct ata_queued_cmd *qc = __ata_qc_from_tag(ap, tag);
1842
1843         if (unlikely(!qc))
1844                 return qc;
1845
1846         if ((qc->flags & (ATA_QCFLAG_ACTIVE |
1847                           ATA_QCFLAG_EH)) == ATA_QCFLAG_ACTIVE)
1848                 return qc;
1849
1850         return NULL;
1851 }
1852
1853 static inline unsigned int ata_qc_raw_nbytes(struct ata_queued_cmd *qc)
1854 {
1855         return qc->nbytes - min(qc->extrabytes, qc->nbytes);
1856 }
1857
1858 static inline void ata_tf_init(struct ata_device *dev, struct ata_taskfile *tf)
1859 {
1860         memset(tf, 0, sizeof(*tf));
1861
1862 #ifdef CONFIG_ATA_SFF
1863         tf->ctl = dev->link->ap->ctl;
1864 #else
1865         tf->ctl = ATA_DEVCTL_OBS;
1866 #endif
1867         if (dev->devno == 0)
1868                 tf->device = ATA_DEVICE_OBS;
1869         else
1870                 tf->device = ATA_DEVICE_OBS | ATA_DEV1;
1871 }
1872
1873 static inline void ata_qc_reinit(struct ata_queued_cmd *qc)
1874 {
1875         qc->dma_dir = DMA_NONE;
1876         qc->sg = NULL;
1877         qc->flags = 0;
1878         qc->cursg = NULL;
1879         qc->cursg_ofs = 0;
1880         qc->nbytes = qc->extrabytes = qc->curbytes = 0;
1881         qc->n_elem = 0;
1882         qc->err_mask = 0;
1883         qc->sect_size = ATA_SECT_SIZE;
1884
1885         ata_tf_init(qc->dev, &qc->tf);
1886
1887         /* init result_tf such that it indicates normal completion */
1888         qc->result_tf.command = ATA_DRDY;
1889         qc->result_tf.feature = 0;
1890 }
1891
1892 static inline int ata_try_flush_cache(const struct ata_device *dev)
1893 {
1894         return ata_id_wcache_enabled(dev->id) ||
1895                ata_id_has_flush(dev->id) ||
1896                ata_id_has_flush_ext(dev->id);
1897 }
1898
1899 static inline unsigned int ac_err_mask(u8 status)
1900 {
1901         if (status & (ATA_BUSY | ATA_DRQ))
1902                 return AC_ERR_HSM;
1903         if (status & (ATA_ERR | ATA_DF))
1904                 return AC_ERR_DEV;
1905         return 0;
1906 }
1907
1908 static inline unsigned int __ac_err_mask(u8 status)
1909 {
1910         unsigned int mask = ac_err_mask(status);
1911         if (mask == 0)
1912                 return AC_ERR_OTHER;
1913         return mask;
1914 }
1915
1916 static inline struct ata_port *ata_shost_to_port(struct Scsi_Host *host)
1917 {
1918         return *(struct ata_port **)&host->hostdata[0];
1919 }
1920
1921 static inline int ata_check_ready(u8 status)
1922 {
1923         if (!(status & ATA_BUSY))
1924                 return 1;
1925
1926         /* 0xff indicates either no device or device not ready */
1927         if (status == 0xff)
1928                 return -ENODEV;
1929
1930         return 0;
1931 }
1932
1933 static inline unsigned long ata_deadline(unsigned long from_jiffies,
1934                                          unsigned int timeout_msecs)
1935 {
1936         return from_jiffies + msecs_to_jiffies(timeout_msecs);
1937 }
1938
1939 /* Don't open code these in drivers as there are traps. Firstly the range may
1940    change in future hardware and specs, secondly 0xFF means 'no DMA' but is
1941    > UDMA_0. Dyma ddreigiau */
1942
1943 static inline bool ata_using_mwdma(struct ata_device *adev)
1944 {
1945         return adev->dma_mode >= XFER_MW_DMA_0 &&
1946                 adev->dma_mode <= XFER_MW_DMA_4;
1947 }
1948
1949 static inline bool ata_using_udma(struct ata_device *adev)
1950 {
1951         return adev->dma_mode >= XFER_UDMA_0 &&
1952                 adev->dma_mode <= XFER_UDMA_7;
1953 }
1954
1955 static inline bool ata_dma_enabled(struct ata_device *adev)
1956 {
1957         return adev->dma_mode != 0xFF;
1958 }
1959
1960 /**************************************************************************
1961  * PATA timings - drivers/ata/libata-pata-timings.c
1962  */
1963 extern const struct ata_timing *ata_timing_find_mode(u8 xfer_mode);
1964 extern int ata_timing_compute(struct ata_device *, unsigned short,
1965                               struct ata_timing *, int, int);
1966 extern void ata_timing_merge(const struct ata_timing *,
1967                              const struct ata_timing *, struct ata_timing *,
1968                              unsigned int);
1969
1970 /**************************************************************************
1971  * PMP - drivers/ata/libata-pmp.c
1972  */
1973 #ifdef CONFIG_SATA_PMP
1974
1975 extern const struct ata_port_operations sata_pmp_port_ops;
1976
1977 extern int sata_pmp_qc_defer_cmd_switch(struct ata_queued_cmd *qc);
1978 extern void sata_pmp_error_handler(struct ata_port *ap);
1979
1980 #else /* CONFIG_SATA_PMP */
1981
1982 #define sata_pmp_port_ops               sata_port_ops
1983 #define sata_pmp_qc_defer_cmd_switch    ata_std_qc_defer
1984 #define sata_pmp_error_handler          ata_std_error_handler
1985
1986 #endif /* CONFIG_SATA_PMP */
1987
1988
1989 /**************************************************************************
1990  * SFF - drivers/ata/libata-sff.c
1991  */
1992 #ifdef CONFIG_ATA_SFF
1993
1994 extern const struct ata_port_operations ata_sff_port_ops;
1995 extern const struct ata_port_operations ata_bmdma32_port_ops;
1996
1997 /* PIO only, sg_tablesize and dma_boundary limits can be removed */
1998 #define ATA_PIO_SHT(drv_name)                                   \
1999         ATA_BASE_SHT(drv_name),                                 \
2000         .sg_tablesize           = LIBATA_MAX_PRD,               \
2001         .dma_boundary           = ATA_DMA_BOUNDARY
2002
2003 extern void ata_sff_dev_select(struct ata_port *ap, unsigned int device);
2004 extern u8 ata_sff_check_status(struct ata_port *ap);
2005 extern void ata_sff_pause(struct ata_port *ap);
2006 extern void ata_sff_dma_pause(struct ata_port *ap);
2007 extern int ata_sff_wait_ready(struct ata_link *link, unsigned long deadline);
2008 extern void ata_sff_tf_load(struct ata_port *ap, const struct ata_taskfile *tf);
2009 extern void ata_sff_tf_read(struct ata_port *ap, struct ata_taskfile *tf);
2010 extern void ata_sff_exec_command(struct ata_port *ap,
2011                                  const struct ata_taskfile *tf);
2012 extern unsigned int ata_sff_data_xfer(struct ata_queued_cmd *qc,
2013                         unsigned char *buf, unsigned int buflen, int rw);
2014 extern unsigned int ata_sff_data_xfer32(struct ata_queued_cmd *qc,
2015                         unsigned char *buf, unsigned int buflen, int rw);
2016 extern void ata_sff_irq_on(struct ata_port *ap);
2017 extern int ata_sff_hsm_move(struct ata_port *ap, struct ata_queued_cmd *qc,
2018                             u8 status, int in_wq);
2019 extern void ata_sff_queue_work(struct work_struct *work);
2020 extern void ata_sff_queue_delayed_work(struct delayed_work *dwork,
2021                 unsigned long delay);
2022 extern void ata_sff_queue_pio_task(struct ata_link *link, unsigned long delay);
2023 extern unsigned int ata_sff_qc_issue(struct ata_queued_cmd *qc);
2024 extern void ata_sff_qc_fill_rtf(struct ata_queued_cmd *qc);
2025 extern unsigned int ata_sff_port_intr(struct ata_port *ap,
2026                                       struct ata_queued_cmd *qc);
2027 extern irqreturn_t ata_sff_interrupt(int irq, void *dev_instance);
2028 extern void ata_sff_lost_interrupt(struct ata_port *ap);
2029 extern void ata_sff_freeze(struct ata_port *ap);
2030 extern void ata_sff_thaw(struct ata_port *ap);
2031 extern int ata_sff_prereset(struct ata_link *link, unsigned long deadline);
2032 extern unsigned int ata_sff_dev_classify(struct ata_device *dev, int present,
2033                                           u8 *r_err);
2034 extern int ata_sff_wait_after_reset(struct ata_link *link, unsigned int devmask,
2035                                     unsigned long deadline);
2036 extern int ata_sff_softreset(struct ata_link *link, unsigned int *classes,
2037                              unsigned long deadline);
2038 extern int sata_sff_hardreset(struct ata_link *link, unsigned int *class,
2039                                unsigned long deadline);
2040 extern void ata_sff_postreset(struct ata_link *link, unsigned int *classes);
2041 extern void ata_sff_drain_fifo(struct ata_queued_cmd *qc);
2042 extern void ata_sff_error_handler(struct ata_port *ap);
2043 extern void ata_sff_std_ports(struct ata_ioports *ioaddr);
2044 #ifdef CONFIG_PCI
2045 extern int ata_pci_sff_init_host(struct ata_host *host);
2046 extern int ata_pci_sff_prepare_host(struct pci_dev *pdev,
2047                                     const struct ata_port_info * const * ppi,
2048                                     struct ata_host **r_host);
2049 extern int ata_pci_sff_activate_host(struct ata_host *host,
2050                                      irq_handler_t irq_handler,
2051                                      const struct scsi_host_template *sht);
2052 extern int ata_pci_sff_init_one(struct pci_dev *pdev,
2053                 const struct ata_port_info * const * ppi,
2054                 const struct scsi_host_template *sht, void *host_priv, int hflags);
2055 #endif /* CONFIG_PCI */
2056
2057 #ifdef CONFIG_ATA_BMDMA
2058
2059 extern const struct ata_port_operations ata_bmdma_port_ops;
2060
2061 #define ATA_BMDMA_SHT(drv_name)                                 \
2062         ATA_BASE_SHT(drv_name),                                 \
2063         .sg_tablesize           = LIBATA_MAX_PRD,               \
2064         .dma_boundary           = ATA_DMA_BOUNDARY
2065
2066 extern enum ata_completion_errors ata_bmdma_qc_prep(struct ata_queued_cmd *qc);
2067 extern unsigned int ata_bmdma_qc_issue(struct ata_queued_cmd *qc);
2068 extern enum ata_completion_errors ata_bmdma_dumb_qc_prep(struct ata_queued_cmd *qc);
2069 extern unsigned int ata_bmdma_port_intr(struct ata_port *ap,
2070                                       struct ata_queued_cmd *qc);
2071 extern irqreturn_t ata_bmdma_interrupt(int irq, void *dev_instance);
2072 extern void ata_bmdma_error_handler(struct ata_port *ap);
2073 extern void ata_bmdma_post_internal_cmd(struct ata_queued_cmd *qc);
2074 extern void ata_bmdma_irq_clear(struct ata_port *ap);
2075 extern void ata_bmdma_setup(struct ata_queued_cmd *qc);
2076 extern void ata_bmdma_start(struct ata_queued_cmd *qc);
2077 extern void ata_bmdma_stop(struct ata_queued_cmd *qc);
2078 extern u8 ata_bmdma_status(struct ata_port *ap);
2079 extern int ata_bmdma_port_start(struct ata_port *ap);
2080 extern int ata_bmdma_port_start32(struct ata_port *ap);
2081
2082 #ifdef CONFIG_PCI
2083 extern int ata_pci_bmdma_clear_simplex(struct pci_dev *pdev);
2084 extern void ata_pci_bmdma_init(struct ata_host *host);
2085 extern int ata_pci_bmdma_prepare_host(struct pci_dev *pdev,
2086                                       const struct ata_port_info * const * ppi,
2087                                       struct ata_host **r_host);
2088 extern int ata_pci_bmdma_init_one(struct pci_dev *pdev,
2089                                   const struct ata_port_info * const * ppi,
2090                                   const struct scsi_host_template *sht,
2091                                   void *host_priv, int hflags);
2092 #endif /* CONFIG_PCI */
2093 #endif /* CONFIG_ATA_BMDMA */
2094
2095 /**
2096  *      ata_sff_busy_wait - Wait for a port status register
2097  *      @ap: Port to wait for.
2098  *      @bits: bits that must be clear
2099  *      @max: number of 10uS waits to perform
2100  *
2101  *      Waits up to max*10 microseconds for the selected bits in the port's
2102  *      status register to be cleared.
2103  *      Returns final value of status register.
2104  *
2105  *      LOCKING:
2106  *      Inherited from caller.
2107  */
2108 static inline u8 ata_sff_busy_wait(struct ata_port *ap, unsigned int bits,
2109                                    unsigned int max)
2110 {
2111         u8 status;
2112
2113         do {
2114                 udelay(10);
2115                 status = ap->ops->sff_check_status(ap);
2116                 max--;
2117         } while (status != 0xff && (status & bits) && (max > 0));
2118
2119         return status;
2120 }
2121
2122 /**
2123  *      ata_wait_idle - Wait for a port to be idle.
2124  *      @ap: Port to wait for.
2125  *
2126  *      Waits up to 10ms for port's BUSY and DRQ signals to clear.
2127  *      Returns final value of status register.
2128  *
2129  *      LOCKING:
2130  *      Inherited from caller.
2131  */
2132 static inline u8 ata_wait_idle(struct ata_port *ap)
2133 {
2134         u8 status = ata_sff_busy_wait(ap, ATA_BUSY | ATA_DRQ, 1000);
2135
2136         if (status != 0xff && (status & (ATA_BUSY | ATA_DRQ)))
2137                 ata_port_dbg(ap, "abnormal Status 0x%X\n", status);
2138
2139         return status;
2140 }
2141 #endif /* CONFIG_ATA_SFF */
2142
2143 #endif /* __LINUX_LIBATA_H__ */