Lines Matching refs:id
554 #define ata_id_is_ata(id) (((id)[ATA_ID_CONFIG] & (1 << 15)) == 0) argument
555 #define ata_id_has_lba(id) ((id)[ATA_ID_CAPABILITY] & (1 << 9)) argument
556 #define ata_id_has_dma(id) ((id)[ATA_ID_CAPABILITY] & (1 << 8)) argument
557 #define ata_id_has_ncq(id) ((id)[ATA_ID_SATA_CAPABILITY] & (1 << 8)) argument
558 #define ata_id_queue_depth(id) (((id)[ATA_ID_QUEUE_DEPTH] & 0x1f) + 1) argument
559 #define ata_id_removable(id) ((id)[ATA_ID_CONFIG] & (1 << 7)) argument
560 #define ata_id_has_atapi_AN(id) \ argument
561 ((((id)[ATA_ID_SATA_CAPABILITY] != 0x0000) && \
562 ((id)[ATA_ID_SATA_CAPABILITY] != 0xffff)) && \
563 ((id)[ATA_ID_FEATURE_SUPP] & (1 << 5)))
564 #define ata_id_has_fpdma_aa(id) \ argument
565 ((((id)[ATA_ID_SATA_CAPABILITY] != 0x0000) && \
566 ((id)[ATA_ID_SATA_CAPABILITY] != 0xffff)) && \
567 ((id)[ATA_ID_FEATURE_SUPP] & (1 << 2)))
568 #define ata_id_has_devslp(id) \ argument
569 ((((id)[ATA_ID_SATA_CAPABILITY] != 0x0000) && \
570 ((id)[ATA_ID_SATA_CAPABILITY] != 0xffff)) && \
571 ((id)[ATA_ID_FEATURE_SUPP] & (1 << 8)))
572 #define ata_id_has_ncq_autosense(id) \ argument
573 ((((id)[ATA_ID_SATA_CAPABILITY] != 0x0000) && \
574 ((id)[ATA_ID_SATA_CAPABILITY] != 0xffff)) && \
575 ((id)[ATA_ID_FEATURE_SUPP] & (1 << 7)))
576 #define ata_id_has_dipm(id) \ argument
577 ((((id)[ATA_ID_SATA_CAPABILITY] != 0x0000) && \
578 ((id)[ATA_ID_SATA_CAPABILITY] != 0xffff)) && \
579 ((id)[ATA_ID_FEATURE_SUPP] & (1 << 3)))
580 #define ata_id_iordy_disable(id) ((id)[ATA_ID_CAPABILITY] & (1 << 10)) argument
581 #define ata_id_has_iordy(id) ((id)[ATA_ID_CAPABILITY] & (1 << 11)) argument
582 #define ata_id_u32(id,n) \ argument
583 (((u32) (id)[(n) + 1] << 16) | ((u32) (id)[(n)]))
584 #define ata_id_u64(id,n) \ argument
585 ( ((u64) (id)[(n) + 3] << 48) | \
586 ((u64) (id)[(n) + 2] << 32) | \
587 ((u64) (id)[(n) + 1] << 16) | \
588 ((u64) (id)[(n) + 0]) )
590 #define ata_id_cdb_intr(id) (((id)[ATA_ID_CONFIG] & 0x60) == 0x20) argument
591 #define ata_id_has_da(id) ((id)[ATA_ID_SATA_CAPABILITY_2] & (1 << 4)) argument
593 static inline bool ata_id_has_hipm(const u16 *id) in ata_id_has_hipm() argument
595 u16 val = id[ATA_ID_SATA_CAPABILITY]; in ata_id_has_hipm()
603 static inline bool ata_id_has_fua(const u16 *id) in ata_id_has_fua() argument
605 if ((id[ATA_ID_CFSSE] & 0xC000) != 0x4000) in ata_id_has_fua()
607 return id[ATA_ID_CFSSE] & (1 << 6); in ata_id_has_fua()
610 static inline bool ata_id_has_flush(const u16 *id) in ata_id_has_flush() argument
612 if ((id[ATA_ID_COMMAND_SET_2] & 0xC000) != 0x4000) in ata_id_has_flush()
614 return id[ATA_ID_COMMAND_SET_2] & (1 << 12); in ata_id_has_flush()
617 static inline bool ata_id_flush_enabled(const u16 *id) in ata_id_flush_enabled() argument
619 if (ata_id_has_flush(id) == 0) in ata_id_flush_enabled()
621 if ((id[ATA_ID_CSF_DEFAULT] & 0xC000) != 0x4000) in ata_id_flush_enabled()
623 return id[ATA_ID_CFS_ENABLE_2] & (1 << 12); in ata_id_flush_enabled()
626 static inline bool ata_id_has_flush_ext(const u16 *id) in ata_id_has_flush_ext() argument
628 if ((id[ATA_ID_COMMAND_SET_2] & 0xC000) != 0x4000) in ata_id_has_flush_ext()
630 return id[ATA_ID_COMMAND_SET_2] & (1 << 13); in ata_id_has_flush_ext()
633 static inline bool ata_id_flush_ext_enabled(const u16 *id) in ata_id_flush_ext_enabled() argument
635 if (ata_id_has_flush_ext(id) == 0) in ata_id_flush_ext_enabled()
637 if ((id[ATA_ID_CSF_DEFAULT] & 0xC000) != 0x4000) in ata_id_flush_ext_enabled()
643 return (id[ATA_ID_CFS_ENABLE_2] & 0x2400) == 0x2400; in ata_id_flush_ext_enabled()
646 static inline u32 ata_id_logical_sector_size(const u16 *id) in ata_id_logical_sector_size() argument
652 if ((id[ATA_ID_SECTOR_SIZE] & 0xd000) == 0x5000) in ata_id_logical_sector_size()
653 return (((id[ATA_ID_LOGICAL_SECTOR_SIZE+1] << 16) in ata_id_logical_sector_size()
654 + id[ATA_ID_LOGICAL_SECTOR_SIZE]) * sizeof(u16)) ; in ata_id_logical_sector_size()
658 static inline u8 ata_id_log2_per_physical_sector(const u16 *id) in ata_id_log2_per_physical_sector() argument
664 if ((id[ATA_ID_SECTOR_SIZE] & 0xe000) == 0x6000) in ata_id_log2_per_physical_sector()
665 return (id[ATA_ID_SECTOR_SIZE] & 0xf); in ata_id_log2_per_physical_sector()
678 static inline u16 ata_id_logical_sector_offset(const u16 *id, in ata_id_logical_sector_offset() argument
681 u16 word_209 = id[209]; in ata_id_logical_sector_offset()
691 static inline bool ata_id_has_lba48(const u16 *id) in ata_id_has_lba48() argument
693 if ((id[ATA_ID_COMMAND_SET_2] & 0xC000) != 0x4000) in ata_id_has_lba48()
695 if (!ata_id_u64(id, ATA_ID_LBA_CAPACITY_2)) in ata_id_has_lba48()
697 return id[ATA_ID_COMMAND_SET_2] & (1 << 10); in ata_id_has_lba48()
700 static inline bool ata_id_lba48_enabled(const u16 *id) in ata_id_lba48_enabled() argument
702 if (ata_id_has_lba48(id) == 0) in ata_id_lba48_enabled()
704 if ((id[ATA_ID_CSF_DEFAULT] & 0xC000) != 0x4000) in ata_id_lba48_enabled()
706 return id[ATA_ID_CFS_ENABLE_2] & (1 << 10); in ata_id_lba48_enabled()
709 static inline bool ata_id_hpa_enabled(const u16 *id) in ata_id_hpa_enabled() argument
712 if ((id[ATA_ID_COMMAND_SET_2] & 0xC000) != 0x4000) in ata_id_hpa_enabled()
715 if ((id[ATA_ID_CSF_DEFAULT] & 0xC000) != 0x4000) in ata_id_hpa_enabled()
718 if ((id[ATA_ID_CFS_ENABLE_1] & (1 << 10)) == 0) in ata_id_hpa_enabled()
720 return id[ATA_ID_COMMAND_SET_1] & (1 << 10); in ata_id_hpa_enabled()
723 static inline bool ata_id_has_wcache(const u16 *id) in ata_id_has_wcache() argument
726 if ((id[ATA_ID_COMMAND_SET_2] & 0xC000) != 0x4000) in ata_id_has_wcache()
728 return id[ATA_ID_COMMAND_SET_1] & (1 << 5); in ata_id_has_wcache()
731 static inline bool ata_id_has_pm(const u16 *id) in ata_id_has_pm() argument
733 if ((id[ATA_ID_COMMAND_SET_2] & 0xC000) != 0x4000) in ata_id_has_pm()
735 return id[ATA_ID_COMMAND_SET_1] & (1 << 3); in ata_id_has_pm()
738 static inline bool ata_id_rahead_enabled(const u16 *id) in ata_id_rahead_enabled() argument
740 if ((id[ATA_ID_CSF_DEFAULT] & 0xC000) != 0x4000) in ata_id_rahead_enabled()
742 return id[ATA_ID_CFS_ENABLE_1] & (1 << 6); in ata_id_rahead_enabled()
745 static inline bool ata_id_wcache_enabled(const u16 *id) in ata_id_wcache_enabled() argument
747 if ((id[ATA_ID_CSF_DEFAULT] & 0xC000) != 0x4000) in ata_id_wcache_enabled()
749 return id[ATA_ID_CFS_ENABLE_1] & (1 << 5); in ata_id_wcache_enabled()
752 static inline bool ata_id_has_read_log_dma_ext(const u16 *id) in ata_id_has_read_log_dma_ext() argument
755 if (!(id[ATA_ID_CFS_ENABLE_2] & (1 << 15))) in ata_id_has_read_log_dma_ext()
762 if ((id[ATA_ID_COMMAND_SET_3] & 0xC008) == 0x4008 || in ata_id_has_read_log_dma_ext()
763 (id[ATA_ID_COMMAND_SET_4] & 0xC008) == 0x4008) in ata_id_has_read_log_dma_ext()
769 static inline bool ata_id_has_sense_reporting(const u16 *id) in ata_id_has_sense_reporting() argument
771 if (!(id[ATA_ID_CFS_ENABLE_2] & BIT(15))) in ata_id_has_sense_reporting()
773 if ((id[ATA_ID_COMMAND_SET_3] & (BIT(15) | BIT(14))) != BIT(14)) in ata_id_has_sense_reporting()
775 return id[ATA_ID_COMMAND_SET_3] & BIT(6); in ata_id_has_sense_reporting()
778 static inline bool ata_id_sense_reporting_enabled(const u16 *id) in ata_id_sense_reporting_enabled() argument
780 if (!ata_id_has_sense_reporting(id)) in ata_id_sense_reporting_enabled()
783 if ((id[ATA_ID_COMMAND_SET_4] & (BIT(15) | BIT(14))) != BIT(14)) in ata_id_sense_reporting_enabled()
785 return id[ATA_ID_COMMAND_SET_4] & BIT(6); in ata_id_sense_reporting_enabled()
800 static inline bool ata_id_sct_data_tables(const u16 *id) in ata_id_sct_data_tables() argument
802 return id[ATA_ID_SCT_CMD_XPORT] & (1 << 5) ? true : false; in ata_id_sct_data_tables()
805 static inline bool ata_id_sct_features_ctrl(const u16 *id) in ata_id_sct_features_ctrl() argument
807 return id[ATA_ID_SCT_CMD_XPORT] & (1 << 4) ? true : false; in ata_id_sct_features_ctrl()
810 static inline bool ata_id_sct_error_recovery_ctrl(const u16 *id) in ata_id_sct_error_recovery_ctrl() argument
812 return id[ATA_ID_SCT_CMD_XPORT] & (1 << 3) ? true : false; in ata_id_sct_error_recovery_ctrl()
815 static inline bool ata_id_sct_long_sector_access(const u16 *id) in ata_id_sct_long_sector_access() argument
817 return id[ATA_ID_SCT_CMD_XPORT] & (1 << 1) ? true : false; in ata_id_sct_long_sector_access()
820 static inline bool ata_id_sct_supported(const u16 *id) in ata_id_sct_supported() argument
822 return id[ATA_ID_SCT_CMD_XPORT] & (1 << 0) ? true : false; in ata_id_sct_supported()
838 static inline unsigned int ata_id_major_version(const u16 *id) in ata_id_major_version() argument
842 if (id[ATA_ID_MAJOR_VER] == 0xFFFF) in ata_id_major_version()
846 if (id[ATA_ID_MAJOR_VER] & (1 << mver)) in ata_id_major_version()
851 static inline bool ata_id_is_sata(const u16 *id) in ata_id_is_sata() argument
859 if (id[ATA_ID_HW_CONFIG] == 0 && (short)id[ATA_ID_MAJOR_VER] >= 0x0020) in ata_id_is_sata()
864 static inline bool ata_id_has_tpm(const u16 *id) in ata_id_has_tpm() argument
867 if (ata_id_major_version(id) < 8) in ata_id_has_tpm()
869 if ((id[48] & 0xC000) != 0x4000) in ata_id_has_tpm()
871 return id[48] & (1 << 0); in ata_id_has_tpm()
874 static inline bool ata_id_has_dword_io(const u16 *id) in ata_id_has_dword_io() argument
877 if (ata_id_major_version(id) > 7) in ata_id_has_dword_io()
879 return id[ATA_ID_DWORD_IO] & (1 << 0); in ata_id_has_dword_io()
882 static inline bool ata_id_has_trusted(const u16 *id) in ata_id_has_trusted() argument
884 if (ata_id_major_version(id) <= 7) in ata_id_has_trusted()
886 return id[ATA_ID_TRUSTED] & (1 << 0); in ata_id_has_trusted()
889 static inline bool ata_id_has_unload(const u16 *id) in ata_id_has_unload() argument
891 if (ata_id_major_version(id) >= 7 && in ata_id_has_unload()
892 (id[ATA_ID_CFSSE] & 0xC000) == 0x4000 && in ata_id_has_unload()
893 id[ATA_ID_CFSSE] & (1 << 13)) in ata_id_has_unload()
898 static inline bool ata_id_has_wwn(const u16 *id) in ata_id_has_wwn() argument
900 return (id[ATA_ID_CSF_DEFAULT] & 0xC100) == 0x4100; in ata_id_has_wwn()
903 static inline int ata_id_form_factor(const u16 *id) in ata_id_form_factor() argument
905 u16 val = id[168]; in ata_id_form_factor()
907 if (ata_id_major_version(id) < 7 || val == 0 || val == 0xffff) in ata_id_form_factor()
918 static inline int ata_id_rotation_rate(const u16 *id) in ata_id_rotation_rate() argument
920 u16 val = id[217]; in ata_id_rotation_rate()
922 if (ata_id_major_version(id) < 7 || val == 0 || val == 0xffff) in ata_id_rotation_rate()
931 static inline bool ata_id_has_ncq_send_and_recv(const u16 *id) in ata_id_has_ncq_send_and_recv() argument
933 return id[ATA_ID_SATA_CAPABILITY_2] & BIT(6); in ata_id_has_ncq_send_and_recv()
936 static inline bool ata_id_has_ncq_non_data(const u16 *id) in ata_id_has_ncq_non_data() argument
938 return id[ATA_ID_SATA_CAPABILITY_2] & BIT(5); in ata_id_has_ncq_non_data()
941 static inline bool ata_id_has_ncq_prio(const u16 *id) in ata_id_has_ncq_prio() argument
943 return id[ATA_ID_SATA_CAPABILITY] & BIT(12); in ata_id_has_ncq_prio()
946 static inline bool ata_id_has_trim(const u16 *id) in ata_id_has_trim() argument
948 if (ata_id_major_version(id) >= 7 && in ata_id_has_trim()
949 (id[ATA_ID_DATA_SET_MGMT] & 1)) in ata_id_has_trim()
954 static inline bool ata_id_has_zero_after_trim(const u16 *id) in ata_id_has_zero_after_trim() argument
957 if (ata_id_has_trim(id) && in ata_id_has_zero_after_trim()
958 (id[ATA_ID_ADDITIONAL_SUPP] & 0x4020) == 0x4020) in ata_id_has_zero_after_trim()
964 static inline bool ata_id_current_chs_valid(const u16 *id) in ata_id_current_chs_valid() argument
969 return (id[ATA_ID_FIELD_VALID] & 1) && /* Current translation valid */ in ata_id_current_chs_valid()
970 id[ATA_ID_CUR_CYLS] && /* cylinders in current translation */ in ata_id_current_chs_valid()
971 id[ATA_ID_CUR_HEADS] && /* heads in current translation */ in ata_id_current_chs_valid()
972 id[ATA_ID_CUR_HEADS] <= 16 && in ata_id_current_chs_valid()
973 id[ATA_ID_CUR_SECTORS]; /* sectors in current translation */ in ata_id_current_chs_valid()
976 static inline bool ata_id_is_cfa(const u16 *id) in ata_id_is_cfa() argument
978 if ((id[ATA_ID_CONFIG] == 0x848A) || /* Traditional CF */ in ata_id_is_cfa()
979 (id[ATA_ID_CONFIG] == 0x844A)) /* Delkin Devices CF */ in ata_id_is_cfa()
989 return (id[ATA_ID_COMMAND_SET_2] & 0xC004) == 0x4004; in ata_id_is_cfa()
992 static inline bool ata_id_is_ssd(const u16 *id) in ata_id_is_ssd() argument
994 return id[ATA_ID_ROT_SPEED] == 0x01; in ata_id_is_ssd()
997 static inline u8 ata_id_zoned_cap(const u16 *id) in ata_id_zoned_cap() argument
999 return (id[ATA_ID_ADDITIONAL_SUPP] & 0x3); in ata_id_zoned_cap()
1002 static inline bool ata_id_pio_need_iordy(const u16 *id, const u8 pio) in ata_id_pio_need_iordy() argument
1005 if (pio > 4 && ata_id_is_cfa(id)) in ata_id_pio_need_iordy()
1011 return ata_id_has_iordy(id); in ata_id_pio_need_iordy()
1058 static inline bool ata_id_is_lba_capacity_ok(u16 *id) in ata_id_is_lba_capacity_ok() argument
1063 if (id[ATA_ID_CYLS] == 0) in ata_id_is_lba_capacity_ok()
1066 lba_sects = ata_id_u32(id, ATA_ID_LBA_CAPACITY); in ata_id_is_lba_capacity_ok()
1074 if ((id[ATA_ID_CYLS] == 16383 || in ata_id_is_lba_capacity_ok()
1075 (id[ATA_ID_CYLS] == 4092 && id[ATA_ID_CUR_CYLS] == 16383)) && in ata_id_is_lba_capacity_ok()
1076 id[ATA_ID_SECTORS] == 63 && in ata_id_is_lba_capacity_ok()
1077 (id[ATA_ID_HEADS] == 15 || id[ATA_ID_HEADS] == 16) && in ata_id_is_lba_capacity_ok()
1078 (lba_sects >= 16383 * 63 * id[ATA_ID_HEADS])) in ata_id_is_lba_capacity_ok()
1081 chs_sects = id[ATA_ID_CYLS] * id[ATA_ID_HEADS] * id[ATA_ID_SECTORS]; in ata_id_is_lba_capacity_ok()
1093 *(__le32 *)&id[ATA_ID_LBA_CAPACITY] = __cpu_to_le32(lba_sects); in ata_id_is_lba_capacity_ok()
1100 static inline void ata_id_to_hd_driveid(u16 *id) in ata_id_to_hd_driveid() argument
1104 id[ATA_ID_MAX_MULTSECT] = __cpu_to_le16(id[ATA_ID_MAX_MULTSECT]); in ata_id_to_hd_driveid()
1105 id[ATA_ID_CAPABILITY] = __cpu_to_le16(id[ATA_ID_CAPABILITY]); in ata_id_to_hd_driveid()
1106 id[ATA_ID_OLD_PIO_MODES] = __cpu_to_le16(id[ATA_ID_OLD_PIO_MODES]); in ata_id_to_hd_driveid()
1107 id[ATA_ID_OLD_DMA_MODES] = __cpu_to_le16(id[ATA_ID_OLD_DMA_MODES]); in ata_id_to_hd_driveid()
1108 id[ATA_ID_MULTSECT] = __cpu_to_le16(id[ATA_ID_MULTSECT]); in ata_id_to_hd_driveid()
1111 *(u32 *)&id[ATA_ID_LBA_CAPACITY] = ata_id_u32(id, ATA_ID_LBA_CAPACITY); in ata_id_to_hd_driveid()
1112 *(u32 *)&id[ATA_ID_SPG] = ata_id_u32(id, ATA_ID_SPG); in ata_id_to_hd_driveid()
1115 *(u64 *)&id[ATA_ID_LBA_CAPACITY_2] = in ata_id_to_hd_driveid()
1116 ata_id_u64(id, ATA_ID_LBA_CAPACITY_2); in ata_id_to_hd_driveid()