diff options
author | Steven Whitehouse <steve@men-an-tol.chygwyn.com> | 2006-02-23 04:49:43 -0500 |
---|---|---|
committer | Steven Whitehouse <swhiteho@redhat.com> | 2006-02-23 04:49:43 -0500 |
commit | d35462b4bb847b68321c55e95c926aa485aecce2 (patch) | |
tree | b08e18bf6e672633402871ee763102fdb5e63229 /drivers/scsi/megaraid/megaraid_sas.h | |
parent | 91ffd7db71e7451f89941a8f428b4daa2a7c1e38 (diff) | |
parent | 9e956c2dac9bec602ed1ba29181b45ba6d2b6448 (diff) |
Merge branch 'master'
Diffstat (limited to 'drivers/scsi/megaraid/megaraid_sas.h')
-rw-r--r-- | drivers/scsi/megaraid/megaraid_sas.h | 71 |
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 | |||
557 | struct megasas_register_set { | 559 | struct 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 | |||
1016 | struct megasas_instance { | 1040 | struct 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 | ||
1135 | struct megasas_mgmt_info { | 1160 | struct megasas_mgmt_info { |