^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #ifndef _SCSI_IOCTL_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #define _SCSI_IOCTL_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #define SCSI_IOCTL_SEND_COMMAND 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #define SCSI_IOCTL_TEST_UNIT_READY 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #define SCSI_IOCTL_BENCHMARK_COMMAND 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #define SCSI_IOCTL_SYNC 4 /* Request synchronous parameters */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #define SCSI_IOCTL_START_UNIT 5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #define SCSI_IOCTL_STOP_UNIT 6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) /* The door lock/unlock constants are compatible with Sun constants for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) the cdrom */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #define SCSI_IOCTL_DOORLOCK 0x5380 /* lock the eject mechanism */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #define SCSI_IOCTL_DOORUNLOCK 0x5381 /* unlock the mechanism */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #define SCSI_REMOVAL_PREVENT 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #define SCSI_REMOVAL_ALLOW 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) #ifdef __KERNEL__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) struct scsi_device;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) * Structures used for scsi_ioctl et al.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) typedef struct scsi_ioctl_command {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) unsigned int inlen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) unsigned int outlen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) unsigned char data[];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) } Scsi_Ioctl_Command;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) typedef struct scsi_idlun {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) __u32 dev_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) __u32 host_unique_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) } Scsi_Idlun;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) /* Fibre Channel WWN, port_id struct */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) typedef struct scsi_fctargaddress {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) __u32 host_port_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) unsigned char host_wwn[8]; // include NULL term.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) } Scsi_FCTargAddress;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) int scsi_ioctl_block_when_processing_errors(struct scsi_device *sdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) int cmd, bool ndelay);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) extern int scsi_ioctl(struct scsi_device *, int, void __user *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) extern int scsi_compat_ioctl(struct scsi_device *sdev, int cmd, void __user *arg);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) #endif /* __KERNEL__ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) #endif /* _SCSI_IOCTL_H */