diff options
Diffstat (limited to 'drivers/scsi/bfa/include/bfa.h')
-rw-r--r-- | drivers/scsi/bfa/include/bfa.h | 177 |
1 files changed, 177 insertions, 0 deletions
diff --git a/drivers/scsi/bfa/include/bfa.h b/drivers/scsi/bfa/include/bfa.h new file mode 100644 index 000000000000..64c1412c5703 --- /dev/null +++ b/drivers/scsi/bfa/include/bfa.h | |||
@@ -0,0 +1,177 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2005-2009 Brocade Communications Systems, Inc. | ||
3 | * All rights reserved | ||
4 | * www.brocade.com | ||
5 | * | ||
6 | * Linux driver for Brocade Fibre Channel Host Bus Adapter. | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify it | ||
9 | * under the terms of the GNU General Public License (GPL) Version 2 as | ||
10 | * published by the Free Software Foundation | ||
11 | * | ||
12 | * This program is distributed in the hope that it will be useful, but | ||
13 | * WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
15 | * General Public License for more details. | ||
16 | */ | ||
17 | #ifndef __BFA_H__ | ||
18 | #define __BFA_H__ | ||
19 | |||
20 | #include <bfa_os_inc.h> | ||
21 | #include <cs/bfa_debug.h> | ||
22 | #include <cs/bfa_q.h> | ||
23 | #include <cs/bfa_trc.h> | ||
24 | #include <cs/bfa_log.h> | ||
25 | #include <cs/bfa_plog.h> | ||
26 | #include <defs/bfa_defs_status.h> | ||
27 | #include <defs/bfa_defs_ioc.h> | ||
28 | #include <defs/bfa_defs_iocfc.h> | ||
29 | #include <aen/bfa_aen.h> | ||
30 | #include <bfi/bfi.h> | ||
31 | |||
32 | struct bfa_s; | ||
33 | #include <bfa_intr_priv.h> | ||
34 | |||
35 | struct bfa_pcidev_s; | ||
36 | |||
37 | /** | ||
38 | * PCI devices supported by the current BFA | ||
39 | */ | ||
40 | struct bfa_pciid_s { | ||
41 | u16 device_id; | ||
42 | u16 vendor_id; | ||
43 | }; | ||
44 | |||
45 | extern char bfa_version[]; | ||
46 | |||
47 | /** | ||
48 | * BFA Power Mgmt Commands | ||
49 | */ | ||
50 | enum bfa_pm_cmd { | ||
51 | BFA_PM_CTL_D0 = 0, | ||
52 | BFA_PM_CTL_D1 = 1, | ||
53 | BFA_PM_CTL_D2 = 2, | ||
54 | BFA_PM_CTL_D3 = 3, | ||
55 | }; | ||
56 | |||
57 | /** | ||
58 | * BFA memory resources | ||
59 | */ | ||
60 | enum bfa_mem_type { | ||
61 | BFA_MEM_TYPE_KVA = 1, /*! Kernel Virtual Memory *(non-dma-able) */ | ||
62 | BFA_MEM_TYPE_DMA = 2, /*! DMA-able memory */ | ||
63 | BFA_MEM_TYPE_MAX = BFA_MEM_TYPE_DMA, | ||
64 | }; | ||
65 | |||
66 | struct bfa_mem_elem_s { | ||
67 | enum bfa_mem_type mem_type; /* see enum bfa_mem_type */ | ||
68 | u32 mem_len; /* Total Length in Bytes */ | ||
69 | u8 *kva; /* kernel virtual address */ | ||
70 | u64 dma; /* dma address if DMA memory */ | ||
71 | u8 *kva_curp; /* kva allocation cursor */ | ||
72 | u64 dma_curp; /* dma allocation cursor */ | ||
73 | }; | ||
74 | |||
75 | struct bfa_meminfo_s { | ||
76 | struct bfa_mem_elem_s meminfo[BFA_MEM_TYPE_MAX]; | ||
77 | }; | ||
78 | #define bfa_meminfo_kva(_m) \ | ||
79 | (_m)->meminfo[BFA_MEM_TYPE_KVA - 1].kva_curp | ||
80 | #define bfa_meminfo_dma_virt(_m) \ | ||
81 | (_m)->meminfo[BFA_MEM_TYPE_DMA - 1].kva_curp | ||
82 | #define bfa_meminfo_dma_phys(_m) \ | ||
83 | (_m)->meminfo[BFA_MEM_TYPE_DMA - 1].dma_curp | ||
84 | |||
85 | /** | ||
86 | * Generic Scatter Gather Element used by driver | ||
87 | */ | ||
88 | struct bfa_sge_s { | ||
89 | u32 sg_len; | ||
90 | void *sg_addr; | ||
91 | }; | ||
92 | |||
93 | #define bfa_sge_to_be(__sge) do { \ | ||
94 | ((u32 *)(__sge))[0] = bfa_os_htonl(((u32 *)(__sge))[0]); \ | ||
95 | ((u32 *)(__sge))[1] = bfa_os_htonl(((u32 *)(__sge))[1]); \ | ||
96 | ((u32 *)(__sge))[2] = bfa_os_htonl(((u32 *)(__sge))[2]); \ | ||
97 | } while (0) | ||
98 | |||
99 | |||
100 | /* | ||
101 | * bfa stats interfaces | ||
102 | */ | ||
103 | #define bfa_stats(_mod, _stats) (_mod)->stats._stats ++ | ||
104 | |||
105 | #define bfa_ioc_get_stats(__bfa, __ioc_stats) \ | ||
106 | bfa_ioc_fetch_stats(&(__bfa)->ioc, __ioc_stats) | ||
107 | #define bfa_ioc_clear_stats(__bfa) \ | ||
108 | bfa_ioc_clr_stats(&(__bfa)->ioc) | ||
109 | |||
110 | /* | ||
111 | * bfa API functions | ||
112 | */ | ||
113 | void bfa_get_pciids(struct bfa_pciid_s **pciids, int *npciids); | ||
114 | void bfa_cfg_get_default(struct bfa_iocfc_cfg_s *cfg); | ||
115 | void bfa_cfg_get_min(struct bfa_iocfc_cfg_s *cfg); | ||
116 | void bfa_cfg_get_meminfo(struct bfa_iocfc_cfg_s *cfg, | ||
117 | struct bfa_meminfo_s *meminfo); | ||
118 | void bfa_attach(struct bfa_s *bfa, void *bfad, struct bfa_iocfc_cfg_s *cfg, | ||
119 | struct bfa_meminfo_s *meminfo, | ||
120 | struct bfa_pcidev_s *pcidev); | ||
121 | void bfa_init_trc(struct bfa_s *bfa, struct bfa_trc_mod_s *trcmod); | ||
122 | void bfa_init_log(struct bfa_s *bfa, struct bfa_log_mod_s *logmod); | ||
123 | void bfa_init_aen(struct bfa_s *bfa, struct bfa_aen_s *aen); | ||
124 | void bfa_init_plog(struct bfa_s *bfa, struct bfa_plog_s *plog); | ||
125 | void bfa_detach(struct bfa_s *bfa); | ||
126 | void bfa_init(struct bfa_s *bfa); | ||
127 | void bfa_start(struct bfa_s *bfa); | ||
128 | void bfa_stop(struct bfa_s *bfa); | ||
129 | void bfa_attach_fcs(struct bfa_s *bfa); | ||
130 | void bfa_cb_init(void *bfad, bfa_status_t status); | ||
131 | void bfa_cb_stop(void *bfad, bfa_status_t status); | ||
132 | void bfa_cb_updateq(void *bfad, bfa_status_t status); | ||
133 | |||
134 | bfa_boolean_t bfa_intx(struct bfa_s *bfa); | ||
135 | void bfa_isr_enable(struct bfa_s *bfa); | ||
136 | void bfa_isr_disable(struct bfa_s *bfa); | ||
137 | void bfa_msix_getvecs(struct bfa_s *bfa, u32 *msix_vecs_bmap, | ||
138 | u32 *num_vecs, u32 *max_vec_bit); | ||
139 | #define bfa_msix(__bfa, __vec) (__bfa)->msix.handler[__vec](__bfa, __vec) | ||
140 | |||
141 | void bfa_comp_deq(struct bfa_s *bfa, struct list_head *comp_q); | ||
142 | void bfa_comp_process(struct bfa_s *bfa, struct list_head *comp_q); | ||
143 | void bfa_comp_free(struct bfa_s *bfa, struct list_head *comp_q); | ||
144 | |||
145 | typedef void (*bfa_cb_ioc_t) (void *cbarg, enum bfa_status status); | ||
146 | void bfa_iocfc_get_attr(struct bfa_s *bfa, struct bfa_iocfc_attr_s *attr); | ||
147 | bfa_status_t bfa_iocfc_get_stats(struct bfa_s *bfa, | ||
148 | struct bfa_iocfc_stats_s *stats, | ||
149 | bfa_cb_ioc_t cbfn, void *cbarg); | ||
150 | bfa_status_t bfa_iocfc_clear_stats(struct bfa_s *bfa, | ||
151 | bfa_cb_ioc_t cbfn, void *cbarg); | ||
152 | void bfa_get_attr(struct bfa_s *bfa, struct bfa_ioc_attr_s *ioc_attr); | ||
153 | |||
154 | void bfa_adapter_get_attr(struct bfa_s *bfa, | ||
155 | struct bfa_adapter_attr_s *ad_attr); | ||
156 | u64 bfa_adapter_get_id(struct bfa_s *bfa); | ||
157 | |||
158 | bfa_status_t bfa_iocfc_israttr_set(struct bfa_s *bfa, | ||
159 | struct bfa_iocfc_intr_attr_s *attr); | ||
160 | |||
161 | void bfa_iocfc_enable(struct bfa_s *bfa); | ||
162 | void bfa_iocfc_disable(struct bfa_s *bfa); | ||
163 | void bfa_ioc_auto_recover(bfa_boolean_t auto_recover); | ||
164 | void bfa_cb_ioc_disable(void *bfad); | ||
165 | void bfa_timer_tick(struct bfa_s *bfa); | ||
166 | #define bfa_timer_start(_bfa, _timer, _timercb, _arg, _timeout) \ | ||
167 | bfa_timer_begin(&(_bfa)->timer_mod, _timer, _timercb, _arg, _timeout) | ||
168 | |||
169 | /* | ||
170 | * BFA debug API functions | ||
171 | */ | ||
172 | bfa_status_t bfa_debug_fwtrc(struct bfa_s *bfa, void *trcdata, int *trclen); | ||
173 | bfa_status_t bfa_debug_fwsave(struct bfa_s *bfa, void *trcdata, int *trclen); | ||
174 | |||
175 | #include "bfa_priv.h" | ||
176 | |||
177 | #endif /* __BFA_H__ */ | ||