aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/bfa/bfa.h
diff options
context:
space:
mode:
authorKrishna Gudipati <kgudipat@brocade.com>2011-06-13 18:50:35 -0400
committerJames Bottomley <JBottomley@Parallels.com>2011-06-29 16:31:31 -0400
commit111892082ed7a3214bc7a7ec6b8b20e8f847501a (patch)
treefb4950f69aaf7c2bf07ce8987884bb52aa497ffa /drivers/scsi/bfa/bfa.h
parent43ffdf4dfb827babcdca5345a76031598a985dc8 (diff)
[SCSI] bfa: Brocade-1860 Fabric Adapter Hardware Enablement
- Added support for Brocade-1860 Fabric Adapter. - Made changes to support single firmware image per asic type. - Combined bfi_cbreg.h and bfi_ctreg.h defines into bfi_reg.h with only minimal defines used by host. - Added changes to setup CPE/RME Queue register offsets based on firmware response. - Removed queue register offset initializations and added register offsets to BFI config response message. - Added Brocade-1860 asic specific interrupt status definitions and mailbox interfaces. Signed-off-by: Krishna Gudipati <kgudipat@brocade.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/bfa/bfa.h')
-rw-r--r--drivers/scsi/bfa/bfa.h14
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/scsi/bfa/bfa.h b/drivers/scsi/bfa/bfa.h
index 7be6b5a8114b..708bab093c14 100644
--- a/drivers/scsi/bfa/bfa.h
+++ b/drivers/scsi/bfa/bfa.h
@@ -136,7 +136,6 @@ struct bfa_cb_qe_s {
136 struct list_head qe; 136 struct list_head qe;
137 bfa_cb_cbfn_t cbfn; 137 bfa_cb_cbfn_t cbfn;
138 bfa_boolean_t once; 138 bfa_boolean_t once;
139 u32 rsvd;
140 void *cbarg; 139 void *cbarg;
141}; 140};
142 141
@@ -205,11 +204,9 @@ struct bfa_iocfc_regs_s {
205 void __iomem *intr_mask; 204 void __iomem *intr_mask;
206 void __iomem *cpe_q_pi[BFI_IOC_MAX_CQS]; 205 void __iomem *cpe_q_pi[BFI_IOC_MAX_CQS];
207 void __iomem *cpe_q_ci[BFI_IOC_MAX_CQS]; 206 void __iomem *cpe_q_ci[BFI_IOC_MAX_CQS];
208 void __iomem *cpe_q_depth[BFI_IOC_MAX_CQS];
209 void __iomem *cpe_q_ctrl[BFI_IOC_MAX_CQS]; 207 void __iomem *cpe_q_ctrl[BFI_IOC_MAX_CQS];
210 void __iomem *rme_q_ci[BFI_IOC_MAX_CQS]; 208 void __iomem *rme_q_ci[BFI_IOC_MAX_CQS];
211 void __iomem *rme_q_pi[BFI_IOC_MAX_CQS]; 209 void __iomem *rme_q_pi[BFI_IOC_MAX_CQS];
212 void __iomem *rme_q_depth[BFI_IOC_MAX_CQS];
213 void __iomem *rme_q_ctrl[BFI_IOC_MAX_CQS]; 210 void __iomem *rme_q_ctrl[BFI_IOC_MAX_CQS];
214}; 211};
215 212
@@ -238,6 +235,8 @@ struct bfa_hwif_s {
238 u32 *nvecs, u32 *maxvec); 235 u32 *nvecs, u32 *maxvec);
239 void (*hw_msix_get_rme_range) (struct bfa_s *bfa, u32 *start, 236 void (*hw_msix_get_rme_range) (struct bfa_s *bfa, u32 *start,
240 u32 *end); 237 u32 *end);
238 int cpe_vec_q0;
239 int rme_vec_q0;
241}; 240};
242typedef void (*bfa_cb_iocfc_t) (void *cbarg, enum bfa_status status); 241typedef void (*bfa_cb_iocfc_t) (void *cbarg, enum bfa_status status);
243 242
@@ -257,7 +256,6 @@ struct bfa_iocfc_s {
257 struct bfi_iocfc_cfg_s *cfginfo; 256 struct bfi_iocfc_cfg_s *cfginfo;
258 struct bfa_dma_s cfgrsp_dma; 257 struct bfa_dma_s cfgrsp_dma;
259 struct bfi_iocfc_cfgrsp_s *cfgrsp; 258 struct bfi_iocfc_cfgrsp_s *cfgrsp;
260 struct bfi_iocfc_cfg_reply_s *cfg_reply;
261 struct bfa_dma_s req_cq_ba[BFI_IOC_MAX_CQS]; 259 struct bfa_dma_s req_cq_ba[BFI_IOC_MAX_CQS];
262 struct bfa_dma_s req_cq_shadow_ci[BFI_IOC_MAX_CQS]; 260 struct bfa_dma_s req_cq_shadow_ci[BFI_IOC_MAX_CQS];
263 struct bfa_dma_s rsp_cq_ba[BFI_IOC_MAX_CQS]; 261 struct bfa_dma_s rsp_cq_ba[BFI_IOC_MAX_CQS];
@@ -277,8 +275,11 @@ struct bfa_iocfc_s {
277 ((__bfa)->iocfc.hwif.hw_msix_install(__bfa)) 275 ((__bfa)->iocfc.hwif.hw_msix_install(__bfa))
278#define bfa_msix_uninstall(__bfa) \ 276#define bfa_msix_uninstall(__bfa) \
279 ((__bfa)->iocfc.hwif.hw_msix_uninstall(__bfa)) 277 ((__bfa)->iocfc.hwif.hw_msix_uninstall(__bfa))
280#define bfa_isr_mode_set(__bfa, __msix) \ 278#define bfa_isr_mode_set(__bfa, __msix) do { \
281 ((__bfa)->iocfc.hwif.hw_isr_mode_set(__bfa, __msix)) 279 if ((__bfa)->iocfc.hwif.hw_isr_mode_set) \
280 (__bfa)->iocfc.hwif.hw_isr_mode_set(__bfa, __msix); \
281} while (0)
282
282#define bfa_msix_getvecs(__bfa, __vecmap, __nvecs, __maxvec) \ 283#define bfa_msix_getvecs(__bfa, __vecmap, __nvecs, __maxvec) \
283 ((__bfa)->iocfc.hwif.hw_msix_getvecs(__bfa, __vecmap, \ 284 ((__bfa)->iocfc.hwif.hw_msix_getvecs(__bfa, __vecmap, \
284 __nvecs, __maxvec)) 285 __nvecs, __maxvec))
@@ -321,6 +322,7 @@ void bfa_hwcb_msix_getvecs(struct bfa_s *bfa, u32 *vecmap, u32 *nvecs,
321void bfa_hwcb_msix_get_rme_range(struct bfa_s *bfa, u32 *start, 322void bfa_hwcb_msix_get_rme_range(struct bfa_s *bfa, u32 *start,
322 u32 *end); 323 u32 *end);
323void bfa_hwct_reginit(struct bfa_s *bfa); 324void bfa_hwct_reginit(struct bfa_s *bfa);
325void bfa_hwct2_reginit(struct bfa_s *bfa);
324void bfa_hwct_reqq_ack(struct bfa_s *bfa, int rspq); 326void bfa_hwct_reqq_ack(struct bfa_s *bfa, int rspq);
325void bfa_hwct_rspq_ack(struct bfa_s *bfa, int rspq); 327void bfa_hwct_rspq_ack(struct bfa_s *bfa, int rspq);
326void bfa_hwct_msix_init(struct bfa_s *bfa, int nvecs); 328void bfa_hwct_msix_init(struct bfa_s *bfa, int nvecs);