aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/libata.h
diff options
context:
space:
mode:
authorJeff Garzik <jeff@garzik.org>2006-03-29 19:58:22 -0500
committerJeff Garzik <jeff@garzik.org>2006-03-29 19:58:22 -0500
commit79072f38909e3d9883317238887460c39ddcc4cb (patch)
tree28369f5a844535ff836565eefd62695b0e890fa3 /include/linux/libata.h
parent200d5a7684cc49ef4be40e832daf3f217e70dfbb (diff)
parent55d8ca4f8094246da6e71889a4e04bfafaa78b10 (diff)
Merge branch 'upstream'
Diffstat (limited to 'include/linux/libata.h')
-rw-r--r--include/linux/libata.h23
1 files changed, 19 insertions, 4 deletions
diff --git a/include/linux/libata.h b/include/linux/libata.h
index 4dff3cf9d389..c2215469a101 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -161,8 +161,10 @@ enum {
161 ATA_QCFLAG_DMAMAP = ATA_QCFLAG_SG | ATA_QCFLAG_SINGLE, 161 ATA_QCFLAG_DMAMAP = ATA_QCFLAG_SG | ATA_QCFLAG_SINGLE,
162 ATA_QCFLAG_EH_SCHEDULED = (1 << 5), /* EH scheduled */ 162 ATA_QCFLAG_EH_SCHEDULED = (1 << 5), /* EH scheduled */
163 163
164 /* host set flags */
165 ATA_HOST_SIMPLEX = (1 << 0), /* Host is simplex, one DMA channel per host_set only */
166
164 /* various lengths of time */ 167 /* various lengths of time */
165 ATA_TMOUT_EDD = 5 * HZ, /* heuristic */
166 ATA_TMOUT_PIO = 30 * HZ, 168 ATA_TMOUT_PIO = 30 * HZ,
167 ATA_TMOUT_BOOT = 30 * HZ, /* heuristic */ 169 ATA_TMOUT_BOOT = 30 * HZ, /* heuristic */
168 ATA_TMOUT_BOOT_QUICK = 7 * HZ, /* heuristic */ 170 ATA_TMOUT_BOOT_QUICK = 7 * HZ, /* heuristic */
@@ -280,6 +282,7 @@ struct ata_probe_ent {
280 unsigned long irq; 282 unsigned long irq;
281 unsigned int irq_flags; 283 unsigned int irq_flags;
282 unsigned long host_flags; 284 unsigned long host_flags;
285 unsigned long host_set_flags;
283 void __iomem *mmio_base; 286 void __iomem *mmio_base;
284 void *private_data; 287 void *private_data;
285}; 288};
@@ -292,6 +295,9 @@ struct ata_host_set {
292 unsigned int n_ports; 295 unsigned int n_ports;
293 void *private_data; 296 void *private_data;
294 const struct ata_port_operations *ops; 297 const struct ata_port_operations *ops;
298 unsigned long flags;
299 int simplex_claimed; /* Keep seperate in case we
300 ever need to do this locked */
295 struct ata_port * ports[0]; 301 struct ata_port * ports[0];
296}; 302};
297 303
@@ -359,6 +365,11 @@ struct ata_device {
359 unsigned int max_sectors; /* per-device max sectors */ 365 unsigned int max_sectors; /* per-device max sectors */
360 unsigned int cdb_len; 366 unsigned int cdb_len;
361 367
368 /* per-dev xfer mask */
369 unsigned int pio_mask;
370 unsigned int mwdma_mask;
371 unsigned int udma_mask;
372
362 /* for CHS addressing */ 373 /* for CHS addressing */
363 u16 cylinders; /* Number of cylinders */ 374 u16 cylinders; /* Number of cylinders */
364 u16 heads; /* Number of heads */ 375 u16 heads; /* Number of heads */
@@ -396,6 +407,7 @@ struct ata_port {
396 407
397 struct ata_host_stats stats; 408 struct ata_host_stats stats;
398 struct ata_host_set *host_set; 409 struct ata_host_set *host_set;
410 struct device *dev;
399 411
400 struct work_struct port_task; 412 struct work_struct port_task;
401 413
@@ -415,6 +427,7 @@ struct ata_port_operations {
415 427
416 void (*set_piomode) (struct ata_port *, struct ata_device *); 428 void (*set_piomode) (struct ata_port *, struct ata_device *);
417 void (*set_dmamode) (struct ata_port *, struct ata_device *); 429 void (*set_dmamode) (struct ata_port *, struct ata_device *);
430 unsigned long (*mode_filter) (const struct ata_port *, struct ata_device *, unsigned long);
418 431
419 void (*tf_load) (struct ata_port *ap, const struct ata_taskfile *tf); 432 void (*tf_load) (struct ata_port *ap, const struct ata_taskfile *tf);
420 void (*tf_read) (struct ata_port *ap, struct ata_taskfile *tf); 433 void (*tf_read) (struct ata_port *ap, struct ata_taskfile *tf);
@@ -425,6 +438,7 @@ struct ata_port_operations {
425 void (*dev_select)(struct ata_port *ap, unsigned int device); 438 void (*dev_select)(struct ata_port *ap, unsigned int device);
426 439
427 void (*phy_reset) (struct ata_port *ap); /* obsolete */ 440 void (*phy_reset) (struct ata_port *ap); /* obsolete */
441 void (*set_mode) (struct ata_port *ap);
428 int (*probe_reset) (struct ata_port *ap, unsigned int *classes); 442 int (*probe_reset) (struct ata_port *ap, unsigned int *classes);
429 443
430 void (*post_set_mode) (struct ata_port *ap); 444 void (*post_set_mode) (struct ata_port *ap);
@@ -510,16 +524,15 @@ extern void ata_host_set_remove(struct ata_host_set *host_set);
510extern int ata_scsi_detect(struct scsi_host_template *sht); 524extern int ata_scsi_detect(struct scsi_host_template *sht);
511extern int ata_scsi_ioctl(struct scsi_device *dev, int cmd, void __user *arg); 525extern int ata_scsi_ioctl(struct scsi_device *dev, int cmd, void __user *arg);
512extern int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *)); 526extern int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *));
513extern enum scsi_eh_timer_return ata_scsi_timed_out(struct scsi_cmnd *cmd);
514extern int ata_scsi_error(struct Scsi_Host *host); 527extern int ata_scsi_error(struct Scsi_Host *host);
515extern void ata_eh_qc_complete(struct ata_queued_cmd *qc); 528extern void ata_eh_qc_complete(struct ata_queued_cmd *qc);
516extern void ata_eh_qc_retry(struct ata_queued_cmd *qc); 529extern void ata_eh_qc_retry(struct ata_queued_cmd *qc);
517extern int ata_scsi_release(struct Scsi_Host *host); 530extern int ata_scsi_release(struct Scsi_Host *host);
518extern unsigned int ata_host_intr(struct ata_port *ap, struct ata_queued_cmd *qc); 531extern unsigned int ata_host_intr(struct ata_port *ap, struct ata_queued_cmd *qc);
519extern int ata_scsi_device_resume(struct scsi_device *); 532extern int ata_scsi_device_resume(struct scsi_device *);
520extern int ata_scsi_device_suspend(struct scsi_device *); 533extern int ata_scsi_device_suspend(struct scsi_device *, pm_message_t state);
521extern int ata_device_resume(struct ata_port *, struct ata_device *); 534extern int ata_device_resume(struct ata_port *, struct ata_device *);
522extern int ata_device_suspend(struct ata_port *, struct ata_device *); 535extern int ata_device_suspend(struct ata_port *, struct ata_device *, pm_message_t state);
523extern int ata_ratelimit(void); 536extern int ata_ratelimit(void);
524extern unsigned int ata_busy_sleep(struct ata_port *ap, 537extern unsigned int ata_busy_sleep(struct ata_port *ap,
525 unsigned long timeout_pat, 538 unsigned long timeout_pat,
@@ -570,6 +583,8 @@ extern int ata_std_bios_param(struct scsi_device *sdev,
570 struct block_device *bdev, 583 struct block_device *bdev,
571 sector_t capacity, int geom[]); 584 sector_t capacity, int geom[]);
572extern int ata_scsi_slave_config(struct scsi_device *sdev); 585extern int ata_scsi_slave_config(struct scsi_device *sdev);
586extern struct ata_device *ata_dev_pair(struct ata_port *ap,
587 struct ata_device *adev);
573 588
574/* 589/*
575 * Timing helpers 590 * Timing helpers