2 * Copyright (c) 2005-2009 Brocade Communications Systems, Inc.
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.
22 #include <defs/bfa_defs_ioc.h>
26 enum bfi_ioc_h2i_msgs
{
27 BFI_IOC_H2I_ENABLE_REQ
= 1,
28 BFI_IOC_H2I_DISABLE_REQ
= 2,
29 BFI_IOC_H2I_GETATTR_REQ
= 3,
30 BFI_IOC_H2I_DBG_SYNC
= 4,
31 BFI_IOC_H2I_DBG_DUMP
= 5,
34 enum bfi_ioc_i2h_msgs
{
35 BFI_IOC_I2H_ENABLE_REPLY
= BFA_I2HM(1),
36 BFI_IOC_I2H_DISABLE_REPLY
= BFA_I2HM(2),
37 BFI_IOC_I2H_GETATTR_REPLY
= BFA_I2HM(3),
38 BFI_IOC_I2H_READY_EVENT
= BFA_I2HM(4),
39 BFI_IOC_I2H_HBEAT
= BFA_I2HM(5),
43 * BFI_IOC_H2I_GETATTR_REQ message
45 struct bfi_ioc_getattr_req_s
{
47 union bfi_addr_u attr_addr
;
50 struct bfi_ioc_attr_s
{
51 wwn_t mfg_pwwn
; /* Mfg port wwn */
52 wwn_t mfg_nwwn
; /* Mfg node wwn */
53 mac_t mfg_mac
; /* Mfg mac */
57 mac_t mac
; /* PBC or Mfg mac */
59 char brcd_serialnum
[STRSZ(BFA_MFG_SERIALNUM_SIZE
)];
63 u8 rx_bbcredit
; /* receive buffer credits */
64 u32 adapter_prop
; /* adapter properties */
65 u16 maxfrsize
; /* max receive frame size */
68 char fw_version
[BFA_VERSION_LEN
];
69 char optrom_version
[BFA_VERSION_LEN
];
70 struct bfa_mfg_vpd_s vpd
;
71 u32 card_type
; /* card type */
75 * BFI_IOC_I2H_GETATTR_REPLY message
77 struct bfi_ioc_getattr_reply_s
{
78 struct bfi_mhdr_s mh
; /* Common msg header */
79 u8 status
; /* cfg reply status */
84 * Firmware memory page offsets
86 #define BFI_IOC_SMEM_PG0_CB (0x40)
87 #define BFI_IOC_SMEM_PG0_CT (0x180)
90 * Firmware trace offset
92 #define BFI_IOC_TRC_OFF (0x4b00)
93 #define BFI_IOC_TRC_ENTS 256
95 #define BFI_IOC_FW_SIGNATURE (0xbfadbfad)
96 #define BFI_IOC_MD5SUM_SZ 4
97 struct bfi_ioc_image_hdr_s
{
98 u32 signature
; /* constant signature */
100 u32 exec
; /* exec vector */
101 u32 param
; /* parameters */
103 u32 md5sum
[BFI_IOC_MD5SUM_SZ
];
107 * BFI_IOC_I2H_READY_EVENT message
109 struct bfi_ioc_rdy_event_s
{
110 struct bfi_mhdr_s mh
; /* common msg header */
111 u8 init_status
; /* init event status */
115 struct bfi_ioc_hbeat_s
{
116 struct bfi_mhdr_s mh
; /* common msg header */
117 u32 hb_count
; /* current heart beat count */
121 * IOC hardware/firmware state
124 BFI_IOC_UNINIT
= 0, /* not initialized */
125 BFI_IOC_INITING
= 1, /* h/w is being initialized */
126 BFI_IOC_HWINIT
= 2, /* h/w is initialized */
127 BFI_IOC_CFG
= 3, /* IOC configuration in progress */
128 BFI_IOC_OP
= 4, /* IOC is operational */
129 BFI_IOC_DISABLING
= 5, /* IOC is being disabled */
130 BFI_IOC_DISABLED
= 6, /* IOC is disabled */
131 BFI_IOC_CFG_DISABLED
= 7, /* IOC is being disabled;transient */
132 BFI_IOC_FAIL
= 8, /* IOC heart-beat failure */
133 BFI_IOC_MEMTEST
= 9, /* IOC is doing memtest */
136 #define BFI_IOC_ENDIAN_SIG 0x12345678
139 BFI_ADAPTER_TYPE_FC
= 0x01, /* FC adapters */
140 BFI_ADAPTER_TYPE_MK
= 0x0f0000, /* adapter type mask */
141 BFI_ADAPTER_TYPE_SH
= 16, /* adapter type shift */
142 BFI_ADAPTER_NPORTS_MK
= 0xff00, /* number of ports mask */
143 BFI_ADAPTER_NPORTS_SH
= 8, /* number of ports shift */
144 BFI_ADAPTER_SPEED_MK
= 0xff, /* adapter speed mask */
145 BFI_ADAPTER_SPEED_SH
= 0, /* adapter speed shift */
146 BFI_ADAPTER_PROTO
= 0x100000, /* prototype adapaters */
147 BFI_ADAPTER_TTV
= 0x200000, /* TTV debug capable */
148 BFI_ADAPTER_UNSUPP
= 0x400000, /* unknown adapter type */
151 #define BFI_ADAPTER_GETP(__prop, __adap_prop) \
152 (((__adap_prop) & BFI_ADAPTER_ ## __prop ## _MK) >> \
153 BFI_ADAPTER_ ## __prop ## _SH)
154 #define BFI_ADAPTER_SETP(__prop, __val) \
155 ((__val) << BFI_ADAPTER_ ## __prop ## _SH)
156 #define BFI_ADAPTER_IS_PROTO(__adap_type) \
157 ((__adap_type) & BFI_ADAPTER_PROTO)
158 #define BFI_ADAPTER_IS_TTV(__adap_type) \
159 ((__adap_type) & BFI_ADAPTER_TTV)
160 #define BFI_ADAPTER_IS_UNSUPP(__adap_type) \
161 ((__adap_type) & BFI_ADAPTER_UNSUPP)
162 #define BFI_ADAPTER_IS_SPECIAL(__adap_type) \
163 ((__adap_type) & (BFI_ADAPTER_TTV | BFI_ADAPTER_PROTO | \
167 * BFI_IOC_H2I_ENABLE_REQ & BFI_IOC_H2I_DISABLE_REQ messages
169 struct bfi_ioc_ctrl_req_s
{
170 struct bfi_mhdr_s mh
;
176 * BFI_IOC_I2H_ENABLE_REPLY & BFI_IOC_I2H_DISABLE_REPLY messages
178 struct bfi_ioc_ctrl_reply_s
{
179 struct bfi_mhdr_s mh
; /* Common msg header */
180 u8 status
; /* enable/disable status */
184 #define BFI_IOC_MSGSZ 8
188 union bfi_ioc_h2i_msg_u
{
189 struct bfi_mhdr_s mh
;
190 struct bfi_ioc_ctrl_req_s enable_req
;
191 struct bfi_ioc_ctrl_req_s disable_req
;
192 struct bfi_ioc_getattr_req_s getattr_req
;
193 u32 mboxmsg
[BFI_IOC_MSGSZ
];
199 union bfi_ioc_i2h_msg_u
{
200 struct bfi_mhdr_s mh
;
201 struct bfi_ioc_rdy_event_s rdy_event
;
202 u32 mboxmsg
[BFI_IOC_MSGSZ
];
207 #endif /* __BFI_IOC_H__ */