vserver 1.9.5.x5
[linux-2.6.git] / drivers / scsi / ipr.h
index 6d616ac..2f723a7 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * ipr.h -- driver for IBM Power Linux RAID adapters
  *
- * Written By: Brian King, IBM Corporation
+ * Written By: Brian King <brking@us.ibm.com>, IBM Corporation
  *
  * Copyright (C) 2003, 2004 IBM Corporation
  *
@@ -19,6 +19,8 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
+ * Alan Cox <alan@redhat.com> - Removed several careless u32/dma_addr_t errors
+ *                             that broke 64bit platforms.
  */
 
 #ifndef _IPR_H
 #include <linux/types.h>
 #include <linux/completion.h>
 #include <linux/list.h>
+#include <linux/kref.h>
 #include <scsi/scsi.h>
 #include <scsi/scsi_cmnd.h>
-#ifdef CONFIG_KDB
-#include <linux/kdb.h>
-#endif
 
 /*
  * Literals
  */
-#define IPR_DRIVER_VERSION "2.0.10"
-#define IPR_DRIVER_DATE "(June 7, 2004)"
+#define IPR_DRIVER_VERSION "2.0.12"
+#define IPR_DRIVER_DATE "(December 14, 2004)"
 
 /*
  * IPR_DBG_TRACE: Setting this to 1 will turn on some general function tracing
@@ -72,6 +72,8 @@
 #define IPR_SUBS_DEV_ID_5703   0x0278
 #define IPR_SUBS_DEV_ID_572E  0x02D3
 #define IPR_SUBS_DEV_ID_573D  0x02D4
+#define IPR_SUBS_DEV_ID_570F   0x02BD
+#define IPR_SUBS_DEV_ID_571B   0x02BE
 
 #define IPR_NAME                               "ipr"
 
 /*
  * Adapter Commands
  */
+#define IPR_QUERY_RSRC_STATE                           0xC2
 #define IPR_RESET_DEVICE                               0xC3
 #define        IPR_RESET_TYPE_SELECT                           0x80
 #define        IPR_LUN_RESET                                   0x40
 #define        IPR_BUS_RESET                                   0x10
 #define IPR_ID_HOST_RR_Q                               0xC4
 #define IPR_QUERY_IOA_CONFIG                           0xC5
-#define IPR_ABORT_TASK                                 0xC7
 #define IPR_CANCEL_ALL_REQUESTS                        0xCE
 #define IPR_HOST_CONTROLLED_ASYNC                      0xCF
 #define        IPR_HCAM_CDB_OP_CODE_CONFIG_CHANGE      0x01
