aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.h
diff options
context:
space:
mode:
authorSony Chacko <sony.chacko@qlogic.com>2012-12-31 23:11:55 -0500
committerDavid S. Miller <davem@davemloft.net>2013-01-02 05:43:27 -0500
commit629263acaea3613a7da4d602ac1d143533d251cc (patch)
tree4511acf48ff44a0966a7fe945ae06f32233fa97f /drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.h
parentd865ebb479ce6fdba96301845e8f16acb089b424 (diff)
qlcnic: 83xx CNA inter driver communication mechanism
Inter Driver Communication (IDC) module. CNA function drivers(ISCSI, FCOE and NIC) which shares the adapter relies on IDC mechanism for gracefull shut down, restart and firmware error recovery. Signed-off-by: Rajesh Borundia <rajesh.borundia@qlogic.com> Signed-off-by: Sucheta Chakraborty <sucheta.chakraborty@qlogic.com> Signed-off-by: Sony Chacko <sony.chacko@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.h')
-rw-r--r--drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.h80
1 files changed, 80 insertions, 0 deletions
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.h b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.h
index 45199958bca0..99b84277b86f 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.h
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.h
@@ -53,6 +53,30 @@
53#define QLCNIC_HOST_RDS_MBX_IDX 88 53#define QLCNIC_HOST_RDS_MBX_IDX 88
54#define QLCNIC_MAX_RING_SETS 8 54#define QLCNIC_MAX_RING_SETS 8
55 55
56/* Pause control registers */
57#define QLC_83XX_SRE_SHIM_REG 0x0D200284
58#define QLC_83XX_PORT0_THRESHOLD 0x0B2003A4
59#define QLC_83XX_PORT1_THRESHOLD 0x0B2013A4
60#define QLC_83XX_PORT0_TC_MC_REG 0x0B200388
61#define QLC_83XX_PORT1_TC_MC_REG 0x0B201388
62#define QLC_83XX_PORT0_TC_STATS 0x0B20039C
63#define QLC_83XX_PORT1_TC_STATS 0x0B20139C
64#define QLC_83XX_PORT2_IFB_THRESHOLD 0x0B200704
65#define QLC_83XX_PORT3_IFB_THRESHOLD 0x0B201704
66
67/* Peg PC status registers */
68#define QLC_83XX_CRB_PEG_NET_0 0x3400003c
69#define QLC_83XX_CRB_PEG_NET_1 0x3410003c
70#define QLC_83XX_CRB_PEG_NET_2 0x3420003c
71#define QLC_83XX_CRB_PEG_NET_3 0x3430003c
72#define QLC_83XX_CRB_PEG_NET_4 0x34b0003c
73
74/* Firmware image definitions */
75#define QLC_83XX_BOOTLOADER_FLASH_ADDR 0x10000
76#define QLC_83XX_FW_FILE_NAME "83xx_fw.bin"
77#define QLC_83XX_BOOT_FROM_FLASH 0
78#define QLC_83XX_BOOT_FROM_FILE 0x12345678
79
56struct qlcnic_intrpt_config { 80struct qlcnic_intrpt_config {
57 u8 type; 81 u8 type;
58 u8 enabled; 82 u8 enabled;
@@ -65,6 +89,49 @@ struct qlcnic_macvlan_mbx {
65 u16 vlan; 89 u16 vlan;
66}; 90};
67 91
92struct qlc_83xx_fw_info {
93 const struct firmware *fw;
94 u16 major_fw_version;
95 u8 minor_fw_version;
96 u8 sub_fw_version;
97 u8 fw_build_num;
98 u8 load_from_file;
99};
100
101#define QLC_83XX_IDC_DISABLE_FW_RESET_RECOVERY 0x1
102#define QLC_83XX_IDC_GRACEFULL_RESET 0x2
103#define QLC_83XX_IDC_TIMESTAMP 0
104#define QLC_83XX_IDC_DURATION 1
105#define QLC_83XX_IDC_INIT_TIMEOUT_SECS 30
106#define QLC_83XX_IDC_RESET_ACK_TIMEOUT_SECS 10
107#define QLC_83XX_IDC_RESET_TIMEOUT_SECS 10
108#define QLC_83XX_IDC_QUIESCE_ACK_TIMEOUT_SECS 20
109#define QLC_83XX_IDC_FW_POLL_DELAY (1 * HZ)
110#define QLC_83XX_IDC_FW_FAIL_THRESH 2
111#define QLC_83XX_IDC_MAX_FUNC_PER_PARTITION_INFO 8
112#define QLC_83XX_IDC_MAX_CNA_FUNCTIONS 16
113#define QLC_83XX_IDC_MAJOR_VERSION 1
114#define QLC_83XX_IDC_MINOR_VERSION 0
115#define QLC_83XX_IDC_FLASH_PARAM_ADDR 0x3e8020
116
117/* Mailbox process AEN count */
118#define QLC_83XX_MBX_AEN_CNT 5
119
120struct qlcnic_adapter;
121struct qlc_83xx_idc {
122 int (*state_entry) (struct qlcnic_adapter *);
123 u64 sec_counter;
124 u64 delay;
125 unsigned long status;
126 int err_code;
127 int collect_dump;
128 u8 curr_state;
129 u8 prev_state;
130 u8 vnic_state;
131 u8 vnic_wait_limit;
132 u8 quiesce_req;
133 char **name;
134};
68 135
69/* Mailbox process AEN count */ 136/* Mailbox process AEN count */
70#define QLC_83XX_IDC_COMP_AEN 3 137#define QLC_83XX_IDC_COMP_AEN 3
@@ -303,4 +370,17 @@ int qlcnic_83xx_save_flash_status(struct qlcnic_adapter *);
303int qlcnic_83xx_restore_flash_status(struct qlcnic_adapter *, int); 370int qlcnic_83xx_restore_flash_status(struct qlcnic_adapter *, int);
304int qlcnic_83xx_read_flash_mfg_id(struct qlcnic_adapter *); 371int qlcnic_83xx_read_flash_mfg_id(struct qlcnic_adapter *);
305int qlcnic_83xx_read_flash_descriptor_table(struct qlcnic_adapter *); 372int qlcnic_83xx_read_flash_descriptor_table(struct qlcnic_adapter *);
373int qlcnic_83xx_flash_read32(struct qlcnic_adapter *, u32, u8 *, int);
374int qlcnic_83xx_lockless_flash_read32(struct qlcnic_adapter *,
375 u32, u8 *, int);
376int qlcnic_83xx_init(struct qlcnic_adapter *);
377int qlcnic_83xx_idc_ready_state_entry(struct qlcnic_adapter *);
378int qlcnic_83xx_check_hw_status(struct qlcnic_adapter *p_dev);
379void qlcnic_83xx_idc_poll_dev_state(struct work_struct *);
380void qlcnic_83xx_idc_exit(struct qlcnic_adapter *);
381void qlcnic_83xx_idc_request_reset(struct qlcnic_adapter *, u32);
382int qlcnic_83xx_lock_driver(struct qlcnic_adapter *);
383void qlcnic_83xx_unlock_driver(struct qlcnic_adapter *);
384int qlcnic_83xx_set_default_offload_settings(struct qlcnic_adapter *);
385int qlcnic_83xx_ms_mem_write128(struct qlcnic_adapter *, u64, u32 *, u32);
306#endif 386#endif