52#ifndef _SCSI_SCSI_DA_H
53#define _SCSI_SCSI_DA_H 1
60#define SRZU_LUN_MASK 0xE0
74#define FU_FORMAT_MASK SRDD10_DLIST_FORMAT_MASK
75#define FU_BLOCK_FORMAT SRDD10_BLOCK_FORMAT
76#define FU_BFI_FORMAT SRDD10_BYTES_FROM_INDEX_FORMAT
77#define FU_PHYS_FORMAT SRDD10_PHYSICAL_SECTOR_FORMAT
79#define FU_FMT_DATA 0x10
97#define SRDD10_GLIST 0x08
98#define SRDD10_PLIST 0x10
99#define SRDD10_DLIST_FORMAT_MASK 0x07
100#define SRDD10_BLOCK_FORMAT 0x00
101#define SRDD10_EXT_BFI_FORMAT 0x01
102#define SRDD10_EXT_PHYS_FORMAT 0x02
103#define SRDD10_LONG_BLOCK_FORMAT 0x03
104#define SRDD10_BYTES_FROM_INDEX_FORMAT 0x04
105#define SRDD10_PHYSICAL_SECTOR_FORMAT 0x05
106#define SRDD10_VENDOR_FORMAT 0x06
110#define SRDD10_MAX_LENGTH 0xffff
118#define SSZ_SERVICE_ACTION_OVERWRITE 0x01
119#define SSZ_SERVICE_ACTION_BLOCK_ERASE 0x02
120#define SSZ_SERVICE_ACTION_CRYPTO_ERASE 0x03
121#define SSZ_SERVICE_ACTION_EXIT_MODE_FAILURE 0x1F
122#define SSZ_UNRESTRICTED_EXIT 0x20
123#define SSZ_IMMED 0x80
132#define SSZPL_INVERT 0x80
136#define SSZPL_MAX_PATTERN_LENGTH 65535
142#define SRDD12_GLIST 0x08
143#define SRDD12_PLIST 0x10
144#define SRDD12_DLIST_FORMAT_MASK 0x07
145#define SRDD12_BLOCK_FORMAT SRDD10_BLOCK_FORMAT
146#define SRDD12_BYTES_FROM_INDEX_FORMAT SRDD10_BYTES_FROM_INDEX_FORMAT
147#define SRDD12_PHYSICAL_SECTOR_FORMAT SRDD10_PHYSICAL_SECTOR_FORMAT
151#define SRDD12_MAX_LENGTH 0xffffffff
160#define ZBC_OUT_SA_CLOSE 0x01
161#define ZBC_OUT_SA_FINISH 0x02
162#define ZBC_OUT_SA_OPEN 0x03
163#define ZBC_OUT_SA_RWP 0x04
167#define ZBC_OUT_ALL 0x01
175#define ZBC_IN_SA_REPORT_ZONES 0x00
179#define ZBC_IN_PARTIAL 0x80
180#define ZBC_IN_REP_ALL_ZONES 0x00
181#define ZBC_IN_REP_EMPTY 0x01
182#define ZBC_IN_REP_IMP_OPEN 0x02
183#define ZBC_IN_REP_EXP_OPEN 0x03
184#define ZBC_IN_REP_CLOSED 0x04
185#define ZBC_IN_REP_FULL 0x05
186#define ZBC_IN_REP_READONLY 0x06
187#define ZBC_IN_REP_OFFLINE 0x07
188#define ZBC_IN_REP_RESET 0x10
189#define ZBC_IN_REP_NON_SEQ 0x11
190#define ZBC_IN_REP_NON_WP 0x3f
191#define ZBC_IN_REP_MASK 0x3f
197#define SRZ_TYPE_CONVENTIONAL 0x01
198#define SRZ_TYPE_SEQ_REQUIRED 0x02
199#define SRZ_TYPE_SEQ_PREFERRED 0x03
200#define SRZ_TYPE_MASK 0x0f
202#define SRZ_ZONE_COND_SHIFT 4
203#define SRZ_ZONE_COND_MASK 0xf0
204#define SRZ_ZONE_COND_NWP 0x00
205#define SRZ_ZONE_COND_EMPTY 0x10
206#define SRZ_ZONE_COND_IMP_OPEN 0x20
207#define SRZ_ZONE_COND_EXP_OPEN 0x30
208#define SRZ_ZONE_COND_CLOSED 0x40
209#define SRZ_ZONE_COND_READONLY 0xd0
210#define SRZ_ZONE_COND_FULL 0xe0
211#define SRZ_ZONE_COND_OFFLINE 0xf0
212#define SRZ_ZONE_NON_SEQ 0x02
213#define SRZ_ZONE_RESET 0x01
224#define SRZ_SAME_ALL_DIFFERENT 0x00
225#define SRZ_SAME_ALL_SAME 0x01
226#define SRZ_SAME_LAST_DIFFERENT 0x02
227#define SRZ_SAME_TYPES_DIFFERENT 0x03
228#define SRZ_SAME_MASK 0x0f
238#define REZERO_UNIT 0x01
239#define FORMAT_UNIT 0x04
240#define REASSIGN_BLOCKS 0x07
241#define MODE_SELECT 0x15
242#define MODE_SENSE 0x1a
243#define READ_FORMAT_CAPACITIES 0x23
244#define WRITE_AND_VERIFY 0x2e
246#define READ_DEFECT_DATA_10 0x37
250#define READ_DEFECT_DATA_12 0xb7
256#define FU_DLH_VS 0x01
257#define FU_DLH_IMMED 0x02
258#define FU_DLH_DSP 0x04
259#define FU_DLH_IP 0x08
260#define FU_DLH_STPF 0x10
261#define FU_DLH_DCRT 0x20
262#define FU_DLH_DPRY 0x40
263#define FU_DLH_FOV 0x80
270#define FU_INIT_NO_HDR 0x00
271#define FU_INIT_LBA_MSB 0x40
272#define FU_INIT_LBA_EACH 0x80
273#define FU_INIT_SI 0x20
275#define FU_INIT_PAT_DEFAULT 0x00
276#define FU_INIT_PAT_REPEAT 0x01
284#define SRFC_LUN_MASK 0xE0
294#define SVFY_LUN_MASK 0xE0
295#define SVFY_RELADR 0x01
296#define SVFY_BYTCHK 0x02
339#define SWVY_LUN_MASK 0xE0
340#define SWVY_RELADR 0x01
341#define SWVY_BYTECHK 0x02
377#define FCD_CODE_MASK 0x03
378#define FCD_UNFORMATTED 0x01
380#define FCD_FORMATTED 0x02
382#define FCD_NOMEDIA 0x03
404#define SRDDH10_GLIST 0x08
405#define SRDDH10_PLIST 0x10
406#define SRDDH10_DLIST_FORMAT_MASK 0x07
407#define SRDDH10_BLOCK_FORMAT 0x00
408#define SRDDH10_BYTES_FROM_INDEX_FORMAT 0x04
409#define SRDDH10_PHYSICAL_SECTOR_FORMAT 0x05
412#define SRDDH10_MAX_LENGTH SRDD10_MAX_LENGTH - \
413 sizeof(struct scsi_read_defect_data_hdr_10)
430#define SDD_EXT_BFI_MADS 0x80000000
431#define SDD_EXT_BFI_FLAG_MASK 0xf0000000
432#define SDD_EXT_BFI_ENTIRE_TRACK 0x0fffffff
440#define SDD_EXT_PHYS_MADS 0x80000000
441#define SDD_EXT_PHYS_FLAG_MASK 0xf0000000
442#define SDD_EXT_PHYS_ENTIRE_TRACK 0x0fffffff
449#define SRDDH12_GLIST 0x08
450#define SRDDH12_PLIST 0x10
451#define SRDDH12_DLIST_FORMAT_MASK 0x07
452#define SRDDH12_BLOCK_FORMAT 0x00
453#define SRDDH12_BYTES_FROM_INDEX_FORMAT 0x04
454#define SRDDH12_PHYSICAL_SECTOR_FORMAT 0x05
458#define SRDDH12_MAX_LENGTH SRDD12_MAX_LENGTH - \
459 sizeof(struct scsi_read_defect_data_hdr_12)
466#define SMS_FORMAT_DEVICE_PAGE 0x03
468#define SMS_FORMAT_DEVICE_PLEN 0x16
488#define DISK_FMT_SURF 0x10
489#define DISK_FMT_RMB 0x20
490#define DISK_FMT_HSEC 0x40
491#define DISK_FMT_SSEC 0x80
498#define SMS_RIGID_GEOMETRY_PAGE 0x04
500#define SMS_RIGID_GEOMETRY_PLEN 0x16
526#define SMS_FLEXIBLE_GEOMETRY_PAGE 0x05
528#define SMS_FLEXIBLE_GEOMETRY_PLEN 0x1E
592#define SMS_RIGID_DISK_PAGE 0x04
601#define SRDP_RPL_DISABLED 0x00
602#define SRDP_RPL_SLAVE 0x01
603#define SRDP_RPL_MASTER 0x02
604#define SRDP_RPL_MASTER_CONTROL 0x03
613#define SMS_RW_ERROR_RECOVERY_PAGE 0x01
616#define SMS_RWER_AWRE 0x80
617#define SMS_RWER_ARRE 0x40
618#define SMS_RWER_TB 0x20
619#define SMS_RWER_RC 0x10
620#define SMS_RWER_EER 0x08
621#define SMS_RWER_PER 0x04
622#define SMS_RWER_DTE 0x02
623#define SMS_RWER_DCR 0x01
629#define SMS_RWER_LBPERE 0x80
637#define SMS_VERIFY_ERROR_RECOVERY_PAGE 0x07
640#define SMS_VER_EER 0x08
641#define SMS_VER_PER 0x04
642#define SMS_VER_DTE 0x02
643#define SMS_VER_DCR 0x01
658 u_int8_t tag_action, u_int8_t byte2, u_int16_t ileave,
659 u_int8_t *data_ptr, u_int32_t dxfer_len,
660 u_int8_t sense_len, u_int32_t timeout);
662void scsi_read_defects(
struct ccb_scsiio *csio, uint32_t retries,
664 uint8_t tag_action, uint8_t list_format,
665 uint32_t addr_desc_index, uint8_t *data_ptr,
666 uint32_t dxfer_len,
int minimum_cmd_size,
667 uint8_t sense_len, uint32_t timeout);
671 u_int8_t tag_action, u_int8_t byte2, u_int16_t control,
672 u_int8_t *data_ptr, u_int32_t dxfer_len, u_int8_t sense_len,
679 uint8_t tag_action, uint8_t service_action, uint64_t zone_id,
680 uint8_t zone_flags, uint8_t *data_ptr, uint32_t dxfer_len,
681 uint8_t sense_len, uint32_t timeout);
685 uint8_t tag_action, uint8_t service_action,
686 uint64_t zone_start_lba, uint8_t zone_options,
687 uint8_t *data_ptr, uint32_t dxfer_len, uint8_t sense_len,
692 uint8_t tag_action,
int use_ncq,
693 uint8_t zm_action, uint64_t zone_id,
694 uint8_t zone_flags, uint8_t *data_ptr,
695 uint32_t dxfer_len, uint8_t *cdb_storage,
696 size_t cdb_storage_len, uint8_t sense_len,
701 uint8_t tag_action,
int use_ncq,
702 uint8_t zm_action, uint64_t zone_id,
703 uint8_t zone_flags, uint8_t *data_ptr,
704 uint32_t dxfer_len, uint8_t *cdb_storage,
705 size_t cdb_storage_len, uint8_t sense_len,
__BEGIN_DECLS void scsi_zbc_out(struct ccb_scsiio *csio, uint32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), uint8_t tag_action, uint8_t service_action, uint64_t zone_id, uint8_t zone_flags, uint8_t *data_ptr, uint32_t dxfer_len, uint8_t sense_len, uint32_t timeout)
int scsi_ata_zac_mgmt_out(struct ccb_scsiio *csio, uint32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), uint8_t tag_action, int use_ncq, uint8_t zm_action, uint64_t zone_id, uint8_t zone_flags, uint8_t *data_ptr, uint32_t dxfer_len, uint8_t *cdb_storage, size_t cdb_storage_len, uint8_t sense_len, uint32_t timeout)
int scsi_ata_zac_mgmt_in(struct ccb_scsiio *csio, uint32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), uint8_t tag_action, int use_ncq, uint8_t zm_action, uint64_t zone_id, uint8_t zone_flags, uint8_t *data_ptr, uint32_t dxfer_len, uint8_t *cdb_storage, size_t cdb_storage_len, uint8_t sense_len, uint32_t timeout)
void scsi_zbc_in(struct ccb_scsiio *csio, uint32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), uint8_t tag_action, uint8_t service_action, uint64_t zone_start_lba, uint8_t zone_options, uint8_t *data_ptr, uint32_t dxfer_len, uint8_t sense_len, uint32_t timeout)
u_int8_t medium_rot_rate_1
u_int8_t medium_rot_rate_0
u_int8_t medium_rot_rate_0
u_int8_t medium_rot_rate_1
u_int8_t read_retry_count
u_int8_t recovery_time_limit[2]
u_int8_t write_retry_count
u_int8_t head_offset_count
u_int8_t data_strobe_offset_cnt
u_int8_t recovery_time_limit[2]
u_int8_t read_retry_count
u_int8_t bytes_from_index[4]
uint8_t alt_tracks_per_lun[2]
uint8_t tracks_per_zone[2]
uint8_t bytes_per_sector[2]
uint8_t alt_tracks_per_zone[2]
uint8_t alt_sectors_per_zone[2]
uint8_t sectors_per_track[2]
uint8_t address_descriptor_index[4]
struct scsi_reassign_blocks_data::@21 defect_descriptor[1]
uint8_t write_pointer_lba[8]
uint8_t zone_start_lba[8]
struct scsi_report_zones_desc desc_list[]
uint8_t start_reduced_current[3]
uint8_t rotational_offset
uint8_t start_write_precomp[3]
uint8_t landing_zone_cylinder[3]
uint8_t zone_start_lba[8]
struct disk_pages::rigid_geometry_page rigid_geometry
struct disk_pages::flexible_disk_page flexible_disk
struct disk_pages::format_device_page format_device