@@ -667,7 +669,7 @@ struct ipr_hcam {
 
 struct ipr_hostrcb {
        struct ipr_hcam hcam;
-       u32 hostrcb_dma;
+       dma_addr_t hostrcb_dma;
        struct list_head queue;
 };
 
@@ -745,7 +747,7 @@ struct ipr_misc_cbs {
        struct ipr_supported_device supp_dev;
 };
 
-struct ipr_interrupts {
+struct ipr_interrupt_offsets {
        unsigned long set_interrupt_mask_reg;
        unsigned long clr_interrupt_mask_reg;
        unsigned long sense_interrupt_mask_reg;
@@ -758,10 +760,23 @@ struct ipr_interrupts {
        unsigned long clr_uproc_interrupt_reg;
 };
 
+struct ipr_interrupts {
+       void __iomem *set_interrupt_mask_reg;
+       void __iomem *clr_interrupt_mask_reg;
+       void __iomem *sense_interrupt_mask_reg;
+       void __iomem *clr_interrupt_reg;
+
+       void __iomem *sense_interrupt_reg;
+       void __iomem *ioarrin_reg;
+       void __iomem *sense_uproc_interrupt_reg;
+       void __iomem *set_uproc_interrupt_reg;
+       void __iomem *clr_uproc_interrupt_reg;
+};
+
 struct ipr_chip_cfg_t {
        u32 mailbox;
        u8 cache_line_size;
-       struct ipr_interrupts regs;
+       struct ipr_interrupt_offsets regs;
 };
 
 enum ipr_shutdown_type {
@@ -850,7 +865,7 @@ struct ipr_ioa_cfg {
        char cfg_table_start[8];
 #define IPR_CFG_TBL_START              "cfg"
        struct ipr_config_table *cfg_table;
-       u32 cfg_table_dma;
+       dma_addr_t cfg_table_dma;
 
        char resource_table_label[8];
 #define IPR_RES_TABLE_LABEL            "res_tbl"
@@ -861,12 +876,12 @@ struct ipr_ioa_cfg {
        char ipr_hcam_label[8];
 #define IPR_HCAM_LABEL                 "hcams"
        struct ipr_hostrcb *hostrcb[IPR_NUM_HCAMS];
-       u32 hostrcb_dma[IPR_NUM_HCAMS];
+       dma_addr_t hostrcb_dma[IPR_NUM_HCAMS];
        struct list_head hostrcb_free_q;
        struct list_head hostrcb_pending_q;
 
        u32 *host_rrq;
-       u32 host_rrq_dma;
+       dma_addr_t host_rrq_dma;
 #define IPR_HRRQ_REQ_RESP_HANDLE_MASK  0xfffffffc
 #define IPR_HRRQ_RESP_BIT_SET                  0x00000002
 #define IPR_HRRQ_TOGGLE_BIT                            0x00000001
@@ -880,12 +895,11 @@ struct ipr_ioa_cfg {
 
        const struct ipr_chip_cfg_t *chip_cfg;
 
-       unsigned long hdw_dma_regs;     /* iomapped PCI memory space */
+       void __iomem *hdw_dma_regs;     /* iomapped PCI memory space */
        unsigned long hdw_dma_regs_pci; /* raw PCI memory space */
-       unsigned long ioa_mailbox;
+       void __iomem *ioa_mailbox;
        struct ipr_interrupts regs;
 
-       u32 pci_cfg_buf[64];
        u16 saved_pcix_cmd_reg;
        u16 reset_retries;
 
@@ -905,7 +919,7 @@ struct ipr_ioa_cfg {
        enum ipr_sdt_state sdt_state;
 
        struct ipr_misc_cbs *vpd_cbs;
-       u32 vpd_cbs_dma;
+       dma_addr_t vpd_cbs_dma;
 
        struct pci_pool *ipr_cmd_pool;
 
@@ -1029,7 +1043,7 @@ struct ipr_ioa_dump {
 }__attribute__((packed, aligned (4)));
 
 struct ipr_dump {
-       struct kobject kobj;
+       struct kref kref;
        struct ipr_ioa_cfg *ioa_cfg;
        struct ipr_driver_dump driver_dump;
        struct ipr_ioa_dump ioa_dump;
@@ -1043,20 +1057,20 @@ struct ipr_error_table_t {
 };
 
 struct ipr_software_inq_lid_info {
-    u32  load_id;
-    u32  timestamp[3];
+       u32 load_id;
+       u32 timestamp[3];
 }__attribute__((packed, aligned (4)));
 
 struct ipr_ucode_image_header {
-    u32 header_length;
-    u32 lid_table_offset;
-    u8 major_release;
-    u8 card_type;
-    u8 minor_release[2];
-    u8 reserved[20];
-    char eyecatcher[16];
-    u32 num_lids;
-    struct ipr_software_inq_lid_info lid[1];
+       u32 header_length;
+       u32 lid_table_offset;
+       u8 major_release;
+       u8 card_type;
+       u8 minor_release[2];
+       u8 reserved[20];
+       char eyecatcher[16];
+       u32 num_lids;
+       struct ipr_software_inq_lid_info lid[1];
 }__attribute__((packed, aligned (4)));
 
 /*
@@ -1068,18 +1082,6 @@ struct ipr_ucode_image_header {
 #define IPR_DBG_CMD(CMD)
 #endif
 
-#define ipr_breakpoint_data KERN_ERR IPR_NAME\
-": %s: %s: Line: %d ioa_cfg: %p\n", __FILE__, \
-__FUNCTION__, __LINE__, ioa_cfg
-
-#if defined(CONFIG_KDB) && !defined(CONFIG_PPC_ISERIES)
-#define ipr_breakpoint {printk(ipr_breakpoint_data); KDB_ENTER();}
-#define ipr_breakpoint_or_die {printk(ipr_breakpoint_data); KDB_ENTER();}
-#else
-#define ipr_breakpoint
-#define ipr_breakpoint_or_die panic(ipr_breakpoint_data)
-#endif
-
 #ifdef CONFIG_SCSI_IPR_TRACE
 #define ipr_create_trace_file(kobj, attr) sysfs_create_bin_file(kobj, attr)
 #define ipr_remove_trace_file(kobj, attr) sysfs_remove_bin_file(kobj, attr)