diff options
Diffstat (limited to 'include/linux/libata.h')
-rw-r--r-- | include/linux/libata.h | 78 |
1 files changed, 39 insertions, 39 deletions
diff --git a/include/linux/libata.h b/include/linux/libata.h index 0cfbcb6f08eb..d8cfc72ea9c1 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
@@ -210,6 +210,7 @@ enum { | |||
210 | 210 | ||
211 | /* host set flags */ | 211 | /* host set flags */ |
212 | ATA_HOST_SIMPLEX = (1 << 0), /* Host is simplex, one DMA channel per host only */ | 212 | ATA_HOST_SIMPLEX = (1 << 0), /* Host is simplex, one DMA channel per host only */ |
213 | ATA_HOST_STARTED = (1 << 1), /* Host started */ | ||
213 | 214 | ||
214 | /* various lengths of time */ | 215 | /* various lengths of time */ |
215 | ATA_TMOUT_BOOT = 30 * HZ, /* heuristic */ | 216 | ATA_TMOUT_BOOT = 30 * HZ, /* heuristic */ |
@@ -281,11 +282,13 @@ enum { | |||
281 | ATA_EHI_NO_AUTOPSY = (1 << 2), /* no autopsy */ | 282 | ATA_EHI_NO_AUTOPSY = (1 << 2), /* no autopsy */ |
282 | ATA_EHI_QUIET = (1 << 3), /* be quiet */ | 283 | ATA_EHI_QUIET = (1 << 3), /* be quiet */ |
283 | 284 | ||
284 | ATA_EHI_DID_RESET = (1 << 16), /* already reset this port */ | 285 | ATA_EHI_DID_SOFTRESET = (1 << 16), /* already soft-reset this port */ |
285 | ATA_EHI_PRINTINFO = (1 << 17), /* print configuration info */ | 286 | ATA_EHI_DID_HARDRESET = (1 << 17), /* already soft-reset this port */ |
286 | ATA_EHI_SETMODE = (1 << 18), /* configure transfer mode */ | 287 | ATA_EHI_PRINTINFO = (1 << 18), /* print configuration info */ |
287 | ATA_EHI_POST_SETMODE = (1 << 19), /* revaildating after setmode */ | 288 | ATA_EHI_SETMODE = (1 << 19), /* configure transfer mode */ |
289 | ATA_EHI_POST_SETMODE = (1 << 20), /* revaildating after setmode */ | ||
288 | 290 | ||
291 | ATA_EHI_DID_RESET = ATA_EHI_DID_SOFTRESET | ATA_EHI_DID_HARDRESET, | ||
289 | ATA_EHI_RESET_MODIFIER_MASK = ATA_EHI_RESUME_LINK, | 292 | ATA_EHI_RESET_MODIFIER_MASK = ATA_EHI_RESUME_LINK, |
290 | 293 | ||
291 | /* max repeat if error condition is still set after ->error_handler */ | 294 | /* max repeat if error condition is still set after ->error_handler */ |
@@ -367,34 +370,6 @@ struct ata_ioports { | |||
367 | void __iomem *scr_addr; | 370 | void __iomem *scr_addr; |
368 | }; | 371 | }; |
369 | 372 | ||
370 | struct ata_probe_ent { | ||
371 | struct list_head node; | ||
372 | struct device *dev; | ||
373 | const struct ata_port_operations *port_ops; | ||
374 | struct scsi_host_template *sht; | ||
375 | struct ata_ioports port[ATA_MAX_PORTS]; | ||
376 | unsigned int n_ports; | ||
377 | unsigned int dummy_port_mask; | ||
378 | unsigned int pio_mask; | ||
379 | unsigned int mwdma_mask; | ||
380 | unsigned int udma_mask; | ||
381 | unsigned long irq; | ||
382 | unsigned long irq2; | ||
383 | unsigned int irq_flags; | ||
384 | unsigned long port_flags; | ||
385 | unsigned long _host_flags; | ||
386 | void __iomem * const *iomap; | ||
387 | void *private_data; | ||
388 | |||
389 | /* port_info for the secondary port. Together with irq2, it's | ||
390 | * used to implement non-uniform secondary port. Currently, | ||
391 | * the only user is ata_piix combined mode. This workaround | ||
392 | * will be removed together with ata_probe_ent when init model | ||
393 | * is updated. | ||
394 | */ | ||
395 | const struct ata_port_info *pinfo2; | ||
396 | }; | ||
397 | |||
398 | struct ata_host { | 373 | struct ata_host { |
399 | spinlock_t lock; | 374 | spinlock_t lock; |
400 | struct device *dev; | 375 | struct device *dev; |
@@ -427,6 +402,7 @@ struct ata_queued_cmd { | |||
427 | int dma_dir; | 402 | int dma_dir; |
428 | 403 | ||
429 | unsigned int pad_len; | 404 | unsigned int pad_len; |
405 | unsigned int sect_size; | ||
430 | 406 | ||
431 | unsigned int nbytes; | 407 | unsigned int nbytes; |
432 | unsigned int curbytes; | 408 | unsigned int curbytes; |
@@ -472,6 +448,7 @@ struct ata_device { | |||
472 | struct scsi_device *sdev; /* attached SCSI device */ | 448 | struct scsi_device *sdev; /* attached SCSI device */ |
473 | /* n_sector is used as CLEAR_OFFSET, read comment above CLEAR_OFFSET */ | 449 | /* n_sector is used as CLEAR_OFFSET, read comment above CLEAR_OFFSET */ |
474 | u64 n_sectors; /* size of device, if ATA */ | 450 | u64 n_sectors; /* size of device, if ATA */ |
451 | u64 n_sectors_boot; /* size of ATA device at startup */ | ||
475 | unsigned int class; /* ATA_DEV_xxx */ | 452 | unsigned int class; /* ATA_DEV_xxx */ |
476 | u16 id[ATA_ID_WORDS]; /* IDENTIFY xxx DEVICE data */ | 453 | u16 id[ATA_ID_WORDS]; /* IDENTIFY xxx DEVICE data */ |
477 | u8 pio_mode; | 454 | u8 pio_mode; |
@@ -597,11 +574,11 @@ struct ata_port { | |||
597 | struct ata_port_operations { | 574 | struct ata_port_operations { |
598 | void (*port_disable) (struct ata_port *); | 575 | void (*port_disable) (struct ata_port *); |
599 | 576 | ||
600 | void (*dev_config) (struct ata_port *, struct ata_device *); | 577 | void (*dev_config) (struct ata_device *); |
601 | 578 | ||
602 | void (*set_piomode) (struct ata_port *, struct ata_device *); | 579 | void (*set_piomode) (struct ata_port *, struct ata_device *); |
603 | void (*set_dmamode) (struct ata_port *, struct ata_device *); | 580 | void (*set_dmamode) (struct ata_port *, struct ata_device *); |
604 | unsigned long (*mode_filter) (const struct ata_port *, struct ata_device *, unsigned long); | 581 | unsigned long (*mode_filter) (struct ata_device *, unsigned long); |
605 | 582 | ||
606 | void (*tf_load) (struct ata_port *ap, const struct ata_taskfile *tf); | 583 | void (*tf_load) (struct ata_port *ap, const struct ata_taskfile *tf); |
607 | void (*tf_read) (struct ata_port *ap, struct ata_taskfile *tf); | 584 | void (*tf_read) (struct ata_port *ap, struct ata_taskfile *tf); |
@@ -616,6 +593,8 @@ struct ata_port_operations { | |||
616 | 593 | ||
617 | void (*post_set_mode) (struct ata_port *ap); | 594 | void (*post_set_mode) (struct ata_port *ap); |
618 | 595 | ||
596 | int (*cable_detect) (struct ata_port *ap); | ||
597 | |||
619 | int (*check_atapi_dma) (struct ata_queued_cmd *qc); | 598 | int (*check_atapi_dma) (struct ata_queued_cmd *qc); |
620 | 599 | ||
621 | void (*bmdma_setup) (struct ata_queued_cmd *qc); | 600 | void (*bmdma_setup) (struct ata_queued_cmd *qc); |
@@ -664,6 +643,7 @@ struct ata_port_info { | |||
664 | unsigned long mwdma_mask; | 643 | unsigned long mwdma_mask; |
665 | unsigned long udma_mask; | 644 | unsigned long udma_mask; |
666 | const struct ata_port_operations *port_ops; | 645 | const struct ata_port_operations *port_ops; |
646 | irq_handler_t irq_handler; | ||
667 | void *private_data; | 647 | void *private_data; |
668 | }; | 648 | }; |
669 | 649 | ||
@@ -686,6 +666,7 @@ extern const unsigned long sata_deb_timing_hotplug[]; | |||
686 | extern const unsigned long sata_deb_timing_long[]; | 666 | extern const unsigned long sata_deb_timing_long[]; |
687 | 667 | ||
688 | extern const struct ata_port_operations ata_dummy_port_ops; | 668 | extern const struct ata_port_operations ata_dummy_port_ops; |
669 | extern const struct ata_port_info ata_dummy_port_info; | ||
689 | 670 | ||
690 | static inline const unsigned long * | 671 | static inline const unsigned long * |
691 | sata_ehc_deb_timing(struct ata_eh_context *ehc) | 672 | sata_ehc_deb_timing(struct ata_eh_context *ehc) |
@@ -701,6 +682,7 @@ static inline int ata_port_is_dummy(struct ata_port *ap) | |||
701 | return ap->ops == &ata_dummy_port_ops; | 682 | return ap->ops == &ata_dummy_port_ops; |
702 | } | 683 | } |
703 | 684 | ||
685 | extern void sata_print_link_status(struct ata_port *ap); | ||
704 | extern void ata_port_probe(struct ata_port *); | 686 | extern void ata_port_probe(struct ata_port *); |
705 | extern void __sata_phy_reset(struct ata_port *ap); | 687 | extern void __sata_phy_reset(struct ata_port *ap); |
706 | extern void sata_phy_reset(struct ata_port *ap); | 688 | extern void sata_phy_reset(struct ata_port *ap); |
@@ -728,7 +710,15 @@ extern int ata_pci_device_resume(struct pci_dev *pdev); | |||
728 | #endif | 710 | #endif |
729 | extern int ata_pci_clear_simplex(struct pci_dev *pdev); | 711 | extern int ata_pci_clear_simplex(struct pci_dev *pdev); |
730 | #endif /* CONFIG_PCI */ | 712 | #endif /* CONFIG_PCI */ |
731 | extern int ata_device_add(const struct ata_probe_ent *ent); | 713 | extern struct ata_host *ata_host_alloc(struct device *dev, int max_ports); |
714 | extern struct ata_host *ata_host_alloc_pinfo(struct device *dev, | ||
715 | const struct ata_port_info * const * ppi, int n_ports); | ||
716 | extern int ata_host_start(struct ata_host *host); | ||
717 | extern int ata_host_register(struct ata_host *host, | ||
718 | struct scsi_host_template *sht); | ||
719 | extern int ata_host_activate(struct ata_host *host, int irq, | ||
720 | irq_handler_t irq_handler, unsigned long irq_flags, | ||
721 | struct scsi_host_template *sht); | ||
732 | extern void ata_host_detach(struct ata_host *host); | 722 | extern void ata_host_detach(struct ata_host *host); |
733 | extern void ata_host_init(struct ata_host *, struct device *, | 723 | extern void ata_host_init(struct ata_host *, struct device *, |
734 | unsigned long, const struct ata_port_operations *); | 724 | unsigned long, const struct ata_port_operations *); |
@@ -828,11 +818,17 @@ extern void ata_scsi_slave_destroy(struct scsi_device *sdev); | |||
828 | extern int ata_scsi_change_queue_depth(struct scsi_device *sdev, | 818 | extern int ata_scsi_change_queue_depth(struct scsi_device *sdev, |
829 | int queue_depth); | 819 | int queue_depth); |
830 | extern struct ata_device *ata_dev_pair(struct ata_device *adev); | 820 | extern struct ata_device *ata_dev_pair(struct ata_device *adev); |
821 | extern int ata_do_set_mode(struct ata_port *ap, struct ata_device **r_failed_dev); | ||
831 | extern u8 ata_irq_on(struct ata_port *ap); | 822 | extern u8 ata_irq_on(struct ata_port *ap); |
832 | extern u8 ata_dummy_irq_on(struct ata_port *ap); | 823 | extern u8 ata_dummy_irq_on(struct ata_port *ap); |
833 | extern u8 ata_irq_ack(struct ata_port *ap, unsigned int chk_drq); | 824 | extern u8 ata_irq_ack(struct ata_port *ap, unsigned int chk_drq); |
834 | extern u8 ata_dummy_irq_ack(struct ata_port *ap, unsigned int chk_drq); | 825 | extern u8 ata_dummy_irq_ack(struct ata_port *ap, unsigned int chk_drq); |
835 | 826 | ||
827 | extern int ata_cable_40wire(struct ata_port *ap); | ||
828 | extern int ata_cable_80wire(struct ata_port *ap); | ||
829 | extern int ata_cable_sata(struct ata_port *ap); | ||
830 | extern int ata_cable_unknown(struct ata_port *ap); | ||
831 | |||
836 | /* | 832 | /* |
837 | * Timing helpers | 833 | * Timing helpers |
838 | */ | 834 | */ |
@@ -870,10 +866,13 @@ struct pci_bits { | |||
870 | unsigned long val; | 866 | unsigned long val; |
871 | }; | 867 | }; |
872 | 868 | ||
873 | extern struct ata_probe_ent * | 869 | extern int ata_pci_init_native_host(struct ata_host *host, |
874 | ata_pci_init_native_mode(struct pci_dev *pdev, struct ata_port_info **port, int portmask); | 870 | unsigned int port_mask); |
871 | extern int ata_pci_prepare_native_host(struct pci_dev *pdev, | ||
872 | const struct ata_port_info * const * ppi, | ||
873 | int n_ports, struct ata_host **r_host); | ||
875 | extern int pci_test_config_bits(struct pci_dev *pdev, const struct pci_bits *bits); | 874 | extern int pci_test_config_bits(struct pci_dev *pdev, const struct pci_bits *bits); |
876 | extern unsigned long ata_pci_default_filter(const struct ata_port *, struct ata_device *, unsigned long); | 875 | extern unsigned long ata_pci_default_filter(struct ata_device *, unsigned long); |
877 | #endif /* CONFIG_PCI */ | 876 | #endif /* CONFIG_PCI */ |
878 | 877 | ||
879 | /* | 878 | /* |
@@ -1173,6 +1172,7 @@ static inline void ata_qc_reinit(struct ata_queued_cmd *qc) | |||
1173 | qc->n_elem = 0; | 1172 | qc->n_elem = 0; |
1174 | qc->err_mask = 0; | 1173 | qc->err_mask = 0; |
1175 | qc->pad_len = 0; | 1174 | qc->pad_len = 0; |
1175 | qc->sect_size = ATA_SECT_SIZE; | ||
1176 | 1176 | ||
1177 | ata_tf_init(qc->dev, &qc->tf); | 1177 | ata_tf_init(qc->dev, &qc->tf); |
1178 | 1178 | ||
@@ -1220,7 +1220,7 @@ static inline void ata_pad_free(struct ata_port *ap, struct device *dev) | |||
1220 | 1220 | ||
1221 | static inline struct ata_port *ata_shost_to_port(struct Scsi_Host *host) | 1221 | static inline struct ata_port *ata_shost_to_port(struct Scsi_Host *host) |
1222 | { | 1222 | { |
1223 | return (struct ata_port *) &host->hostdata[0]; | 1223 | return *(struct ata_port **)&host->hostdata[0]; |
1224 | } | 1224 | } |
1225 | 1225 | ||
1226 | #endif /* __LINUX_LIBATA_H__ */ | 1226 | #endif /* __LINUX_LIBATA_H__ */ |