diff options
Diffstat (limited to 'include/linux/ata.h')
| -rw-r--r-- | include/linux/ata.h | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/include/linux/ata.h b/include/linux/ata.h index 5713d3ac381a..408da9502177 100644 --- a/include/linux/ata.h +++ b/include/linux/ata.h | |||
| @@ -77,6 +77,9 @@ enum { | |||
| 77 | ATA_ID_EIDE_PIO_IORDY = 68, | 77 | ATA_ID_EIDE_PIO_IORDY = 68, |
| 78 | ATA_ID_ADDITIONAL_SUPP = 69, | 78 | ATA_ID_ADDITIONAL_SUPP = 69, |
| 79 | ATA_ID_QUEUE_DEPTH = 75, | 79 | ATA_ID_QUEUE_DEPTH = 75, |
| 80 | ATA_ID_SATA_CAPABILITY = 76, | ||
| 81 | ATA_ID_SATA_CAPABILITY_2 = 77, | ||
| 82 | ATA_ID_FEATURE_SUPP = 78, | ||
| 80 | ATA_ID_MAJOR_VER = 80, | 83 | ATA_ID_MAJOR_VER = 80, |
| 81 | ATA_ID_COMMAND_SET_1 = 82, | 84 | ATA_ID_COMMAND_SET_1 = 82, |
| 82 | ATA_ID_COMMAND_SET_2 = 83, | 85 | ATA_ID_COMMAND_SET_2 = 83, |
| @@ -292,6 +295,13 @@ enum { | |||
| 292 | 295 | ||
| 293 | /* READ_LOG_EXT pages */ | 296 | /* READ_LOG_EXT pages */ |
| 294 | ATA_LOG_SATA_NCQ = 0x10, | 297 | ATA_LOG_SATA_NCQ = 0x10, |
| 298 | ATA_LOG_SATA_ID_DEV_DATA = 0x30, | ||
| 299 | ATA_LOG_SATA_SETTINGS = 0x08, | ||
| 300 | ATA_LOG_DEVSLP_MDAT = 0x30, | ||
| 301 | ATA_LOG_DEVSLP_MDAT_MASK = 0x1F, | ||
| 302 | ATA_LOG_DEVSLP_DETO = 0x31, | ||
| 303 | ATA_LOG_DEVSLP_VALID = 0x37, | ||
| 304 | ATA_LOG_DEVSLP_VALID_MASK = 0x80, | ||
| 295 | 305 | ||
| 296 | /* READ/WRITE LONG (obsolete) */ | 306 | /* READ/WRITE LONG (obsolete) */ |
| 297 | ATA_CMD_READ_LONG = 0x22, | 307 | ATA_CMD_READ_LONG = 0x22, |
| @@ -345,6 +355,7 @@ enum { | |||
| 345 | SATA_FPDMA_IN_ORDER = 0x04, /* FPDMA in-order data delivery */ | 355 | SATA_FPDMA_IN_ORDER = 0x04, /* FPDMA in-order data delivery */ |
| 346 | SATA_AN = 0x05, /* Asynchronous Notification */ | 356 | SATA_AN = 0x05, /* Asynchronous Notification */ |
| 347 | SATA_SSP = 0x06, /* Software Settings Preservation */ | 357 | SATA_SSP = 0x06, /* Software Settings Preservation */ |
| 358 | SATA_DEVSLP = 0x09, /* Device Sleep */ | ||
| 348 | 359 | ||
| 349 | /* feature values for SET_MAX */ | 360 | /* feature values for SET_MAX */ |
| 350 | ATA_SET_MAX_ADDR = 0x00, | 361 | ATA_SET_MAX_ADDR = 0x00, |
| @@ -558,15 +569,17 @@ static inline int ata_is_data(u8 prot) | |||
| 558 | #define ata_id_is_ata(id) (((id)[ATA_ID_CONFIG] & (1 << 15)) == 0) | 569 | #define ata_id_is_ata(id) (((id)[ATA_ID_CONFIG] & (1 << 15)) == 0) |
| 559 | #define ata_id_has_lba(id) ((id)[ATA_ID_CAPABILITY] & (1 << 9)) | 570 | #define ata_id_has_lba(id) ((id)[ATA_ID_CAPABILITY] & (1 << 9)) |
| 560 | #define ata_id_has_dma(id) ((id)[ATA_ID_CAPABILITY] & (1 << 8)) | 571 | #define ata_id_has_dma(id) ((id)[ATA_ID_CAPABILITY] & (1 << 8)) |
| 561 | #define ata_id_has_ncq(id) ((id)[76] & (1 << 8)) | 572 | #define ata_id_has_ncq(id) ((id)[ATA_ID_SATA_CAPABILITY] & (1 << 8)) |
| 562 | #define ata_id_queue_depth(id) (((id)[ATA_ID_QUEUE_DEPTH] & 0x1f) + 1) | 573 | #define ata_id_queue_depth(id) (((id)[ATA_ID_QUEUE_DEPTH] & 0x1f) + 1) |
| 563 | #define ata_id_removeable(id) ((id)[ATA_ID_CONFIG] & (1 << 7)) | 574 | #define ata_id_removeable(id) ((id)[ATA_ID_CONFIG] & (1 << 7)) |
| 564 | #define ata_id_has_atapi_AN(id) \ | 575 | #define ata_id_has_atapi_AN(id) \ |
| 565 | ( (((id)[76] != 0x0000) && ((id)[76] != 0xffff)) && \ | 576 | ((((id)[ATA_ID_SATA_CAPABILITY] != 0x0000) && \ |
| 566 | ((id)[78] & (1 << 5)) ) | 577 | ((id)[ATA_ID_SATA_CAPABILITY] != 0xffff)) && \ |
| 578 | ((id)[ATA_ID_FEATURE_SUPP] & (1 << 5))) | ||
| 567 | #define ata_id_has_fpdma_aa(id) \ | 579 | #define ata_id_has_fpdma_aa(id) \ |
| 568 | ( (((id)[76] != 0x0000) && ((id)[76] != 0xffff)) && \ | 580 | ((((id)[ATA_ID_SATA_CAPABILITY] != 0x0000) && \ |
| 569 | ((id)[78] & (1 << 2)) ) | 581 | ((id)[ATA_ID_SATA_CAPABILITY] != 0xffff)) && \ |
| 582 | ((id)[ATA_ID_FEATURE_SUPP] & (1 << 2))) | ||
| 570 | #define ata_id_iordy_disable(id) ((id)[ATA_ID_CAPABILITY] & (1 << 10)) | 583 | #define ata_id_iordy_disable(id) ((id)[ATA_ID_CAPABILITY] & (1 << 10)) |
| 571 | #define ata_id_has_iordy(id) ((id)[ATA_ID_CAPABILITY] & (1 << 11)) | 584 | #define ata_id_has_iordy(id) ((id)[ATA_ID_CAPABILITY] & (1 << 11)) |
| 572 | #define ata_id_u32(id,n) \ | 585 | #define ata_id_u32(id,n) \ |
| @@ -578,11 +591,12 @@ static inline int ata_is_data(u8 prot) | |||
| 578 | ((u64) (id)[(n) + 0]) ) | 591 | ((u64) (id)[(n) + 0]) ) |
| 579 | 592 | ||
| 580 | #define ata_id_cdb_intr(id) (((id)[ATA_ID_CONFIG] & 0x60) == 0x20) | 593 | #define ata_id_cdb_intr(id) (((id)[ATA_ID_CONFIG] & 0x60) == 0x20) |
| 581 | #define ata_id_has_da(id) ((id)[77] & (1 << 4)) | 594 | #define ata_id_has_da(id) ((id)[ATA_ID_SATA_CAPABILITY_2] & (1 << 4)) |
| 595 | #define ata_id_has_devslp(id) ((id)[ATA_ID_FEATURE_SUPP] & (1 << 8)) | ||
| 582 | 596 | ||
| 583 | static inline bool ata_id_has_hipm(const u16 *id) | 597 | static inline bool ata_id_has_hipm(const u16 *id) |
| 584 | { | 598 | { |
| 585 | u16 val = id[76]; | 599 | u16 val = id[ATA_ID_SATA_CAPABILITY]; |
| 586 | 600 | ||
| 587 | if (val == 0 || val == 0xffff) | 601 | if (val == 0 || val == 0xffff) |
| 588 | return false; | 602 | return false; |
| @@ -592,7 +606,7 @@ static inline bool ata_id_has_hipm(const u16 *id) | |||
| 592 | 606 | ||
| 593 | static inline bool ata_id_has_dipm(const u16 *id) | 607 | static inline bool ata_id_has_dipm(const u16 *id) |
| 594 | { | 608 | { |
| 595 | u16 val = id[78]; | 609 | u16 val = id[ATA_ID_FEATURE_SUPP]; |
| 596 | 610 | ||
| 597 | if (val == 0 || val == 0xffff) | 611 | if (val == 0 || val == 0xffff) |
| 598 | return false; | 612 | return false; |
