xref: /aosp_15_r20/external/kernel-headers/original/scsi/scsi_ioctl.h (revision f80ad8b4341604f5951dab671d41019a6d7087ce)
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