^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_SCSI_DRIVER_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #define _SCSI_SCSI_DRIVER_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #include <linux/blk_types.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #include <linux/device.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) struct module;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) struct request;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) struct scsi_cmnd;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) struct scsi_device;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) struct scsi_driver {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) struct device_driver gendrv;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) void (*rescan)(struct device *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) blk_status_t (*init_command)(struct scsi_cmnd *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) void (*uninit_command)(struct scsi_cmnd *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) int (*done)(struct scsi_cmnd *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) int (*eh_action)(struct scsi_cmnd *, int);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) void (*eh_reset)(struct scsi_cmnd *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) #define to_scsi_driver(drv) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) container_of((drv), struct scsi_driver, gendrv)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) extern int scsi_register_driver(struct device_driver *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) #define scsi_unregister_driver(drv) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) driver_unregister(drv);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) extern int scsi_register_interface(struct class_interface *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) #define scsi_unregister_interface(intf) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) class_interface_unregister(intf)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) #endif /* _SCSI_SCSI_DRIVER_H */