aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/ata.h
diff options
context:
space:
mode:
authorDmitry Torokhov <dmitry.torokhov@gmail.com>2012-10-30 03:20:56 -0400
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2012-10-30 03:20:56 -0400
commit53279f36dccffc26ff536003fd6bb97cc21c3b82 (patch)
tree9d16e497c0e4158c7c054c479bd0e9ff0388d7bb /include/linux/ata.h
parenta6e8c0a25377e27958b11b20e1927885ae7c9857 (diff)
parent8f0d8163b50e01f398b14bcd4dc039ac5ab18d64 (diff)
Merge tag 'v3.7-rc3' into next to sync up with recent USB and MFD changes
Diffstat (limited to 'include/linux/ata.h')
-rw-r--r--include/linux/ata.h30
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
583static inline bool ata_id_has_hipm(const u16 *id) 597static 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
593static inline bool ata_id_has_dipm(const u16 *id) 607static 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;