| /* SPDX-License-Identifier: GPL-2.0 */ | 
 | #ifndef _SCSI_SCSI_DRIVER_H | 
 | #define _SCSI_SCSI_DRIVER_H | 
 |  | 
 | #include <linux/device.h> | 
 |  | 
 | struct module; | 
 | struct request; | 
 | struct scsi_cmnd; | 
 | struct scsi_device; | 
 |  | 
 | struct scsi_driver { | 
 | 	struct device_driver	gendrv; | 
 |  | 
 | 	void (*rescan)(struct device *); | 
 | 	int (*init_command)(struct scsi_cmnd *); | 
 | 	void (*uninit_command)(struct scsi_cmnd *); | 
 | 	int (*done)(struct scsi_cmnd *); | 
 | 	int (*eh_action)(struct scsi_cmnd *, int); | 
 | 	void (*eh_reset)(struct scsi_cmnd *); | 
 | }; | 
 | #define to_scsi_driver(drv) \ | 
 | 	container_of((drv), struct scsi_driver, gendrv) | 
 |  | 
 | extern int scsi_register_driver(struct device_driver *); | 
 | #define scsi_unregister_driver(drv) \ | 
 | 	driver_unregister(drv); | 
 |  | 
 | extern int scsi_register_interface(struct class_interface *); | 
 | #define scsi_unregister_interface(intf) \ | 
 | 	class_interface_unregister(intf) | 
 |  | 
 | #endif /* _SCSI_SCSI_DRIVER_H */ |