]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/scsi/ibmvscsi/ibmvscsi.h
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
[linux-2.6-omap-h63xx.git] / drivers / scsi / ibmvscsi / ibmvscsi.h
index 77cc1d40f5bbc9c794e233758a693097500ea7c3..46e850e302c7918306d96218ff606229ae230183 100644 (file)
@@ -45,6 +45,7 @@ struct Scsi_Host;
 #define MAX_INDIRECT_BUFS 10
 
 #define IBMVSCSI_MAX_REQUESTS_DEFAULT 100
+#define IBMVSCSI_MAX_CMDS_PER_LUN 64
 
 /* ------------------------------------------------------------
  * Data Structures
@@ -69,6 +70,7 @@ struct srp_event_struct {
        union viosrp_iu iu;
        void (*cmnd_done) (struct scsi_cmnd *);
        struct completion comp;
+       struct timer_list timer;
        union viosrp_iu *sync_srp;
        struct srp_direct_buf *ext_list;
        dma_addr_t ext_list_token;
@@ -96,21 +98,25 @@ struct ibmvscsi_host_data {
 };
 
 /* routines for managing a command/response queue */
-int ibmvscsi_init_crq_queue(struct crq_queue *queue,
-                           struct ibmvscsi_host_data *hostdata,
-                           int max_requests);
-void ibmvscsi_release_crq_queue(struct crq_queue *queue,
-                               struct ibmvscsi_host_data *hostdata,
-                               int max_requests);
-int ibmvscsi_reset_crq_queue(struct crq_queue *queue,
-                             struct ibmvscsi_host_data *hostdata);
-
-int ibmvscsi_reenable_crq_queue(struct crq_queue *queue,
-                               struct ibmvscsi_host_data *hostdata);
-
 void ibmvscsi_handle_crq(struct viosrp_crq *crq,
                         struct ibmvscsi_host_data *hostdata);
-int ibmvscsi_send_crq(struct ibmvscsi_host_data *hostdata,
-                     u64 word1, u64 word2);
+
+struct ibmvscsi_ops {
+       int (*init_crq_queue)(struct crq_queue *queue,
+                             struct ibmvscsi_host_data *hostdata,
+                             int max_requests);
+       void (*release_crq_queue)(struct crq_queue *queue,
+                                 struct ibmvscsi_host_data *hostdata,
+                                 int max_requests);
+       int (*reset_crq_queue)(struct crq_queue *queue,
+                              struct ibmvscsi_host_data *hostdata);
+       int (*reenable_crq_queue)(struct crq_queue *queue,
+                                 struct ibmvscsi_host_data *hostdata);
+       int (*send_crq)(struct ibmvscsi_host_data *hostdata,
+                      u64 word1, u64 word2);
+};
+
+extern struct ibmvscsi_ops iseriesvscsi_ops;
+extern struct ibmvscsi_ops rpavscsi_ops;
 
 #endif                         /* IBMVSCSI_H */