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