65#ifndef _SCSI_SCSI_CH_H
66#define _SCSI_SCSI_CH_H 1
80#define EXCHANGE_MEDIUM 0xa6
87#define EXCHANGE_MEDIUM_INV1 0x01
88#define EXCHANGE_MEDIUM_INV2 0x02
98#define INITIALIZE_ELEMENT_STATUS 0x07
116#define MOVE_MEDIUM_INVERT 0x01
131#define POSITION_TO_ELEMENT_INVERT 0x01
141#define READ_ELEMENT_STATUS_VOLTAG 0x10
146#define READ_ELEMENT_STATUS_DVCID 0x01
147#define READ_ELEMENT_STATUS_CURDATA 0x02
157#define REQUEST_VOLUME_ELEMENT_ADDRESS_VOLTAG 0x10
172#define CH_ELEMENT_ADDR_ASSIGN_PAGE 0x1D
173#define CH_TRANS_GEOM_PARAMS_PAGE 0x1E
174#define CH_DEVICE_CAP_PAGE 0x1F
190#define READ_ELEMENT_STATUS_AVOLTAG 0x40
191#define READ_ELEMENT_STATUS_PVOLTAG 0x80
209#define READ_ELEMENT_STATUS_CODE_SET(p) ((p) & 0x0F)
210#define READ_ELEMENT_STATUS_PROTOCOL_ID(p) ((p) >> 4)
213#define READ_ELEMENT_STATUS_PIV_SET 0x80
214#define READ_ELEMENT_STATUS_ASSOCIATION(p) ((p) >> 4)
215#define READ_ELEMENT_STATUS_DESIGNATOR_TYPE(p) ((p) & 0x0F)
226#define READ_ELEMENT_STATUS_FULL 0x01
227#define READ_ELEMENT_STATUS_IMPEXP 0x02
228#define READ_ELEMENT_STATUS_EXCEPT 0x04
229#define READ_ELEMENT_STATUS_ACCESS 0x08
230#define READ_ELEMENT_STATUS_EXENAB 0x10
231#define READ_ELEMENT_STATUS_INENAB 0x20
233#define READ_ELEMENT_STATUS_MT_MASK1 0x05
234#define READ_ELEMENT_STATUS_ST_MASK1 0x0c
235#define READ_ELEMENT_STATUS_IE_MASK1 0x3f
236#define READ_ELEMENT_STATUS_DT_MASK1 0x0c
246#define READ_ELEMENT_STATUS_DT_LUNMASK 0x07
247#define READ_ELEMENT_STATUS_DT_LUVALID 0x10
248#define READ_ELEMENT_STATUS_DT_IDVALID 0x20
249#define READ_ELEMENT_STATUS_DT_NOTBUS 0x80
260#define READ_ELEMENT_STATUS_INVERT 0x40
261#define READ_ELEMENT_STATUS_SVALID 0x80
262#define READ_ELEMENT_STATUS_ED 0x80
263#define READ_ELEMENT_STATUS_MEDIA_TYPE_MASK 0x07
285#define ELEMENT_TYPE_MASK 0x0f
286#define ELEMENT_TYPE_ALL 0x00
287#define ELEMENT_TYPE_MT 0x01
288#define ELEMENT_TYPE_ST 0x02
289#define ELEMENT_TYPE_IE 0x03
290#define ELEMENT_TYPE_DT 0x04
295#define PGCODE_MASK 0x3f
296#define PGCODE_PS 0x80
304#define SEND_VOLUME_TAG 0xb6
310#define SEND_VOLUME_TAG_ASSERT_PRIMARY 0x08
311#define SEND_VOLUME_TAG_ASSERT_ALTERNATE 0x09
312#define SEND_VOLUME_TAG_REPLACE_PRIMARY 0x0a
313#define SEND_VOLUME_TAG_REPLACE_ALTERNATE 0x0b
314#define SEND_VOLUME_TAG_UNDEFINED_PRIMARY 0x0c
315#define SEND_VOLUME_TAG_UNDEFINED_ALTERNATE 0x0d
373#define MOVE_TO_MT 0x01
374#define MOVE_TO_ST 0x02
375#define MOVE_TO_IE 0x04
376#define MOVE_TO_DT 0x08
384#define EXCHANGE_WITH_MT 0x01
385#define EXCHANGE_WITH_ST 0x02
386#define EXCHANGE_WITH_IE 0x04
387#define EXCHANGE_WITH_DT 0x08
466#define CAN_ROTATE 0x01
475 u_int8_t tag_action, u_int32_t tea, u_int32_t src,
476 u_int32_t dst,
int invert, u_int8_t sense_len,
481 u_int8_t tag_action, u_int32_t tea, u_int32_t src,
482 u_int32_t dst1, u_int32_t dst2,
int invert1,
483 int invert2, u_int8_t sense_len, u_int32_t timeout);
487 u_int8_t tag_action, u_int32_t tea, u_int32_t dst,
488 int invert, u_int8_t sense_len,
493 u_int8_t tag_action,
int voltag, u_int32_t sea,
494 int curdata,
int dvcid,
495 u_int32_t count, u_int8_t *data_ptr,
496 u_int32_t dxfer_len, u_int8_t sense_len,
501 u_int8_t tag_action, u_int8_t sense_len,
506 u_int16_t element_address,
507 u_int8_t send_action_code,
509 u_int8_t sense_len, u_int32_t timeout);
void scsi_read_element_status(struct ccb_scsiio *csio, u_int32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), u_int8_t tag_action, int voltag, u_int32_t sea, int curdata, int dvcid, u_int32_t count, u_int8_t *data_ptr, u_int32_t dxfer_len, u_int8_t sense_len, u_int32_t timeout)
void scsi_send_volume_tag(struct ccb_scsiio *csio, u_int32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), u_int8_t tag_action, u_int16_t element_address, u_int8_t send_action_code, struct scsi_send_volume_tag_parameters *parameters, u_int8_t sense_len, u_int32_t timeout)
void scsi_position_to_element(struct ccb_scsiio *csio, u_int32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), u_int8_t tag_action, u_int32_t tea, u_int32_t dst, int invert, u_int8_t sense_len, u_int32_t timeout)
void scsi_initialize_element_status(struct ccb_scsiio *csio, u_int32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), u_int8_t tag_action, u_int8_t sense_len, u_int32_t timeout)
void scsi_exchange_medium(struct ccb_scsiio *csio, u_int32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), u_int8_t tag_action, u_int32_t tea, u_int32_t src, u_int32_t dst1, u_int32_t dst2, int invert1, int invert2, u_int8_t sense_len, u_int32_t timeout)
__BEGIN_DECLS void scsi_move_medium(struct ccb_scsiio *csio, u_int32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), u_int8_t tag_action, u_int32_t tea, u_int32_t src, u_int32_t dst, int invert, u_int8_t sense_len, u_int32_t timeout)
u_int8_t move_from[CHET_MAX+1]
u_int8_t exchange_with[CHET_MAX+1]
union read_element_status_descriptor::@16 dt_or_obsolete
struct volume_tag pvoltag
struct volume_tag voltag[2]
struct read_element_status_descriptor::@16::@18 scsi_2
struct read_element_status_device_id devid
union read_element_status_descriptor::@17 voltag_devid
u_int8_t reserved_or_obsolete[3]
struct read_element_status_descriptor::@17::@19 pvol_and_devid
struct read_element_status_descriptor::@17::@20 vol_tags_and_devid
u_int8_t piv_assoc_designator_type
u_int8_t designator_length