diff options
Diffstat (limited to 'include/linux/libata.h')
-rw-r--r-- | include/linux/libata.h | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/include/linux/libata.h b/include/linux/libata.h index b6b8a7f3ec6..5d87bc09a1f 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
@@ -187,6 +187,8 @@ enum { | |||
187 | ATA_FLAG_PIO_POLLING = (1 << 9), /* use polling PIO if LLD | 187 | ATA_FLAG_PIO_POLLING = (1 << 9), /* use polling PIO if LLD |
188 | * doesn't handle PIO interrupts */ | 188 | * doesn't handle PIO interrupts */ |
189 | ATA_FLAG_NCQ = (1 << 10), /* host supports NCQ */ | 189 | ATA_FLAG_NCQ = (1 << 10), /* host supports NCQ */ |
190 | ATA_FLAG_NO_POWEROFF_SPINDOWN = (1 << 11), /* don't spindown before poweroff */ | ||
191 | ATA_FLAG_NO_HIBERNATE_SPINDOWN = (1 << 12), /* don't spindown before hibernation */ | ||
190 | ATA_FLAG_DEBUGMSG = (1 << 13), | 192 | ATA_FLAG_DEBUGMSG = (1 << 13), |
191 | ATA_FLAG_IGN_SIMPLEX = (1 << 15), /* ignore SIMPLEX */ | 193 | ATA_FLAG_IGN_SIMPLEX = (1 << 15), /* ignore SIMPLEX */ |
192 | ATA_FLAG_NO_IORDY = (1 << 16), /* controller lacks iordy */ | 194 | ATA_FLAG_NO_IORDY = (1 << 16), /* controller lacks iordy */ |
@@ -378,6 +380,7 @@ enum { | |||
378 | ATA_HORKAGE_ATAPI_MOD16_DMA = (1 << 11), /* use ATAPI DMA for commands | 380 | ATA_HORKAGE_ATAPI_MOD16_DMA = (1 << 11), /* use ATAPI DMA for commands |
379 | not multiple of 16 bytes */ | 381 | not multiple of 16 bytes */ |
380 | ATA_HORKAGE_FIRMWARE_WARN = (1 << 12), /* firwmare update warning */ | 382 | ATA_HORKAGE_FIRMWARE_WARN = (1 << 12), /* firwmare update warning */ |
383 | ATA_HORKAGE_1_5_GBPS = (1 << 13), /* force 1.5 Gbps */ | ||
381 | 384 | ||
382 | /* DMA mask for user DMA control: User visible values; DO NOT | 385 | /* DMA mask for user DMA control: User visible values; DO NOT |
383 | renumber */ | 386 | renumber */ |
@@ -401,12 +404,14 @@ enum { | |||
401 | ATA_TIMING_CYC8B, | 404 | ATA_TIMING_CYC8B, |
402 | ATA_TIMING_ACTIVE = (1 << 4), | 405 | ATA_TIMING_ACTIVE = (1 << 4), |
403 | ATA_TIMING_RECOVER = (1 << 5), | 406 | ATA_TIMING_RECOVER = (1 << 5), |
404 | ATA_TIMING_CYCLE = (1 << 6), | 407 | ATA_TIMING_DMACK_HOLD = (1 << 6), |
405 | ATA_TIMING_UDMA = (1 << 7), | 408 | ATA_TIMING_CYCLE = (1 << 7), |
409 | ATA_TIMING_UDMA = (1 << 8), | ||
406 | ATA_TIMING_ALL = ATA_TIMING_SETUP | ATA_TIMING_ACT8B | | 410 | ATA_TIMING_ALL = ATA_TIMING_SETUP | ATA_TIMING_ACT8B | |
407 | ATA_TIMING_REC8B | ATA_TIMING_CYC8B | | 411 | ATA_TIMING_REC8B | ATA_TIMING_CYC8B | |
408 | ATA_TIMING_ACTIVE | ATA_TIMING_RECOVER | | 412 | ATA_TIMING_ACTIVE | ATA_TIMING_RECOVER | |
409 | ATA_TIMING_CYCLE | ATA_TIMING_UDMA, | 413 | ATA_TIMING_DMACK_HOLD | ATA_TIMING_CYCLE | |
414 | ATA_TIMING_UDMA, | ||
410 | }; | 415 | }; |
411 | 416 | ||
412 | enum ata_xfer_mask { | 417 | enum ata_xfer_mask { |
@@ -576,7 +581,7 @@ struct ata_device { | |||
576 | acpi_handle acpi_handle; | 581 | acpi_handle acpi_handle; |
577 | union acpi_object *gtf_cache; | 582 | union acpi_object *gtf_cache; |
578 | #endif | 583 | #endif |
579 | /* n_sector is used as CLEAR_OFFSET, read comment above CLEAR_OFFSET */ | 584 | /* n_sector is CLEAR_BEGIN, read comment above CLEAR_BEGIN */ |
580 | u64 n_sectors; /* size of device, if ATA */ | 585 | u64 n_sectors; /* size of device, if ATA */ |
581 | unsigned int class; /* ATA_DEV_xxx */ | 586 | unsigned int class; /* ATA_DEV_xxx */ |
582 | unsigned long unpark_deadline; | 587 | unsigned long unpark_deadline; |
@@ -601,20 +606,22 @@ struct ata_device { | |||
601 | u16 heads; /* Number of heads */ | 606 | u16 heads; /* Number of heads */ |
602 | u16 sectors; /* Number of sectors per track */ | 607 | u16 sectors; /* Number of sectors per track */ |
603 | 608 | ||
604 | /* error history */ | ||
605 | int spdn_cnt; | ||
606 | struct ata_ering ering; | ||
607 | |||
608 | union { | 609 | union { |
609 | u16 id[ATA_ID_WORDS]; /* IDENTIFY xxx DEVICE data */ | 610 | u16 id[ATA_ID_WORDS]; /* IDENTIFY xxx DEVICE data */ |
610 | u32 gscr[SATA_PMP_GSCR_DWORDS]; /* PMP GSCR block */ | 611 | u32 gscr[SATA_PMP_GSCR_DWORDS]; /* PMP GSCR block */ |
611 | }; | 612 | }; |
613 | |||
614 | /* error history */ | ||
615 | int spdn_cnt; | ||
616 | /* ering is CLEAR_END, read comment above CLEAR_END */ | ||
617 | struct ata_ering ering; | ||
612 | }; | 618 | }; |
613 | 619 | ||
614 | /* Offset into struct ata_device. Fields above it are maintained | 620 | /* Fields between ATA_DEVICE_CLEAR_BEGIN and ATA_DEVICE_CLEAR_END are |
615 | * acress device init. Fields below are zeroed. | 621 | * cleared to zero on ata_dev_init(). |
616 | */ | 622 | */ |
617 | #define ATA_DEVICE_CLEAR_OFFSET offsetof(struct ata_device, n_sectors) | 623 | #define ATA_DEVICE_CLEAR_BEGIN offsetof(struct ata_device, n_sectors) |
624 | #define ATA_DEVICE_CLEAR_END offsetof(struct ata_device, ering) | ||
618 | 625 | ||
619 | struct ata_eh_info { | 626 | struct ata_eh_info { |
620 | struct ata_device *dev; /* offending device */ | 627 | struct ata_device *dev; /* offending device */ |
@@ -866,6 +873,7 @@ struct ata_timing { | |||
866 | unsigned short cyc8b; /* t0 for 8-bit I/O */ | 873 | unsigned short cyc8b; /* t0 for 8-bit I/O */ |
867 | unsigned short active; /* t2 or tD */ | 874 | unsigned short active; /* t2 or tD */ |
868 | unsigned short recover; /* t2i or tK */ | 875 | unsigned short recover; /* t2i or tK */ |
876 | unsigned short dmack_hold; /* tj */ | ||
869 | unsigned short cycle; /* t0 */ | 877 | unsigned short cycle; /* t0 */ |
870 | unsigned short udma; /* t2CYCTYP/2 */ | 878 | unsigned short udma; /* t2CYCTYP/2 */ |
871 | }; | 879 | }; |
@@ -927,6 +935,8 @@ extern void ata_host_init(struct ata_host *, struct device *, | |||
927 | extern int ata_scsi_detect(struct scsi_host_template *sht); | 935 | extern int ata_scsi_detect(struct scsi_host_template *sht); |
928 | extern int ata_scsi_ioctl(struct scsi_device *dev, int cmd, void __user *arg); | 936 | extern int ata_scsi_ioctl(struct scsi_device *dev, int cmd, void __user *arg); |
929 | extern int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *)); | 937 | extern int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *)); |
938 | extern int ata_sas_scsi_ioctl(struct ata_port *ap, struct scsi_device *dev, | ||
939 | int cmd, void __user *arg); | ||
930 | extern void ata_sas_port_destroy(struct ata_port *); | 940 | extern void ata_sas_port_destroy(struct ata_port *); |
931 | extern struct ata_port *ata_sas_port_alloc(struct ata_host *, | 941 | extern struct ata_port *ata_sas_port_alloc(struct ata_host *, |
932 | struct ata_port_info *, struct Scsi_Host *); | 942 | struct ata_port_info *, struct Scsi_Host *); |