Lines Matching defs:id
561 * id tests
563 #define ata_id_is_ata(id) (((id)[ATA_ID_CONFIG] & (1 << 15)) == 0)
564 #define ata_id_has_lba(id) ((id)[ATA_ID_CAPABILITY] & (1 << 9))
565 #define ata_id_has_dma(id) ((id)[ATA_ID_CAPABILITY] & (1 << 8))
566 #define ata_id_has_ncq(id) ((id)[ATA_ID_SATA_CAPABILITY] & (1 << 8))
567 #define ata_id_queue_depth(id) (((id)[ATA_ID_QUEUE_DEPTH] & 0x1f) + 1)
568 #define ata_id_removable(id) ((id)[ATA_ID_CONFIG] & (1 << 7))
569 #define ata_id_has_atapi_AN(id) \
570 ((((id)[ATA_ID_SATA_CAPABILITY] != 0x0000) && \
571 ((id)[ATA_ID_SATA_CAPABILITY] != 0xffff)) && \
572 ((id)[ATA_ID_FEATURE_SUPP] & (1 << 5)))
573 #define ata_id_has_fpdma_aa(id) \
574 ((((id)[ATA_ID_SATA_CAPABILITY] != 0x0000) && \
575 ((id)[ATA_ID_SATA_CAPABILITY] != 0xffff)) && \
576 ((id)[ATA_ID_FEATURE_SUPP] & (1 << 2)))
577 #define ata_id_has_devslp(id) \
578 ((((id)[ATA_ID_SATA_CAPABILITY] != 0x0000) && \
579 ((id)[ATA_ID_SATA_CAPABILITY] != 0xffff)) && \
580 ((id)[ATA_ID_FEATURE_SUPP] & (1 << 8)))
581 #define ata_id_has_ncq_autosense(id) \
582 ((((id)[ATA_ID_SATA_CAPABILITY] != 0x0000) && \
583 ((id)[ATA_ID_SATA_CAPABILITY] != 0xffff)) && \
584 ((id)[ATA_ID_FEATURE_SUPP] & (1 << 7)))
585 #define ata_id_has_dipm(id) \
586 ((((id)[ATA_ID_SATA_CAPABILITY] != 0x0000) && \
587 ((id)[ATA_ID_SATA_CAPABILITY] != 0xffff)) && \
588 ((id)[ATA_ID_FEATURE_SUPP] & (1 << 3)))
589 #define ata_id_iordy_disable(id) ((id)[ATA_ID_CAPABILITY] & (1 << 10))
590 #define ata_id_has_iordy(id) ((id)[ATA_ID_CAPABILITY] & (1 << 11))
591 #define ata_id_u32(id,n) \
592 (((u32) (id)[(n) + 1] << 16) | ((u32) (id)[(n)]))
593 #define ata_id_u64(id,n) \
594 ( ((u64) (id)[(n) + 3] << 48) | \
595 ((u64) (id)[(n) + 2] << 32) | \
596 ((u64) (id)[(n) + 1] << 16) | \
597 ((u64) (id)[(n) + 0]) )
599 #define ata_id_cdb_intr(id) (((id)[ATA_ID_CONFIG] & 0x60) == 0x20)
600 #define ata_id_has_da(id) ((id)[ATA_ID_SATA_CAPABILITY_2] & (1 << 4))
602 static inline bool ata_id_has_hipm(const u16 *id)
604 u16 val = id[ATA_ID_SATA_CAPABILITY];
612 static inline bool ata_id_has_fua(const u16 *id)
614 if ((id[ATA_ID_CFSSE] & 0xC000) != 0x4000)
616 return id[ATA_ID_CFSSE] & (1 << 6);
619 static inline bool ata_id_has_flush(const u16 *id)
621 if ((id[ATA_ID_COMMAND_SET_2] & 0xC000) != 0x4000)
623 return id[ATA_ID_COMMAND_SET_2] & (1 << 12);
626 static inline bool ata_id_has_flush_ext(const u16 *id)
628 if ((id[ATA_ID_COMMAND_SET_2] & 0xC000) != 0x4000)
630 return id[ATA_ID_COMMAND_SET_2] & (1 << 13);
633 static inline u32 ata_id_logical_sector_size(const u16 *id)
639 if ((id[ATA_ID_SECTOR_SIZE] & 0xd000) == 0x5000)
640 return (((id[ATA_ID_LOGICAL_SECTOR_SIZE+1] << 16)
641 + id[ATA_ID_LOGICAL_SECTOR_SIZE]) * sizeof(u16)) ;
645 static inline u8 ata_id_log2_per_physical_sector(const u16 *id)
651 if ((id[ATA_ID_SECTOR_SIZE] & 0xe000) == 0x6000)
652 return (id[ATA_ID_SECTOR_SIZE] & 0xf);
665 static inline u16 ata_id_logical_sector_offset(const u16 *id,
668 u16 word_209 = id[209];
678 static inline bool ata_id_has_lba48(const u16 *id)
680 if ((id[ATA_ID_COMMAND_SET_2] & 0xC000) != 0x4000)
682 if (!ata_id_u64(id, ATA_ID_LBA_CAPACITY_2))
684 return id[ATA_ID_COMMAND_SET_2] & (1 << 10);
687 static inline bool ata_id_hpa_enabled(const u16 *id)
690 if ((id[ATA_ID_COMMAND_SET_2] & 0xC000) != 0x4000)
693 if ((id[ATA_ID_CSF_DEFAULT] & 0xC000) != 0x4000)
696 if ((id[ATA_ID_CFS_ENABLE_1] & (1 << 10)) == 0)
698 return id[ATA_ID_COMMAND_SET_1] & (1 << 10);
701 static inline bool ata_id_has_wcache(const u16 *id)
704 if ((id[ATA_ID_COMMAND_SET_2] & 0xC000) != 0x4000)
706 return id[ATA_ID_COMMAND_SET_1] & (1 << 5);
709 static inline bool ata_id_has_pm(const u16 *id)
711 if ((id[ATA_ID_COMMAND_SET_2] & 0xC000) != 0x4000)
713 return id[ATA_ID_COMMAND_SET_1] & (1 << 3);
716 static inline bool ata_id_rahead_enabled(const u16 *id)
718 if ((id[ATA_ID_CSF_DEFAULT] & 0xC000) != 0x4000)
720 return id[ATA_ID_CFS_ENABLE_1] & (1 << 6);
723 static inline bool ata_id_wcache_enabled(const u16 *id)
725 if ((id[ATA_ID_CSF_DEFAULT] & 0xC000) != 0x4000)
727 return id[ATA_ID_CFS_ENABLE_1] & (1 << 5);
730 static inline bool ata_id_has_read_log_dma_ext(const u16 *id)
733 if (!(id[ATA_ID_CFS_ENABLE_2] & (1 << 15)))
740 if ((id[ATA_ID_COMMAND_SET_3] & 0xC008) == 0x4008 ||
741 (id[ATA_ID_COMMAND_SET_4] & 0xC008) == 0x4008)
747 static inline bool ata_id_has_sense_reporting(const u16 *id)
749 if (!(id[ATA_ID_CFS_ENABLE_2] & BIT(15)))
751 if ((id[ATA_ID_COMMAND_SET_3] & (BIT(15) | BIT(14))) != BIT(14))
753 return id[ATA_ID_COMMAND_SET_3] & BIT(6);
756 static inline bool ata_id_sense_reporting_enabled(const u16 *id)
758 if (!ata_id_has_sense_reporting(id))
761 if ((id[ATA_ID_COMMAND_SET_4] & (BIT(15) | BIT(14))) != BIT(14))
763 return id[ATA_ID_COMMAND_SET_4] & BIT(6);
778 static inline bool ata_id_sct_data_tables(const u16 *id)
780 return id[ATA_ID_SCT_CMD_XPORT] & (1 << 5) ? true : false;
783 static inline bool ata_id_sct_features_ctrl(const u16 *id)
785 return id[ATA_ID_SCT_CMD_XPORT] & (1 << 4) ? true : false;
788 static inline bool ata_id_sct_error_recovery_ctrl(const u16 *id)
790 return id[ATA_ID_SCT_CMD_XPORT] & (1 << 3) ? true : false;
793 static inline bool ata_id_sct_long_sector_access(const u16 *id)
795 return id[ATA_ID_SCT_CMD_XPORT] & (1 << 1) ? true : false;
798 static inline bool ata_id_sct_supported(const u16 *id)
800 return id[ATA_ID_SCT_CMD_XPORT] & (1 << 0) ? true : false;
805 * @id: Identify data
816 static inline unsigned int ata_id_major_version(const u16 *id)
820 if (id[ATA_ID_MAJOR_VER] == 0xFFFF)
824 if (id[ATA_ID_MAJOR_VER] & (1 << mver))
829 static inline bool ata_id_is_sata(const u16 *id)
837 if (id[ATA_ID_HW_CONFIG] == 0 && (short)id[ATA_ID_MAJOR_VER] >= 0x0020)
842 static inline bool ata_id_has_tpm(const u16 *id)
845 if (ata_id_major_version(id) < 8)
847 if ((id[48] & 0xC000) != 0x4000)
849 return id[48] & (1 << 0);
852 static inline bool ata_id_has_dword_io(const u16 *id)
855 if (ata_id_major_version(id) > 7)
857 return id[ATA_ID_DWORD_IO] & (1 << 0);
860 static inline bool ata_id_has_trusted(const u16 *id)
862 if (ata_id_major_version(id) <= 7)
864 return id[ATA_ID_TRUSTED] & (1 << 0);
867 static inline bool ata_id_has_unload(const u16 *id)
869 if (ata_id_major_version(id) >= 7 &&
870 (id[ATA_ID_CFSSE] & 0xC000) == 0x4000 &&
871 id[ATA_ID_CFSSE] & (1 << 13))
876 static inline bool ata_id_has_wwn(const u16 *id)
878 return (id[ATA_ID_CSF_DEFAULT] & 0xC100) == 0x4100;
881 static inline int ata_id_form_factor(const u16 *id)
883 u16 val = id[168];
885 if (ata_id_major_version(id) < 7 || val == 0 || val == 0xffff)
896 static inline int ata_id_rotation_rate(const u16 *id)
898 u16 val = id[217];
900 if (ata_id_major_version(id) < 7 || val == 0 || val == 0xffff)
909 static inline bool ata_id_has_ncq_send_and_recv(const u16 *id)
911 return id[ATA_ID_SATA_CAPABILITY_2] & BIT(6);
914 static inline bool ata_id_has_ncq_non_data(const u16 *id)
916 return id[ATA_ID_SATA_CAPABILITY_2] & BIT(5);
919 static inline bool ata_id_has_ncq_prio(const u16 *id)
921 return id[ATA_ID_SATA_CAPABILITY] & BIT(12);
924 static inline bool ata_id_has_trim(const u16 *id)
926 if (ata_id_major_version(id) >= 7 &&
927 (id[ATA_ID_DATA_SET_MGMT] & 1))
932 static inline bool ata_id_has_zero_after_trim(const u16 *id)
935 if (ata_id_has_trim(id) &&
936 (id[ATA_ID_ADDITIONAL_SUPP] & 0x4020) == 0x4020)
942 static inline bool ata_id_current_chs_valid(const u16 *id)
946 id[ATA_ID_CUR_CYLS] to id[ATA_ID_CUR_SECTORS] are vendor specific. */
947 return (id[ATA_ID_FIELD_VALID] & 1) && /* Current translation valid */
948 id[ATA_ID_CUR_CYLS] && /* cylinders in current translation */
949 id[ATA_ID_CUR_HEADS] && /* heads in current translation */
950 id[ATA_ID_CUR_HEADS] <= 16 &&
951 id[ATA_ID_CUR_SECTORS]; /* sectors in current translation */
954 static inline bool ata_id_is_cfa(const u16 *id)
956 if ((id[ATA_ID_CONFIG] == 0x848A) || /* Traditional CF */
957 (id[ATA_ID_CONFIG] == 0x844A)) /* Delkin Devices CF */
967 return (id[ATA_ID_COMMAND_SET_2] & 0xC004) == 0x4004;
970 static inline bool ata_id_is_ssd(const u16 *id)
972 return id[ATA_ID_ROT_SPEED] == 0x01;
975 static inline u8 ata_id_zoned_cap(const u16 *id)
977 return (id[ATA_ID_ADDITIONAL_SUPP] & 0x3);
980 static inline bool ata_id_pio_need_iordy(const u16 *id, const u8 pio)
983 if (pio > 4 && ata_id_is_cfa(id))
989 return ata_id_has_iordy(id);