aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx/qla_def.h
diff options
context:
space:
mode:
authorSantosh Vernekar <santosh.vernekar@qlogic.com>2012-08-22 14:21:03 -0400
committerJames Bottomley <JBottomley@Parallels.com>2012-09-24 04:10:47 -0400
commit7d613ac6acec8c29e7aa3f80e28e8e982977a151 (patch)
treeeec782c42537c4658850ffb8982973f122e388a2 /drivers/scsi/qla2xxx/qla_def.h
parent40129a4c6edc1753b9a537877b6a2eac9fc6c659 (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.h101
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