aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/megaraid/megaraid_sas.h
diff options
context:
space:
mode:
authorSteven Whitehouse <steve@men-an-tol.chygwyn.com>2006-02-23 04:49:43 -0500
committerSteven Whitehouse <swhiteho@redhat.com>2006-02-23 04:49:43 -0500
commitd35462b4bb847b68321c55e95c926aa485aecce2 (patch)
treeb08e18bf6e672633402871ee763102fdb5e63229 /drivers/scsi/megaraid/megaraid_sas.h
parent91ffd7db71e7451f89941a8f428b4daa2a7c1e38 (diff)
parent9e956c2dac9bec602ed1ba29181b45ba6d2b6448 (diff)
Merge branch 'master'
Diffstat (limited to 'drivers/scsi/megaraid/megaraid_sas.h')
-rw-r--r--drivers/scsi/megaraid/megaraid_sas.h71
1 files changed, 48 insertions, 23 deletions
diff --git a/drivers/scsi/megaraid/megaraid_sas.h b/drivers/scsi/megaraid/megaraid_sas.h
index eaec9d531424..89639f0c38ef 100644
--- a/drivers/scsi/megaraid/megaraid_sas.h
+++ b/drivers/scsi/megaraid/megaraid_sas.h
@@ -18,10 +18,9 @@
18/** 18/**
19 * MegaRAID SAS Driver meta data 19 * MegaRAID SAS Driver meta data
20 */ 20 */
21#define MEGASAS_VERSION "00.00.02.00-rc4" 21#define MEGASAS_VERSION "00.00.02.04"
22#define MEGASAS_RELDATE "Sep 16, 2005" 22#define MEGASAS_RELDATE "Feb 03, 2006"
23#define MEGASAS_EXT_VERSION "Fri Sep 16 12:37:08 EDT 2005" 23#define MEGASAS_EXT_VERSION "Fri Feb 03 14:31:44 PST 2006"
24
25/* 24/*
26 * ===================================== 25 * =====================================
27 * MegaRAID SAS MFI firmware definitions 26 * MegaRAID SAS MFI firmware definitions
@@ -554,31 +553,46 @@ struct megasas_ctrl_info {
554#define MFI_OB_INTR_STATUS_MASK 0x00000002 553#define MFI_OB_INTR_STATUS_MASK 0x00000002
555#define MFI_POLL_TIMEOUT_SECS 10 554#define MFI_POLL_TIMEOUT_SECS 10
556 555
556#define MFI_REPLY_1078_MESSAGE_INTERRUPT 0x80000000
557#define PCI_DEVICE_ID_LSI_SAS1078R 0x00000060
558
557struct megasas_register_set { 559struct megasas_register_set {
560 u32 reserved_0[4]; /*0000h*/
561
562 u32 inbound_msg_0; /*0010h*/
563 u32 inbound_msg_1; /*0014h*/
564 u32 outbound_msg_0; /*0018h*/
565 u32 outbound_msg_1; /*001Ch*/
566
567 u32 inbound_doorbell; /*0020h*/
568 u32 inbound_intr_status; /*0024h*/
569 u32 inbound_intr_mask; /*0028h*/
570
571 u32 outbound_doorbell; /*002Ch*/
572 u32 outbound_intr_status; /*0030h*/
573 u32 outbound_intr_mask; /*0034h*/
558 574
559 u32 reserved_0[4]; /*0000h */ 575 u32 reserved_1[2]; /*0038h*/
560 576
561 u32 inbound_msg_0; /*0010h */ 577 u32 inbound_queue_port; /*0040h*/
562 u32 inbound_msg_1; /*0014h */ 578 u32 outbound_queue_port; /*0044h*/
563 u32 outbound_msg_0; /*0018h */
564 u32 outbound_msg_1; /*001Ch */
565 579
566 u32 inbound_doorbell; /*0020h */ 580 u32 reserved_2[22]; /*0048h*/
567 u32 inbound_intr_status; /*0024h */
568 u32 inbound_intr_mask; /*0028h */
569 581
570 u32 outbound_doorbell; /*002Ch */ 582 u32 outbound_doorbell_clear; /*00A0h*/
571 u32 outbound_intr_status; /*0030h */
572 u32 outbound_intr_mask; /*0034h */
573 583
574 u32 reserved_1[2]; /*0038h */ 584 u32 reserved_3[3]; /*00A4h*/
575 585
576 u32 inbound_queue_port; /*0040h */ 586 u32 outbound_scratch_pad ; /*00B0h*/
577 u32 outbound_queue_port; /*0044h */
578 587
579 u32 reserved_2; /*004Ch */ 588 u32 reserved_4[3]; /*00B4h*/
580 589
581 u32 index_registers[1004]; /*0050h */ 590 u32 inbound_low_queue_port ; /*00C0h*/
591
592 u32 inbound_high_queue_port ; /*00C4h*/
593
594 u32 reserved_5; /*00C8h*/
595 u32 index_registers[820]; /*00CCh*/
582 596
583} __attribute__ ((packed)); 597} __attribute__ ((packed));
584 598
@@ -1013,6 +1027,16 @@ struct megasas_evt_detail {
1013 1027
1014} __attribute__ ((packed)); 1028} __attribute__ ((packed));
1015 1029
1030 struct megasas_instance_template {
1031 void (*fire_cmd)(dma_addr_t ,u32 ,struct megasas_register_set __iomem *);
1032
1033 void (*enable_intr)(struct megasas_register_set __iomem *) ;
1034
1035 int (*clear_intr)(struct megasas_register_set __iomem *);
1036
1037 u32 (*read_fw_status_reg)(struct megasas_register_set __iomem *);
1038 };
1039
1016struct megasas_instance { 1040struct megasas_instance {
1017 1041
1018 u32 *producer; 1042 u32 *producer;
@@ -1056,6 +1080,8 @@ struct megasas_instance {
1056 u32 fw_outstanding; 1080 u32 fw_outstanding;
1057 u32 hw_crit_error; 1081 u32 hw_crit_error;
1058 spinlock_t instance_lock; 1082 spinlock_t instance_lock;
1083
1084 struct megasas_instance_template *instancet;
1059}; 1085};
1060 1086
1061#define MEGASAS_IS_LOGICAL(scp) \ 1087#define MEGASAS_IS_LOGICAL(scp) \
@@ -1125,11 +1151,10 @@ struct compat_megasas_iocpacket {
1125 struct compat_iovec sgl[MAX_IOCTL_SGE]; 1151 struct compat_iovec sgl[MAX_IOCTL_SGE];
1126} __attribute__ ((packed)); 1152} __attribute__ ((packed));
1127 1153
1128#define MEGASAS_IOC_FIRMWARE _IOWR('M', 1, struct compat_megasas_iocpacket)
1129#else
1130#define MEGASAS_IOC_FIRMWARE _IOWR('M', 1, struct megasas_iocpacket)
1131#endif 1154#endif
1132 1155
1156#define MEGASAS_IOC_FIRMWARE _IOWR('M', 1, struct megasas_iocpacket)
1157#define MEGASAS_IOC_FIRMWARE32 _IOWR('M', 1, struct compat_megasas_iocpacket)
1133#define MEGASAS_IOC_GET_AEN _IOW('M', 3, struct megasas_aen) 1158#define MEGASAS_IOC_GET_AEN _IOW('M', 3, struct megasas_aen)
1134 1159
1135struct megasas_mgmt_info { 1160struct megasas_mgmt_info {