diff options
Diffstat (limited to 'drivers/ata/libata.h')
-rw-r--r-- | drivers/ata/libata.h | 41 |
1 files changed, 35 insertions, 6 deletions
diff --git a/drivers/ata/libata.h b/drivers/ata/libata.h index 564cd234c805..90df58a3edc9 100644 --- a/drivers/ata/libata.h +++ b/drivers/ata/libata.h | |||
@@ -29,6 +29,7 @@ | |||
29 | #define __LIBATA_H__ | 29 | #define __LIBATA_H__ |
30 | 30 | ||
31 | #define DRV_NAME "libata" | 31 | #define DRV_NAME "libata" |
32 | #define DRV_VERSION "3.00" /* must be exactly four chars */ | ||
32 | 33 | ||
33 | struct ata_scsi_args { | 34 | struct ata_scsi_args { |
34 | struct ata_device *dev; | 35 | struct ata_device *dev; |
@@ -56,6 +57,7 @@ extern unsigned int ata_print_id; | |||
56 | extern struct workqueue_struct *ata_aux_wq; | 57 | extern struct workqueue_struct *ata_aux_wq; |
57 | extern int atapi_enabled; | 58 | extern int atapi_enabled; |
58 | extern int atapi_dmadir; | 59 | extern int atapi_dmadir; |
60 | extern int atapi_passthru16; | ||
59 | extern int libata_fua; | 61 | extern int libata_fua; |
60 | extern int libata_noacpi; | 62 | extern int libata_noacpi; |
61 | extern struct ata_queued_cmd *ata_qc_new_init(struct ata_device *dev); | 63 | extern struct ata_queued_cmd *ata_qc_new_init(struct ata_device *dev); |
@@ -67,21 +69,23 @@ extern void ata_dev_disable(struct ata_device *dev); | |||
67 | extern void ata_port_flush_task(struct ata_port *ap); | 69 | extern void ata_port_flush_task(struct ata_port *ap); |
68 | extern unsigned ata_exec_internal(struct ata_device *dev, | 70 | extern unsigned ata_exec_internal(struct ata_device *dev, |
69 | struct ata_taskfile *tf, const u8 *cdb, | 71 | struct ata_taskfile *tf, const u8 *cdb, |
70 | int dma_dir, void *buf, unsigned int buflen); | 72 | int dma_dir, void *buf, unsigned int buflen, |
73 | unsigned long timeout); | ||
71 | extern unsigned ata_exec_internal_sg(struct ata_device *dev, | 74 | extern unsigned ata_exec_internal_sg(struct ata_device *dev, |
72 | struct ata_taskfile *tf, const u8 *cdb, | 75 | struct ata_taskfile *tf, const u8 *cdb, |
73 | int dma_dir, struct scatterlist *sg, | 76 | int dma_dir, struct scatterlist *sg, |
74 | unsigned int n_elem); | 77 | unsigned int n_elem, unsigned long timeout); |
75 | extern unsigned int ata_do_simple_cmd(struct ata_device *dev, u8 cmd); | 78 | extern unsigned int ata_do_simple_cmd(struct ata_device *dev, u8 cmd); |
76 | extern int ata_dev_read_id(struct ata_device *dev, unsigned int *p_class, | 79 | extern int ata_dev_read_id(struct ata_device *dev, unsigned int *p_class, |
77 | unsigned int flags, u16 *id); | 80 | unsigned int flags, u16 *id); |
78 | extern int ata_dev_reread_id(struct ata_device *dev, unsigned int readid_flags); | 81 | extern int ata_dev_reread_id(struct ata_device *dev, unsigned int readid_flags); |
79 | extern int ata_dev_revalidate(struct ata_device *dev, unsigned int readid_flags); | 82 | extern int ata_dev_revalidate(struct ata_device *dev, unsigned int new_class, |
83 | unsigned int readid_flags); | ||
80 | extern int ata_dev_configure(struct ata_device *dev); | 84 | extern int ata_dev_configure(struct ata_device *dev); |
81 | extern int sata_down_spd_limit(struct ata_port *ap); | 85 | extern int sata_down_spd_limit(struct ata_link *link); |
82 | extern int sata_set_spd_needed(struct ata_port *ap); | 86 | extern int sata_set_spd_needed(struct ata_link *link); |
83 | extern int ata_down_xfermask_limit(struct ata_device *dev, unsigned int sel); | 87 | extern int ata_down_xfermask_limit(struct ata_device *dev, unsigned int sel); |
84 | extern int ata_set_mode(struct ata_port *ap, struct ata_device **r_failed_dev); | 88 | extern int ata_set_mode(struct ata_link *link, struct ata_device **r_failed_dev); |
85 | extern void ata_sg_clean(struct ata_queued_cmd *qc); | 89 | extern void ata_sg_clean(struct ata_queued_cmd *qc); |
86 | extern void ata_qc_free(struct ata_queued_cmd *qc); | 90 | extern void ata_qc_free(struct ata_queued_cmd *qc); |
87 | extern void ata_qc_issue(struct ata_queued_cmd *qc); | 91 | extern void ata_qc_issue(struct ata_queued_cmd *qc); |
@@ -92,17 +96,21 @@ extern void ata_dev_select(struct ata_port *ap, unsigned int device, | |||
92 | extern void swap_buf_le16(u16 *buf, unsigned int buf_words); | 96 | extern void swap_buf_le16(u16 *buf, unsigned int buf_words); |
93 | extern int ata_flush_cache(struct ata_device *dev); | 97 | extern int ata_flush_cache(struct ata_device *dev); |
94 | extern void ata_dev_init(struct ata_device *dev); | 98 | extern void ata_dev_init(struct ata_device *dev); |
99 | extern void ata_link_init(struct ata_port *ap, struct ata_link *link, int pmp); | ||
100 | extern int sata_link_init_spd(struct ata_link *link); | ||
95 | extern int ata_task_ioctl(struct scsi_device *scsidev, void __user *arg); | 101 | extern int ata_task_ioctl(struct scsi_device *scsidev, void __user *arg); |
96 | extern int ata_cmd_ioctl(struct scsi_device *scsidev, void __user *arg); | 102 | extern int ata_cmd_ioctl(struct scsi_device *scsidev, void __user *arg); |
97 | extern struct ata_port *ata_port_alloc(struct ata_host *host); | 103 | extern struct ata_port *ata_port_alloc(struct ata_host *host); |
98 | 104 | ||
99 | /* libata-acpi.c */ | 105 | /* libata-acpi.c */ |
100 | #ifdef CONFIG_ATA_ACPI | 106 | #ifdef CONFIG_ATA_ACPI |
107 | extern void ata_acpi_associate_sata_port(struct ata_port *ap); | ||
101 | extern void ata_acpi_associate(struct ata_host *host); | 108 | extern void ata_acpi_associate(struct ata_host *host); |
102 | extern int ata_acpi_on_suspend(struct ata_port *ap); | 109 | extern int ata_acpi_on_suspend(struct ata_port *ap); |
103 | extern void ata_acpi_on_resume(struct ata_port *ap); | 110 | extern void ata_acpi_on_resume(struct ata_port *ap); |
104 | extern int ata_acpi_on_devcfg(struct ata_device *adev); | 111 | extern int ata_acpi_on_devcfg(struct ata_device *adev); |
105 | #else | 112 | #else |
113 | static inline void ata_acpi_associate_sata_port(struct ata_port *ap) { } | ||
106 | static inline void ata_acpi_associate(struct ata_host *host) { } | 114 | static inline void ata_acpi_associate(struct ata_host *host) { } |
107 | static inline int ata_acpi_on_suspend(struct ata_port *ap) { return 0; } | 115 | static inline int ata_acpi_on_suspend(struct ata_port *ap) { return 0; } |
108 | static inline void ata_acpi_on_resume(struct ata_port *ap) { } | 116 | static inline void ata_acpi_on_resume(struct ata_port *ap) { } |
@@ -114,6 +122,7 @@ extern int ata_scsi_add_hosts(struct ata_host *host, | |||
114 | struct scsi_host_template *sht); | 122 | struct scsi_host_template *sht); |
115 | extern void ata_scsi_scan_host(struct ata_port *ap, int sync); | 123 | extern void ata_scsi_scan_host(struct ata_port *ap, int sync); |
116 | extern int ata_scsi_offline_dev(struct ata_device *dev); | 124 | extern int ata_scsi_offline_dev(struct ata_device *dev); |
125 | extern void ata_scsi_media_change_notify(struct ata_device *dev); | ||
117 | extern void ata_scsi_hotplug(struct work_struct *work); | 126 | extern void ata_scsi_hotplug(struct work_struct *work); |
118 | extern unsigned int ata_scsiop_inq_std(struct ata_scsi_args *args, u8 *rbuf, | 127 | extern unsigned int ata_scsiop_inq_std(struct ata_scsi_args *args, u8 *rbuf, |
119 | unsigned int buflen); | 128 | unsigned int buflen); |
@@ -147,12 +156,32 @@ extern void ata_schedule_scsi_eh(struct Scsi_Host *shost); | |||
147 | extern void ata_scsi_dev_rescan(struct work_struct *work); | 156 | extern void ata_scsi_dev_rescan(struct work_struct *work); |
148 | extern int ata_bus_probe(struct ata_port *ap); | 157 | extern int ata_bus_probe(struct ata_port *ap); |
149 | 158 | ||
159 | /* libata-pmp.c */ | ||
160 | extern int sata_pmp_scr_read(struct ata_link *link, int reg, u32 *val); | ||
161 | extern int sata_pmp_scr_write(struct ata_link *link, int reg, u32 val); | ||
162 | extern int sata_pmp_attach(struct ata_device *dev); | ||
163 | |||
150 | /* libata-eh.c */ | 164 | /* libata-eh.c */ |
151 | extern enum scsi_eh_timer_return ata_scsi_timed_out(struct scsi_cmnd *cmd); | 165 | extern enum scsi_eh_timer_return ata_scsi_timed_out(struct scsi_cmnd *cmd); |
152 | extern void ata_scsi_error(struct Scsi_Host *host); | 166 | extern void ata_scsi_error(struct Scsi_Host *host); |
153 | extern void ata_port_wait_eh(struct ata_port *ap); | 167 | extern void ata_port_wait_eh(struct ata_port *ap); |
154 | extern void ata_eh_fastdrain_timerfn(unsigned long arg); | 168 | extern void ata_eh_fastdrain_timerfn(unsigned long arg); |
155 | extern void ata_qc_schedule_eh(struct ata_queued_cmd *qc); | 169 | extern void ata_qc_schedule_eh(struct ata_queued_cmd *qc); |
170 | extern void ata_eh_detach_dev(struct ata_device *dev); | ||
171 | extern void ata_eh_about_to_do(struct ata_link *link, struct ata_device *dev, | ||
172 | unsigned int action); | ||
173 | extern void ata_eh_done(struct ata_link *link, struct ata_device *dev, | ||
174 | unsigned int action); | ||
175 | extern void ata_eh_autopsy(struct ata_port *ap); | ||
176 | extern void ata_eh_report(struct ata_port *ap); | ||
177 | extern int ata_eh_reset(struct ata_link *link, int classify, | ||
178 | ata_prereset_fn_t prereset, ata_reset_fn_t softreset, | ||
179 | ata_reset_fn_t hardreset, ata_postreset_fn_t postreset); | ||
180 | extern int ata_eh_recover(struct ata_port *ap, ata_prereset_fn_t prereset, | ||
181 | ata_reset_fn_t softreset, ata_reset_fn_t hardreset, | ||
182 | ata_postreset_fn_t postreset, | ||
183 | struct ata_link **r_failed_disk); | ||
184 | extern void ata_eh_finish(struct ata_port *ap); | ||
156 | 185 | ||
157 | /* libata-sff.c */ | 186 | /* libata-sff.c */ |
158 | extern u8 ata_irq_on(struct ata_port *ap); | 187 | extern u8 ata_irq_on(struct ata_port *ap); |