1*14b24e2bSVaishali Kulkarni /*
2*14b24e2bSVaishali Kulkarni * CDDL HEADER START
3*14b24e2bSVaishali Kulkarni *
4*14b24e2bSVaishali Kulkarni * The contents of this file are subject to the terms of the
5*14b24e2bSVaishali Kulkarni * Common Development and Distribution License, v.1,  (the "License").
6*14b24e2bSVaishali Kulkarni * You may not use this file except in compliance with the License.
7*14b24e2bSVaishali Kulkarni *
8*14b24e2bSVaishali Kulkarni * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*14b24e2bSVaishali Kulkarni * or http://opensource.org/licenses/CDDL-1.0.
10*14b24e2bSVaishali Kulkarni * See the License for the specific language governing permissions
11*14b24e2bSVaishali Kulkarni * and limitations under the License.
12*14b24e2bSVaishali Kulkarni *
13*14b24e2bSVaishali Kulkarni * When distributing Covered Code, include this CDDL HEADER in each
14*14b24e2bSVaishali Kulkarni * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*14b24e2bSVaishali Kulkarni * If applicable, add the following below this CDDL HEADER, with the
16*14b24e2bSVaishali Kulkarni * fields enclosed by brackets "[]" replaced with your own identifying
17*14b24e2bSVaishali Kulkarni * information: Portions Copyright [yyyy] [name of copyright owner]
18*14b24e2bSVaishali Kulkarni *
19*14b24e2bSVaishali Kulkarni * CDDL HEADER END
20*14b24e2bSVaishali Kulkarni */
21*14b24e2bSVaishali Kulkarni 
22*14b24e2bSVaishali Kulkarni /*
23*14b24e2bSVaishali Kulkarni * Copyright 2014-2017 Cavium, Inc.
24*14b24e2bSVaishali Kulkarni * The contents of this file are subject to the terms of the Common Development
25*14b24e2bSVaishali Kulkarni * and Distribution License, v.1,  (the "License").
26*14b24e2bSVaishali Kulkarni 
27*14b24e2bSVaishali Kulkarni * You may not use this file except in compliance with the License.
28*14b24e2bSVaishali Kulkarni 
29*14b24e2bSVaishali Kulkarni * You can obtain a copy of the License at available
30*14b24e2bSVaishali Kulkarni * at http://opensource.org/licenses/CDDL-1.0
31*14b24e2bSVaishali Kulkarni 
32*14b24e2bSVaishali Kulkarni * See the License for the specific language governing permissions and
33*14b24e2bSVaishali Kulkarni * limitations under the License.
34*14b24e2bSVaishali Kulkarni */
35*14b24e2bSVaishali Kulkarni 
36*14b24e2bSVaishali Kulkarni #ifndef __ECORE_MCP_API_H__
37*14b24e2bSVaishali Kulkarni #define __ECORE_MCP_API_H__
38*14b24e2bSVaishali Kulkarni 
39*14b24e2bSVaishali Kulkarni #include "ecore_status.h"
40*14b24e2bSVaishali Kulkarni 
41*14b24e2bSVaishali Kulkarni struct ecore_mcp_link_speed_params {
42*14b24e2bSVaishali Kulkarni 	bool autoneg;
43*14b24e2bSVaishali Kulkarni 	u32 advertised_speeds; /* bitmask of DRV_SPEED_CAPABILITY */
44*14b24e2bSVaishali Kulkarni 	u32 forced_speed; /* In Mb/s */
45*14b24e2bSVaishali Kulkarni };
46*14b24e2bSVaishali Kulkarni 
47*14b24e2bSVaishali Kulkarni struct ecore_mcp_link_pause_params {
48*14b24e2bSVaishali Kulkarni 	bool autoneg;
49*14b24e2bSVaishali Kulkarni 	bool forced_rx;
50*14b24e2bSVaishali Kulkarni 	bool forced_tx;
51*14b24e2bSVaishali Kulkarni };
52*14b24e2bSVaishali Kulkarni 
53*14b24e2bSVaishali Kulkarni enum ecore_mcp_eee_mode {
54*14b24e2bSVaishali Kulkarni 	ECORE_MCP_EEE_DISABLED,
55*14b24e2bSVaishali Kulkarni 	ECORE_MCP_EEE_ENABLED,
56*14b24e2bSVaishali Kulkarni 	ECORE_MCP_EEE_UNSUPPORTED
57*14b24e2bSVaishali Kulkarni };
58*14b24e2bSVaishali Kulkarni 
59*14b24e2bSVaishali Kulkarni #ifndef __EXTRACT__LINUX__
60*14b24e2bSVaishali Kulkarni struct ecore_link_eee_params {
61*14b24e2bSVaishali Kulkarni 	u32 tx_lpi_timer;
62*14b24e2bSVaishali Kulkarni #define ECORE_EEE_1G_ADV	(1 << 0)
63*14b24e2bSVaishali Kulkarni #define ECORE_EEE_10G_ADV	(1 << 1)
64*14b24e2bSVaishali Kulkarni 	/* Capabilities are represented using ECORE_EEE_*_ADV values */
65*14b24e2bSVaishali Kulkarni 	u8 adv_caps;
66*14b24e2bSVaishali Kulkarni 	u8 lp_adv_caps;
67*14b24e2bSVaishali Kulkarni 	bool enable;
68*14b24e2bSVaishali Kulkarni 	bool tx_lpi_enable;
69*14b24e2bSVaishali Kulkarni };
70*14b24e2bSVaishali Kulkarni #endif
71*14b24e2bSVaishali Kulkarni 
72*14b24e2bSVaishali Kulkarni struct ecore_mcp_link_params {
73*14b24e2bSVaishali Kulkarni 	struct ecore_mcp_link_speed_params speed;
74*14b24e2bSVaishali Kulkarni 	struct ecore_mcp_link_pause_params pause;
75*14b24e2bSVaishali Kulkarni 	u32 loopback_mode; /* in PMM_LOOPBACK values */
76*14b24e2bSVaishali Kulkarni 	struct ecore_link_eee_params eee;
77*14b24e2bSVaishali Kulkarni };
78*14b24e2bSVaishali Kulkarni 
79*14b24e2bSVaishali Kulkarni struct ecore_mcp_link_capabilities {
80*14b24e2bSVaishali Kulkarni 	u32 speed_capabilities;
81*14b24e2bSVaishali Kulkarni 	bool default_speed_autoneg; /* In Mb/s */
82*14b24e2bSVaishali Kulkarni 	u32 default_speed; /* In Mb/s */
83*14b24e2bSVaishali Kulkarni 	enum ecore_mcp_eee_mode default_eee;
84*14b24e2bSVaishali Kulkarni 	u32 eee_lpi_timer;
85*14b24e2bSVaishali Kulkarni };
86*14b24e2bSVaishali Kulkarni 
87*14b24e2bSVaishali Kulkarni struct ecore_mcp_link_state {
88*14b24e2bSVaishali Kulkarni 	bool link_up;
89*14b24e2bSVaishali Kulkarni 
90*14b24e2bSVaishali Kulkarni 	u32 line_speed; /* In Mb/s */
91*14b24e2bSVaishali Kulkarni 	u32 min_pf_rate; /* In Mb/s */
92*14b24e2bSVaishali Kulkarni 	u32 speed; /* In Mb/s */
93*14b24e2bSVaishali Kulkarni 	bool full_duplex;
94*14b24e2bSVaishali Kulkarni 
95*14b24e2bSVaishali Kulkarni 	bool an;
96*14b24e2bSVaishali Kulkarni 	bool an_complete;
97*14b24e2bSVaishali Kulkarni 	bool parallel_detection;
98*14b24e2bSVaishali Kulkarni 	bool pfc_enabled;
99*14b24e2bSVaishali Kulkarni 
100*14b24e2bSVaishali Kulkarni #define ECORE_LINK_PARTNER_SPEED_1G_HD	(1 << 0)
101*14b24e2bSVaishali Kulkarni #define ECORE_LINK_PARTNER_SPEED_1G_FD	(1 << 1)
102*14b24e2bSVaishali Kulkarni #define ECORE_LINK_PARTNER_SPEED_10G	(1 << 2)
103*14b24e2bSVaishali Kulkarni #define ECORE_LINK_PARTNER_SPEED_20G	(1 << 3)
104*14b24e2bSVaishali Kulkarni #define ECORE_LINK_PARTNER_SPEED_25G	(1 << 4)
105*14b24e2bSVaishali Kulkarni #define ECORE_LINK_PARTNER_SPEED_40G	(1 << 5)
106*14b24e2bSVaishali Kulkarni #define ECORE_LINK_PARTNER_SPEED_50G	(1 << 6)
107*14b24e2bSVaishali Kulkarni #define ECORE_LINK_PARTNER_SPEED_100G	(1 << 7)
108*14b24e2bSVaishali Kulkarni 	u32 partner_adv_speed;
109*14b24e2bSVaishali Kulkarni 
110*14b24e2bSVaishali Kulkarni 	bool partner_tx_flow_ctrl_en;
111*14b24e2bSVaishali Kulkarni 	bool partner_rx_flow_ctrl_en;
112*14b24e2bSVaishali Kulkarni 
113*14b24e2bSVaishali Kulkarni #define ECORE_LINK_PARTNER_SYMMETRIC_PAUSE (1)
114*14b24e2bSVaishali Kulkarni #define ECORE_LINK_PARTNER_ASYMMETRIC_PAUSE (2)
115*14b24e2bSVaishali Kulkarni #define ECORE_LINK_PARTNER_BOTH_PAUSE (3)
116*14b24e2bSVaishali Kulkarni 	u8 partner_adv_pause;
117*14b24e2bSVaishali Kulkarni 
118*14b24e2bSVaishali Kulkarni 	bool sfp_tx_fault;
119*14b24e2bSVaishali Kulkarni 
120*14b24e2bSVaishali Kulkarni 	bool eee_active;
121*14b24e2bSVaishali Kulkarni 	u8 eee_adv_caps;
122*14b24e2bSVaishali Kulkarni 	u8 eee_lp_adv_caps;
123*14b24e2bSVaishali Kulkarni };
124*14b24e2bSVaishali Kulkarni 
125*14b24e2bSVaishali Kulkarni struct ecore_mcp_function_info {
126*14b24e2bSVaishali Kulkarni 	u8 pause_on_host;
127*14b24e2bSVaishali Kulkarni 
128*14b24e2bSVaishali Kulkarni 	enum ecore_pci_personality protocol;
129*14b24e2bSVaishali Kulkarni 
130*14b24e2bSVaishali Kulkarni 	u8 bandwidth_min;
131*14b24e2bSVaishali Kulkarni 	u8 bandwidth_max;
132*14b24e2bSVaishali Kulkarni 
133*14b24e2bSVaishali Kulkarni 	u8 mac[ETH_ALEN];
134*14b24e2bSVaishali Kulkarni 
135*14b24e2bSVaishali Kulkarni 	u64 wwn_port;
136*14b24e2bSVaishali Kulkarni 	u64 wwn_node;
137*14b24e2bSVaishali Kulkarni 
138*14b24e2bSVaishali Kulkarni #define ECORE_MCP_VLAN_UNSET		(0xffff)
139*14b24e2bSVaishali Kulkarni 	u16 ovlan;
140*14b24e2bSVaishali Kulkarni 
141*14b24e2bSVaishali Kulkarni 	u16 mtu;
142*14b24e2bSVaishali Kulkarni };
143*14b24e2bSVaishali Kulkarni 
144*14b24e2bSVaishali Kulkarni struct ecore_mcp_nvm_common {
145*14b24e2bSVaishali Kulkarni 	u32 offset;
146*14b24e2bSVaishali Kulkarni 	u32 param;
147*14b24e2bSVaishali Kulkarni 	u32 resp;
148*14b24e2bSVaishali Kulkarni 	u32 cmd;
149*14b24e2bSVaishali Kulkarni };
150*14b24e2bSVaishali Kulkarni 
151*14b24e2bSVaishali Kulkarni struct ecore_mcp_nvm_rd {
152*14b24e2bSVaishali Kulkarni 	u32 *buf_size;
153*14b24e2bSVaishali Kulkarni 	u32 *buf;
154*14b24e2bSVaishali Kulkarni };
155*14b24e2bSVaishali Kulkarni 
156*14b24e2bSVaishali Kulkarni struct ecore_mcp_nvm_wr {
157*14b24e2bSVaishali Kulkarni 	u32 buf_size;
158*14b24e2bSVaishali Kulkarni 	u32 *buf;
159*14b24e2bSVaishali Kulkarni };
160*14b24e2bSVaishali Kulkarni 
161*14b24e2bSVaishali Kulkarni struct ecore_mcp_nvm_params {
162*14b24e2bSVaishali Kulkarni #define ECORE_MCP_CMD		(1 << 0)
163*14b24e2bSVaishali Kulkarni #define ECORE_MCP_NVM_RD	(1 << 1)
164*14b24e2bSVaishali Kulkarni #define ECORE_MCP_NVM_WR	(1 << 2)
165*14b24e2bSVaishali Kulkarni 	u8 type;
166*14b24e2bSVaishali Kulkarni 
167*14b24e2bSVaishali Kulkarni 	struct ecore_mcp_nvm_common nvm_common;
168*14b24e2bSVaishali Kulkarni 
169*14b24e2bSVaishali Kulkarni 	union {
170*14b24e2bSVaishali Kulkarni 		struct ecore_mcp_nvm_rd nvm_rd;
171*14b24e2bSVaishali Kulkarni 		struct ecore_mcp_nvm_wr nvm_wr;
172*14b24e2bSVaishali Kulkarni 	};
173*14b24e2bSVaishali Kulkarni };
174*14b24e2bSVaishali Kulkarni 
175*14b24e2bSVaishali Kulkarni #ifndef __EXTRACT__LINUX__
176*14b24e2bSVaishali Kulkarni enum ecore_nvm_images {
177*14b24e2bSVaishali Kulkarni 	ECORE_NVM_IMAGE_ISCSI_CFG,
178*14b24e2bSVaishali Kulkarni 	ECORE_NVM_IMAGE_FCOE_CFG,
179*14b24e2bSVaishali Kulkarni 	ECORE_NVM_IMAGE_MDUMP,
180*14b24e2bSVaishali Kulkarni };
181*14b24e2bSVaishali Kulkarni #endif
182*14b24e2bSVaishali Kulkarni 
183*14b24e2bSVaishali Kulkarni struct ecore_mcp_drv_version {
184*14b24e2bSVaishali Kulkarni 	u32 version;
185*14b24e2bSVaishali Kulkarni 	u8 name[MCP_DRV_VER_STR_SIZE - 4];
186*14b24e2bSVaishali Kulkarni };
187*14b24e2bSVaishali Kulkarni 
188*14b24e2bSVaishali Kulkarni struct ecore_mcp_lan_stats {
189*14b24e2bSVaishali Kulkarni 	u64 ucast_rx_pkts;
190*14b24e2bSVaishali Kulkarni 	u64 ucast_tx_pkts;
191*14b24e2bSVaishali Kulkarni 	u32 fcs_err;
192*14b24e2bSVaishali Kulkarni };
193*14b24e2bSVaishali Kulkarni 
194*14b24e2bSVaishali Kulkarni #ifndef ECORE_PROTO_STATS
195*14b24e2bSVaishali Kulkarni #define ECORE_PROTO_STATS
196*14b24e2bSVaishali Kulkarni struct ecore_mcp_fcoe_stats {
197*14b24e2bSVaishali Kulkarni 	u64 rx_pkts;
198*14b24e2bSVaishali Kulkarni 	u64 tx_pkts;
199*14b24e2bSVaishali Kulkarni 	u32 fcs_err;
200*14b24e2bSVaishali Kulkarni 	u32 login_failure;
201*14b24e2bSVaishali Kulkarni };
202*14b24e2bSVaishali Kulkarni 
203*14b24e2bSVaishali Kulkarni struct ecore_mcp_iscsi_stats {
204*14b24e2bSVaishali Kulkarni 	u64 rx_pdus;
205*14b24e2bSVaishali Kulkarni 	u64 tx_pdus;
206*14b24e2bSVaishali Kulkarni 	u64 rx_bytes;
207*14b24e2bSVaishali Kulkarni 	u64 tx_bytes;
208*14b24e2bSVaishali Kulkarni };
209*14b24e2bSVaishali Kulkarni 
210*14b24e2bSVaishali Kulkarni struct ecore_mcp_rdma_stats {
211*14b24e2bSVaishali Kulkarni 	u64 rx_pkts;
212*14b24e2bSVaishali Kulkarni 	u64 tx_pkts;
213*14b24e2bSVaishali Kulkarni 	u64 rx_bytes;
214*14b24e2bSVaishali Kulkarni 	u64 tx_byts;
215*14b24e2bSVaishali Kulkarni };
216*14b24e2bSVaishali Kulkarni 
217*14b24e2bSVaishali Kulkarni enum ecore_mcp_protocol_type {
218*14b24e2bSVaishali Kulkarni 	ECORE_MCP_LAN_STATS,
219*14b24e2bSVaishali Kulkarni 	ECORE_MCP_FCOE_STATS,
220*14b24e2bSVaishali Kulkarni 	ECORE_MCP_ISCSI_STATS,
221*14b24e2bSVaishali Kulkarni 	ECORE_MCP_RDMA_STATS
222*14b24e2bSVaishali Kulkarni };
223*14b24e2bSVaishali Kulkarni 
224*14b24e2bSVaishali Kulkarni union ecore_mcp_protocol_stats {
225*14b24e2bSVaishali Kulkarni 	struct ecore_mcp_lan_stats lan_stats;
226*14b24e2bSVaishali Kulkarni 	struct ecore_mcp_fcoe_stats fcoe_stats;
227*14b24e2bSVaishali Kulkarni 	struct ecore_mcp_iscsi_stats iscsi_stats;
228*14b24e2bSVaishali Kulkarni 	struct ecore_mcp_rdma_stats rdma_stats;
229*14b24e2bSVaishali Kulkarni };
230*14b24e2bSVaishali Kulkarni #endif
231*14b24e2bSVaishali Kulkarni 
232*14b24e2bSVaishali Kulkarni enum ecore_ov_client {
233*14b24e2bSVaishali Kulkarni 	ECORE_OV_CLIENT_DRV,
234*14b24e2bSVaishali Kulkarni 	ECORE_OV_CLIENT_USER,
235*14b24e2bSVaishali Kulkarni 	ECORE_OV_CLIENT_VENDOR_SPEC
236*14b24e2bSVaishali Kulkarni };
237*14b24e2bSVaishali Kulkarni 
238*14b24e2bSVaishali Kulkarni enum ecore_ov_driver_state {
239*14b24e2bSVaishali Kulkarni 	ECORE_OV_DRIVER_STATE_NOT_LOADED,
240*14b24e2bSVaishali Kulkarni 	ECORE_OV_DRIVER_STATE_DISABLED,
241*14b24e2bSVaishali Kulkarni 	ECORE_OV_DRIVER_STATE_ACTIVE
242*14b24e2bSVaishali Kulkarni };
243*14b24e2bSVaishali Kulkarni 
244*14b24e2bSVaishali Kulkarni enum ecore_ov_wol {
245*14b24e2bSVaishali Kulkarni 	ECORE_OV_WOL_DEFAULT,
246*14b24e2bSVaishali Kulkarni 	ECORE_OV_WOL_DISABLED,
247*14b24e2bSVaishali Kulkarni 	ECORE_OV_WOL_ENABLED
248*14b24e2bSVaishali Kulkarni };
249*14b24e2bSVaishali Kulkarni 
250*14b24e2bSVaishali Kulkarni #ifndef __EXTRACT__LINUX__
251*14b24e2bSVaishali Kulkarni #define ECORE_MAX_NPIV_ENTRIES 128
252*14b24e2bSVaishali Kulkarni #define ECORE_WWN_SIZE 8
253*14b24e2bSVaishali Kulkarni struct ecore_fc_npiv_tbl {
254*14b24e2bSVaishali Kulkarni 	u16 num_wwpn;
255*14b24e2bSVaishali Kulkarni 	u16 num_wwnn;
256*14b24e2bSVaishali Kulkarni 	u8 wwpn[ECORE_MAX_NPIV_ENTRIES][ECORE_WWN_SIZE];
257*14b24e2bSVaishali Kulkarni 	u8 wwnn[ECORE_MAX_NPIV_ENTRIES][ECORE_WWN_SIZE];
258*14b24e2bSVaishali Kulkarni };
259*14b24e2bSVaishali Kulkarni 
260*14b24e2bSVaishali Kulkarni enum ecore_led_mode {
261*14b24e2bSVaishali Kulkarni 	ECORE_LED_MODE_OFF,
262*14b24e2bSVaishali Kulkarni 	ECORE_LED_MODE_ON,
263*14b24e2bSVaishali Kulkarni 	ECORE_LED_MODE_RESTORE
264*14b24e2bSVaishali Kulkarni };
265*14b24e2bSVaishali Kulkarni #endif
266*14b24e2bSVaishali Kulkarni 
267*14b24e2bSVaishali Kulkarni struct ecore_temperature_sensor {
268*14b24e2bSVaishali Kulkarni 	u8 sensor_location;
269*14b24e2bSVaishali Kulkarni 	u8 threshold_high;
270*14b24e2bSVaishali Kulkarni 	u8 critical;
271*14b24e2bSVaishali Kulkarni 	u8 current_temp;
272*14b24e2bSVaishali Kulkarni };
273*14b24e2bSVaishali Kulkarni 
274*14b24e2bSVaishali Kulkarni #define ECORE_MAX_NUM_OF_SENSORS	7
275*14b24e2bSVaishali Kulkarni struct ecore_temperature_info {
276*14b24e2bSVaishali Kulkarni 	u32 num_sensors;
277*14b24e2bSVaishali Kulkarni 	struct ecore_temperature_sensor sensors[ECORE_MAX_NUM_OF_SENSORS];
278*14b24e2bSVaishali Kulkarni };
279*14b24e2bSVaishali Kulkarni 
280*14b24e2bSVaishali Kulkarni enum ecore_mba_img_idx {
281*14b24e2bSVaishali Kulkarni 	ECORE_MBA_LEGACY_IDX,
282*14b24e2bSVaishali Kulkarni 	ECORE_MBA_PCI3CLP_IDX,
283*14b24e2bSVaishali Kulkarni 	ECORE_MBA_PCI3_IDX,
284*14b24e2bSVaishali Kulkarni 	ECORE_MBA_FCODE_IDX,
285*14b24e2bSVaishali Kulkarni 	ECORE_EFI_X86_IDX,
286*14b24e2bSVaishali Kulkarni 	ECORE_EFI_IPF_IDX,
287*14b24e2bSVaishali Kulkarni 	ECORE_EFI_EBC_IDX,
288*14b24e2bSVaishali Kulkarni 	ECORE_EFI_X64_IDX,
289*14b24e2bSVaishali Kulkarni 	ECORE_MAX_NUM_OF_ROMIMG
290*14b24e2bSVaishali Kulkarni };
291*14b24e2bSVaishali Kulkarni 
292*14b24e2bSVaishali Kulkarni struct ecore_mba_vers {
293*14b24e2bSVaishali Kulkarni 	u32 mba_vers[ECORE_MAX_NUM_OF_ROMIMG];
294*14b24e2bSVaishali Kulkarni };
295*14b24e2bSVaishali Kulkarni 
296*14b24e2bSVaishali Kulkarni enum ecore_mfw_tlv_type {
297*14b24e2bSVaishali Kulkarni 	ECORE_MFW_TLV_GENERIC = 0x1, /* Core driver TLVs */
298*14b24e2bSVaishali Kulkarni 	ECORE_MFW_TLV_ETH = 0x2, /* L2 driver TLVs */
299*14b24e2bSVaishali Kulkarni 	ECORE_MFW_TLV_FCOE = 0x4, /* FCoE protocol TLVs */
300*14b24e2bSVaishali Kulkarni 	ECORE_MFW_TLV_ISCSI = 0x8, /* SCSI protocol TLVs */
301*14b24e2bSVaishali Kulkarni 	ECORE_MFW_TLV_MAX = 0x16,
302*14b24e2bSVaishali Kulkarni };
303*14b24e2bSVaishali Kulkarni 
304*14b24e2bSVaishali Kulkarni struct ecore_mfw_tlv_generic {
305*14b24e2bSVaishali Kulkarni 	struct {
306*14b24e2bSVaishali Kulkarni 		u8 ipv4_csum_offload;
307*14b24e2bSVaishali Kulkarni 		u8 lso_supported;
308*14b24e2bSVaishali Kulkarni 		bool b_set;
309*14b24e2bSVaishali Kulkarni 	} flags;
310*14b24e2bSVaishali Kulkarni 
311*14b24e2bSVaishali Kulkarni #define ECORE_MFW_TLV_MAC_COUNT 3
312*14b24e2bSVaishali Kulkarni 	/* First entry for primary MAC, 2 secondary MACs possible */
313*14b24e2bSVaishali Kulkarni 	u8 mac[ECORE_MFW_TLV_MAC_COUNT][6];
314*14b24e2bSVaishali Kulkarni 	bool mac_set[ECORE_MFW_TLV_MAC_COUNT];
315*14b24e2bSVaishali Kulkarni 
316*14b24e2bSVaishali Kulkarni 	u64 rx_frames;
317*14b24e2bSVaishali Kulkarni 	bool rx_frames_set;
318*14b24e2bSVaishali Kulkarni 	u64 rx_bytes;
319*14b24e2bSVaishali Kulkarni 	bool rx_bytes_set;
320*14b24e2bSVaishali Kulkarni 	u64 tx_frames;
321*14b24e2bSVaishali Kulkarni 	bool tx_frames_set;
322*14b24e2bSVaishali Kulkarni 	u64 tx_bytes;
323*14b24e2bSVaishali Kulkarni 	bool tx_bytes_set;
324*14b24e2bSVaishali Kulkarni };
325*14b24e2bSVaishali Kulkarni 
326*14b24e2bSVaishali Kulkarni #ifndef __EXTRACT__LINUX__
327*14b24e2bSVaishali Kulkarni struct ecore_mfw_tlv_eth {
328*14b24e2bSVaishali Kulkarni 	u16 lso_maxoff_size;
329*14b24e2bSVaishali Kulkarni 	bool lso_maxoff_size_set;
330*14b24e2bSVaishali Kulkarni 	u16 lso_minseg_size;
331*14b24e2bSVaishali Kulkarni 	bool lso_minseg_size_set;
332*14b24e2bSVaishali Kulkarni 	u8 prom_mode;
333*14b24e2bSVaishali Kulkarni 	bool prom_mode_set;
334*14b24e2bSVaishali Kulkarni 	u16 tx_descr_size;
335*14b24e2bSVaishali Kulkarni 	bool tx_descr_size_set;
336*14b24e2bSVaishali Kulkarni 	u16 rx_descr_size;
337*14b24e2bSVaishali Kulkarni 	bool rx_descr_size_set;
338*14b24e2bSVaishali Kulkarni 	u16 netq_count;
339*14b24e2bSVaishali Kulkarni 	bool netq_count_set;
340*14b24e2bSVaishali Kulkarni 	u32 tcp4_offloads;
341*14b24e2bSVaishali Kulkarni 	bool tcp4_offloads_set;
342*14b24e2bSVaishali Kulkarni 	u32 tcp6_offloads;
343*14b24e2bSVaishali Kulkarni 	bool tcp6_offloads_set;
344*14b24e2bSVaishali Kulkarni 	u16 tx_descr_qdepth;
345*14b24e2bSVaishali Kulkarni 	bool tx_descr_qdepth_set;
346*14b24e2bSVaishali Kulkarni 	u16 rx_descr_qdepth;
347*14b24e2bSVaishali Kulkarni 	bool rx_descr_qdepth_set;
348*14b24e2bSVaishali Kulkarni 	u8 iov_offload;
349*14b24e2bSVaishali Kulkarni #define ECORE_MFW_TLV_IOV_OFFLOAD_NONE		(0)
350*14b24e2bSVaishali Kulkarni #define ECORE_MFW_TLV_IOV_OFFLOAD_MULTIQUEUE	(1)
351*14b24e2bSVaishali Kulkarni #define ECORE_MFW_TLV_IOV_OFFLOAD_VEB		(2)
352*14b24e2bSVaishali Kulkarni #define ECORE_MFW_TLV_IOV_OFFLOAD_VEPA		(3)
353*14b24e2bSVaishali Kulkarni 	bool iov_offload_set;
354*14b24e2bSVaishali Kulkarni 	u8 txqs_empty;
355*14b24e2bSVaishali Kulkarni 	bool txqs_empty_set;
356*14b24e2bSVaishali Kulkarni 	u8 rxqs_empty;
357*14b24e2bSVaishali Kulkarni 	bool rxqs_empty_set;
358*14b24e2bSVaishali Kulkarni 	u8 num_txqs_full;
359*14b24e2bSVaishali Kulkarni 	bool num_txqs_full_set;
360*14b24e2bSVaishali Kulkarni 	u8 num_rxqs_full;
361*14b24e2bSVaishali Kulkarni 	bool num_rxqs_full_set;
362*14b24e2bSVaishali Kulkarni };
363*14b24e2bSVaishali Kulkarni 
364*14b24e2bSVaishali Kulkarni struct ecore_mfw_tlv_time {
365*14b24e2bSVaishali Kulkarni 	bool b_set;
366*14b24e2bSVaishali Kulkarni 	u8 month;
367*14b24e2bSVaishali Kulkarni 	u8 day;
368*14b24e2bSVaishali Kulkarni 	u8 hour;
369*14b24e2bSVaishali Kulkarni 	u8 min;
370*14b24e2bSVaishali Kulkarni 	u16 msec;
371*14b24e2bSVaishali Kulkarni 	u16 usec;
372*14b24e2bSVaishali Kulkarni };
373*14b24e2bSVaishali Kulkarni 
374*14b24e2bSVaishali Kulkarni struct ecore_mfw_tlv_fcoe {
375*14b24e2bSVaishali Kulkarni 	u8 scsi_timeout;
376*14b24e2bSVaishali Kulkarni 	bool scsi_timeout_set;
377*14b24e2bSVaishali Kulkarni 	u32 rt_tov;
378*14b24e2bSVaishali Kulkarni 	bool rt_tov_set;
379*14b24e2bSVaishali Kulkarni 	u32 ra_tov;
380*14b24e2bSVaishali Kulkarni 	bool ra_tov_set;
381*14b24e2bSVaishali Kulkarni 	u32 ed_tov;
382*14b24e2bSVaishali Kulkarni 	bool ed_tov_set;
383*14b24e2bSVaishali Kulkarni 	u32 cr_tov;
384*14b24e2bSVaishali Kulkarni 	bool cr_tov_set;
385*14b24e2bSVaishali Kulkarni 	u8 boot_type;
386*14b24e2bSVaishali Kulkarni 	bool boot_type_set;
387*14b24e2bSVaishali Kulkarni 	u8 npiv_state;
388*14b24e2bSVaishali Kulkarni 	bool npiv_state_set;
389*14b24e2bSVaishali Kulkarni 	u32 num_npiv_ids;
390*14b24e2bSVaishali Kulkarni 	bool num_npiv_ids_set;
391*14b24e2bSVaishali Kulkarni 	u8 switch_name[8];
392*14b24e2bSVaishali Kulkarni 	bool switch_name_set;
393*14b24e2bSVaishali Kulkarni 	u16 switch_portnum;
394*14b24e2bSVaishali Kulkarni 	bool switch_portnum_set;
395*14b24e2bSVaishali Kulkarni 	u8 switch_portid[3];
396*14b24e2bSVaishali Kulkarni 	bool switch_portid_set;
397*14b24e2bSVaishali Kulkarni 	u8 vendor_name[8];
398*14b24e2bSVaishali Kulkarni 	bool vendor_name_set;
399*14b24e2bSVaishali Kulkarni 	u8 switch_model[8];
400*14b24e2bSVaishali Kulkarni 	bool switch_model_set;
401*14b24e2bSVaishali Kulkarni 	u8 switch_fw_version[8];
402*14b24e2bSVaishali Kulkarni 	bool switch_fw_version_set;
403*14b24e2bSVaishali Kulkarni 	u8 qos_pri;
404*14b24e2bSVaishali Kulkarni 	bool qos_pri_set;
405*14b24e2bSVaishali Kulkarni 	u8 port_alias[3];
406*14b24e2bSVaishali Kulkarni 	bool port_alias_set;
407*14b24e2bSVaishali Kulkarni 	u8 port_state;
408*14b24e2bSVaishali Kulkarni #define ECORE_MFW_TLV_PORT_STATE_OFFLINE	(0)
409*14b24e2bSVaishali Kulkarni #define ECORE_MFW_TLV_PORT_STATE_LOOP		(1)
410*14b24e2bSVaishali Kulkarni #define ECORE_MFW_TLV_PORT_STATE_P2P		(2)
411*14b24e2bSVaishali Kulkarni #define ECORE_MFW_TLV_PORT_STATE_FABRIC		(3)
412*14b24e2bSVaishali Kulkarni 	bool port_state_set;
413*14b24e2bSVaishali Kulkarni 	u16 fip_tx_descr_size;
414*14b24e2bSVaishali Kulkarni 	bool fip_tx_descr_size_set;
415*14b24e2bSVaishali Kulkarni 	u16 fip_rx_descr_size;
416*14b24e2bSVaishali Kulkarni 	bool fip_rx_descr_size_set;
417*14b24e2bSVaishali Kulkarni 	u16 link_failures;
418*14b24e2bSVaishali Kulkarni 	bool link_failures_set;
419*14b24e2bSVaishali Kulkarni 	u8 fcoe_boot_progress;
420*14b24e2bSVaishali Kulkarni 	bool fcoe_boot_progress_set;
421*14b24e2bSVaishali Kulkarni 	u64 rx_bcast;
422*14b24e2bSVaishali Kulkarni 	bool rx_bcast_set;
423*14b24e2bSVaishali Kulkarni 	u64 tx_bcast;
424*14b24e2bSVaishali Kulkarni 	bool tx_bcast_set;
425*14b24e2bSVaishali Kulkarni 	u16 fcoe_txq_depth;
426*14b24e2bSVaishali Kulkarni 	bool fcoe_txq_depth_set;
427*14b24e2bSVaishali Kulkarni 	u16 fcoe_rxq_depth;
428*14b24e2bSVaishali Kulkarni 	bool fcoe_rxq_depth_set;
429*14b24e2bSVaishali Kulkarni 	u64 fcoe_rx_frames;
430*14b24e2bSVaishali Kulkarni 	bool fcoe_rx_frames_set;
431*14b24e2bSVaishali Kulkarni 	u64 fcoe_rx_bytes;
432*14b24e2bSVaishali Kulkarni 	bool fcoe_rx_bytes_set;
433*14b24e2bSVaishali Kulkarni 	u64 fcoe_tx_frames;
434*14b24e2bSVaishali Kulkarni 	bool fcoe_tx_frames_set;
435*14b24e2bSVaishali Kulkarni 	u64 fcoe_tx_bytes;
436*14b24e2bSVaishali Kulkarni 	bool fcoe_tx_bytes_set;
437*14b24e2bSVaishali Kulkarni 	u16 crc_count;
438*14b24e2bSVaishali Kulkarni 	bool crc_count_set;
439*14b24e2bSVaishali Kulkarni 	u32 crc_err_src_fcid[5];
440*14b24e2bSVaishali Kulkarni 	bool crc_err_src_fcid_set[5];
441*14b24e2bSVaishali Kulkarni 	struct ecore_mfw_tlv_time crc_err[5];
442*14b24e2bSVaishali Kulkarni 	u16 losync_err;
443*14b24e2bSVaishali Kulkarni 	bool losync_err_set;
444*14b24e2bSVaishali Kulkarni 	u16 losig_err;
445*14b24e2bSVaishali Kulkarni 	bool losig_err_set;
446*14b24e2bSVaishali Kulkarni 	u16 primtive_err;
447*14b24e2bSVaishali Kulkarni 	bool primtive_err_set;
448*14b24e2bSVaishali Kulkarni 	u16 disparity_err;
449*14b24e2bSVaishali Kulkarni 	bool disparity_err_set;
450*14b24e2bSVaishali Kulkarni 	u16 code_violation_err;
451*14b24e2bSVaishali Kulkarni 	bool code_violation_err_set;
452*14b24e2bSVaishali Kulkarni 	u32 flogi_param[4];
453*14b24e2bSVaishali Kulkarni 	bool flogi_param_set[4];
454*14b24e2bSVaishali Kulkarni 	struct ecore_mfw_tlv_time flogi_tstamp;
455*14b24e2bSVaishali Kulkarni 	u32 flogi_acc_param[4];
456*14b24e2bSVaishali Kulkarni 	bool flogi_acc_param_set[4];
457*14b24e2bSVaishali Kulkarni 	struct ecore_mfw_tlv_time flogi_acc_tstamp;
458*14b24e2bSVaishali Kulkarni 	u32 flogi_rjt;
459*14b24e2bSVaishali Kulkarni 	bool flogi_rjt_set;
460*14b24e2bSVaishali Kulkarni 	struct ecore_mfw_tlv_time flogi_rjt_tstamp;
461*14b24e2bSVaishali Kulkarni 	u32 fdiscs;
462*14b24e2bSVaishali Kulkarni 	bool fdiscs_set;
463*14b24e2bSVaishali Kulkarni 	u8 fdisc_acc;
464*14b24e2bSVaishali Kulkarni 	bool fdisc_acc_set;
465*14b24e2bSVaishali Kulkarni 	u8 fdisc_rjt;
466*14b24e2bSVaishali Kulkarni 	bool fdisc_rjt_set;
467*14b24e2bSVaishali Kulkarni 	u8 plogi;
468*14b24e2bSVaishali Kulkarni 	bool plogi_set;
469*14b24e2bSVaishali Kulkarni 	u8 plogi_acc;
470*14b24e2bSVaishali Kulkarni 	bool plogi_acc_set;
471*14b24e2bSVaishali Kulkarni 	u8 plogi_rjt;
472*14b24e2bSVaishali Kulkarni 	bool plogi_rjt_set;
473*14b24e2bSVaishali Kulkarni 	u32 plogi_dst_fcid[5];
474*14b24e2bSVaishali Kulkarni 	bool plogi_dst_fcid_set[5];
475*14b24e2bSVaishali Kulkarni 	struct ecore_mfw_tlv_time plogi_tstamp[5];
476*14b24e2bSVaishali Kulkarni 	u32 plogi_acc_src_fcid[5];
477*14b24e2bSVaishali Kulkarni 	bool plogi_acc_src_fcid_set[5];
478*14b24e2bSVaishali Kulkarni 	struct ecore_mfw_tlv_time plogi_acc_tstamp[5];
479*14b24e2bSVaishali Kulkarni 	u8 tx_plogos;
480*14b24e2bSVaishali Kulkarni 	bool tx_plogos_set;
481*14b24e2bSVaishali Kulkarni 	u8 plogo_acc;
482*14b24e2bSVaishali Kulkarni 	bool plogo_acc_set;
483*14b24e2bSVaishali Kulkarni 	u8 plogo_rjt;
484*14b24e2bSVaishali Kulkarni 	bool plogo_rjt_set;
485*14b24e2bSVaishali Kulkarni 	u32 plogo_src_fcid[5];
486*14b24e2bSVaishali Kulkarni 	bool plogo_src_fcid_set[5];
487*14b24e2bSVaishali Kulkarni 	struct ecore_mfw_tlv_time plogo_tstamp[5];
488*14b24e2bSVaishali Kulkarni 	u8 rx_logos;
489*14b24e2bSVaishali Kulkarni 	bool rx_logos_set;
490*14b24e2bSVaishali Kulkarni 	u8 tx_accs;
491*14b24e2bSVaishali Kulkarni 	bool tx_accs_set;
492*14b24e2bSVaishali Kulkarni 	u8 tx_prlis;
493*14b24e2bSVaishali Kulkarni 	bool tx_prlis_set;
494*14b24e2bSVaishali Kulkarni 	u8 rx_accs;
495*14b24e2bSVaishali Kulkarni 	bool rx_accs_set;
496*14b24e2bSVaishali Kulkarni 	u8 tx_abts;
497*14b24e2bSVaishali Kulkarni 	bool tx_abts_set;
498*14b24e2bSVaishali Kulkarni 	u8 rx_abts_acc;
499*14b24e2bSVaishali Kulkarni 	bool rx_abts_acc_set;
500*14b24e2bSVaishali Kulkarni 	u8 rx_abts_rjt;
501*14b24e2bSVaishali Kulkarni 	bool rx_abts_rjt_set;
502*14b24e2bSVaishali Kulkarni 	u32 abts_dst_fcid[5];
503*14b24e2bSVaishali Kulkarni 	bool abts_dst_fcid_set[5];
504*14b24e2bSVaishali Kulkarni 	struct ecore_mfw_tlv_time abts_tstamp[5];
505*14b24e2bSVaishali Kulkarni 	u8 rx_rscn;
506*14b24e2bSVaishali Kulkarni 	bool rx_rscn_set;
507*14b24e2bSVaishali Kulkarni 	u32 rx_rscn_nport[4];
508*14b24e2bSVaishali Kulkarni 	bool rx_rscn_nport_set[4];
509*14b24e2bSVaishali Kulkarni 	u8 tx_lun_rst;
510*14b24e2bSVaishali Kulkarni 	bool tx_lun_rst_set;
511*14b24e2bSVaishali Kulkarni 	u8 abort_task_sets;
512*14b24e2bSVaishali Kulkarni 	bool abort_task_sets_set;
513*14b24e2bSVaishali Kulkarni 	u8 tx_tprlos;
514*14b24e2bSVaishali Kulkarni 	bool tx_tprlos_set;
515*14b24e2bSVaishali Kulkarni 	u8 tx_nos;
516*14b24e2bSVaishali Kulkarni 	bool tx_nos_set;
517*14b24e2bSVaishali Kulkarni 	u8 rx_nos;
518*14b24e2bSVaishali Kulkarni 	bool rx_nos_set;
519*14b24e2bSVaishali Kulkarni 	u8 ols;
520*14b24e2bSVaishali Kulkarni 	bool ols_set;
521*14b24e2bSVaishali Kulkarni 	u8 lr;
522*14b24e2bSVaishali Kulkarni 	bool lr_set;
523*14b24e2bSVaishali Kulkarni 	u8 lrr;
524*14b24e2bSVaishali Kulkarni 	bool lrr_set;
525*14b24e2bSVaishali Kulkarni 	u8 tx_lip;
526*14b24e2bSVaishali Kulkarni 	bool tx_lip_set;
527*14b24e2bSVaishali Kulkarni 	u8 rx_lip;
528*14b24e2bSVaishali Kulkarni 	bool rx_lip_set;
529*14b24e2bSVaishali Kulkarni 	u8 eofa;
530*14b24e2bSVaishali Kulkarni 	bool eofa_set;
531*14b24e2bSVaishali Kulkarni 	u8 eofni;
532*14b24e2bSVaishali Kulkarni 	bool eofni_set;
533*14b24e2bSVaishali Kulkarni 	u8 scsi_chks;
534*14b24e2bSVaishali Kulkarni 	bool scsi_chks_set;
535*14b24e2bSVaishali Kulkarni 	u8 scsi_cond_met;
536*14b24e2bSVaishali Kulkarni 	bool scsi_cond_met_set;
537*14b24e2bSVaishali Kulkarni 	u8 scsi_busy;
538*14b24e2bSVaishali Kulkarni 	bool scsi_busy_set;
539*14b24e2bSVaishali Kulkarni 	u8 scsi_inter;
540*14b24e2bSVaishali Kulkarni 	bool scsi_inter_set;
541*14b24e2bSVaishali Kulkarni 	u8 scsi_inter_cond_met;
542*14b24e2bSVaishali Kulkarni 	bool scsi_inter_cond_met_set;
543*14b24e2bSVaishali Kulkarni 	u8 scsi_rsv_conflicts;
544*14b24e2bSVaishali Kulkarni 	bool scsi_rsv_conflicts_set;
545*14b24e2bSVaishali Kulkarni 	u8 scsi_tsk_full;
546*14b24e2bSVaishali Kulkarni 	bool scsi_tsk_full_set;
547*14b24e2bSVaishali Kulkarni 	u8 scsi_aca_active;
548*14b24e2bSVaishali Kulkarni 	bool scsi_aca_active_set;
549*14b24e2bSVaishali Kulkarni 	u8 scsi_tsk_abort;
550*14b24e2bSVaishali Kulkarni 	bool scsi_tsk_abort_set;
551*14b24e2bSVaishali Kulkarni 	u32 scsi_rx_chk[5];
552*14b24e2bSVaishali Kulkarni 	bool scsi_rx_chk_set[5];
553*14b24e2bSVaishali Kulkarni 	struct ecore_mfw_tlv_time scsi_chk_tstamp[5];
554*14b24e2bSVaishali Kulkarni };
555*14b24e2bSVaishali Kulkarni 
556*14b24e2bSVaishali Kulkarni struct ecore_mfw_tlv_iscsi {
557*14b24e2bSVaishali Kulkarni 	u8 target_llmnr;
558*14b24e2bSVaishali Kulkarni 	bool target_llmnr_set;
559*14b24e2bSVaishali Kulkarni 	u8 header_digest;
560*14b24e2bSVaishali Kulkarni 	bool header_digest_set;
561*14b24e2bSVaishali Kulkarni 	u8 data_digest;
562*14b24e2bSVaishali Kulkarni 	bool data_digest_set;
563*14b24e2bSVaishali Kulkarni 	u8 auth_method;
564*14b24e2bSVaishali Kulkarni #define ECORE_MFW_TLV_AUTH_METHOD_NONE		(1)
565*14b24e2bSVaishali Kulkarni #define ECORE_MFW_TLV_AUTH_METHOD_CHAP		(2)
566*14b24e2bSVaishali Kulkarni #define ECORE_MFW_TLV_AUTH_METHOD_MUTUAL_CHAP	(3)
567*14b24e2bSVaishali Kulkarni 	bool auth_method_set;
568*14b24e2bSVaishali Kulkarni 	u16 boot_taget_portal;
569*14b24e2bSVaishali Kulkarni 	bool boot_taget_portal_set;
570*14b24e2bSVaishali Kulkarni 	u16 frame_size;
571*14b24e2bSVaishali Kulkarni 	bool frame_size_set;
572*14b24e2bSVaishali Kulkarni 	u16 tx_desc_size;
573*14b24e2bSVaishali Kulkarni 	bool tx_desc_size_set;
574*14b24e2bSVaishali Kulkarni 	u16 rx_desc_size;
575*14b24e2bSVaishali Kulkarni 	bool rx_desc_size_set;
576*14b24e2bSVaishali Kulkarni 	u8 boot_progress;
577*14b24e2bSVaishali Kulkarni 	bool boot_progress_set;
578*14b24e2bSVaishali Kulkarni 	u16 tx_desc_qdepth;
579*14b24e2bSVaishali Kulkarni 	bool tx_desc_qdepth_set;
580*14b24e2bSVaishali Kulkarni 	u16 rx_desc_qdepth;
581*14b24e2bSVaishali Kulkarni 	bool rx_desc_qdepth_set;
582*14b24e2bSVaishali Kulkarni 	u64 rx_frames;
583*14b24e2bSVaishali Kulkarni 	bool rx_frames_set;
584*14b24e2bSVaishali Kulkarni 	u64 rx_bytes;
585*14b24e2bSVaishali Kulkarni 	bool rx_bytes_set;
586*14b24e2bSVaishali Kulkarni 	u64 tx_frames;
587*14b24e2bSVaishali Kulkarni 	bool tx_frames_set;
588*14b24e2bSVaishali Kulkarni 	u64 tx_bytes;
589*14b24e2bSVaishali Kulkarni 	bool tx_bytes_set;
590*14b24e2bSVaishali Kulkarni };
591*14b24e2bSVaishali Kulkarni #endif
592*14b24e2bSVaishali Kulkarni 
593*14b24e2bSVaishali Kulkarni union ecore_mfw_tlv_data {
594*14b24e2bSVaishali Kulkarni 	struct ecore_mfw_tlv_generic generic;
595*14b24e2bSVaishali Kulkarni 	struct ecore_mfw_tlv_eth eth;
596*14b24e2bSVaishali Kulkarni 	struct ecore_mfw_tlv_fcoe fcoe;
597*14b24e2bSVaishali Kulkarni 	struct ecore_mfw_tlv_iscsi iscsi;
598*14b24e2bSVaishali Kulkarni };
599*14b24e2bSVaishali Kulkarni 
600*14b24e2bSVaishali Kulkarni enum ecore_hw_info_change {
601*14b24e2bSVaishali Kulkarni 	ECORE_HW_INFO_CHANGE_OVLAN,
602*14b24e2bSVaishali Kulkarni };
603*14b24e2bSVaishali Kulkarni 
604*14b24e2bSVaishali Kulkarni /**
605*14b24e2bSVaishali Kulkarni  * @brief - returns the link params of the hw function
606*14b24e2bSVaishali Kulkarni  *
607*14b24e2bSVaishali Kulkarni  * @param p_hwfn
608*14b24e2bSVaishali Kulkarni  *
609*14b24e2bSVaishali Kulkarni  * @returns pointer to link params
610*14b24e2bSVaishali Kulkarni  */
611*14b24e2bSVaishali Kulkarni struct ecore_mcp_link_params *ecore_mcp_get_link_params(struct ecore_hwfn*);
612*14b24e2bSVaishali Kulkarni 
613*14b24e2bSVaishali Kulkarni /**
614*14b24e2bSVaishali Kulkarni  * @brief - return the link state of the hw function
615*14b24e2bSVaishali Kulkarni  *
616*14b24e2bSVaishali Kulkarni  * @param p_hwfn
617*14b24e2bSVaishali Kulkarni  *
618*14b24e2bSVaishali Kulkarni  * @returns pointer to link state
619*14b24e2bSVaishali Kulkarni  */
620*14b24e2bSVaishali Kulkarni struct ecore_mcp_link_state *ecore_mcp_get_link_state(struct ecore_hwfn*);
621*14b24e2bSVaishali Kulkarni 
622*14b24e2bSVaishali Kulkarni /**
623*14b24e2bSVaishali Kulkarni  * @brief - return the link capabilities of the hw function
624*14b24e2bSVaishali Kulkarni  *
625*14b24e2bSVaishali Kulkarni  * @param p_hwfn
626*14b24e2bSVaishali Kulkarni  *
627*14b24e2bSVaishali Kulkarni  * @returns pointer to link capabilities
628*14b24e2bSVaishali Kulkarni  */
629*14b24e2bSVaishali Kulkarni struct ecore_mcp_link_capabilities
630*14b24e2bSVaishali Kulkarni *ecore_mcp_get_link_capabilities(struct ecore_hwfn *p_hwfn);
631*14b24e2bSVaishali Kulkarni 
632*14b24e2bSVaishali Kulkarni /**
633*14b24e2bSVaishali Kulkarni  * @brief Request the MFW to set the the link according to 'link_input'.
634*14b24e2bSVaishali Kulkarni  *
635*14b24e2bSVaishali Kulkarni  * @param p_hwfn
636*14b24e2bSVaishali Kulkarni  * @param p_ptt
637*14b24e2bSVaishali Kulkarni  * @param b_up - raise link if `true'. Reset link if `false'.
638*14b24e2bSVaishali Kulkarni  *
639*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t
640*14b24e2bSVaishali Kulkarni  */
641*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_set_link(struct ecore_hwfn *p_hwfn,
642*14b24e2bSVaishali Kulkarni 					struct ecore_ptt *p_ptt,
643*14b24e2bSVaishali Kulkarni 					bool b_up);
644*14b24e2bSVaishali Kulkarni 
645*14b24e2bSVaishali Kulkarni /**
646*14b24e2bSVaishali Kulkarni  * @brief Get the management firmware version value
647*14b24e2bSVaishali Kulkarni  *
648*14b24e2bSVaishali Kulkarni  * @param p_hwfn
649*14b24e2bSVaishali Kulkarni  * @param p_ptt
650*14b24e2bSVaishali Kulkarni  * @param p_mfw_ver    - mfw version value
651*14b24e2bSVaishali Kulkarni  * @param p_running_bundle_id	- image id in nvram; Optional.
652*14b24e2bSVaishali Kulkarni  *
653*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
654*14b24e2bSVaishali Kulkarni  */
655*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_get_mfw_ver(struct ecore_hwfn *p_hwfn,
656*14b24e2bSVaishali Kulkarni 					   struct ecore_ptt *p_ptt,
657*14b24e2bSVaishali Kulkarni 					   u32 *p_mfw_ver,
658*14b24e2bSVaishali Kulkarni 					   u32 *p_running_bundle_id);
659*14b24e2bSVaishali Kulkarni 
660*14b24e2bSVaishali Kulkarni /**
661*14b24e2bSVaishali Kulkarni  * @brief Get the MBI version value
662*14b24e2bSVaishali Kulkarni  *
663*14b24e2bSVaishali Kulkarni  * @param p_hwfn
664*14b24e2bSVaishali Kulkarni  * @param p_ptt
665*14b24e2bSVaishali Kulkarni  * @param p_mbi_ver - A pointer to a variable to be filled with the MBI version.
666*14b24e2bSVaishali Kulkarni  *
667*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
668*14b24e2bSVaishali Kulkarni  */
669*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_get_mbi_ver(struct ecore_hwfn *p_hwfn,
670*14b24e2bSVaishali Kulkarni 					   struct ecore_ptt *p_ptt,
671*14b24e2bSVaishali Kulkarni 					   u32 *p_mbi_ver);
672*14b24e2bSVaishali Kulkarni 
673*14b24e2bSVaishali Kulkarni /**
674*14b24e2bSVaishali Kulkarni  * @brief Get media type value of the port.
675*14b24e2bSVaishali Kulkarni  *
676*14b24e2bSVaishali Kulkarni  * @param p_dev      - ecore dev pointer
677*14b24e2bSVaishali Kulkarni  * @param mfw_ver    - media type value
678*14b24e2bSVaishali Kulkarni  *
679*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t -
680*14b24e2bSVaishali Kulkarni  *      ECORE_SUCCESS - Operation was successful.
681*14b24e2bSVaishali Kulkarni  *      ECORE_BUSY - Operation failed
682*14b24e2bSVaishali Kulkarni  */
683*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_get_media_type(struct ecore_dev *p_dev,
684*14b24e2bSVaishali Kulkarni 					   u32 *media_type);
685*14b24e2bSVaishali Kulkarni 
686*14b24e2bSVaishali Kulkarni /**
687*14b24e2bSVaishali Kulkarni  * @brief - Sends a command to the MCP mailbox.
688*14b24e2bSVaishali Kulkarni  *
689*14b24e2bSVaishali Kulkarni  * @param p_hwfn      - hw function
690*14b24e2bSVaishali Kulkarni  * @param p_ptt       - PTT required for register access
691*14b24e2bSVaishali Kulkarni  * @param cmd         - command to be sent to the MCP
692*14b24e2bSVaishali Kulkarni  * @param param       - optional param
693*14b24e2bSVaishali Kulkarni  * @param o_mcp_resp  - the MCP response code (exclude sequence)
694*14b24e2bSVaishali Kulkarni  * @param o_mcp_param - optional parameter provided by the MCP response
695*14b24e2bSVaishali Kulkarni  *
696*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t -
697*14b24e2bSVaishali Kulkarni  *      ECORE_SUCCESS - operation was successful
698*14b24e2bSVaishali Kulkarni  *      ECORE_BUSY    - operation failed
699*14b24e2bSVaishali Kulkarni  */
700*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_cmd(struct ecore_hwfn *p_hwfn,
701*14b24e2bSVaishali Kulkarni 				   struct ecore_ptt *p_ptt, u32 cmd, u32 param,
702*14b24e2bSVaishali Kulkarni 				   u32 *o_mcp_resp, u32 *o_mcp_param);
703*14b24e2bSVaishali Kulkarni 
704*14b24e2bSVaishali Kulkarni /**
705*14b24e2bSVaishali Kulkarni  * @brief - drains the nig, allowing completion to pass in case of pauses.
706*14b24e2bSVaishali Kulkarni  *          (Should be called only from sleepable context)
707*14b24e2bSVaishali Kulkarni  *
708*14b24e2bSVaishali Kulkarni  * @param p_hwfn
709*14b24e2bSVaishali Kulkarni  * @param p_ptt
710*14b24e2bSVaishali Kulkarni  */
711*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_drain(struct ecore_hwfn *p_hwfn,
712*14b24e2bSVaishali Kulkarni 				     struct ecore_ptt *p_ptt);
713*14b24e2bSVaishali Kulkarni 
714*14b24e2bSVaishali Kulkarni #ifndef LINUX_REMOVE
715*14b24e2bSVaishali Kulkarni /**
716*14b24e2bSVaishali Kulkarni  * @brief - return the mcp function info of the hw function
717*14b24e2bSVaishali Kulkarni  *
718*14b24e2bSVaishali Kulkarni  * @param p_hwfn
719*14b24e2bSVaishali Kulkarni  *
720*14b24e2bSVaishali Kulkarni  * @returns pointer to mcp function info
721*14b24e2bSVaishali Kulkarni  */
722*14b24e2bSVaishali Kulkarni const struct ecore_mcp_function_info
723*14b24e2bSVaishali Kulkarni *ecore_mcp_get_function_info(struct ecore_hwfn *p_hwfn);
724*14b24e2bSVaishali Kulkarni #endif
725*14b24e2bSVaishali Kulkarni 
726*14b24e2bSVaishali Kulkarni /**
727*14b24e2bSVaishali Kulkarni  * @brief - Function for reading/manipulating the nvram. Following are supported
728*14b24e2bSVaishali Kulkarni  *          functionalities.
729*14b24e2bSVaishali Kulkarni  *          1. Read: Read the specified nvram offset.
730*14b24e2bSVaishali Kulkarni  *             input values:
731*14b24e2bSVaishali Kulkarni  *               type   - ECORE_MCP_NVM_RD
732*14b24e2bSVaishali Kulkarni  *               cmd    - command code (e.g. DRV_MSG_CODE_NVM_READ_NVRAM)
733*14b24e2bSVaishali Kulkarni  *               offset - nvm offset
734*14b24e2bSVaishali Kulkarni  *
735*14b24e2bSVaishali Kulkarni  *             output values:
736*14b24e2bSVaishali Kulkarni  *               buf      - buffer
737*14b24e2bSVaishali Kulkarni  *               buf_size - buffer size
738*14b24e2bSVaishali Kulkarni  *
739*14b24e2bSVaishali Kulkarni  *          2. Write: Write the data at the specified nvram offset
740*14b24e2bSVaishali Kulkarni  *             input values:
741*14b24e2bSVaishali Kulkarni  *               type     - ECORE_MCP_NVM_WR
742*14b24e2bSVaishali Kulkarni  *               cmd      - command code (e.g. DRV_MSG_CODE_NVM_WRITE_NVRAM)
743*14b24e2bSVaishali Kulkarni  *               offset   - nvm offset
744*14b24e2bSVaishali Kulkarni  *               buf      - buffer
745*14b24e2bSVaishali Kulkarni  *               buf_size - buffer size
746*14b24e2bSVaishali Kulkarni  *
747*14b24e2bSVaishali Kulkarni  *          3. Command: Send the NVM command to MCP.
748*14b24e2bSVaishali Kulkarni  *             input values:
749*14b24e2bSVaishali Kulkarni  *               type   - ECORE_MCP_CMD
750*14b24e2bSVaishali Kulkarni  *               cmd    - command code (e.g. DRV_MSG_CODE_NVM_DEL_FILE)
751*14b24e2bSVaishali Kulkarni  *               offset - nvm offset
752*14b24e2bSVaishali Kulkarni  *
753*14b24e2bSVaishali Kulkarni  *
754*14b24e2bSVaishali Kulkarni  * @param p_hwfn
755*14b24e2bSVaishali Kulkarni  * @param p_ptt
756*14b24e2bSVaishali Kulkarni  * @param params
757*14b24e2bSVaishali Kulkarni  *
758*14b24e2bSVaishali Kulkarni  * @return ECORE_SUCCESS - operation was successful.
759*14b24e2bSVaishali Kulkarni  */
760*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_nvm_command(struct ecore_hwfn *p_hwfn,
761*14b24e2bSVaishali Kulkarni 					   struct ecore_ptt *p_ptt,
762*14b24e2bSVaishali Kulkarni 					   struct ecore_mcp_nvm_params *params);
763*14b24e2bSVaishali Kulkarni 
764*14b24e2bSVaishali Kulkarni #ifndef LINUX_REMOVE
765*14b24e2bSVaishali Kulkarni /**
766*14b24e2bSVaishali Kulkarni  * @brief - count number of function with a matching personality on engine.
767*14b24e2bSVaishali Kulkarni  *
768*14b24e2bSVaishali Kulkarni  * @param p_hwfn
769*14b24e2bSVaishali Kulkarni  * @param p_ptt
770*14b24e2bSVaishali Kulkarni  * @param personalities - a bitmask of ecore_pci_personality values
771*14b24e2bSVaishali Kulkarni  *
772*14b24e2bSVaishali Kulkarni  * @returns the count of all devices on engine whose personality match one of
773*14b24e2bSVaishali Kulkarni  *          the bitsmasks.
774*14b24e2bSVaishali Kulkarni  */
775*14b24e2bSVaishali Kulkarni int ecore_mcp_get_personality_cnt(struct ecore_hwfn *p_hwfn,
776*14b24e2bSVaishali Kulkarni 				  struct ecore_ptt *p_ptt,
777*14b24e2bSVaishali Kulkarni 				  u32 personalities);
778*14b24e2bSVaishali Kulkarni #endif
779*14b24e2bSVaishali Kulkarni 
780*14b24e2bSVaishali Kulkarni /**
781*14b24e2bSVaishali Kulkarni  * @brief Get the flash size value
782*14b24e2bSVaishali Kulkarni  *
783*14b24e2bSVaishali Kulkarni  * @param p_hwfn
784*14b24e2bSVaishali Kulkarni  * @param p_ptt
785*14b24e2bSVaishali Kulkarni  * @param p_flash_size  - flash size in bytes to be filled.
786*14b24e2bSVaishali Kulkarni  *
787*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
788*14b24e2bSVaishali Kulkarni  */
789*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_get_flash_size(struct ecore_hwfn *p_hwfn,
790*14b24e2bSVaishali Kulkarni 					      struct ecore_ptt *p_ptt,
791*14b24e2bSVaishali Kulkarni 					      u32 *p_flash_size);
792*14b24e2bSVaishali Kulkarni 
793*14b24e2bSVaishali Kulkarni /**
794*14b24e2bSVaishali Kulkarni  * @brief Send driver version to MFW
795*14b24e2bSVaishali Kulkarni  *
796*14b24e2bSVaishali Kulkarni  * @param p_hwfn
797*14b24e2bSVaishali Kulkarni  * @param p_ptt
798*14b24e2bSVaishali Kulkarni  * @param version - Version value
799*14b24e2bSVaishali Kulkarni  * @param name - Protocol driver name
800*14b24e2bSVaishali Kulkarni  *
801*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
802*14b24e2bSVaishali Kulkarni  */
803*14b24e2bSVaishali Kulkarni enum _ecore_status_t
804*14b24e2bSVaishali Kulkarni ecore_mcp_send_drv_version(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt,
805*14b24e2bSVaishali Kulkarni 			   struct ecore_mcp_drv_version *p_ver);
806*14b24e2bSVaishali Kulkarni 
807*14b24e2bSVaishali Kulkarni /**
808*14b24e2bSVaishali Kulkarni  * @brief Read the MFW process kill counter
809*14b24e2bSVaishali Kulkarni  *
810*14b24e2bSVaishali Kulkarni  * @param p_hwfn
811*14b24e2bSVaishali Kulkarni  * @param p_ptt
812*14b24e2bSVaishali Kulkarni  *
813*14b24e2bSVaishali Kulkarni  * @return u32
814*14b24e2bSVaishali Kulkarni  */
815*14b24e2bSVaishali Kulkarni u32 ecore_get_process_kill_counter(struct ecore_hwfn *p_hwfn,
816*14b24e2bSVaishali Kulkarni 				   struct ecore_ptt *p_ptt);
817*14b24e2bSVaishali Kulkarni 
818*14b24e2bSVaishali Kulkarni /**
819*14b24e2bSVaishali Kulkarni  * @brief Trigger a recovery process
820*14b24e2bSVaishali Kulkarni  *
821*14b24e2bSVaishali Kulkarni  *  @param p_hwfn
822*14b24e2bSVaishali Kulkarni  *  @param p_ptt
823*14b24e2bSVaishali Kulkarni  *
824*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t
825*14b24e2bSVaishali Kulkarni  */
826*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_start_recovery_process(struct ecore_hwfn *p_hwfn,
827*14b24e2bSVaishali Kulkarni 						  struct ecore_ptt *p_ptt);
828*14b24e2bSVaishali Kulkarni 
829*14b24e2bSVaishali Kulkarni /**
830*14b24e2bSVaishali Kulkarni  * @brief Notify MFW about the change in base device properties
831*14b24e2bSVaishali Kulkarni  *
832*14b24e2bSVaishali Kulkarni  *  @param p_hwfn
833*14b24e2bSVaishali Kulkarni  *  @param p_ptt
834*14b24e2bSVaishali Kulkarni  *  @param client - ecore client type
835*14b24e2bSVaishali Kulkarni  *
836*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
837*14b24e2bSVaishali Kulkarni  */
838*14b24e2bSVaishali Kulkarni enum _ecore_status_t
839*14b24e2bSVaishali Kulkarni ecore_mcp_ov_update_current_config(struct ecore_hwfn *p_hwfn,
840*14b24e2bSVaishali Kulkarni 				   struct ecore_ptt *p_ptt,
841*14b24e2bSVaishali Kulkarni 				   enum ecore_ov_client client);
842*14b24e2bSVaishali Kulkarni 
843*14b24e2bSVaishali Kulkarni /**
844*14b24e2bSVaishali Kulkarni  * @brief Notify MFW about the driver state
845*14b24e2bSVaishali Kulkarni  *
846*14b24e2bSVaishali Kulkarni  *  @param p_hwfn
847*14b24e2bSVaishali Kulkarni  *  @param p_ptt
848*14b24e2bSVaishali Kulkarni  *  @param drv_state - Driver state
849*14b24e2bSVaishali Kulkarni  *
850*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
851*14b24e2bSVaishali Kulkarni  */
852*14b24e2bSVaishali Kulkarni enum _ecore_status_t
853*14b24e2bSVaishali Kulkarni ecore_mcp_ov_update_driver_state(struct ecore_hwfn *p_hwfn,
854*14b24e2bSVaishali Kulkarni 				 struct ecore_ptt *p_ptt,
855*14b24e2bSVaishali Kulkarni 				 enum ecore_ov_driver_state drv_state);
856*14b24e2bSVaishali Kulkarni 
857*14b24e2bSVaishali Kulkarni /**
858*14b24e2bSVaishali Kulkarni  * @brief Read NPIV settings form the MFW
859*14b24e2bSVaishali Kulkarni  *
860*14b24e2bSVaishali Kulkarni  *  @param p_hwfn
861*14b24e2bSVaishali Kulkarni  *  @param p_ptt
862*14b24e2bSVaishali Kulkarni  *  @param p_table - Array to hold the FC NPIV data. Client need allocate the
863*14b24e2bSVaishali Kulkarni  *                   required buffer. The field 'count' specifies number of NPIV
864*14b24e2bSVaishali Kulkarni  *                   entries. A value of 0 means the table was not populated.
865*14b24e2bSVaishali Kulkarni  *
866*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
867*14b24e2bSVaishali Kulkarni  */
868*14b24e2bSVaishali Kulkarni enum _ecore_status_t
869*14b24e2bSVaishali Kulkarni ecore_mcp_ov_get_fc_npiv(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt,
870*14b24e2bSVaishali Kulkarni 			 struct ecore_fc_npiv_tbl *p_table);
871*14b24e2bSVaishali Kulkarni 
872*14b24e2bSVaishali Kulkarni /**
873*14b24e2bSVaishali Kulkarni  * @brief Send MTU size to MFW
874*14b24e2bSVaishali Kulkarni  *
875*14b24e2bSVaishali Kulkarni  *  @param p_hwfn
876*14b24e2bSVaishali Kulkarni  *  @param p_ptt
877*14b24e2bSVaishali Kulkarni  *  @param mtu - MTU size
878*14b24e2bSVaishali Kulkarni  *
879*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
880*14b24e2bSVaishali Kulkarni  */
881*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_ov_update_mtu(struct ecore_hwfn *p_hwfn,
882*14b24e2bSVaishali Kulkarni 					     struct ecore_ptt *p_ptt, u16 mtu);
883*14b24e2bSVaishali Kulkarni 
884*14b24e2bSVaishali Kulkarni /**
885*14b24e2bSVaishali Kulkarni  * @brief Send MAC address to MFW
886*14b24e2bSVaishali Kulkarni  *
887*14b24e2bSVaishali Kulkarni  *  @param p_hwfn
888*14b24e2bSVaishali Kulkarni  *  @param p_ptt
889*14b24e2bSVaishali Kulkarni  *  @param mac - MAC address
890*14b24e2bSVaishali Kulkarni  *
891*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
892*14b24e2bSVaishali Kulkarni  */
893*14b24e2bSVaishali Kulkarni enum _ecore_status_t
894*14b24e2bSVaishali Kulkarni ecore_mcp_ov_update_mac(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt,
895*14b24e2bSVaishali Kulkarni 			u8 *mac);
896*14b24e2bSVaishali Kulkarni 
897*14b24e2bSVaishali Kulkarni /**
898*14b24e2bSVaishali Kulkarni  * @brief Send WOL mode to MFW
899*14b24e2bSVaishali Kulkarni  *
900*14b24e2bSVaishali Kulkarni  *  @param p_hwfn
901*14b24e2bSVaishali Kulkarni  *  @param p_ptt
902*14b24e2bSVaishali Kulkarni  *  @param wol - WOL mode
903*14b24e2bSVaishali Kulkarni  *
904*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
905*14b24e2bSVaishali Kulkarni  */
906*14b24e2bSVaishali Kulkarni enum _ecore_status_t
907*14b24e2bSVaishali Kulkarni ecore_mcp_ov_update_wol(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt,
908*14b24e2bSVaishali Kulkarni 			enum ecore_ov_wol wol);
909*14b24e2bSVaishali Kulkarni 
910*14b24e2bSVaishali Kulkarni /**
911*14b24e2bSVaishali Kulkarni  * @brief Set LED status
912*14b24e2bSVaishali Kulkarni  *
913*14b24e2bSVaishali Kulkarni  *  @param p_hwfn
914*14b24e2bSVaishali Kulkarni  *  @param p_ptt
915*14b24e2bSVaishali Kulkarni  *  @param mode - LED mode
916*14b24e2bSVaishali Kulkarni  *
917*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
918*14b24e2bSVaishali Kulkarni  */
919*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_set_led(struct ecore_hwfn *p_hwfn,
920*14b24e2bSVaishali Kulkarni 				       struct ecore_ptt *p_ptt,
921*14b24e2bSVaishali Kulkarni 				       enum ecore_led_mode mode);
922*14b24e2bSVaishali Kulkarni 
923*14b24e2bSVaishali Kulkarni /**
924*14b24e2bSVaishali Kulkarni  * @brief Set secure mode
925*14b24e2bSVaishali Kulkarni  *
926*14b24e2bSVaishali Kulkarni  *  @param p_dev
927*14b24e2bSVaishali Kulkarni  *  @param addr - nvm offset
928*14b24e2bSVaishali Kulkarni  *
929*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
930*14b24e2bSVaishali Kulkarni  */
931*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_nvm_set_secure_mode(struct ecore_dev *p_dev,
932*14b24e2bSVaishali Kulkarni 						   u32 addr);
933*14b24e2bSVaishali Kulkarni 
934*14b24e2bSVaishali Kulkarni /**
935*14b24e2bSVaishali Kulkarni  * @brief Write to phy
936*14b24e2bSVaishali Kulkarni  *
937*14b24e2bSVaishali Kulkarni  *  @param p_dev
938*14b24e2bSVaishali Kulkarni  *  @param addr - nvm offset
939*14b24e2bSVaishali Kulkarni  *  @param cmd - nvm command
940*14b24e2bSVaishali Kulkarni  *  @param p_buf - nvm write buffer
941*14b24e2bSVaishali Kulkarni  *  @param len - buffer len
942*14b24e2bSVaishali Kulkarni  *
943*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
944*14b24e2bSVaishali Kulkarni  */
945*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_phy_write(struct ecore_dev *p_dev, u32 cmd,
946*14b24e2bSVaishali Kulkarni 					 u32 addr, u8 *p_buf, u32 len);
947*14b24e2bSVaishali Kulkarni 
948*14b24e2bSVaishali Kulkarni /**
949*14b24e2bSVaishali Kulkarni  * @brief Write to nvm
950*14b24e2bSVaishali Kulkarni  *
951*14b24e2bSVaishali Kulkarni  *  @param p_dev
952*14b24e2bSVaishali Kulkarni  *  @param addr - nvm offset
953*14b24e2bSVaishali Kulkarni  *  @param cmd - nvm command
954*14b24e2bSVaishali Kulkarni  *  @param p_buf - nvm write buffer
955*14b24e2bSVaishali Kulkarni  *  @param len - buffer len
956*14b24e2bSVaishali Kulkarni  *
957*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
958*14b24e2bSVaishali Kulkarni  */
959*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_nvm_write(struct ecore_dev *p_dev, u32 cmd,
960*14b24e2bSVaishali Kulkarni 					 u32 addr, u8 *p_buf, u32 len);
961*14b24e2bSVaishali Kulkarni 
962*14b24e2bSVaishali Kulkarni /**
963*14b24e2bSVaishali Kulkarni  * @brief Put file begin
964*14b24e2bSVaishali Kulkarni  *
965*14b24e2bSVaishali Kulkarni  *  @param p_dev
966*14b24e2bSVaishali Kulkarni  *  @param addr - nvm offset
967*14b24e2bSVaishali Kulkarni  *
968*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
969*14b24e2bSVaishali Kulkarni  */
970*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_nvm_put_file_begin(struct ecore_dev *p_dev,
971*14b24e2bSVaishali Kulkarni 						  u32 addr);
972*14b24e2bSVaishali Kulkarni 
973*14b24e2bSVaishali Kulkarni /**
974*14b24e2bSVaishali Kulkarni  * @brief Delete file
975*14b24e2bSVaishali Kulkarni  *
976*14b24e2bSVaishali Kulkarni  *  @param p_dev
977*14b24e2bSVaishali Kulkarni  *  @param addr - nvm offset
978*14b24e2bSVaishali Kulkarni  *
979*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
980*14b24e2bSVaishali Kulkarni  */
981*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_nvm_del_file(struct ecore_dev *p_dev,
982*14b24e2bSVaishali Kulkarni 					    u32 addr);
983*14b24e2bSVaishali Kulkarni 
984*14b24e2bSVaishali Kulkarni /**
985*14b24e2bSVaishali Kulkarni  * @brief Check latest response
986*14b24e2bSVaishali Kulkarni  *
987*14b24e2bSVaishali Kulkarni  *  @param p_dev
988*14b24e2bSVaishali Kulkarni  *  @param p_buf - nvm write buffer
989*14b24e2bSVaishali Kulkarni  *
990*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
991*14b24e2bSVaishali Kulkarni  */
992*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_nvm_resp(struct ecore_dev *p_dev, u8 *p_buf);
993*14b24e2bSVaishali Kulkarni 
994*14b24e2bSVaishali Kulkarni /**
995*14b24e2bSVaishali Kulkarni  * @brief Read from phy
996*14b24e2bSVaishali Kulkarni  *
997*14b24e2bSVaishali Kulkarni  *  @param p_dev
998*14b24e2bSVaishali Kulkarni  *  @param addr - nvm offset
999*14b24e2bSVaishali Kulkarni  *  @param cmd - nvm command
1000*14b24e2bSVaishali Kulkarni  *  @param p_buf - nvm write buffer
1001*14b24e2bSVaishali Kulkarni  *  @param len - buffer len
1002*14b24e2bSVaishali Kulkarni  *
1003*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
1004*14b24e2bSVaishali Kulkarni  */
1005*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_phy_read(struct ecore_dev *p_dev, u32 cmd,
1006*14b24e2bSVaishali Kulkarni 					u32 addr, u8 *p_buf, u32 len);
1007*14b24e2bSVaishali Kulkarni 
1008*14b24e2bSVaishali Kulkarni /**
1009*14b24e2bSVaishali Kulkarni  * @brief Read from nvm
1010*14b24e2bSVaishali Kulkarni  *
1011*14b24e2bSVaishali Kulkarni  *  @param p_dev
1012*14b24e2bSVaishali Kulkarni  *  @param addr - nvm offset
1013*14b24e2bSVaishali Kulkarni  *  @param p_buf - nvm write buffer
1014*14b24e2bSVaishali Kulkarni  *  @param len - buffer len
1015*14b24e2bSVaishali Kulkarni  *
1016*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
1017*14b24e2bSVaishali Kulkarni  */
1018*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_nvm_read(struct ecore_dev *p_dev, u32 addr,
1019*14b24e2bSVaishali Kulkarni 			   u8 *p_buf, u32 len);
1020*14b24e2bSVaishali Kulkarni 
1021*14b24e2bSVaishali Kulkarni struct ecore_nvm_image_att {
1022*14b24e2bSVaishali Kulkarni 	u32 start_addr;
1023*14b24e2bSVaishali Kulkarni 	u32 length;
1024*14b24e2bSVaishali Kulkarni };
1025*14b24e2bSVaishali Kulkarni 
1026*14b24e2bSVaishali Kulkarni /**
1027*14b24e2bSVaishali Kulkarni  * @brief Allows reading a whole nvram image
1028*14b24e2bSVaishali Kulkarni  *
1029*14b24e2bSVaishali Kulkarni  * @param p_hwfn
1030*14b24e2bSVaishali Kulkarni  * @param p_ptt
1031*14b24e2bSVaishali Kulkarni  * @param image_id - image to get attributes for
1032*14b24e2bSVaishali Kulkarni  * @param p_image_att - image attributes structure into which to fill data
1033*14b24e2bSVaishali Kulkarni  *
1034*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
1035*14b24e2bSVaishali Kulkarni  */
1036*14b24e2bSVaishali Kulkarni enum _ecore_status_t
1037*14b24e2bSVaishali Kulkarni ecore_mcp_get_nvm_image_att(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt,
1038*14b24e2bSVaishali Kulkarni 			    enum ecore_nvm_images image_id,
1039*14b24e2bSVaishali Kulkarni 			    struct ecore_nvm_image_att *p_image_att);
1040*14b24e2bSVaishali Kulkarni 
1041*14b24e2bSVaishali Kulkarni /**
1042*14b24e2bSVaishali Kulkarni  * @brief Allows reading a whole nvram image
1043*14b24e2bSVaishali Kulkarni  *
1044*14b24e2bSVaishali Kulkarni  * @param p_hwfn
1045*14b24e2bSVaishali Kulkarni  * @param p_ptt
1046*14b24e2bSVaishali Kulkarni  * @param image_id - image requested for reading
1047*14b24e2bSVaishali Kulkarni  * @param p_buffer - allocated buffer into which to fill data
1048*14b24e2bSVaishali Kulkarni  * @param buffer_len - length of the allocated buffer.
1049*14b24e2bSVaishali Kulkarni  *
1050*14b24e2bSVaishali Kulkarni  * @return ECORE_SUCCESS iff p_buffer now contains the nvram image.
1051*14b24e2bSVaishali Kulkarni  */
1052*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_get_nvm_image(struct ecore_hwfn *p_hwfn,
1053*14b24e2bSVaishali Kulkarni 					     struct ecore_ptt *p_ptt,
1054*14b24e2bSVaishali Kulkarni 					     enum ecore_nvm_images image_id,
1055*14b24e2bSVaishali Kulkarni 					     u8 *p_buffer, u32 buffer_len);
1056*14b24e2bSVaishali Kulkarni 
1057*14b24e2bSVaishali Kulkarni /**
1058*14b24e2bSVaishali Kulkarni  * @brief Read from sfp
1059*14b24e2bSVaishali Kulkarni  *
1060*14b24e2bSVaishali Kulkarni  *  @param p_hwfn - hw function
1061*14b24e2bSVaishali Kulkarni  *  @param p_ptt  - PTT required for register access
1062*14b24e2bSVaishali Kulkarni  *  @param port   - transceiver port
1063*14b24e2bSVaishali Kulkarni  *  @param addr   - I2C address
1064*14b24e2bSVaishali Kulkarni  *  @param offset - offset in sfp
1065*14b24e2bSVaishali Kulkarni  *  @param len    - buffer length
1066*14b24e2bSVaishali Kulkarni  *  @param p_buf  - buffer to read into
1067*14b24e2bSVaishali Kulkarni  *
1068*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
1069*14b24e2bSVaishali Kulkarni  */
1070*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_phy_sfp_read(struct ecore_hwfn *p_hwfn,
1071*14b24e2bSVaishali Kulkarni 					    struct ecore_ptt *p_ptt,
1072*14b24e2bSVaishali Kulkarni 					    u32 port, u32 addr, u32 offset,
1073*14b24e2bSVaishali Kulkarni 					    u32 len, u8 *p_buf);
1074*14b24e2bSVaishali Kulkarni 
1075*14b24e2bSVaishali Kulkarni /**
1076*14b24e2bSVaishali Kulkarni  * @brief Write to sfp
1077*14b24e2bSVaishali Kulkarni  *
1078*14b24e2bSVaishali Kulkarni  *  @param p_hwfn - hw function
1079*14b24e2bSVaishali Kulkarni  *  @param p_ptt  - PTT required for register access
1080*14b24e2bSVaishali Kulkarni  *  @param port   - transceiver port
1081*14b24e2bSVaishali Kulkarni  *  @param addr   - I2C address
1082*14b24e2bSVaishali Kulkarni  *  @param offset - offset in sfp
1083*14b24e2bSVaishali Kulkarni  *  @param len    - buffer length
1084*14b24e2bSVaishali Kulkarni  *  @param p_buf  - buffer to write from
1085*14b24e2bSVaishali Kulkarni  *
1086*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
1087*14b24e2bSVaishali Kulkarni  */
1088*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_phy_sfp_write(struct ecore_hwfn *p_hwfn,
1089*14b24e2bSVaishali Kulkarni 					     struct ecore_ptt *p_ptt,
1090*14b24e2bSVaishali Kulkarni 					     u32 port, u32 addr, u32 offset,
1091*14b24e2bSVaishali Kulkarni 					     u32 len, u8 *p_buf);
1092*14b24e2bSVaishali Kulkarni 
1093*14b24e2bSVaishali Kulkarni /**
1094*14b24e2bSVaishali Kulkarni  * @brief Gpio read
1095*14b24e2bSVaishali Kulkarni  *
1096*14b24e2bSVaishali Kulkarni  *  @param p_hwfn    - hw function
1097*14b24e2bSVaishali Kulkarni  *  @param p_ptt     - PTT required for register access
1098*14b24e2bSVaishali Kulkarni  *  @param gpio      - gpio number
1099*14b24e2bSVaishali Kulkarni  *  @param gpio_val  - value read from gpio
1100*14b24e2bSVaishali Kulkarni  *
1101*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
1102*14b24e2bSVaishali Kulkarni  */
1103*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_gpio_read(struct ecore_hwfn *p_hwfn,
1104*14b24e2bSVaishali Kulkarni 					 struct ecore_ptt *p_ptt,
1105*14b24e2bSVaishali Kulkarni 					 u16 gpio, u32 *gpio_val);
1106*14b24e2bSVaishali Kulkarni 
1107*14b24e2bSVaishali Kulkarni /**
1108*14b24e2bSVaishali Kulkarni  * @brief Gpio write
1109*14b24e2bSVaishali Kulkarni  *
1110*14b24e2bSVaishali Kulkarni  *  @param p_hwfn    - hw function
1111*14b24e2bSVaishali Kulkarni  *  @param p_ptt     - PTT required for register access
1112*14b24e2bSVaishali Kulkarni  *  @param gpio      - gpio number
1113*14b24e2bSVaishali Kulkarni  *  @param gpio_val  - value to write to gpio
1114*14b24e2bSVaishali Kulkarni  *
1115*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
1116*14b24e2bSVaishali Kulkarni  */
1117*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_gpio_write(struct ecore_hwfn *p_hwfn,
1118*14b24e2bSVaishali Kulkarni 					  struct ecore_ptt *p_ptt,
1119*14b24e2bSVaishali Kulkarni 					  u16 gpio, u16 gpio_val);
1120*14b24e2bSVaishali Kulkarni 
1121*14b24e2bSVaishali Kulkarni /**
1122*14b24e2bSVaishali Kulkarni  * @brief Gpio get information
1123*14b24e2bSVaishali Kulkarni  *
1124*14b24e2bSVaishali Kulkarni  *  @param p_hwfn          - hw function
1125*14b24e2bSVaishali Kulkarni  *  @param p_ptt           - PTT required for register access
1126*14b24e2bSVaishali Kulkarni  *  @param gpio            - gpio number
1127*14b24e2bSVaishali Kulkarni  *  @param gpio_direction  - gpio is output (0) or input (1)
1128*14b24e2bSVaishali Kulkarni  *  @param gpio_ctrl       - gpio control is uninitialized (0),
1129*14b24e2bSVaishali Kulkarni  *                         path 0 (1), path 1 (2) or shared(3)
1130*14b24e2bSVaishali Kulkarni  *
1131*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
1132*14b24e2bSVaishali Kulkarni  */
1133*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_gpio_info(struct ecore_hwfn *p_hwfn,
1134*14b24e2bSVaishali Kulkarni 					 struct ecore_ptt *p_ptt,
1135*14b24e2bSVaishali Kulkarni 					 u16 gpio, u32 *gpio_direction,
1136*14b24e2bSVaishali Kulkarni 					 u32 *gpio_ctrl);
1137*14b24e2bSVaishali Kulkarni 
1138*14b24e2bSVaishali Kulkarni /**
1139*14b24e2bSVaishali Kulkarni  * @brief Bist register test
1140*14b24e2bSVaishali Kulkarni  *
1141*14b24e2bSVaishali Kulkarni  *  @param p_hwfn    - hw function
1142*14b24e2bSVaishali Kulkarni  *  @param p_ptt     - PTT required for register access
1143*14b24e2bSVaishali Kulkarni  *
1144*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
1145*14b24e2bSVaishali Kulkarni  */
1146*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_bist_register_test(struct ecore_hwfn *p_hwfn,
1147*14b24e2bSVaishali Kulkarni 						   struct ecore_ptt *p_ptt);
1148*14b24e2bSVaishali Kulkarni 
1149*14b24e2bSVaishali Kulkarni /**
1150*14b24e2bSVaishali Kulkarni  * @brief Bist clock test
1151*14b24e2bSVaishali Kulkarni  *
1152*14b24e2bSVaishali Kulkarni  *  @param p_hwfn    - hw function
1153*14b24e2bSVaishali Kulkarni  *  @param p_ptt     - PTT required for register access
1154*14b24e2bSVaishali Kulkarni  *
1155*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
1156*14b24e2bSVaishali Kulkarni  */
1157*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_bist_clock_test(struct ecore_hwfn *p_hwfn,
1158*14b24e2bSVaishali Kulkarni 						struct ecore_ptt *p_ptt);
1159*14b24e2bSVaishali Kulkarni 
1160*14b24e2bSVaishali Kulkarni /**
1161*14b24e2bSVaishali Kulkarni  * @brief Bist nvm test - get number of images
1162*14b24e2bSVaishali Kulkarni  *
1163*14b24e2bSVaishali Kulkarni  *  @param p_hwfn       - hw function
1164*14b24e2bSVaishali Kulkarni  *  @param p_ptt        - PTT required for register access
1165*14b24e2bSVaishali Kulkarni  *  @param num_images   - number of images if operation was
1166*14b24e2bSVaishali Kulkarni  *			  successful. 0 if not.
1167*14b24e2bSVaishali Kulkarni  *
1168*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
1169*14b24e2bSVaishali Kulkarni  */
1170*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_bist_nvm_test_get_num_images(struct ecore_hwfn *p_hwfn,
1171*14b24e2bSVaishali Kulkarni 							    struct ecore_ptt *p_ptt,
1172*14b24e2bSVaishali Kulkarni 							    u32 *num_images);
1173*14b24e2bSVaishali Kulkarni 
1174*14b24e2bSVaishali Kulkarni /**
1175*14b24e2bSVaishali Kulkarni  * @brief Bist nvm test - get image attributes by index
1176*14b24e2bSVaishali Kulkarni  *
1177*14b24e2bSVaishali Kulkarni  *  @param p_hwfn      - hw function
1178*14b24e2bSVaishali Kulkarni  *  @param p_ptt       - PTT required for register access
1179*14b24e2bSVaishali Kulkarni  *  @param p_image_att - Attributes of image
1180*14b24e2bSVaishali Kulkarni  *  @param image_index - Index of image to get information for
1181*14b24e2bSVaishali Kulkarni  *
1182*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
1183*14b24e2bSVaishali Kulkarni  */
1184*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_bist_nvm_test_get_image_att(struct ecore_hwfn *p_hwfn,
1185*14b24e2bSVaishali Kulkarni 							   struct ecore_ptt *p_ptt,
1186*14b24e2bSVaishali Kulkarni 							   struct bist_nvm_image_att *p_image_att,
1187*14b24e2bSVaishali Kulkarni 							   u32 image_index);
1188*14b24e2bSVaishali Kulkarni 
1189*14b24e2bSVaishali Kulkarni /**
1190*14b24e2bSVaishali Kulkarni  * @brief ecore_mcp_get_temperature_info - get the status of the temperature
1191*14b24e2bSVaishali Kulkarni  *                                         sensors
1192*14b24e2bSVaishali Kulkarni  *
1193*14b24e2bSVaishali Kulkarni  *  @param p_hwfn        - hw function
1194*14b24e2bSVaishali Kulkarni  *  @param p_ptt         - PTT required for register access
1195*14b24e2bSVaishali Kulkarni  *  @param p_temp_status - A pointer to an ecore_temperature_info structure to
1196*14b24e2bSVaishali Kulkarni  *                         be filled with the temperature data
1197*14b24e2bSVaishali Kulkarni  *
1198*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
1199*14b24e2bSVaishali Kulkarni  */
1200*14b24e2bSVaishali Kulkarni enum _ecore_status_t
1201*14b24e2bSVaishali Kulkarni ecore_mcp_get_temperature_info(struct ecore_hwfn *p_hwfn,
1202*14b24e2bSVaishali Kulkarni 			       struct ecore_ptt *p_ptt,
1203*14b24e2bSVaishali Kulkarni 			       struct ecore_temperature_info *p_temp_info);
1204*14b24e2bSVaishali Kulkarni 
1205*14b24e2bSVaishali Kulkarni /**
1206*14b24e2bSVaishali Kulkarni  * @brief Get MBA versions - get MBA sub images versions
1207*14b24e2bSVaishali Kulkarni  *
1208*14b24e2bSVaishali Kulkarni  *  @param p_hwfn      - hw function
1209*14b24e2bSVaishali Kulkarni  *  @param p_ptt       - PTT required for register access
1210*14b24e2bSVaishali Kulkarni  *  @param p_mba_vers  - MBA versions array to fill
1211*14b24e2bSVaishali Kulkarni  *
1212*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
1213*14b24e2bSVaishali Kulkarni  */
1214*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_get_mba_versions(
1215*14b24e2bSVaishali Kulkarni 	struct ecore_hwfn *p_hwfn,
1216*14b24e2bSVaishali Kulkarni 	struct ecore_ptt *p_ptt,
1217*14b24e2bSVaishali Kulkarni 	struct ecore_mba_vers *p_mba_vers);
1218*14b24e2bSVaishali Kulkarni 
1219*14b24e2bSVaishali Kulkarni /**
1220*14b24e2bSVaishali Kulkarni  * @brief Count memory ecc events
1221*14b24e2bSVaishali Kulkarni  *
1222*14b24e2bSVaishali Kulkarni  *  @param p_hwfn      - hw function
1223*14b24e2bSVaishali Kulkarni  *  @param p_ptt       - PTT required for register access
1224*14b24e2bSVaishali Kulkarni  *  @param num_events  - number of memory ecc events
1225*14b24e2bSVaishali Kulkarni  *
1226*14b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
1227*14b24e2bSVaishali Kulkarni  */
1228*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_mem_ecc_events(struct ecore_hwfn *p_hwfn,
1229*14b24e2bSVaishali Kulkarni 					      struct ecore_ptt *p_ptt,
1230*14b24e2bSVaishali Kulkarni 					      u64 *num_events);
1231*14b24e2bSVaishali Kulkarni 
1232*14b24e2bSVaishali Kulkarni struct ecore_mdump_info {
1233*14b24e2bSVaishali Kulkarni 	u32 reason;
1234*14b24e2bSVaishali Kulkarni 	u32 version;
1235*14b24e2bSVaishali Kulkarni 	u32 config;
1236*14b24e2bSVaishali Kulkarni 	u32 epoch;
1237*14b24e2bSVaishali Kulkarni 	u32 num_of_logs;
1238*14b24e2bSVaishali Kulkarni 	u32 valid_logs;
1239*14b24e2bSVaishali Kulkarni };
1240*14b24e2bSVaishali Kulkarni 
1241*14b24e2bSVaishali Kulkarni /**
1242*14b24e2bSVaishali Kulkarni  * @brief - Gets the MFW crash dump configuration and logs info.
1243*14b24e2bSVaishali Kulkarni  *
1244*14b24e2bSVaishali Kulkarni  * @param p_hwfn
1245*14b24e2bSVaishali Kulkarni  * @param p_ptt
1246*14b24e2bSVaishali Kulkarni  * @param p_mdump_info
1247*14b24e2bSVaishali Kulkarni  *
1248*14b24e2bSVaishali Kulkarni  * @param return ECORE_SUCCESS upon success.
1249*14b24e2bSVaishali Kulkarni  */
1250*14b24e2bSVaishali Kulkarni enum _ecore_status_t
1251*14b24e2bSVaishali Kulkarni ecore_mcp_mdump_get_info(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt,
1252*14b24e2bSVaishali Kulkarni 			 struct ecore_mdump_info *p_mdump_info);
1253*14b24e2bSVaishali Kulkarni 
1254*14b24e2bSVaishali Kulkarni /**
1255*14b24e2bSVaishali Kulkarni  * @brief - Clears the MFW crash dump logs.
1256*14b24e2bSVaishali Kulkarni  *
1257*14b24e2bSVaishali Kulkarni  * @param p_hwfn
1258*14b24e2bSVaishali Kulkarni  * @param p_ptt
1259*14b24e2bSVaishali Kulkarni  *
1260*14b24e2bSVaishali Kulkarni  * @param return ECORE_SUCCESS upon success.
1261*14b24e2bSVaishali Kulkarni  */
1262*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_mdump_clear_logs(struct ecore_hwfn *p_hwfn,
1263*14b24e2bSVaishali Kulkarni 						struct ecore_ptt *p_ptt);
1264*14b24e2bSVaishali Kulkarni 
1265*14b24e2bSVaishali Kulkarni /**
1266*14b24e2bSVaishali Kulkarni  * @brief - Gets the LLDP MAC address.
1267*14b24e2bSVaishali Kulkarni  *
1268*14b24e2bSVaishali Kulkarni  * @param p_hwfn
1269*14b24e2bSVaishali Kulkarni  * @param p_ptt
1270*14b24e2bSVaishali Kulkarni  * @param lldp_mac_addr - a buffer to be filled with the read LLDP MAC address.
1271*14b24e2bSVaishali Kulkarni  *
1272*14b24e2bSVaishali Kulkarni  * @param return ECORE_SUCCESS upon success.
1273*14b24e2bSVaishali Kulkarni  */
1274*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_get_lldp_mac(struct ecore_hwfn *p_hwfn,
1275*14b24e2bSVaishali Kulkarni 					    struct ecore_ptt *p_ptt,
1276*14b24e2bSVaishali Kulkarni 					    u8 lldp_mac_addr[ETH_ALEN]);
1277*14b24e2bSVaishali Kulkarni 
1278*14b24e2bSVaishali Kulkarni /**
1279*14b24e2bSVaishali Kulkarni  * @brief - Sets the LLDP MAC address.
1280*14b24e2bSVaishali Kulkarni  *
1281*14b24e2bSVaishali Kulkarni  * @param p_hwfn
1282*14b24e2bSVaishali Kulkarni  * @param p_ptt
1283*14b24e2bSVaishali Kulkarni  * @param lldp_mac_addr - a buffer with the LLDP MAC address to be written.
1284*14b24e2bSVaishali Kulkarni  *
1285*14b24e2bSVaishali Kulkarni  * @param return ECORE_SUCCESS upon success.
1286*14b24e2bSVaishali Kulkarni  */
1287*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mcp_set_lldp_mac(struct ecore_hwfn *p_hwfn,
1288*14b24e2bSVaishali Kulkarni 					    struct ecore_ptt *p_ptt,
1289*14b24e2bSVaishali Kulkarni 					    u8 lldp_mac_addr[ETH_ALEN]);
1290*14b24e2bSVaishali Kulkarni 
1291*14b24e2bSVaishali Kulkarni /**
1292*14b24e2bSVaishali Kulkarni  * @brief - Processes the TLV request from MFW i.e., get the required TLV info
1293*14b24e2bSVaishali Kulkarni  *          from the ecore client and send it to the MFW.
1294*14b24e2bSVaishali Kulkarni  *
1295*14b24e2bSVaishali Kulkarni  * @param p_hwfn
1296*14b24e2bSVaishali Kulkarni  * @param p_ptt
1297*14b24e2bSVaishali Kulkarni  *
1298*14b24e2bSVaishali Kulkarni  * @param return ECORE_SUCCESS upon success.
1299*14b24e2bSVaishali Kulkarni  */
1300*14b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_mfw_process_tlv_req(struct ecore_hwfn *p_hwfn,
1301*14b24e2bSVaishali Kulkarni 					       struct ecore_ptt *p_ptt);
1302*14b24e2bSVaishali Kulkarni 
1303*14b24e2bSVaishali Kulkarni /**
1304*14b24e2bSVaishali Kulkarni  * @brief - Update fcoe vlan id value to the MFW.
1305*14b24e2bSVaishali Kulkarni  *
1306*14b24e2bSVaishali Kulkarni  * @param p_hwfn
1307*14b24e2bSVaishali Kulkarni  * @param p_ptt
1308*14b24e2bSVaishali Kulkarni  * @param vlan - fcoe vlan
1309*14b24e2bSVaishali Kulkarni  *
1310*14b24e2bSVaishali Kulkarni  * @param return ECORE_SUCCESS upon success.
1311*14b24e2bSVaishali Kulkarni  */
1312*14b24e2bSVaishali Kulkarni enum _ecore_status_t
1313*14b24e2bSVaishali Kulkarni ecore_mcp_update_fcoe_cvid(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt,
1314*14b24e2bSVaishali Kulkarni 			   u16 vlan);
1315*14b24e2bSVaishali Kulkarni 
1316*14b24e2bSVaishali Kulkarni /**
1317*14b24e2bSVaishali Kulkarni  * @brief - Update fabric name (wwn) value to the MFW.
1318*14b24e2bSVaishali Kulkarni  *
1319*14b24e2bSVaishali Kulkarni  * @param p_hwfn
1320*14b24e2bSVaishali Kulkarni  * @param p_ptt
1321*14b24e2bSVaishali Kulkarni  * @param wwn - world wide name
1322*14b24e2bSVaishali Kulkarni  *
1323*14b24e2bSVaishali Kulkarni  * @param return ECORE_SUCCESS upon success.
1324*14b24e2bSVaishali Kulkarni  */
1325*14b24e2bSVaishali Kulkarni enum _ecore_status_t
1326*14b24e2bSVaishali Kulkarni ecore_mcp_update_fcoe_fabric_name(struct ecore_hwfn *p_hwfn,
1327*14b24e2bSVaishali Kulkarni 				  struct ecore_ptt *p_ptt, u8 *wwn);
1328*14b24e2bSVaishali Kulkarni #endif
1329