ath9k: remove unneeded calculation of minimal calibration power
[linux-2.6/next.git] / drivers / scsi / bfa / include / bfi / bfi.h
bloba550e80cabd20d455bc42644895649d22e51488e
1 /*
2 * Copyright (c) 2005-2009 Brocade Communications Systems, Inc.
3 * All rights reserved
4 * www.brocade.com
6 * Linux driver for Brocade Fibre Channel Host Bus Adapter.
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
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.
18 #ifndef __BFI_H__
19 #define __BFI_H__
21 #include <bfa_os_inc.h>
22 #include <defs/bfa_defs_status.h>
24 #pragma pack(1)
26 /**
27 * Msg header common to all msgs
29 struct bfi_mhdr_s {
30 u8 msg_class; /* @ref bfi_mclass_t */
31 u8 msg_id; /* msg opcode with in the class */
32 union {
33 struct {
34 u8 rsvd;
35 u8 lpu_id; /* msg destination */
36 } h2i;
37 u16 i2htok; /* token in msgs to host */
38 } mtag;
41 #define bfi_h2i_set(_mh, _mc, _op, _lpuid) do { \
42 (_mh).msg_class = (_mc); \
43 (_mh).msg_id = (_op); \
44 (_mh).mtag.h2i.lpu_id = (_lpuid); \
45 } while (0)
47 #define bfi_i2h_set(_mh, _mc, _op, _i2htok) do { \
48 (_mh).msg_class = (_mc); \
49 (_mh).msg_id = (_op); \
50 (_mh).mtag.i2htok = (_i2htok); \
51 } while (0)
54 * Message opcodes: 0-127 to firmware, 128-255 to host
56 #define BFI_I2H_OPCODE_BASE 128
57 #define BFA_I2HM(_x) ((_x) + BFI_I2H_OPCODE_BASE)
59 /**
60 ****************************************************************************
62 * Scatter Gather Element and Page definition
64 ****************************************************************************
67 #define BFI_SGE_INLINE 1
68 #define BFI_SGE_INLINE_MAX (BFI_SGE_INLINE + 1)
70 /**
71 * SG Flags
73 enum {
74 BFI_SGE_DATA = 0, /* data address, not last */
75 BFI_SGE_DATA_CPL = 1, /* data addr, last in current page */
76 BFI_SGE_DATA_LAST = 3, /* data address, last */
77 BFI_SGE_LINK = 2, /* link address */
78 BFI_SGE_PGDLEN = 2, /* cumulative data length for page */
81 /**
82 * DMA addresses
84 union bfi_addr_u {
85 struct {
86 u32 addr_lo;
87 u32 addr_hi;
88 } a32;
91 /**
92 * Scatter Gather Element
94 struct bfi_sge_s {
95 #ifdef __BIGENDIAN
96 u32 flags:2,
97 rsvd:2,
98 sg_len:28;
99 #else
100 u32 sg_len:28,
101 rsvd:2,
102 flags:2;
103 #endif
104 union bfi_addr_u sga;
108 * Scatter Gather Page
110 #define BFI_SGPG_DATA_SGES 7
111 #define BFI_SGPG_SGES_MAX (BFI_SGPG_DATA_SGES + 1)
112 #define BFI_SGPG_RSVD_WD_LEN 8
113 struct bfi_sgpg_s {
114 struct bfi_sge_s sges[BFI_SGPG_SGES_MAX];
115 u32 rsvd[BFI_SGPG_RSVD_WD_LEN];
119 * Large Message structure - 128 Bytes size Msgs
121 #define BFI_LMSG_SZ 128
122 #define BFI_LMSG_PL_WSZ \
123 ((BFI_LMSG_SZ - sizeof(struct bfi_mhdr_s)) / 4)
125 struct bfi_msg_s {
126 struct bfi_mhdr_s mhdr;
127 u32 pl[BFI_LMSG_PL_WSZ];
131 * Mailbox message structure
133 #define BFI_MBMSG_SZ 7
134 struct bfi_mbmsg_s {
135 struct bfi_mhdr_s mh;
136 u32 pl[BFI_MBMSG_SZ];
140 * Message Classes
142 enum bfi_mclass {
143 BFI_MC_IOC = 1, /* IO Controller (IOC) */
144 BFI_MC_DIAG = 2, /* Diagnostic Msgs */
145 BFI_MC_FLASH = 3, /* Flash message class */
146 BFI_MC_CEE = 4, /* CEE */
147 BFI_MC_FCPORT = 5, /* FC port */
148 BFI_MC_IOCFC = 6, /* FC - IO Controller (IOC) */
149 BFI_MC_LL = 7, /* Link Layer */
150 BFI_MC_UF = 8, /* Unsolicited frame receive */
151 BFI_MC_FCXP = 9, /* FC Transport */
152 BFI_MC_LPS = 10, /* lport fc login services */
153 BFI_MC_RPORT = 11, /* Remote port */
154 BFI_MC_ITNIM = 12, /* I-T nexus (Initiator mode) */
155 BFI_MC_IOIM_READ = 13, /* read IO (Initiator mode) */
156 BFI_MC_IOIM_WRITE = 14, /* write IO (Initiator mode) */
157 BFI_MC_IOIM_IO = 15, /* IO (Initiator mode) */
158 BFI_MC_IOIM = 16, /* IO (Initiator mode) */
159 BFI_MC_IOIM_IOCOM = 17, /* good IO completion */
160 BFI_MC_TSKIM = 18, /* Initiator Task management */
161 BFI_MC_SBOOT = 19, /* SAN boot services */
162 BFI_MC_IPFC = 20, /* IP over FC Msgs */
163 BFI_MC_PORT = 21, /* Physical port */
164 BFI_MC_MAX = 32
167 #define BFI_IOC_MAX_CQS 4
168 #define BFI_IOC_MAX_CQS_ASIC 8
169 #define BFI_IOC_MSGLEN_MAX 32 /* 32 bytes */
171 #pragma pack()
173 #endif /* __BFI_H__ */