diff options
author | Santosh Vernekar <santosh.vernekar@qlogic.com> | 2012-08-22 14:21:03 -0400 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2012-09-24 04:10:47 -0400 |
commit | 7d613ac6acec8c29e7aa3f80e28e8e982977a151 (patch) | |
tree | eec782c42537c4658850ffb8982973f122e388a2 /drivers/scsi/qla2xxx/qla_def.h | |
parent | 40129a4c6edc1753b9a537877b6a2eac9fc6c659 (diff) |
[SCSI] qla2xxx: IDC implementation for ISP83xx.
Signed-off-by: Santosh Vernekar <santosh.vernekar@qlogic.com>
Signed-off-by: Saurav Kashyap <saurav.kashyap@qlogic.com>
Signed-off-by: Chad Dupuis <chad.dupuis@qlogic.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_def.h')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_def.h | 101 |
1 files changed, 97 insertions, 4 deletions
diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index 7ff92ce42821..3d72beedf92f 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h | |||
@@ -115,6 +115,82 @@ | |||
115 | #define WRT_REG_DWORD(addr, data) writel(data,addr) | 115 | #define WRT_REG_DWORD(addr, data) writel(data,addr) |
116 | 116 | ||
117 | /* | 117 | /* |
118 | * ISP83XX specific remote register addresses | ||
119 | */ | ||
120 | #define QLA83XX_LED_PORT0 0x00201320 | ||
121 | #define QLA83XX_LED_PORT1 0x00201328 | ||
122 | #define QLA83XX_IDC_DEV_STATE 0x22102384 | ||
123 | #define QLA83XX_IDC_MAJOR_VERSION 0x22102380 | ||
124 | #define QLA83XX_IDC_MINOR_VERSION 0x22102398 | ||
125 | #define QLA83XX_IDC_DRV_PRESENCE 0x22102388 | ||
126 | #define QLA83XX_IDC_DRIVER_ACK 0x2210238c | ||
127 | #define QLA83XX_IDC_CONTROL 0x22102390 | ||
128 | #define QLA83XX_IDC_AUDIT 0x22102394 | ||
129 | #define QLA83XX_IDC_LOCK_RECOVERY 0x2210239c | ||
130 | #define QLA83XX_DRIVER_LOCKID 0x22102104 | ||
131 | #define QLA83XX_DRIVER_LOCK 0x8111c028 | ||
132 | #define QLA83XX_DRIVER_UNLOCK 0x8111c02c | ||
133 | #define QLA83XX_FLASH_LOCKID 0x22102100 | ||
134 | #define QLA83XX_FLASH_LOCK 0x8111c010 | ||
135 | #define QLA83XX_FLASH_UNLOCK 0x8111c014 | ||
136 | #define QLA83XX_DEV_PARTINFO1 0x221023e0 | ||
137 | #define QLA83XX_DEV_PARTINFO2 0x221023e4 | ||
138 | #define QLA83XX_FW_HEARTBEAT 0x221020b0 | ||
139 | #define QLA83XX_PEG_HALT_STATUS1 0x221020a8 | ||
140 | #define QLA83XX_PEG_HALT_STATUS2 0x221020ac | ||
141 | |||
142 | /* 83XX: Macros defining 8200 AEN Reason codes */ | ||
143 | #define IDC_DEVICE_STATE_CHANGE BIT_0 | ||
144 | #define IDC_PEG_HALT_STATUS_CHANGE BIT_1 | ||
145 | #define IDC_NIC_FW_REPORTED_FAILURE BIT_2 | ||
146 | #define IDC_HEARTBEAT_FAILURE BIT_3 | ||
147 | |||
148 | /* 83XX: Macros defining 8200 AEN Error-levels */ | ||
149 | #define ERR_LEVEL_NON_FATAL 0x1 | ||
150 | #define ERR_LEVEL_RECOVERABLE_FATAL 0x2 | ||
151 | #define ERR_LEVEL_UNRECOVERABLE_FATAL 0x4 | ||
152 | |||
153 | /* 83XX: Macros for IDC Version */ | ||
154 | #define QLA83XX_SUPP_IDC_MAJOR_VERSION 0x01 | ||
155 | #define QLA83XX_SUPP_IDC_MINOR_VERSION 0x0 | ||
156 | |||
157 | /* 83XX: Macros for scheduling dpc tasks */ | ||
158 | #define QLA83XX_NIC_CORE_RESET 0x1 | ||
159 | #define QLA83XX_IDC_STATE_HANDLER 0x2 | ||
160 | #define QLA83XX_NIC_CORE_UNRECOVERABLE 0x3 | ||
161 | |||
162 | /* 83XX: Macros for defining IDC-Control bits */ | ||
163 | #define QLA83XX_IDC_RESET_DISABLED BIT_0 | ||
164 | #define QLA83XX_IDC_GRACEFUL_RESET BIT_1 | ||
165 | |||
166 | /* 83XX: Macros for different timeouts */ | ||
167 | #define QLA83XX_IDC_INITIALIZATION_TIMEOUT 30 | ||
168 | #define QLA83XX_IDC_RESET_ACK_TIMEOUT 10 | ||
169 | #define QLA83XX_MAX_LOCK_RECOVERY_WAIT (2 * HZ) | ||
170 | |||
171 | /* 83XX: Macros for defining class in DEV-Partition Info register */ | ||
172 | #define QLA83XX_CLASS_TYPE_NONE 0x0 | ||
173 | #define QLA83XX_CLASS_TYPE_NIC 0x1 | ||
174 | #define QLA83XX_CLASS_TYPE_FCOE 0x2 | ||
175 | #define QLA83XX_CLASS_TYPE_ISCSI 0x3 | ||
176 | |||
177 | /* 83XX: Macros for IDC Lock-Recovery stages */ | ||
178 | #define IDC_LOCK_RECOVERY_STAGE1 0x1 /* Stage1: Intent for | ||
179 | * lock-recovery | ||
180 | */ | ||
181 | #define IDC_LOCK_RECOVERY_STAGE2 0x2 /* Stage2: Perform lock-recovery */ | ||
182 | |||
183 | /* 83XX: Macros for IDC Audit type */ | ||
184 | #define IDC_AUDIT_TIMESTAMP 0x0 /* IDC-AUDIT: Record timestamp of | ||
185 | * dev-state change to NEED-RESET | ||
186 | * or NEED-QUIESCENT | ||
187 | */ | ||
188 | #define IDC_AUDIT_COMPLETION 0x1 /* IDC-AUDIT: Record duration of | ||
189 | * reset-recovery completion is | ||
190 | * second | ||
191 | */ | ||
192 | |||
193 | /* | ||
118 | * The ISP2312 v2 chip cannot access the FLASH/GPIO registers via MMIO in an | 194 | * The ISP2312 v2 chip cannot access the FLASH/GPIO registers via MMIO in an |
119 | * 133Mhz slot. | 195 | * 133Mhz slot. |
120 | */ | 196 | */ |
@@ -596,6 +672,9 @@ typedef struct { | |||
596 | #define MBA_DISCARD_RND_FRAME 0x8048 /* discard RND frame due to error. */ | 672 | #define MBA_DISCARD_RND_FRAME 0x8048 /* discard RND frame due to error. */ |
597 | #define MBA_REJECTED_FCP_CMD 0x8049 /* rejected FCP_CMD. */ | 673 | #define MBA_REJECTED_FCP_CMD 0x8049 /* rejected FCP_CMD. */ |
598 | 674 | ||
675 | /* 83XX FCoE specific */ | ||
676 | #define MBA_IDC_AEN 0x8200 /* FCoE: NIC Core state change AEN */ | ||
677 | |||
599 | /* ISP mailbox loopback echo diagnostic error code */ | 678 | /* ISP mailbox loopback echo diagnostic error code */ |
600 | #define MBS_LB_RESET 0x17 | 679 | #define MBS_LB_RESET 0x17 |
601 | /* | 680 | /* |
@@ -2523,11 +2602,12 @@ struct qla_hw_data { | |||
2523 | uint32_t disable_msix_handshake :1; | 2602 | uint32_t disable_msix_handshake :1; |
2524 | uint32_t fcp_prio_enabled :1; | 2603 | uint32_t fcp_prio_enabled :1; |
2525 | uint32_t isp82xx_fw_hung:1; | 2604 | uint32_t isp82xx_fw_hung:1; |
2605 | uint32_t nic_core_hung:1; | ||
2526 | 2606 | ||
2527 | uint32_t quiesce_owner:1; | 2607 | uint32_t quiesce_owner:1; |
2528 | uint32_t thermal_supported:1; | 2608 | uint32_t thermal_supported:1; |
2529 | uint32_t isp82xx_reset_hdlr_active:1; | 2609 | uint32_t nic_core_reset_hdlr_active:1; |
2530 | uint32_t isp82xx_reset_owner:1; | 2610 | uint32_t nic_core_reset_owner:1; |
2531 | uint32_t isp82xx_no_md_cap:1; | 2611 | uint32_t isp82xx_no_md_cap:1; |
2532 | uint32_t host_shutting_down:1; | 2612 | uint32_t host_shutting_down:1; |
2533 | /* 30 bits */ | 2613 | /* 30 bits */ |
@@ -2912,8 +2992,8 @@ struct qla_hw_data { | |||
2912 | unsigned long mn_win_crb; | 2992 | unsigned long mn_win_crb; |
2913 | unsigned long ms_win_crb; | 2993 | unsigned long ms_win_crb; |
2914 | int qdr_sn_window; | 2994 | int qdr_sn_window; |
2915 | uint32_t nx_dev_init_timeout; | 2995 | uint32_t fcoe_dev_init_timeout; |
2916 | uint32_t nx_reset_timeout; | 2996 | uint32_t fcoe_reset_timeout; |
2917 | rwlock_t hw_lock; | 2997 | rwlock_t hw_lock; |
2918 | uint16_t portnum; /* port number */ | 2998 | uint16_t portnum; /* port number */ |
2919 | int link_width; | 2999 | int link_width; |
@@ -2935,6 +3015,19 @@ struct qla_hw_data { | |||
2935 | uint32_t md_dump_size; | 3015 | uint32_t md_dump_size; |
2936 | 3016 | ||
2937 | void *loop_id_map; | 3017 | void *loop_id_map; |
3018 | |||
3019 | /* QLA83XX IDC specific fields */ | ||
3020 | uint32_t idc_audit_ts; | ||
3021 | |||
3022 | /* DPC low-priority workqueue */ | ||
3023 | struct workqueue_struct *dpc_lp_wq; | ||
3024 | struct work_struct idc_aen; | ||
3025 | /* DPC high-priority workqueue */ | ||
3026 | struct workqueue_struct *dpc_hp_wq; | ||
3027 | struct work_struct nic_core_reset; | ||
3028 | struct work_struct idc_state_handler; | ||
3029 | struct work_struct nic_core_unrecoverable; | ||
3030 | |||
2938 | struct qlt_hw_data tgt; | 3031 | struct qlt_hw_data tgt; |
2939 | }; | 3032 | }; |
2940 | 3033 | ||