Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
1da177e4 LT |
2 | #ifndef _SCSI_SCSI_DRIVER_H |
3 | #define _SCSI_SCSI_DRIVER_H | |
4 | ||
159b2cbf | 5 | #include <linux/blk_types.h> |
1da177e4 | 6 | #include <linux/device.h> |
e7f76552 | 7 | #include <scsi/scsi_cmnd.h> |
1da177e4 LT |
8 | |
9 | struct module; | |
a1b73fc1 | 10 | struct request; |
1da177e4 LT |
11 | |
12 | struct scsi_driver { | |
1da177e4 LT |
13 | struct device_driver gendrv; |
14 | ||
1da177e4 | 15 | void (*rescan)(struct device *); |
159b2cbf | 16 | blk_status_t (*init_command)(struct scsi_cmnd *); |
a1b73fc1 | 17 | void (*uninit_command)(struct scsi_cmnd *); |
7b3d9545 | 18 | int (*done)(struct scsi_cmnd *); |
2451079b | 19 | int (*eh_action)(struct scsi_cmnd *, int); |
7a38dc0b | 20 | void (*eh_reset)(struct scsi_cmnd *); |
1da177e4 LT |
21 | }; |
22 | #define to_scsi_driver(drv) \ | |
23 | container_of((drv), struct scsi_driver, gendrv) | |
24 | ||
65a09ba2 KK |
25 | #define scsi_register_driver(drv) \ |
26 | __scsi_register_driver(drv, THIS_MODULE) | |
27 | int __scsi_register_driver(struct device_driver *, struct module *); | |
1da177e4 LT |
28 | #define scsi_unregister_driver(drv) \ |
29 | driver_unregister(drv); | |
30 | ||
31 | extern int scsi_register_interface(struct class_interface *); | |
32 | #define scsi_unregister_interface(intf) \ | |
33 | class_interface_unregister(intf) | |
34 | ||
e7f76552 CH |
35 | /* make sure not to use it with passthrough commands */ |
36 | static inline struct scsi_driver *scsi_cmd_to_driver(struct scsi_cmnd *cmd) | |
37 | { | |
38 | return to_scsi_driver(cmd->device->sdev_gendev.driver); | |
39 | } | |
40 | ||
1da177e4 | 41 | #endif /* _SCSI_SCSI_DRIVER_H */ |