target: pass sense_reason as a return value
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / include / target / target_core_backend.h
index 2acd54018b64dd60a271ebd618fc02a0634e1b85..aa868090b9ab8e9aaadc943e3054291117e6a1cf 100644 (file)
@@ -9,6 +9,8 @@ struct se_subsystem_api {
        struct list_head sub_api_list;
 
        char name[16];
+       char inquiry_prod[16];
+       char inquiry_rev[4];
        struct module *owner;
 
        u8 transport_type;
@@ -16,47 +18,45 @@ struct se_subsystem_api {
        int (*attach_hba)(struct se_hba *, u32);
        void (*detach_hba)(struct se_hba *);
        int (*pmode_enable_hba)(struct se_hba *, unsigned long);
-       void *(*allocate_virtdevice)(struct se_hba *, const char *);
-       struct se_device *(*create_virtdevice)(struct se_hba *,
-                               struct se_subsystem_dev *, void *);
-       void (*free_device)(void *);
+
+       struct se_device *(*alloc_device)(struct se_hba *, const char *);
+       int (*configure_device)(struct se_device *);
+       void (*free_device)(struct se_device *device);
+
+       ssize_t (*set_configfs_dev_params)(struct se_device *,
+                                          const char *, ssize_t);
+       ssize_t (*show_configfs_dev_params)(struct se_device *, char *);
+
        void (*transport_complete)(struct se_cmd *cmd,
                                   struct scatterlist *,
                                   unsigned char *);
 
-       int (*parse_cdb)(struct se_cmd *cmd);
-       ssize_t (*check_configfs_dev_params)(struct se_hba *,
-                       struct se_subsystem_dev *);
-       ssize_t (*set_configfs_dev_params)(struct se_hba *,
-                       struct se_subsystem_dev *, const char *, ssize_t);
-       ssize_t (*show_configfs_dev_params)(struct se_hba *,
-                       struct se_subsystem_dev *, char *);
-       u32 (*get_device_rev)(struct se_device *);
+       sense_reason_t (*parse_cdb)(struct se_cmd *cmd);
        u32 (*get_device_type)(struct se_device *);
        sector_t (*get_blocks)(struct se_device *);
        unsigned char *(*get_sense_buffer)(struct se_cmd *);
 };
 
-struct spc_ops {
-       int (*execute_rw)(struct se_cmd *cmd);
-       int (*execute_sync_cache)(struct se_cmd *cmd);
-       int (*execute_write_same)(struct se_cmd *cmd);
-       int (*execute_unmap)(struct se_cmd *cmd);
+struct sbc_ops {
+       sense_reason_t (*execute_rw)(struct se_cmd *cmd);
+       sense_reason_t (*execute_sync_cache)(struct se_cmd *cmd);
+       sense_reason_t (*execute_write_same)(struct se_cmd *cmd);
+       sense_reason_t (*execute_unmap)(struct se_cmd *cmd);
 };
 
 int    transport_subsystem_register(struct se_subsystem_api *);
 void   transport_subsystem_release(struct se_subsystem_api *);
 
-struct se_device *transport_add_device_to_core_hba(struct se_hba *,
-               struct se_subsystem_api *, struct se_subsystem_dev *, u32,
-               void *, struct se_dev_limits *, const char *, const char *);
-
 void   target_complete_cmd(struct se_cmd *, u8);
 
-int    sbc_parse_cdb(struct se_cmd *cmd, struct spc_ops *ops);
-int    spc_parse_cdb(struct se_cmd *cmd, unsigned int *size);
+sense_reason_t spc_parse_cdb(struct se_cmd *cmd, unsigned int *size);
+sense_reason_t spc_emulate_report_luns(struct se_cmd *cmd);
 int    spc_get_write_same_sectors(struct se_cmd *cmd);
 
+sense_reason_t sbc_parse_cdb(struct se_cmd *cmd, struct sbc_ops *ops);
+u32    sbc_get_device_rev(struct se_device *dev);
+u32    sbc_get_device_type(struct se_device *dev);
+
 void   transport_set_vpd_proto_id(struct t10_vpd *, unsigned char *);
 int    transport_set_vpd_assoc(struct t10_vpd *, unsigned char *);
 int    transport_set_vpd_ident_type(struct t10_vpd *, unsigned char *);