xref: /freebsd-src/sys/dev/qlnx/qlnxe/ecore_mcp_api.h (revision 95ee2897e98f5d444f26ed2334cc7c439f9c16c6)
111e25f0dSDavid C Somayajulu /*
211e25f0dSDavid C Somayajulu  * Copyright (c) 2017-2018 Cavium, Inc.
311e25f0dSDavid C Somayajulu  * All rights reserved.
411e25f0dSDavid C Somayajulu  *
511e25f0dSDavid C Somayajulu  *  Redistribution and use in source and binary forms, with or without
611e25f0dSDavid C Somayajulu  *  modification, are permitted provided that the following conditions
711e25f0dSDavid C Somayajulu  *  are met:
811e25f0dSDavid C Somayajulu  *
911e25f0dSDavid C Somayajulu  *  1. Redistributions of source code must retain the above copyright
1011e25f0dSDavid C Somayajulu  *     notice, this list of conditions and the following disclaimer.
1111e25f0dSDavid C Somayajulu  *  2. Redistributions in binary form must reproduce the above copyright
1211e25f0dSDavid C Somayajulu  *     notice, this list of conditions and the following disclaimer in the
1311e25f0dSDavid C Somayajulu  *     documentation and/or other materials provided with the distribution.
1411e25f0dSDavid C Somayajulu  *
1511e25f0dSDavid C Somayajulu  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
1611e25f0dSDavid C Somayajulu  *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1711e25f0dSDavid C Somayajulu  *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1811e25f0dSDavid C Somayajulu  *  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
1911e25f0dSDavid C Somayajulu  *  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2011e25f0dSDavid C Somayajulu  *  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2111e25f0dSDavid C Somayajulu  *  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2211e25f0dSDavid C Somayajulu  *  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2311e25f0dSDavid C Somayajulu  *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2411e25f0dSDavid C Somayajulu  *  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2511e25f0dSDavid C Somayajulu  *  POSSIBILITY OF SUCH DAMAGE.
2611e25f0dSDavid C Somayajulu  *
2711e25f0dSDavid C Somayajulu  */
2811e25f0dSDavid C Somayajulu 
2911e25f0dSDavid C Somayajulu #ifndef __ECORE_MCP_API_H__
3011e25f0dSDavid C Somayajulu #define __ECORE_MCP_API_H__
3111e25f0dSDavid C Somayajulu 
3211e25f0dSDavid C Somayajulu #include "ecore_status.h"
3311e25f0dSDavid C Somayajulu 
3411e25f0dSDavid C Somayajulu struct ecore_mcp_link_speed_params {
3511e25f0dSDavid C Somayajulu 	bool autoneg;
3611e25f0dSDavid C Somayajulu 	u32 advertised_speeds; /* bitmask of DRV_SPEED_CAPABILITY */
3711e25f0dSDavid C Somayajulu 	u32 forced_speed; /* In Mb/s */
3811e25f0dSDavid C Somayajulu };
3911e25f0dSDavid C Somayajulu 
4011e25f0dSDavid C Somayajulu struct ecore_mcp_link_pause_params {
4111e25f0dSDavid C Somayajulu 	bool autoneg;
4211e25f0dSDavid C Somayajulu 	bool forced_rx;
4311e25f0dSDavid C Somayajulu 	bool forced_tx;
4411e25f0dSDavid C Somayajulu };
4511e25f0dSDavid C Somayajulu 
4611e25f0dSDavid C Somayajulu enum ecore_mcp_eee_mode {
4711e25f0dSDavid C Somayajulu 	ECORE_MCP_EEE_DISABLED,
4811e25f0dSDavid C Somayajulu 	ECORE_MCP_EEE_ENABLED,
4911e25f0dSDavid C Somayajulu 	ECORE_MCP_EEE_UNSUPPORTED
5011e25f0dSDavid C Somayajulu };
5111e25f0dSDavid C Somayajulu 
529efd0ba7SDavid C Somayajulu #ifndef __EXTRACT__LINUX__
5311e25f0dSDavid C Somayajulu struct ecore_link_eee_params {
5411e25f0dSDavid C Somayajulu 	u32 tx_lpi_timer;
5511e25f0dSDavid C Somayajulu #define ECORE_EEE_1G_ADV	(1 << 0)
5611e25f0dSDavid C Somayajulu #define ECORE_EEE_10G_ADV	(1 << 1)
5711e25f0dSDavid C Somayajulu 	/* Capabilities are represented using ECORE_EEE_*_ADV values */
5811e25f0dSDavid C Somayajulu 	u8 adv_caps;
5911e25f0dSDavid C Somayajulu 	u8 lp_adv_caps;
6011e25f0dSDavid C Somayajulu 	bool enable;
6111e25f0dSDavid C Somayajulu 	bool tx_lpi_enable;
6211e25f0dSDavid C Somayajulu };
639efd0ba7SDavid C Somayajulu #endif
6411e25f0dSDavid C Somayajulu 
6511e25f0dSDavid C Somayajulu struct ecore_mcp_link_params {
6611e25f0dSDavid C Somayajulu 	struct ecore_mcp_link_speed_params speed;
6711e25f0dSDavid C Somayajulu 	struct ecore_mcp_link_pause_params pause;
6811e25f0dSDavid C Somayajulu 	u32 loopback_mode; /* in PMM_LOOPBACK values */
6911e25f0dSDavid C Somayajulu 	struct ecore_link_eee_params eee;
7011e25f0dSDavid C Somayajulu };
7111e25f0dSDavid C Somayajulu 
7211e25f0dSDavid C Somayajulu struct ecore_mcp_link_capabilities {
7311e25f0dSDavid C Somayajulu 	u32 speed_capabilities;
7411e25f0dSDavid C Somayajulu 	bool default_speed_autoneg; /* In Mb/s */
75*217ec208SDavid C Somayajulu 	u32 default_speed; /* In Mb/s */ /* __LINUX__THROW__ */
7611e25f0dSDavid C Somayajulu 	enum ecore_mcp_eee_mode default_eee;
7711e25f0dSDavid C Somayajulu 	u32 eee_lpi_timer;
78*217ec208SDavid C Somayajulu 	u8 eee_speed_caps;
7911e25f0dSDavid C Somayajulu };
8011e25f0dSDavid C Somayajulu 
8111e25f0dSDavid C Somayajulu struct ecore_mcp_link_state {
8211e25f0dSDavid C Somayajulu 	bool link_up;
8311e25f0dSDavid C Somayajulu 
8411e25f0dSDavid C Somayajulu 	u32 min_pf_rate; /* In Mb/s */
85*217ec208SDavid C Somayajulu 
86*217ec208SDavid C Somayajulu 	/* Actual link speed in Mb/s */
87*217ec208SDavid C Somayajulu 	u32 line_speed;
88*217ec208SDavid C Somayajulu 
89*217ec208SDavid C Somayajulu 	/* PF max speed in MB/s, deduced from line_speed
90*217ec208SDavid C Somayajulu 	 * according to PF max bandwidth configuration.
91*217ec208SDavid C Somayajulu 	 */
92*217ec208SDavid C Somayajulu 	u32 speed;
9311e25f0dSDavid C Somayajulu 	bool full_duplex;
9411e25f0dSDavid C Somayajulu 
9511e25f0dSDavid C Somayajulu 	bool an;
9611e25f0dSDavid C Somayajulu 	bool an_complete;
9711e25f0dSDavid C Somayajulu 	bool parallel_detection;
9811e25f0dSDavid C Somayajulu 	bool pfc_enabled;
9911e25f0dSDavid C Somayajulu 
10011e25f0dSDavid C Somayajulu #define ECORE_LINK_PARTNER_SPEED_1G_HD	(1 << 0)
10111e25f0dSDavid C Somayajulu #define ECORE_LINK_PARTNER_SPEED_1G_FD	(1 << 1)
10211e25f0dSDavid C Somayajulu #define ECORE_LINK_PARTNER_SPEED_10G	(1 << 2)
10311e25f0dSDavid C Somayajulu #define ECORE_LINK_PARTNER_SPEED_20G	(1 << 3)
10411e25f0dSDavid C Somayajulu #define ECORE_LINK_PARTNER_SPEED_25G	(1 << 4)
10511e25f0dSDavid C Somayajulu #define ECORE_LINK_PARTNER_SPEED_40G	(1 << 5)
10611e25f0dSDavid C Somayajulu #define ECORE_LINK_PARTNER_SPEED_50G	(1 << 6)
10711e25f0dSDavid C Somayajulu #define ECORE_LINK_PARTNER_SPEED_100G	(1 << 7)
10811e25f0dSDavid C Somayajulu 	u32 partner_adv_speed;
10911e25f0dSDavid C Somayajulu 
11011e25f0dSDavid C Somayajulu 	bool partner_tx_flow_ctrl_en;
11111e25f0dSDavid C Somayajulu 	bool partner_rx_flow_ctrl_en;
11211e25f0dSDavid C Somayajulu 
11311e25f0dSDavid C Somayajulu #define ECORE_LINK_PARTNER_SYMMETRIC_PAUSE (1)
11411e25f0dSDavid C Somayajulu #define ECORE_LINK_PARTNER_ASYMMETRIC_PAUSE (2)
11511e25f0dSDavid C Somayajulu #define ECORE_LINK_PARTNER_BOTH_PAUSE (3)
11611e25f0dSDavid C Somayajulu 	u8 partner_adv_pause;
11711e25f0dSDavid C Somayajulu 
11811e25f0dSDavid C Somayajulu 	bool sfp_tx_fault;
11911e25f0dSDavid C Somayajulu 
12011e25f0dSDavid C Somayajulu 	bool eee_active;
12111e25f0dSDavid C Somayajulu 	u8 eee_adv_caps;
12211e25f0dSDavid C Somayajulu 	u8 eee_lp_adv_caps;
12311e25f0dSDavid C Somayajulu };
12411e25f0dSDavid C Somayajulu 
12511e25f0dSDavid C Somayajulu struct ecore_mcp_function_info {
12611e25f0dSDavid C Somayajulu 	u8 pause_on_host;
12711e25f0dSDavid C Somayajulu 
12811e25f0dSDavid C Somayajulu 	enum ecore_pci_personality protocol;
12911e25f0dSDavid C Somayajulu 
13011e25f0dSDavid C Somayajulu 	u8 bandwidth_min;
13111e25f0dSDavid C Somayajulu 	u8 bandwidth_max;
13211e25f0dSDavid C Somayajulu 
13311e25f0dSDavid C Somayajulu 	u8 mac[ETH_ALEN];
13411e25f0dSDavid C Somayajulu 
13511e25f0dSDavid C Somayajulu 	u64 wwn_port;
13611e25f0dSDavid C Somayajulu 	u64 wwn_node;
13711e25f0dSDavid C Somayajulu 
13811e25f0dSDavid C Somayajulu #define ECORE_MCP_VLAN_UNSET		(0xffff)
13911e25f0dSDavid C Somayajulu 	u16 ovlan;
14011e25f0dSDavid C Somayajulu 
14111e25f0dSDavid C Somayajulu 	u16 mtu;
14211e25f0dSDavid C Somayajulu };
14311e25f0dSDavid C Somayajulu 
1449efd0ba7SDavid C Somayajulu #ifndef __EXTRACT__LINUX__
14511e25f0dSDavid C Somayajulu enum ecore_nvm_images {
14611e25f0dSDavid C Somayajulu 	ECORE_NVM_IMAGE_ISCSI_CFG,
14711e25f0dSDavid C Somayajulu 	ECORE_NVM_IMAGE_FCOE_CFG,
14811e25f0dSDavid C Somayajulu 	ECORE_NVM_IMAGE_MDUMP,
14911e25f0dSDavid C Somayajulu };
1509efd0ba7SDavid C Somayajulu #endif
15111e25f0dSDavid C Somayajulu 
15211e25f0dSDavid C Somayajulu struct ecore_mcp_drv_version {
15311e25f0dSDavid C Somayajulu 	u32 version;
15411e25f0dSDavid C Somayajulu 	u8 name[MCP_DRV_VER_STR_SIZE - 4];
15511e25f0dSDavid C Somayajulu };
15611e25f0dSDavid C Somayajulu 
15711e25f0dSDavid C Somayajulu struct ecore_mcp_lan_stats {
15811e25f0dSDavid C Somayajulu 	u64 ucast_rx_pkts;
15911e25f0dSDavid C Somayajulu 	u64 ucast_tx_pkts;
16011e25f0dSDavid C Somayajulu 	u32 fcs_err;
16111e25f0dSDavid C Somayajulu };
16211e25f0dSDavid C Somayajulu 
16311e25f0dSDavid C Somayajulu #ifndef ECORE_PROTO_STATS
16411e25f0dSDavid C Somayajulu #define ECORE_PROTO_STATS
16511e25f0dSDavid C Somayajulu struct ecore_mcp_fcoe_stats {
16611e25f0dSDavid C Somayajulu 	u64 rx_pkts;
16711e25f0dSDavid C Somayajulu 	u64 tx_pkts;
16811e25f0dSDavid C Somayajulu 	u32 fcs_err;
16911e25f0dSDavid C Somayajulu 	u32 login_failure;
17011e25f0dSDavid C Somayajulu };
17111e25f0dSDavid C Somayajulu 
17211e25f0dSDavid C Somayajulu struct ecore_mcp_iscsi_stats {
17311e25f0dSDavid C Somayajulu 	u64 rx_pdus;
17411e25f0dSDavid C Somayajulu 	u64 tx_pdus;
17511e25f0dSDavid C Somayajulu 	u64 rx_bytes;
17611e25f0dSDavid C Somayajulu 	u64 tx_bytes;
17711e25f0dSDavid C Somayajulu };
17811e25f0dSDavid C Somayajulu 
17911e25f0dSDavid C Somayajulu struct ecore_mcp_rdma_stats {
18011e25f0dSDavid C Somayajulu 	u64 rx_pkts;
18111e25f0dSDavid C Somayajulu 	u64 tx_pkts;
18211e25f0dSDavid C Somayajulu 	u64 rx_bytes;
18311e25f0dSDavid C Somayajulu 	u64 tx_byts;
18411e25f0dSDavid C Somayajulu };
18511e25f0dSDavid C Somayajulu 
18611e25f0dSDavid C Somayajulu enum ecore_mcp_protocol_type {
18711e25f0dSDavid C Somayajulu 	ECORE_MCP_LAN_STATS,
18811e25f0dSDavid C Somayajulu 	ECORE_MCP_FCOE_STATS,
18911e25f0dSDavid C Somayajulu 	ECORE_MCP_ISCSI_STATS,
19011e25f0dSDavid C Somayajulu 	ECORE_MCP_RDMA_STATS
19111e25f0dSDavid C Somayajulu };
19211e25f0dSDavid C Somayajulu 
19311e25f0dSDavid C Somayajulu union ecore_mcp_protocol_stats {
19411e25f0dSDavid C Somayajulu 	struct ecore_mcp_lan_stats lan_stats;
19511e25f0dSDavid C Somayajulu 	struct ecore_mcp_fcoe_stats fcoe_stats;
19611e25f0dSDavid C Somayajulu 	struct ecore_mcp_iscsi_stats iscsi_stats;
19711e25f0dSDavid C Somayajulu 	struct ecore_mcp_rdma_stats rdma_stats;
19811e25f0dSDavid C Somayajulu };
19911e25f0dSDavid C Somayajulu #endif
20011e25f0dSDavid C Somayajulu 
20111e25f0dSDavid C Somayajulu enum ecore_ov_client {
20211e25f0dSDavid C Somayajulu 	ECORE_OV_CLIENT_DRV,
20311e25f0dSDavid C Somayajulu 	ECORE_OV_CLIENT_USER,
20411e25f0dSDavid C Somayajulu 	ECORE_OV_CLIENT_VENDOR_SPEC
20511e25f0dSDavid C Somayajulu };
20611e25f0dSDavid C Somayajulu 
20711e25f0dSDavid C Somayajulu enum ecore_ov_driver_state {
20811e25f0dSDavid C Somayajulu 	ECORE_OV_DRIVER_STATE_NOT_LOADED,
20911e25f0dSDavid C Somayajulu 	ECORE_OV_DRIVER_STATE_DISABLED,
21011e25f0dSDavid C Somayajulu 	ECORE_OV_DRIVER_STATE_ACTIVE
21111e25f0dSDavid C Somayajulu };
21211e25f0dSDavid C Somayajulu 
21311e25f0dSDavid C Somayajulu enum ecore_ov_wol {
21411e25f0dSDavid C Somayajulu 	ECORE_OV_WOL_DEFAULT,
21511e25f0dSDavid C Somayajulu 	ECORE_OV_WOL_DISABLED,
21611e25f0dSDavid C Somayajulu 	ECORE_OV_WOL_ENABLED
21711e25f0dSDavid C Somayajulu };
21811e25f0dSDavid C Somayajulu 
2199efd0ba7SDavid C Somayajulu #ifndef __EXTRACT__LINUX__
22011e25f0dSDavid C Somayajulu #define ECORE_MAX_NPIV_ENTRIES 128
22111e25f0dSDavid C Somayajulu #define ECORE_WWN_SIZE 8
22211e25f0dSDavid C Somayajulu struct ecore_fc_npiv_tbl {
22311e25f0dSDavid C Somayajulu 	u16 num_wwpn;
22411e25f0dSDavid C Somayajulu 	u16 num_wwnn;
22511e25f0dSDavid C Somayajulu 	u8 wwpn[ECORE_MAX_NPIV_ENTRIES][ECORE_WWN_SIZE];
22611e25f0dSDavid C Somayajulu 	u8 wwnn[ECORE_MAX_NPIV_ENTRIES][ECORE_WWN_SIZE];
22711e25f0dSDavid C Somayajulu };
22811e25f0dSDavid C Somayajulu 
22911e25f0dSDavid C Somayajulu enum ecore_led_mode {
23011e25f0dSDavid C Somayajulu 	ECORE_LED_MODE_OFF,
23111e25f0dSDavid C Somayajulu 	ECORE_LED_MODE_ON,
23211e25f0dSDavid C Somayajulu 	ECORE_LED_MODE_RESTORE
23311e25f0dSDavid C Somayajulu };
2349efd0ba7SDavid C Somayajulu #endif
23511e25f0dSDavid C Somayajulu 
23611e25f0dSDavid C Somayajulu struct ecore_temperature_sensor {
23711e25f0dSDavid C Somayajulu 	u8 sensor_location;
23811e25f0dSDavid C Somayajulu 	u8 threshold_high;
23911e25f0dSDavid C Somayajulu 	u8 critical;
24011e25f0dSDavid C Somayajulu 	u8 current_temp;
24111e25f0dSDavid C Somayajulu };
24211e25f0dSDavid C Somayajulu 
24311e25f0dSDavid C Somayajulu #define ECORE_MAX_NUM_OF_SENSORS	7
24411e25f0dSDavid C Somayajulu struct ecore_temperature_info {
24511e25f0dSDavid C Somayajulu 	u32 num_sensors;
24611e25f0dSDavid C Somayajulu 	struct ecore_temperature_sensor sensors[ECORE_MAX_NUM_OF_SENSORS];
24711e25f0dSDavid C Somayajulu };
24811e25f0dSDavid C Somayajulu 
24911e25f0dSDavid C Somayajulu enum ecore_mba_img_idx {
25011e25f0dSDavid C Somayajulu 	ECORE_MBA_LEGACY_IDX,
25111e25f0dSDavid C Somayajulu 	ECORE_MBA_PCI3CLP_IDX,
25211e25f0dSDavid C Somayajulu 	ECORE_MBA_PCI3_IDX,
25311e25f0dSDavid C Somayajulu 	ECORE_MBA_FCODE_IDX,
25411e25f0dSDavid C Somayajulu 	ECORE_EFI_X86_IDX,
25511e25f0dSDavid C Somayajulu 	ECORE_EFI_IPF_IDX,
25611e25f0dSDavid C Somayajulu 	ECORE_EFI_EBC_IDX,
25711e25f0dSDavid C Somayajulu 	ECORE_EFI_X64_IDX,
25811e25f0dSDavid C Somayajulu 	ECORE_MAX_NUM_OF_ROMIMG
25911e25f0dSDavid C Somayajulu };
26011e25f0dSDavid C Somayajulu 
26111e25f0dSDavid C Somayajulu struct ecore_mba_vers {
26211e25f0dSDavid C Somayajulu 	u32 mba_vers[ECORE_MAX_NUM_OF_ROMIMG];
26311e25f0dSDavid C Somayajulu };
26411e25f0dSDavid C Somayajulu 
26511e25f0dSDavid C Somayajulu enum ecore_mfw_tlv_type {
26611e25f0dSDavid C Somayajulu 	ECORE_MFW_TLV_GENERIC = 0x1, /* Core driver TLVs */
26711e25f0dSDavid C Somayajulu 	ECORE_MFW_TLV_ETH = 0x2, /* L2 driver TLVs */
26811e25f0dSDavid C Somayajulu 	ECORE_MFW_TLV_FCOE = 0x4, /* FCoE protocol TLVs */
26911e25f0dSDavid C Somayajulu 	ECORE_MFW_TLV_ISCSI = 0x8, /* SCSI protocol TLVs */
27011e25f0dSDavid C Somayajulu 	ECORE_MFW_TLV_MAX = 0x16,
27111e25f0dSDavid C Somayajulu };
27211e25f0dSDavid C Somayajulu 
27311e25f0dSDavid C Somayajulu struct ecore_mfw_tlv_generic {
27411e25f0dSDavid C Somayajulu 	struct {
27511e25f0dSDavid C Somayajulu 		u8 ipv4_csum_offload;
27611e25f0dSDavid C Somayajulu 		u8 lso_supported;
27711e25f0dSDavid C Somayajulu 		bool b_set;
27811e25f0dSDavid C Somayajulu 	} flags;
27911e25f0dSDavid C Somayajulu 
28011e25f0dSDavid C Somayajulu #define ECORE_MFW_TLV_MAC_COUNT 3
28111e25f0dSDavid C Somayajulu 	/* First entry for primary MAC, 2 secondary MACs possible */
28211e25f0dSDavid C Somayajulu 	u8 mac[ECORE_MFW_TLV_MAC_COUNT][6];
28311e25f0dSDavid C Somayajulu 	bool mac_set[ECORE_MFW_TLV_MAC_COUNT];
28411e25f0dSDavid C Somayajulu 
28511e25f0dSDavid C Somayajulu 	u64 rx_frames;
28611e25f0dSDavid C Somayajulu 	bool rx_frames_set;
28711e25f0dSDavid C Somayajulu 	u64 rx_bytes;
28811e25f0dSDavid C Somayajulu 	bool rx_bytes_set;
28911e25f0dSDavid C Somayajulu 	u64 tx_frames;
29011e25f0dSDavid C Somayajulu 	bool tx_frames_set;
29111e25f0dSDavid C Somayajulu 	u64 tx_bytes;
29211e25f0dSDavid C Somayajulu 	bool tx_bytes_set;
29311e25f0dSDavid C Somayajulu };
29411e25f0dSDavid C Somayajulu 
2959efd0ba7SDavid C Somayajulu #ifndef __EXTRACT__LINUX__
29611e25f0dSDavid C Somayajulu struct ecore_mfw_tlv_eth {
29711e25f0dSDavid C Somayajulu 	u16 lso_maxoff_size;
29811e25f0dSDavid C Somayajulu 	bool lso_maxoff_size_set;
29911e25f0dSDavid C Somayajulu 	u16 lso_minseg_size;
30011e25f0dSDavid C Somayajulu 	bool lso_minseg_size_set;
30111e25f0dSDavid C Somayajulu 	u8 prom_mode;
30211e25f0dSDavid C Somayajulu 	bool prom_mode_set;
30311e25f0dSDavid C Somayajulu 	u16 tx_descr_size;
30411e25f0dSDavid C Somayajulu 	bool tx_descr_size_set;
30511e25f0dSDavid C Somayajulu 	u16 rx_descr_size;
30611e25f0dSDavid C Somayajulu 	bool rx_descr_size_set;
30711e25f0dSDavid C Somayajulu 	u16 netq_count;
30811e25f0dSDavid C Somayajulu 	bool netq_count_set;
30911e25f0dSDavid C Somayajulu 	u32 tcp4_offloads;
31011e25f0dSDavid C Somayajulu 	bool tcp4_offloads_set;
31111e25f0dSDavid C Somayajulu 	u32 tcp6_offloads;
31211e25f0dSDavid C Somayajulu 	bool tcp6_offloads_set;
31311e25f0dSDavid C Somayajulu 	u16 tx_descr_qdepth;
31411e25f0dSDavid C Somayajulu 	bool tx_descr_qdepth_set;
31511e25f0dSDavid C Somayajulu 	u16 rx_descr_qdepth;
31611e25f0dSDavid C Somayajulu 	bool rx_descr_qdepth_set;
31711e25f0dSDavid C Somayajulu 	u8 iov_offload;
31811e25f0dSDavid C Somayajulu #define ECORE_MFW_TLV_IOV_OFFLOAD_NONE		(0)
31911e25f0dSDavid C Somayajulu #define ECORE_MFW_TLV_IOV_OFFLOAD_MULTIQUEUE	(1)
32011e25f0dSDavid C Somayajulu #define ECORE_MFW_TLV_IOV_OFFLOAD_VEB		(2)
32111e25f0dSDavid C Somayajulu #define ECORE_MFW_TLV_IOV_OFFLOAD_VEPA		(3)
32211e25f0dSDavid C Somayajulu 	bool iov_offload_set;
32311e25f0dSDavid C Somayajulu 	u8 txqs_empty;
32411e25f0dSDavid C Somayajulu 	bool txqs_empty_set;
32511e25f0dSDavid C Somayajulu 	u8 rxqs_empty;
32611e25f0dSDavid C Somayajulu 	bool rxqs_empty_set;
32711e25f0dSDavid C Somayajulu 	u8 num_txqs_full;
32811e25f0dSDavid C Somayajulu 	bool num_txqs_full_set;
32911e25f0dSDavid C Somayajulu 	u8 num_rxqs_full;
33011e25f0dSDavid C Somayajulu 	bool num_rxqs_full_set;
33111e25f0dSDavid C Somayajulu };
33211e25f0dSDavid C Somayajulu 
33311e25f0dSDavid C Somayajulu struct ecore_mfw_tlv_time {
33411e25f0dSDavid C Somayajulu 	bool b_set;
33511e25f0dSDavid C Somayajulu 	u8 month;
33611e25f0dSDavid C Somayajulu 	u8 day;
33711e25f0dSDavid C Somayajulu 	u8 hour;
33811e25f0dSDavid C Somayajulu 	u8 min;
33911e25f0dSDavid C Somayajulu 	u16 msec;
34011e25f0dSDavid C Somayajulu 	u16 usec;
34111e25f0dSDavid C Somayajulu };
34211e25f0dSDavid C Somayajulu 
34311e25f0dSDavid C Somayajulu struct ecore_mfw_tlv_fcoe {
34411e25f0dSDavid C Somayajulu 	u8 scsi_timeout;
34511e25f0dSDavid C Somayajulu 	bool scsi_timeout_set;
34611e25f0dSDavid C Somayajulu 	u32 rt_tov;
34711e25f0dSDavid C Somayajulu 	bool rt_tov_set;
34811e25f0dSDavid C Somayajulu 	u32 ra_tov;
34911e25f0dSDavid C Somayajulu 	bool ra_tov_set;
35011e25f0dSDavid C Somayajulu 	u32 ed_tov;
35111e25f0dSDavid C Somayajulu 	bool ed_tov_set;
35211e25f0dSDavid C Somayajulu 	u32 cr_tov;
35311e25f0dSDavid C Somayajulu 	bool cr_tov_set;
35411e25f0dSDavid C Somayajulu 	u8 boot_type;
35511e25f0dSDavid C Somayajulu 	bool boot_type_set;
35611e25f0dSDavid C Somayajulu 	u8 npiv_state;
35711e25f0dSDavid C Somayajulu 	bool npiv_state_set;
35811e25f0dSDavid C Somayajulu 	u32 num_npiv_ids;
35911e25f0dSDavid C Somayajulu 	bool num_npiv_ids_set;
36011e25f0dSDavid C Somayajulu 	u8 switch_name[8];
36111e25f0dSDavid C Somayajulu 	bool switch_name_set;
36211e25f0dSDavid C Somayajulu 	u16 switch_portnum;
36311e25f0dSDavid C Somayajulu 	bool switch_portnum_set;
36411e25f0dSDavid C Somayajulu 	u8 switch_portid[3];
36511e25f0dSDavid C Somayajulu 	bool switch_portid_set;
36611e25f0dSDavid C Somayajulu 	u8 vendor_name[8];
36711e25f0dSDavid C Somayajulu 	bool vendor_name_set;
36811e25f0dSDavid C Somayajulu 	u8 switch_model[8];
36911e25f0dSDavid C Somayajulu 	bool switch_model_set;
37011e25f0dSDavid C Somayajulu 	u8 switch_fw_version[8];
37111e25f0dSDavid C Somayajulu 	bool switch_fw_version_set;
37211e25f0dSDavid C Somayajulu 	u8 qos_pri;
37311e25f0dSDavid C Somayajulu 	bool qos_pri_set;
37411e25f0dSDavid C Somayajulu 	u8 port_alias[3];
37511e25f0dSDavid C Somayajulu 	bool port_alias_set;
37611e25f0dSDavid C Somayajulu 	u8 port_state;
37711e25f0dSDavid C Somayajulu #define ECORE_MFW_TLV_PORT_STATE_OFFLINE	(0)
37811e25f0dSDavid C Somayajulu #define ECORE_MFW_TLV_PORT_STATE_LOOP		(1)
37911e25f0dSDavid C Somayajulu #define ECORE_MFW_TLV_PORT_STATE_P2P		(2)
38011e25f0dSDavid C Somayajulu #define ECORE_MFW_TLV_PORT_STATE_FABRIC		(3)
38111e25f0dSDavid C Somayajulu 	bool port_state_set;
38211e25f0dSDavid C Somayajulu 	u16 fip_tx_descr_size;
38311e25f0dSDavid C Somayajulu 	bool fip_tx_descr_size_set;
38411e25f0dSDavid C Somayajulu 	u16 fip_rx_descr_size;
38511e25f0dSDavid C Somayajulu 	bool fip_rx_descr_size_set;
38611e25f0dSDavid C Somayajulu 	u16 link_failures;
38711e25f0dSDavid C Somayajulu 	bool link_failures_set;
38811e25f0dSDavid C Somayajulu 	u8 fcoe_boot_progress;
38911e25f0dSDavid C Somayajulu 	bool fcoe_boot_progress_set;
39011e25f0dSDavid C Somayajulu 	u64 rx_bcast;
39111e25f0dSDavid C Somayajulu 	bool rx_bcast_set;
39211e25f0dSDavid C Somayajulu 	u64 tx_bcast;
39311e25f0dSDavid C Somayajulu 	bool tx_bcast_set;
39411e25f0dSDavid C Somayajulu 	u16 fcoe_txq_depth;
39511e25f0dSDavid C Somayajulu 	bool fcoe_txq_depth_set;
39611e25f0dSDavid C Somayajulu 	u16 fcoe_rxq_depth;
39711e25f0dSDavid C Somayajulu 	bool fcoe_rxq_depth_set;
39811e25f0dSDavid C Somayajulu 	u64 fcoe_rx_frames;
39911e25f0dSDavid C Somayajulu 	bool fcoe_rx_frames_set;
40011e25f0dSDavid C Somayajulu 	u64 fcoe_rx_bytes;
40111e25f0dSDavid C Somayajulu 	bool fcoe_rx_bytes_set;
40211e25f0dSDavid C Somayajulu 	u64 fcoe_tx_frames;
40311e25f0dSDavid C Somayajulu 	bool fcoe_tx_frames_set;
40411e25f0dSDavid C Somayajulu 	u64 fcoe_tx_bytes;
40511e25f0dSDavid C Somayajulu 	bool fcoe_tx_bytes_set;
40611e25f0dSDavid C Somayajulu 	u16 crc_count;
40711e25f0dSDavid C Somayajulu 	bool crc_count_set;
40811e25f0dSDavid C Somayajulu 	u32 crc_err_src_fcid[5];
40911e25f0dSDavid C Somayajulu 	bool crc_err_src_fcid_set[5];
41011e25f0dSDavid C Somayajulu 	struct ecore_mfw_tlv_time crc_err[5];
41111e25f0dSDavid C Somayajulu 	u16 losync_err;
41211e25f0dSDavid C Somayajulu 	bool losync_err_set;
41311e25f0dSDavid C Somayajulu 	u16 losig_err;
41411e25f0dSDavid C Somayajulu 	bool losig_err_set;
41511e25f0dSDavid C Somayajulu 	u16 primtive_err;
41611e25f0dSDavid C Somayajulu 	bool primtive_err_set;
41711e25f0dSDavid C Somayajulu 	u16 disparity_err;
41811e25f0dSDavid C Somayajulu 	bool disparity_err_set;
41911e25f0dSDavid C Somayajulu 	u16 code_violation_err;
42011e25f0dSDavid C Somayajulu 	bool code_violation_err_set;
42111e25f0dSDavid C Somayajulu 	u32 flogi_param[4];
42211e25f0dSDavid C Somayajulu 	bool flogi_param_set[4];
42311e25f0dSDavid C Somayajulu 	struct ecore_mfw_tlv_time flogi_tstamp;
42411e25f0dSDavid C Somayajulu 	u32 flogi_acc_param[4];
42511e25f0dSDavid C Somayajulu 	bool flogi_acc_param_set[4];
42611e25f0dSDavid C Somayajulu 	struct ecore_mfw_tlv_time flogi_acc_tstamp;
42711e25f0dSDavid C Somayajulu 	u32 flogi_rjt;
42811e25f0dSDavid C Somayajulu 	bool flogi_rjt_set;
42911e25f0dSDavid C Somayajulu 	struct ecore_mfw_tlv_time flogi_rjt_tstamp;
43011e25f0dSDavid C Somayajulu 	u32 fdiscs;
43111e25f0dSDavid C Somayajulu 	bool fdiscs_set;
43211e25f0dSDavid C Somayajulu 	u8 fdisc_acc;
43311e25f0dSDavid C Somayajulu 	bool fdisc_acc_set;
43411e25f0dSDavid C Somayajulu 	u8 fdisc_rjt;
43511e25f0dSDavid C Somayajulu 	bool fdisc_rjt_set;
43611e25f0dSDavid C Somayajulu 	u8 plogi;
43711e25f0dSDavid C Somayajulu 	bool plogi_set;
43811e25f0dSDavid C Somayajulu 	u8 plogi_acc;
43911e25f0dSDavid C Somayajulu 	bool plogi_acc_set;
44011e25f0dSDavid C Somayajulu 	u8 plogi_rjt;
44111e25f0dSDavid C Somayajulu 	bool plogi_rjt_set;
44211e25f0dSDavid C Somayajulu 	u32 plogi_dst_fcid[5];
44311e25f0dSDavid C Somayajulu 	bool plogi_dst_fcid_set[5];
44411e25f0dSDavid C Somayajulu 	struct ecore_mfw_tlv_time plogi_tstamp[5];
44511e25f0dSDavid C Somayajulu 	u32 plogi_acc_src_fcid[5];
44611e25f0dSDavid C Somayajulu 	bool plogi_acc_src_fcid_set[5];
44711e25f0dSDavid C Somayajulu 	struct ecore_mfw_tlv_time plogi_acc_tstamp[5];
44811e25f0dSDavid C Somayajulu 	u8 tx_plogos;
44911e25f0dSDavid C Somayajulu 	bool tx_plogos_set;
45011e25f0dSDavid C Somayajulu 	u8 plogo_acc;
45111e25f0dSDavid C Somayajulu 	bool plogo_acc_set;
45211e25f0dSDavid C Somayajulu 	u8 plogo_rjt;
45311e25f0dSDavid C Somayajulu 	bool plogo_rjt_set;
45411e25f0dSDavid C Somayajulu 	u32 plogo_src_fcid[5];
45511e25f0dSDavid C Somayajulu 	bool plogo_src_fcid_set[5];
45611e25f0dSDavid C Somayajulu 	struct ecore_mfw_tlv_time plogo_tstamp[5];
45711e25f0dSDavid C Somayajulu 	u8 rx_logos;
45811e25f0dSDavid C Somayajulu 	bool rx_logos_set;
45911e25f0dSDavid C Somayajulu 	u8 tx_accs;
46011e25f0dSDavid C Somayajulu 	bool tx_accs_set;
46111e25f0dSDavid C Somayajulu 	u8 tx_prlis;
46211e25f0dSDavid C Somayajulu 	bool tx_prlis_set;
46311e25f0dSDavid C Somayajulu 	u8 rx_accs;
46411e25f0dSDavid C Somayajulu 	bool rx_accs_set;
46511e25f0dSDavid C Somayajulu 	u8 tx_abts;
46611e25f0dSDavid C Somayajulu 	bool tx_abts_set;
46711e25f0dSDavid C Somayajulu 	u8 rx_abts_acc;
46811e25f0dSDavid C Somayajulu 	bool rx_abts_acc_set;
46911e25f0dSDavid C Somayajulu 	u8 rx_abts_rjt;
47011e25f0dSDavid C Somayajulu 	bool rx_abts_rjt_set;
47111e25f0dSDavid C Somayajulu 	u32 abts_dst_fcid[5];
47211e25f0dSDavid C Somayajulu 	bool abts_dst_fcid_set[5];
47311e25f0dSDavid C Somayajulu 	struct ecore_mfw_tlv_time abts_tstamp[5];
47411e25f0dSDavid C Somayajulu 	u8 rx_rscn;
47511e25f0dSDavid C Somayajulu 	bool rx_rscn_set;
47611e25f0dSDavid C Somayajulu 	u32 rx_rscn_nport[4];
47711e25f0dSDavid C Somayajulu 	bool rx_rscn_nport_set[4];
47811e25f0dSDavid C Somayajulu 	u8 tx_lun_rst;
47911e25f0dSDavid C Somayajulu 	bool tx_lun_rst_set;
48011e25f0dSDavid C Somayajulu 	u8 abort_task_sets;
48111e25f0dSDavid C Somayajulu 	bool abort_task_sets_set;
48211e25f0dSDavid C Somayajulu 	u8 tx_tprlos;
48311e25f0dSDavid C Somayajulu 	bool tx_tprlos_set;
48411e25f0dSDavid C Somayajulu 	u8 tx_nos;
48511e25f0dSDavid C Somayajulu 	bool tx_nos_set;
48611e25f0dSDavid C Somayajulu 	u8 rx_nos;
48711e25f0dSDavid C Somayajulu 	bool rx_nos_set;
48811e25f0dSDavid C Somayajulu 	u8 ols;
48911e25f0dSDavid C Somayajulu 	bool ols_set;
49011e25f0dSDavid C Somayajulu 	u8 lr;
49111e25f0dSDavid C Somayajulu 	bool lr_set;
49211e25f0dSDavid C Somayajulu 	u8 lrr;
49311e25f0dSDavid C Somayajulu 	bool lrr_set;
49411e25f0dSDavid C Somayajulu 	u8 tx_lip;
49511e25f0dSDavid C Somayajulu 	bool tx_lip_set;
49611e25f0dSDavid C Somayajulu 	u8 rx_lip;
49711e25f0dSDavid C Somayajulu 	bool rx_lip_set;
49811e25f0dSDavid C Somayajulu 	u8 eofa;
49911e25f0dSDavid C Somayajulu 	bool eofa_set;
50011e25f0dSDavid C Somayajulu 	u8 eofni;
50111e25f0dSDavid C Somayajulu 	bool eofni_set;
50211e25f0dSDavid C Somayajulu 	u8 scsi_chks;
50311e25f0dSDavid C Somayajulu 	bool scsi_chks_set;
50411e25f0dSDavid C Somayajulu 	u8 scsi_cond_met;
50511e25f0dSDavid C Somayajulu 	bool scsi_cond_met_set;
50611e25f0dSDavid C Somayajulu 	u8 scsi_busy;
50711e25f0dSDavid C Somayajulu 	bool scsi_busy_set;
50811e25f0dSDavid C Somayajulu 	u8 scsi_inter;
50911e25f0dSDavid C Somayajulu 	bool scsi_inter_set;
51011e25f0dSDavid C Somayajulu 	u8 scsi_inter_cond_met;
51111e25f0dSDavid C Somayajulu 	bool scsi_inter_cond_met_set;
51211e25f0dSDavid C Somayajulu 	u8 scsi_rsv_conflicts;
51311e25f0dSDavid C Somayajulu 	bool scsi_rsv_conflicts_set;
51411e25f0dSDavid C Somayajulu 	u8 scsi_tsk_full;
51511e25f0dSDavid C Somayajulu 	bool scsi_tsk_full_set;
51611e25f0dSDavid C Somayajulu 	u8 scsi_aca_active;
51711e25f0dSDavid C Somayajulu 	bool scsi_aca_active_set;
51811e25f0dSDavid C Somayajulu 	u8 scsi_tsk_abort;
51911e25f0dSDavid C Somayajulu 	bool scsi_tsk_abort_set;
52011e25f0dSDavid C Somayajulu 	u32 scsi_rx_chk[5];
52111e25f0dSDavid C Somayajulu 	bool scsi_rx_chk_set[5];
52211e25f0dSDavid C Somayajulu 	struct ecore_mfw_tlv_time scsi_chk_tstamp[5];
52311e25f0dSDavid C Somayajulu };
52411e25f0dSDavid C Somayajulu 
52511e25f0dSDavid C Somayajulu struct ecore_mfw_tlv_iscsi {
52611e25f0dSDavid C Somayajulu 	u8 target_llmnr;
52711e25f0dSDavid C Somayajulu 	bool target_llmnr_set;
52811e25f0dSDavid C Somayajulu 	u8 header_digest;
52911e25f0dSDavid C Somayajulu 	bool header_digest_set;
53011e25f0dSDavid C Somayajulu 	u8 data_digest;
53111e25f0dSDavid C Somayajulu 	bool data_digest_set;
53211e25f0dSDavid C Somayajulu 	u8 auth_method;
53311e25f0dSDavid C Somayajulu #define ECORE_MFW_TLV_AUTH_METHOD_NONE		(1)
53411e25f0dSDavid C Somayajulu #define ECORE_MFW_TLV_AUTH_METHOD_CHAP		(2)
53511e25f0dSDavid C Somayajulu #define ECORE_MFW_TLV_AUTH_METHOD_MUTUAL_CHAP	(3)
53611e25f0dSDavid C Somayajulu 	bool auth_method_set;
53711e25f0dSDavid C Somayajulu 	u16 boot_taget_portal;
53811e25f0dSDavid C Somayajulu 	bool boot_taget_portal_set;
53911e25f0dSDavid C Somayajulu 	u16 frame_size;
54011e25f0dSDavid C Somayajulu 	bool frame_size_set;
54111e25f0dSDavid C Somayajulu 	u16 tx_desc_size;
54211e25f0dSDavid C Somayajulu 	bool tx_desc_size_set;
54311e25f0dSDavid C Somayajulu 	u16 rx_desc_size;
54411e25f0dSDavid C Somayajulu 	bool rx_desc_size_set;
54511e25f0dSDavid C Somayajulu 	u8 boot_progress;
54611e25f0dSDavid C Somayajulu 	bool boot_progress_set;
54711e25f0dSDavid C Somayajulu 	u16 tx_desc_qdepth;
54811e25f0dSDavid C Somayajulu 	bool tx_desc_qdepth_set;
54911e25f0dSDavid C Somayajulu 	u16 rx_desc_qdepth;
55011e25f0dSDavid C Somayajulu 	bool rx_desc_qdepth_set;
55111e25f0dSDavid C Somayajulu 	u64 rx_frames;
55211e25f0dSDavid C Somayajulu 	bool rx_frames_set;
55311e25f0dSDavid C Somayajulu 	u64 rx_bytes;
55411e25f0dSDavid C Somayajulu 	bool rx_bytes_set;
55511e25f0dSDavid C Somayajulu 	u64 tx_frames;
55611e25f0dSDavid C Somayajulu 	bool tx_frames_set;
55711e25f0dSDavid C Somayajulu 	u64 tx_bytes;
55811e25f0dSDavid C Somayajulu 	bool tx_bytes_set;
55911e25f0dSDavid C Somayajulu };
5609efd0ba7SDavid C Somayajulu #endif
56111e25f0dSDavid C Somayajulu 
56211e25f0dSDavid C Somayajulu union ecore_mfw_tlv_data {
56311e25f0dSDavid C Somayajulu 	struct ecore_mfw_tlv_generic generic;
56411e25f0dSDavid C Somayajulu 	struct ecore_mfw_tlv_eth eth;
56511e25f0dSDavid C Somayajulu 	struct ecore_mfw_tlv_fcoe fcoe;
56611e25f0dSDavid C Somayajulu 	struct ecore_mfw_tlv_iscsi iscsi;
56711e25f0dSDavid C Somayajulu };
56811e25f0dSDavid C Somayajulu 
569*217ec208SDavid C Somayajulu #ifndef __EXTRACT__LINUX__
57011e25f0dSDavid C Somayajulu enum ecore_hw_info_change {
57111e25f0dSDavid C Somayajulu 	ECORE_HW_INFO_CHANGE_OVLAN,
57211e25f0dSDavid C Somayajulu };
573*217ec208SDavid C Somayajulu #endif
57411e25f0dSDavid C Somayajulu 
57511e25f0dSDavid C Somayajulu /**
57611e25f0dSDavid C Somayajulu  * @brief - returns the link params of the hw function
57711e25f0dSDavid C Somayajulu  *
57811e25f0dSDavid C Somayajulu  * @param p_hwfn
57911e25f0dSDavid C Somayajulu  *
58011e25f0dSDavid C Somayajulu  * @returns pointer to link params
58111e25f0dSDavid C Somayajulu  */
582*217ec208SDavid C Somayajulu struct ecore_mcp_link_params *ecore_mcp_get_link_params(struct ecore_hwfn
583*217ec208SDavid C Somayajulu 							*p_hwfn);
58411e25f0dSDavid C Somayajulu 
58511e25f0dSDavid C Somayajulu /**
58611e25f0dSDavid C Somayajulu  * @brief - return the link state of the hw function
58711e25f0dSDavid C Somayajulu  *
58811e25f0dSDavid C Somayajulu  * @param p_hwfn
58911e25f0dSDavid C Somayajulu  *
59011e25f0dSDavid C Somayajulu  * @returns pointer to link state
59111e25f0dSDavid C Somayajulu  */
592*217ec208SDavid C Somayajulu struct ecore_mcp_link_state *ecore_mcp_get_link_state(struct ecore_hwfn
593*217ec208SDavid C Somayajulu 						      *p_hwfn);
59411e25f0dSDavid C Somayajulu 
59511e25f0dSDavid C Somayajulu /**
59611e25f0dSDavid C Somayajulu  * @brief - return the link capabilities of the hw function
59711e25f0dSDavid C Somayajulu  *
59811e25f0dSDavid C Somayajulu  * @param p_hwfn
59911e25f0dSDavid C Somayajulu  *
60011e25f0dSDavid C Somayajulu  * @returns pointer to link capabilities
60111e25f0dSDavid C Somayajulu  */
60211e25f0dSDavid C Somayajulu struct ecore_mcp_link_capabilities
60311e25f0dSDavid C Somayajulu *ecore_mcp_get_link_capabilities(struct ecore_hwfn *p_hwfn);
60411e25f0dSDavid C Somayajulu 
60511e25f0dSDavid C Somayajulu /**
60611e25f0dSDavid C Somayajulu  * @brief Request the MFW to set the the link according to 'link_input'.
60711e25f0dSDavid C Somayajulu  *
60811e25f0dSDavid C Somayajulu  * @param p_hwfn
60911e25f0dSDavid C Somayajulu  * @param p_ptt
61011e25f0dSDavid C Somayajulu  * @param b_up - raise link if `true'. Reset link if `false'.
61111e25f0dSDavid C Somayajulu  *
61211e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t
61311e25f0dSDavid C Somayajulu  */
61411e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_set_link(struct ecore_hwfn *p_hwfn,
61511e25f0dSDavid C Somayajulu 					struct ecore_ptt *p_ptt,
61611e25f0dSDavid C Somayajulu 					bool b_up);
61711e25f0dSDavid C Somayajulu 
61811e25f0dSDavid C Somayajulu /**
61911e25f0dSDavid C Somayajulu  * @brief Get the management firmware version value
62011e25f0dSDavid C Somayajulu  *
62111e25f0dSDavid C Somayajulu  * @param p_hwfn
62211e25f0dSDavid C Somayajulu  * @param p_ptt
62311e25f0dSDavid C Somayajulu  * @param p_mfw_ver    - mfw version value
62411e25f0dSDavid C Somayajulu  * @param p_running_bundle_id	- image id in nvram; Optional.
62511e25f0dSDavid C Somayajulu  *
62611e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
62711e25f0dSDavid C Somayajulu  */
62811e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_get_mfw_ver(struct ecore_hwfn *p_hwfn,
62911e25f0dSDavid C Somayajulu 					   struct ecore_ptt *p_ptt,
63011e25f0dSDavid C Somayajulu 					   u32 *p_mfw_ver,
63111e25f0dSDavid C Somayajulu 					   u32 *p_running_bundle_id);
63211e25f0dSDavid C Somayajulu 
63311e25f0dSDavid C Somayajulu /**
63411e25f0dSDavid C Somayajulu  * @brief Get the MBI version value
63511e25f0dSDavid C Somayajulu  *
63611e25f0dSDavid C Somayajulu  * @param p_hwfn
63711e25f0dSDavid C Somayajulu  * @param p_ptt
63811e25f0dSDavid C Somayajulu  * @param p_mbi_ver - A pointer to a variable to be filled with the MBI version.
63911e25f0dSDavid C Somayajulu  *
64011e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
64111e25f0dSDavid C Somayajulu  */
64211e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_get_mbi_ver(struct ecore_hwfn *p_hwfn,
64311e25f0dSDavid C Somayajulu 					   struct ecore_ptt *p_ptt,
64411e25f0dSDavid C Somayajulu 					   u32 *p_mbi_ver);
64511e25f0dSDavid C Somayajulu 
64611e25f0dSDavid C Somayajulu /**
64711e25f0dSDavid C Somayajulu  * @brief Get media type value of the port.
64811e25f0dSDavid C Somayajulu  *
64911e25f0dSDavid C Somayajulu  * @param p_dev      - ecore dev pointer
650*217ec208SDavid C Somayajulu  * @param p_ptt
65111e25f0dSDavid C Somayajulu  * @param mfw_ver    - media type value
65211e25f0dSDavid C Somayajulu  *
65311e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t -
65411e25f0dSDavid C Somayajulu  *      ECORE_SUCCESS - Operation was successful.
65511e25f0dSDavid C Somayajulu  *      ECORE_BUSY - Operation failed
65611e25f0dSDavid C Somayajulu  */
657*217ec208SDavid C Somayajulu enum _ecore_status_t ecore_mcp_get_media_type(struct ecore_hwfn *p_hwfn,
658*217ec208SDavid C Somayajulu 					      struct ecore_ptt *p_ptt,
65911e25f0dSDavid C Somayajulu 					      u32 *media_type);
66011e25f0dSDavid C Somayajulu 
66111e25f0dSDavid C Somayajulu /**
662*217ec208SDavid C Somayajulu  * @brief Get transciever data of the port.
663*217ec208SDavid C Somayajulu  *
664*217ec208SDavid C Somayajulu  * @param p_dev      - ecore dev pointer
665*217ec208SDavid C Somayajulu  * @param p_ptt
666*217ec208SDavid C Somayajulu  * @param p_transciever_type - media type value
667*217ec208SDavid C Somayajulu  *
668*217ec208SDavid C Somayajulu  * @return enum _ecore_status_t -
669*217ec208SDavid C Somayajulu  *      ECORE_SUCCESS - Operation was successful.
670*217ec208SDavid C Somayajulu  *      ECORE_BUSY - Operation failed
671*217ec208SDavid C Somayajulu  */
672*217ec208SDavid C Somayajulu enum _ecore_status_t ecore_mcp_get_transceiver_data(struct ecore_hwfn *p_hwfn,
673*217ec208SDavid C Somayajulu 						    struct ecore_ptt *p_ptt,
674*217ec208SDavid C Somayajulu 						    u32 *p_tranceiver_type);
675*217ec208SDavid C Somayajulu 
676*217ec208SDavid C Somayajulu /**
677*217ec208SDavid C Somayajulu  * @brief Get transciever supported speed mask.
678*217ec208SDavid C Somayajulu  *
679*217ec208SDavid C Somayajulu  * @param p_dev      - ecore dev pointer
680*217ec208SDavid C Somayajulu  * @param p_ptt
681*217ec208SDavid C Somayajulu  * @param p_speed_mask - Bit mask of all supported speeds.
682*217ec208SDavid C Somayajulu  *
683*217ec208SDavid C Somayajulu  * @return enum _ecore_status_t -
684*217ec208SDavid C Somayajulu  *      ECORE_SUCCESS - Operation was successful.
685*217ec208SDavid C Somayajulu  *      ECORE_BUSY - Operation failed
686*217ec208SDavid C Somayajulu  */
687*217ec208SDavid C Somayajulu 
688*217ec208SDavid C Somayajulu enum _ecore_status_t ecore_mcp_trans_speed_mask(struct ecore_hwfn *p_hwfn,
689*217ec208SDavid C Somayajulu 						struct ecore_ptt *p_ptt,
690*217ec208SDavid C Somayajulu 						u32 *p_speed_mask);
691*217ec208SDavid C Somayajulu 
692*217ec208SDavid C Somayajulu /**
693*217ec208SDavid C Somayajulu  * @brief Get board configuration.
694*217ec208SDavid C Somayajulu  *
695*217ec208SDavid C Somayajulu  * @param p_dev      - ecore dev pointer
696*217ec208SDavid C Somayajulu  * @param p_ptt
697*217ec208SDavid C Somayajulu  * @param p_board_config - Board config.
698*217ec208SDavid C Somayajulu  *
699*217ec208SDavid C Somayajulu  * @return enum _ecore_status_t -
700*217ec208SDavid C Somayajulu  *      ECORE_SUCCESS - Operation was successful.
701*217ec208SDavid C Somayajulu  *      ECORE_BUSY - Operation failed
702*217ec208SDavid C Somayajulu  */
703*217ec208SDavid C Somayajulu enum _ecore_status_t ecore_mcp_get_board_config(struct ecore_hwfn *p_hwfn,
704*217ec208SDavid C Somayajulu 						struct ecore_ptt *p_ptt,
705*217ec208SDavid C Somayajulu 						u32 *p_board_config);
706*217ec208SDavid C Somayajulu 
707*217ec208SDavid C Somayajulu /**
70811e25f0dSDavid C Somayajulu  * @brief - Sends a command to the MCP mailbox.
70911e25f0dSDavid C Somayajulu  *
71011e25f0dSDavid C Somayajulu  * @param p_hwfn      - hw function
71111e25f0dSDavid C Somayajulu  * @param p_ptt       - PTT required for register access
71211e25f0dSDavid C Somayajulu  * @param cmd         - command to be sent to the MCP
713*217ec208SDavid C Somayajulu  * @param param       - Optional param
714*217ec208SDavid C Somayajulu  * @param o_mcp_resp  - The MCP response code (exclude sequence)
715*217ec208SDavid C Somayajulu  * @param o_mcp_param - Optional parameter provided by the MCP response
71611e25f0dSDavid C Somayajulu  *
71711e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t -
71811e25f0dSDavid C Somayajulu  *      ECORE_SUCCESS - operation was successful
71911e25f0dSDavid C Somayajulu  *      ECORE_BUSY    - operation failed
72011e25f0dSDavid C Somayajulu  */
72111e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_cmd(struct ecore_hwfn *p_hwfn,
72211e25f0dSDavid C Somayajulu 				   struct ecore_ptt *p_ptt, u32 cmd, u32 param,
72311e25f0dSDavid C Somayajulu 				   u32 *o_mcp_resp, u32 *o_mcp_param);
72411e25f0dSDavid C Somayajulu 
72511e25f0dSDavid C Somayajulu /**
72611e25f0dSDavid C Somayajulu  * @brief - drains the nig, allowing completion to pass in case of pauses.
72711e25f0dSDavid C Somayajulu  *          (Should be called only from sleepable context)
72811e25f0dSDavid C Somayajulu  *
72911e25f0dSDavid C Somayajulu  * @param p_hwfn
73011e25f0dSDavid C Somayajulu  * @param p_ptt
73111e25f0dSDavid C Somayajulu  */
73211e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_drain(struct ecore_hwfn *p_hwfn,
73311e25f0dSDavid C Somayajulu 				     struct ecore_ptt *p_ptt);
73411e25f0dSDavid C Somayajulu 
7359efd0ba7SDavid C Somayajulu #ifndef LINUX_REMOVE
73611e25f0dSDavid C Somayajulu /**
73711e25f0dSDavid C Somayajulu  * @brief - return the mcp function info of the hw function
73811e25f0dSDavid C Somayajulu  *
73911e25f0dSDavid C Somayajulu  * @param p_hwfn
74011e25f0dSDavid C Somayajulu  *
74111e25f0dSDavid C Somayajulu  * @returns pointer to mcp function info
74211e25f0dSDavid C Somayajulu  */
74311e25f0dSDavid C Somayajulu const struct ecore_mcp_function_info
74411e25f0dSDavid C Somayajulu *ecore_mcp_get_function_info(struct ecore_hwfn *p_hwfn);
7459efd0ba7SDavid C Somayajulu #endif
74611e25f0dSDavid C Somayajulu 
7479efd0ba7SDavid C Somayajulu #ifndef LINUX_REMOVE
74811e25f0dSDavid C Somayajulu /**
74911e25f0dSDavid C Somayajulu  * @brief - count number of function with a matching personality on engine.
75011e25f0dSDavid C Somayajulu  *
75111e25f0dSDavid C Somayajulu  * @param p_hwfn
75211e25f0dSDavid C Somayajulu  * @param p_ptt
75311e25f0dSDavid C Somayajulu  * @param personalities - a bitmask of ecore_pci_personality values
75411e25f0dSDavid C Somayajulu  *
75511e25f0dSDavid C Somayajulu  * @returns the count of all devices on engine whose personality match one of
75611e25f0dSDavid C Somayajulu  *          the bitsmasks.
75711e25f0dSDavid C Somayajulu  */
75811e25f0dSDavid C Somayajulu int ecore_mcp_get_personality_cnt(struct ecore_hwfn *p_hwfn,
75911e25f0dSDavid C Somayajulu 				  struct ecore_ptt *p_ptt,
76011e25f0dSDavid C Somayajulu 				  u32 personalities);
7619efd0ba7SDavid C Somayajulu #endif
76211e25f0dSDavid C Somayajulu 
76311e25f0dSDavid C Somayajulu /**
76411e25f0dSDavid C Somayajulu  * @brief Get the flash size value
76511e25f0dSDavid C Somayajulu  *
76611e25f0dSDavid C Somayajulu  * @param p_hwfn
76711e25f0dSDavid C Somayajulu  * @param p_ptt
76811e25f0dSDavid C Somayajulu  * @param p_flash_size  - flash size in bytes to be filled.
76911e25f0dSDavid C Somayajulu  *
77011e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
77111e25f0dSDavid C Somayajulu  */
77211e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_get_flash_size(struct ecore_hwfn *p_hwfn,
77311e25f0dSDavid C Somayajulu 					      struct ecore_ptt *p_ptt,
77411e25f0dSDavid C Somayajulu 					      u32 *p_flash_size);
77511e25f0dSDavid C Somayajulu 
77611e25f0dSDavid C Somayajulu /**
77711e25f0dSDavid C Somayajulu  * @brief Send driver version to MFW
77811e25f0dSDavid C Somayajulu  *
77911e25f0dSDavid C Somayajulu  * @param p_hwfn
78011e25f0dSDavid C Somayajulu  * @param p_ptt
78111e25f0dSDavid C Somayajulu  * @param version - Version value
78211e25f0dSDavid C Somayajulu  * @param name - Protocol driver name
78311e25f0dSDavid C Somayajulu  *
78411e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
78511e25f0dSDavid C Somayajulu  */
78611e25f0dSDavid C Somayajulu enum _ecore_status_t
78711e25f0dSDavid C Somayajulu ecore_mcp_send_drv_version(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt,
78811e25f0dSDavid C Somayajulu 			   struct ecore_mcp_drv_version *p_ver);
78911e25f0dSDavid C Somayajulu 
79011e25f0dSDavid C Somayajulu /**
79111e25f0dSDavid C Somayajulu  * @brief Read the MFW process kill counter
79211e25f0dSDavid C Somayajulu  *
79311e25f0dSDavid C Somayajulu  * @param p_hwfn
79411e25f0dSDavid C Somayajulu  * @param p_ptt
79511e25f0dSDavid C Somayajulu  *
79611e25f0dSDavid C Somayajulu  * @return u32
79711e25f0dSDavid C Somayajulu  */
79811e25f0dSDavid C Somayajulu u32 ecore_get_process_kill_counter(struct ecore_hwfn *p_hwfn,
79911e25f0dSDavid C Somayajulu 				   struct ecore_ptt *p_ptt);
80011e25f0dSDavid C Somayajulu 
80111e25f0dSDavid C Somayajulu /**
80211e25f0dSDavid C Somayajulu  * @brief Trigger a recovery process
80311e25f0dSDavid C Somayajulu  *
80411e25f0dSDavid C Somayajulu  *  @param p_hwfn
80511e25f0dSDavid C Somayajulu  *  @param p_ptt
80611e25f0dSDavid C Somayajulu  *
80711e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t
80811e25f0dSDavid C Somayajulu  */
80911e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_start_recovery_process(struct ecore_hwfn *p_hwfn,
81011e25f0dSDavid C Somayajulu 						  struct ecore_ptt *p_ptt);
81111e25f0dSDavid C Somayajulu 
81211e25f0dSDavid C Somayajulu /**
813*217ec208SDavid C Somayajulu  * @brief A recovery handler must call this function as its first step.
814*217ec208SDavid C Somayajulu  *        It is assumed that the handler is not run from an interrupt context.
815*217ec208SDavid C Somayajulu  *
816*217ec208SDavid C Somayajulu  *  @param p_dev
817*217ec208SDavid C Somayajulu  *  @param p_ptt
818*217ec208SDavid C Somayajulu  *
819*217ec208SDavid C Somayajulu  * @return enum _ecore_status_t
820*217ec208SDavid C Somayajulu  */
821*217ec208SDavid C Somayajulu enum _ecore_status_t ecore_recovery_prolog(struct ecore_dev *p_dev);
822*217ec208SDavid C Somayajulu 
823*217ec208SDavid C Somayajulu /**
82411e25f0dSDavid C Somayajulu  * @brief Notify MFW about the change in base device properties
82511e25f0dSDavid C Somayajulu  *
82611e25f0dSDavid C Somayajulu  *  @param p_hwfn
82711e25f0dSDavid C Somayajulu  *  @param p_ptt
82811e25f0dSDavid C Somayajulu  *  @param client - ecore client type
82911e25f0dSDavid C Somayajulu  *
83011e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
83111e25f0dSDavid C Somayajulu  */
83211e25f0dSDavid C Somayajulu enum _ecore_status_t
83311e25f0dSDavid C Somayajulu ecore_mcp_ov_update_current_config(struct ecore_hwfn *p_hwfn,
83411e25f0dSDavid C Somayajulu 				   struct ecore_ptt *p_ptt,
83511e25f0dSDavid C Somayajulu 				   enum ecore_ov_client client);
83611e25f0dSDavid C Somayajulu 
83711e25f0dSDavid C Somayajulu /**
83811e25f0dSDavid C Somayajulu  * @brief Notify MFW about the driver state
83911e25f0dSDavid C Somayajulu  *
84011e25f0dSDavid C Somayajulu  *  @param p_hwfn
84111e25f0dSDavid C Somayajulu  *  @param p_ptt
84211e25f0dSDavid C Somayajulu  *  @param drv_state - Driver state
84311e25f0dSDavid C Somayajulu  *
84411e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
84511e25f0dSDavid C Somayajulu  */
84611e25f0dSDavid C Somayajulu enum _ecore_status_t
84711e25f0dSDavid C Somayajulu ecore_mcp_ov_update_driver_state(struct ecore_hwfn *p_hwfn,
84811e25f0dSDavid C Somayajulu 				 struct ecore_ptt *p_ptt,
84911e25f0dSDavid C Somayajulu 				 enum ecore_ov_driver_state drv_state);
85011e25f0dSDavid C Somayajulu 
85111e25f0dSDavid C Somayajulu /**
85211e25f0dSDavid C Somayajulu  * @brief Read NPIV settings form the MFW
85311e25f0dSDavid C Somayajulu  *
85411e25f0dSDavid C Somayajulu  *  @param p_hwfn
85511e25f0dSDavid C Somayajulu  *  @param p_ptt
85611e25f0dSDavid C Somayajulu  *  @param p_table - Array to hold the FC NPIV data. Client need allocate the
85711e25f0dSDavid C Somayajulu  *                   required buffer. The field 'count' specifies number of NPIV
85811e25f0dSDavid C Somayajulu  *                   entries. A value of 0 means the table was not populated.
85911e25f0dSDavid C Somayajulu  *
86011e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
86111e25f0dSDavid C Somayajulu  */
86211e25f0dSDavid C Somayajulu enum _ecore_status_t
86311e25f0dSDavid C Somayajulu ecore_mcp_ov_get_fc_npiv(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt,
86411e25f0dSDavid C Somayajulu 			 struct ecore_fc_npiv_tbl *p_table);
86511e25f0dSDavid C Somayajulu 
86611e25f0dSDavid C Somayajulu /**
86711e25f0dSDavid C Somayajulu  * @brief Send MTU size to MFW
86811e25f0dSDavid C Somayajulu  *
86911e25f0dSDavid C Somayajulu  *  @param p_hwfn
87011e25f0dSDavid C Somayajulu  *  @param p_ptt
87111e25f0dSDavid C Somayajulu  *  @param mtu - MTU size
87211e25f0dSDavid C Somayajulu  *
87311e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
87411e25f0dSDavid C Somayajulu  */
87511e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_ov_update_mtu(struct ecore_hwfn *p_hwfn,
87611e25f0dSDavid C Somayajulu 					     struct ecore_ptt *p_ptt, u16 mtu);
87711e25f0dSDavid C Somayajulu 
87811e25f0dSDavid C Somayajulu /**
87911e25f0dSDavid C Somayajulu  * @brief Send MAC address to MFW
88011e25f0dSDavid C Somayajulu  *
88111e25f0dSDavid C Somayajulu  *  @param p_hwfn
88211e25f0dSDavid C Somayajulu  *  @param p_ptt
88311e25f0dSDavid C Somayajulu  *  @param mac - MAC address
88411e25f0dSDavid C Somayajulu  *
88511e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
88611e25f0dSDavid C Somayajulu  */
88711e25f0dSDavid C Somayajulu enum _ecore_status_t
88811e25f0dSDavid C Somayajulu ecore_mcp_ov_update_mac(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt,
88911e25f0dSDavid C Somayajulu 			u8 *mac);
89011e25f0dSDavid C Somayajulu 
89111e25f0dSDavid C Somayajulu /**
89211e25f0dSDavid C Somayajulu  * @brief Send WOL mode to MFW
89311e25f0dSDavid C Somayajulu  *
89411e25f0dSDavid C Somayajulu  *  @param p_hwfn
89511e25f0dSDavid C Somayajulu  *  @param p_ptt
89611e25f0dSDavid C Somayajulu  *  @param wol - WOL mode
89711e25f0dSDavid C Somayajulu  *
89811e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
89911e25f0dSDavid C Somayajulu  */
90011e25f0dSDavid C Somayajulu enum _ecore_status_t
90111e25f0dSDavid C Somayajulu ecore_mcp_ov_update_wol(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt,
90211e25f0dSDavid C Somayajulu 			enum ecore_ov_wol wol);
90311e25f0dSDavid C Somayajulu 
90411e25f0dSDavid C Somayajulu /**
90511e25f0dSDavid C Somayajulu  * @brief Set LED status
90611e25f0dSDavid C Somayajulu  *
90711e25f0dSDavid C Somayajulu  *  @param p_hwfn
90811e25f0dSDavid C Somayajulu  *  @param p_ptt
90911e25f0dSDavid C Somayajulu  *  @param mode - LED mode
91011e25f0dSDavid C Somayajulu  *
91111e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
91211e25f0dSDavid C Somayajulu  */
91311e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_set_led(struct ecore_hwfn *p_hwfn,
91411e25f0dSDavid C Somayajulu 				       struct ecore_ptt *p_ptt,
91511e25f0dSDavid C Somayajulu 				       enum ecore_led_mode mode);
91611e25f0dSDavid C Somayajulu 
91711e25f0dSDavid C Somayajulu /**
91811e25f0dSDavid C Somayajulu  * @brief Set secure mode
91911e25f0dSDavid C Somayajulu  *
92011e25f0dSDavid C Somayajulu  *  @param p_dev
92111e25f0dSDavid C Somayajulu  *  @param addr - nvm offset
92211e25f0dSDavid C Somayajulu  *
92311e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
92411e25f0dSDavid C Somayajulu  */
92511e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_nvm_set_secure_mode(struct ecore_dev *p_dev,
92611e25f0dSDavid C Somayajulu 						   u32 addr);
92711e25f0dSDavid C Somayajulu 
92811e25f0dSDavid C Somayajulu /**
92911e25f0dSDavid C Somayajulu  * @brief Write to phy
93011e25f0dSDavid C Somayajulu  *
93111e25f0dSDavid C Somayajulu  *  @param p_dev
93211e25f0dSDavid C Somayajulu  *  @param addr - nvm offset
93311e25f0dSDavid C Somayajulu  *  @param cmd - nvm command
93411e25f0dSDavid C Somayajulu  *  @param p_buf - nvm write buffer
93511e25f0dSDavid C Somayajulu  *  @param len - buffer len
93611e25f0dSDavid C Somayajulu  *
93711e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
93811e25f0dSDavid C Somayajulu  */
93911e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_phy_write(struct ecore_dev *p_dev, u32 cmd,
94011e25f0dSDavid C Somayajulu 					 u32 addr, u8 *p_buf, u32 len);
94111e25f0dSDavid C Somayajulu 
94211e25f0dSDavid C Somayajulu /**
94311e25f0dSDavid C Somayajulu  * @brief Write to nvm
94411e25f0dSDavid C Somayajulu  *
94511e25f0dSDavid C Somayajulu  *  @param p_dev
94611e25f0dSDavid C Somayajulu  *  @param addr - nvm offset
94711e25f0dSDavid C Somayajulu  *  @param cmd - nvm command
94811e25f0dSDavid C Somayajulu  *  @param p_buf - nvm write buffer
94911e25f0dSDavid C Somayajulu  *  @param len - buffer len
95011e25f0dSDavid C Somayajulu  *
95111e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
95211e25f0dSDavid C Somayajulu  */
95311e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_nvm_write(struct ecore_dev *p_dev, u32 cmd,
95411e25f0dSDavid C Somayajulu 					 u32 addr, u8 *p_buf, u32 len);
95511e25f0dSDavid C Somayajulu 
95611e25f0dSDavid C Somayajulu /**
95711e25f0dSDavid C Somayajulu  * @brief Put file begin
95811e25f0dSDavid C Somayajulu  *
95911e25f0dSDavid C Somayajulu  *  @param p_dev
96011e25f0dSDavid C Somayajulu  *  @param addr - nvm offset
96111e25f0dSDavid C Somayajulu  *
96211e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
96311e25f0dSDavid C Somayajulu  */
96411e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_nvm_put_file_begin(struct ecore_dev *p_dev,
96511e25f0dSDavid C Somayajulu 						  u32 addr);
96611e25f0dSDavid C Somayajulu 
96711e25f0dSDavid C Somayajulu /**
96811e25f0dSDavid C Somayajulu  * @brief Delete file
96911e25f0dSDavid C Somayajulu  *
97011e25f0dSDavid C Somayajulu  *  @param p_dev
97111e25f0dSDavid C Somayajulu  *  @param addr - nvm offset
97211e25f0dSDavid C Somayajulu  *
97311e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
97411e25f0dSDavid C Somayajulu  */
97511e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_nvm_del_file(struct ecore_dev *p_dev,
97611e25f0dSDavid C Somayajulu 					    u32 addr);
97711e25f0dSDavid C Somayajulu 
97811e25f0dSDavid C Somayajulu /**
97911e25f0dSDavid C Somayajulu  * @brief Check latest response
98011e25f0dSDavid C Somayajulu  *
98111e25f0dSDavid C Somayajulu  *  @param p_dev
98211e25f0dSDavid C Somayajulu  *  @param p_buf - nvm write buffer
98311e25f0dSDavid C Somayajulu  *
98411e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
98511e25f0dSDavid C Somayajulu  */
98611e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_nvm_resp(struct ecore_dev *p_dev, u8 *p_buf);
98711e25f0dSDavid C Somayajulu 
98811e25f0dSDavid C Somayajulu /**
98911e25f0dSDavid C Somayajulu  * @brief Read from phy
99011e25f0dSDavid C Somayajulu  *
99111e25f0dSDavid C Somayajulu  *  @param p_dev
99211e25f0dSDavid C Somayajulu  *  @param addr - nvm offset
99311e25f0dSDavid C Somayajulu  *  @param cmd - nvm command
994*217ec208SDavid C Somayajulu  *  @param p_buf - nvm read buffer
99511e25f0dSDavid C Somayajulu  *  @param len - buffer len
99611e25f0dSDavid C Somayajulu  *
99711e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
99811e25f0dSDavid C Somayajulu  */
99911e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_phy_read(struct ecore_dev *p_dev, u32 cmd,
100011e25f0dSDavid C Somayajulu 					u32 addr, u8 *p_buf, u32 len);
100111e25f0dSDavid C Somayajulu 
100211e25f0dSDavid C Somayajulu /**
100311e25f0dSDavid C Somayajulu  * @brief Read from nvm
100411e25f0dSDavid C Somayajulu  *
100511e25f0dSDavid C Somayajulu  *  @param p_dev
100611e25f0dSDavid C Somayajulu  *  @param addr - nvm offset
1007*217ec208SDavid C Somayajulu  *  @param p_buf - nvm read buffer
100811e25f0dSDavid C Somayajulu  *  @param len - buffer len
100911e25f0dSDavid C Somayajulu  *
101011e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
101111e25f0dSDavid C Somayajulu  */
101211e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_nvm_read(struct ecore_dev *p_dev, u32 addr,
101311e25f0dSDavid C Somayajulu 			   u8 *p_buf, u32 len);
101411e25f0dSDavid C Somayajulu 
101511e25f0dSDavid C Somayajulu struct ecore_nvm_image_att {
101611e25f0dSDavid C Somayajulu 	u32 start_addr;
101711e25f0dSDavid C Somayajulu 	u32 length;
101811e25f0dSDavid C Somayajulu };
101911e25f0dSDavid C Somayajulu 
102011e25f0dSDavid C Somayajulu /**
102111e25f0dSDavid C Somayajulu  * @brief Allows reading a whole nvram image
102211e25f0dSDavid C Somayajulu  *
102311e25f0dSDavid C Somayajulu  * @param p_hwfn
102411e25f0dSDavid C Somayajulu  * @param p_ptt
102511e25f0dSDavid C Somayajulu  * @param image_id - image to get attributes for
102611e25f0dSDavid C Somayajulu  * @param p_image_att - image attributes structure into which to fill data
102711e25f0dSDavid C Somayajulu  *
102811e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
102911e25f0dSDavid C Somayajulu  */
103011e25f0dSDavid C Somayajulu enum _ecore_status_t
103111e25f0dSDavid C Somayajulu ecore_mcp_get_nvm_image_att(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt,
103211e25f0dSDavid C Somayajulu 			    enum ecore_nvm_images image_id,
103311e25f0dSDavid C Somayajulu 			    struct ecore_nvm_image_att *p_image_att);
103411e25f0dSDavid C Somayajulu 
103511e25f0dSDavid C Somayajulu /**
103611e25f0dSDavid C Somayajulu  * @brief Allows reading a whole nvram image
103711e25f0dSDavid C Somayajulu  *
103811e25f0dSDavid C Somayajulu  * @param p_hwfn
103911e25f0dSDavid C Somayajulu  * @param p_ptt
104011e25f0dSDavid C Somayajulu  * @param image_id - image requested for reading
104111e25f0dSDavid C Somayajulu  * @param p_buffer - allocated buffer into which to fill data
104211e25f0dSDavid C Somayajulu  * @param buffer_len - length of the allocated buffer.
104311e25f0dSDavid C Somayajulu  *
104411e25f0dSDavid C Somayajulu  * @return ECORE_SUCCESS iff p_buffer now contains the nvram image.
104511e25f0dSDavid C Somayajulu  */
104611e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_get_nvm_image(struct ecore_hwfn *p_hwfn,
104711e25f0dSDavid C Somayajulu 					     struct ecore_ptt *p_ptt,
104811e25f0dSDavid C Somayajulu 					     enum ecore_nvm_images image_id,
104911e25f0dSDavid C Somayajulu 					     u8 *p_buffer, u32 buffer_len);
105011e25f0dSDavid C Somayajulu 
105111e25f0dSDavid C Somayajulu /**
10529efd0ba7SDavid C Somayajulu  * @brief - Sends an NVM write command request to the MFW with
10539efd0ba7SDavid C Somayajulu  *          payload.
10549efd0ba7SDavid C Somayajulu  *
10559efd0ba7SDavid C Somayajulu  * @param p_hwfn
10569efd0ba7SDavid C Somayajulu  * @param p_ptt
10579efd0ba7SDavid C Somayajulu  * @param cmd - Command: Either DRV_MSG_CODE_NVM_WRITE_NVRAM or
10589efd0ba7SDavid C Somayajulu  *            DRV_MSG_CODE_NVM_PUT_FILE_DATA
10599efd0ba7SDavid C Somayajulu  * @param param - [0:23] - Offset [24:31] - Size
10609efd0ba7SDavid C Somayajulu  * @param o_mcp_resp - MCP response
10619efd0ba7SDavid C Somayajulu  * @param o_mcp_param - MCP response param
10629efd0ba7SDavid C Somayajulu  * @param i_txn_size -  Buffer size
10639efd0ba7SDavid C Somayajulu  * @param i_buf - Pointer to the buffer
10649efd0ba7SDavid C Somayajulu  *
10659efd0ba7SDavid C Somayajulu  * @param return ECORE_SUCCESS upon success.
10669efd0ba7SDavid C Somayajulu  */
10679efd0ba7SDavid C Somayajulu enum _ecore_status_t ecore_mcp_nvm_wr_cmd(struct ecore_hwfn *p_hwfn,
10689efd0ba7SDavid C Somayajulu 					  struct ecore_ptt *p_ptt,
10699efd0ba7SDavid C Somayajulu 					  u32 cmd,
10709efd0ba7SDavid C Somayajulu 					  u32 param,
10719efd0ba7SDavid C Somayajulu 					  u32 *o_mcp_resp,
10729efd0ba7SDavid C Somayajulu 					  u32 *o_mcp_param,
10739efd0ba7SDavid C Somayajulu 					  u32 i_txn_size,
10749efd0ba7SDavid C Somayajulu 					  u32 *i_buf);
10759efd0ba7SDavid C Somayajulu 
10769efd0ba7SDavid C Somayajulu /**
10779efd0ba7SDavid C Somayajulu  * @brief - Sends an NVM read command request to the MFW to get
10789efd0ba7SDavid C Somayajulu  *        a buffer.
10799efd0ba7SDavid C Somayajulu  *
10809efd0ba7SDavid C Somayajulu  * @param p_hwfn
10819efd0ba7SDavid C Somayajulu  * @param p_ptt
10829efd0ba7SDavid C Somayajulu  * @param cmd - Command: DRV_MSG_CODE_NVM_GET_FILE_DATA or
10839efd0ba7SDavid C Somayajulu  *            DRV_MSG_CODE_NVM_READ_NVRAM commands
10849efd0ba7SDavid C Somayajulu  * @param param - [0:23] - Offset [24:31] - Size
10859efd0ba7SDavid C Somayajulu  * @param o_mcp_resp - MCP response
10869efd0ba7SDavid C Somayajulu  * @param o_mcp_param - MCP response param
10879efd0ba7SDavid C Somayajulu  * @param o_txn_size -  Buffer size output
10889efd0ba7SDavid C Somayajulu  * @param o_buf - Pointer to the buffer returned by the MFW.
10899efd0ba7SDavid C Somayajulu  *
10909efd0ba7SDavid C Somayajulu  * @param return ECORE_SUCCESS upon success.
10919efd0ba7SDavid C Somayajulu  */
10929efd0ba7SDavid C Somayajulu enum _ecore_status_t ecore_mcp_nvm_rd_cmd(struct ecore_hwfn *p_hwfn,
10939efd0ba7SDavid C Somayajulu 					  struct ecore_ptt *p_ptt,
10949efd0ba7SDavid C Somayajulu 					  u32 cmd,
10959efd0ba7SDavid C Somayajulu 					  u32 param,
10969efd0ba7SDavid C Somayajulu 					  u32 *o_mcp_resp,
10979efd0ba7SDavid C Somayajulu 					  u32 *o_mcp_param,
10989efd0ba7SDavid C Somayajulu 					  u32 *o_txn_size,
10999efd0ba7SDavid C Somayajulu 					  u32 *o_buf);
11009efd0ba7SDavid C Somayajulu 
11019efd0ba7SDavid C Somayajulu /**
110211e25f0dSDavid C Somayajulu  * @brief Read from sfp
110311e25f0dSDavid C Somayajulu  *
110411e25f0dSDavid C Somayajulu  *  @param p_hwfn - hw function
110511e25f0dSDavid C Somayajulu  *  @param p_ptt  - PTT required for register access
110611e25f0dSDavid C Somayajulu  *  @param port   - transceiver port
110711e25f0dSDavid C Somayajulu  *  @param addr   - I2C address
110811e25f0dSDavid C Somayajulu  *  @param offset - offset in sfp
110911e25f0dSDavid C Somayajulu  *  @param len    - buffer length
111011e25f0dSDavid C Somayajulu  *  @param p_buf  - buffer to read into
111111e25f0dSDavid C Somayajulu  *
111211e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
111311e25f0dSDavid C Somayajulu  */
111411e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_phy_sfp_read(struct ecore_hwfn *p_hwfn,
111511e25f0dSDavid C Somayajulu 					    struct ecore_ptt *p_ptt,
111611e25f0dSDavid C Somayajulu 					    u32 port, u32 addr, u32 offset,
111711e25f0dSDavid C Somayajulu 					    u32 len, u8 *p_buf);
111811e25f0dSDavid C Somayajulu 
111911e25f0dSDavid C Somayajulu /**
112011e25f0dSDavid C Somayajulu  * @brief Write to sfp
112111e25f0dSDavid C Somayajulu  *
112211e25f0dSDavid C Somayajulu  *  @param p_hwfn - hw function
112311e25f0dSDavid C Somayajulu  *  @param p_ptt  - PTT required for register access
112411e25f0dSDavid C Somayajulu  *  @param port   - transceiver port
112511e25f0dSDavid C Somayajulu  *  @param addr   - I2C address
112611e25f0dSDavid C Somayajulu  *  @param offset - offset in sfp
112711e25f0dSDavid C Somayajulu  *  @param len    - buffer length
112811e25f0dSDavid C Somayajulu  *  @param p_buf  - buffer to write from
112911e25f0dSDavid C Somayajulu  *
113011e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
113111e25f0dSDavid C Somayajulu  */
113211e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_phy_sfp_write(struct ecore_hwfn *p_hwfn,
113311e25f0dSDavid C Somayajulu 					     struct ecore_ptt *p_ptt,
113411e25f0dSDavid C Somayajulu 					     u32 port, u32 addr, u32 offset,
113511e25f0dSDavid C Somayajulu 					     u32 len, u8 *p_buf);
113611e25f0dSDavid C Somayajulu 
113711e25f0dSDavid C Somayajulu /**
113811e25f0dSDavid C Somayajulu  * @brief Gpio read
113911e25f0dSDavid C Somayajulu  *
114011e25f0dSDavid C Somayajulu  *  @param p_hwfn    - hw function
114111e25f0dSDavid C Somayajulu  *  @param p_ptt     - PTT required for register access
114211e25f0dSDavid C Somayajulu  *  @param gpio      - gpio number
114311e25f0dSDavid C Somayajulu  *  @param gpio_val  - value read from gpio
114411e25f0dSDavid C Somayajulu  *
114511e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
114611e25f0dSDavid C Somayajulu  */
114711e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_gpio_read(struct ecore_hwfn *p_hwfn,
114811e25f0dSDavid C Somayajulu 					 struct ecore_ptt *p_ptt,
114911e25f0dSDavid C Somayajulu 					 u16 gpio, u32 *gpio_val);
115011e25f0dSDavid C Somayajulu 
115111e25f0dSDavid C Somayajulu /**
115211e25f0dSDavid C Somayajulu  * @brief Gpio write
115311e25f0dSDavid C Somayajulu  *
115411e25f0dSDavid C Somayajulu  *  @param p_hwfn    - hw function
115511e25f0dSDavid C Somayajulu  *  @param p_ptt     - PTT required for register access
115611e25f0dSDavid C Somayajulu  *  @param gpio      - gpio number
115711e25f0dSDavid C Somayajulu  *  @param gpio_val  - value to write to gpio
115811e25f0dSDavid C Somayajulu  *
115911e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
116011e25f0dSDavid C Somayajulu  */
116111e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_gpio_write(struct ecore_hwfn *p_hwfn,
116211e25f0dSDavid C Somayajulu 					  struct ecore_ptt *p_ptt,
116311e25f0dSDavid C Somayajulu 					  u16 gpio, u16 gpio_val);
116411e25f0dSDavid C Somayajulu 
116511e25f0dSDavid C Somayajulu /**
116611e25f0dSDavid C Somayajulu  * @brief Gpio get information
116711e25f0dSDavid C Somayajulu  *
116811e25f0dSDavid C Somayajulu  *  @param p_hwfn          - hw function
116911e25f0dSDavid C Somayajulu  *  @param p_ptt           - PTT required for register access
117011e25f0dSDavid C Somayajulu  *  @param gpio            - gpio number
117111e25f0dSDavid C Somayajulu  *  @param gpio_direction  - gpio is output (0) or input (1)
117211e25f0dSDavid C Somayajulu  *  @param gpio_ctrl       - gpio control is uninitialized (0),
117311e25f0dSDavid C Somayajulu  *                         path 0 (1), path 1 (2) or shared(3)
117411e25f0dSDavid C Somayajulu  *
117511e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
117611e25f0dSDavid C Somayajulu  */
117711e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_gpio_info(struct ecore_hwfn *p_hwfn,
117811e25f0dSDavid C Somayajulu 					 struct ecore_ptt *p_ptt,
117911e25f0dSDavid C Somayajulu 					 u16 gpio, u32 *gpio_direction,
118011e25f0dSDavid C Somayajulu 					 u32 *gpio_ctrl);
118111e25f0dSDavid C Somayajulu 
118211e25f0dSDavid C Somayajulu /**
118311e25f0dSDavid C Somayajulu  * @brief Bist register test
118411e25f0dSDavid C Somayajulu  *
118511e25f0dSDavid C Somayajulu  *  @param p_hwfn    - hw function
118611e25f0dSDavid C Somayajulu  *  @param p_ptt     - PTT required for register access
118711e25f0dSDavid C Somayajulu  *
118811e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
118911e25f0dSDavid C Somayajulu  */
119011e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_bist_register_test(struct ecore_hwfn *p_hwfn,
119111e25f0dSDavid C Somayajulu 						   struct ecore_ptt *p_ptt);
119211e25f0dSDavid C Somayajulu 
119311e25f0dSDavid C Somayajulu /**
119411e25f0dSDavid C Somayajulu  * @brief Bist clock test
119511e25f0dSDavid C Somayajulu  *
119611e25f0dSDavid C Somayajulu  *  @param p_hwfn    - hw function
119711e25f0dSDavid C Somayajulu  *  @param p_ptt     - PTT required for register access
119811e25f0dSDavid C Somayajulu  *
119911e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
120011e25f0dSDavid C Somayajulu  */
120111e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_bist_clock_test(struct ecore_hwfn *p_hwfn,
120211e25f0dSDavid C Somayajulu 						struct ecore_ptt *p_ptt);
120311e25f0dSDavid C Somayajulu 
120411e25f0dSDavid C Somayajulu /**
120511e25f0dSDavid C Somayajulu  * @brief Bist nvm test - get number of images
120611e25f0dSDavid C Somayajulu  *
120711e25f0dSDavid C Somayajulu  *  @param p_hwfn       - hw function
120811e25f0dSDavid C Somayajulu  *  @param p_ptt        - PTT required for register access
120911e25f0dSDavid C Somayajulu  *  @param num_images   - number of images if operation was
121011e25f0dSDavid C Somayajulu  *			  successful. 0 if not.
121111e25f0dSDavid C Somayajulu  *
121211e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
121311e25f0dSDavid C Somayajulu  */
121411e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_bist_nvm_test_get_num_images(struct ecore_hwfn *p_hwfn,
121511e25f0dSDavid C Somayajulu 							    struct ecore_ptt *p_ptt,
121611e25f0dSDavid C Somayajulu 							    u32 *num_images);
121711e25f0dSDavid C Somayajulu 
121811e25f0dSDavid C Somayajulu /**
121911e25f0dSDavid C Somayajulu  * @brief Bist nvm test - get image attributes by index
122011e25f0dSDavid C Somayajulu  *
122111e25f0dSDavid C Somayajulu  *  @param p_hwfn      - hw function
122211e25f0dSDavid C Somayajulu  *  @param p_ptt       - PTT required for register access
122311e25f0dSDavid C Somayajulu  *  @param p_image_att - Attributes of image
122411e25f0dSDavid C Somayajulu  *  @param image_index - Index of image to get information for
122511e25f0dSDavid C Somayajulu  *
122611e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
122711e25f0dSDavid C Somayajulu  */
122811e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_bist_nvm_test_get_image_att(struct ecore_hwfn *p_hwfn,
122911e25f0dSDavid C Somayajulu 							   struct ecore_ptt *p_ptt,
123011e25f0dSDavid C Somayajulu 							   struct bist_nvm_image_att *p_image_att,
123111e25f0dSDavid C Somayajulu 							   u32 image_index);
123211e25f0dSDavid C Somayajulu 
123311e25f0dSDavid C Somayajulu /**
123411e25f0dSDavid C Somayajulu  * @brief ecore_mcp_get_temperature_info - get the status of the temperature
123511e25f0dSDavid C Somayajulu  *                                         sensors
123611e25f0dSDavid C Somayajulu  *
123711e25f0dSDavid C Somayajulu  *  @param p_hwfn        - hw function
123811e25f0dSDavid C Somayajulu  *  @param p_ptt         - PTT required for register access
123911e25f0dSDavid C Somayajulu  *  @param p_temp_status - A pointer to an ecore_temperature_info structure to
124011e25f0dSDavid C Somayajulu  *                         be filled with the temperature data
124111e25f0dSDavid C Somayajulu  *
124211e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
124311e25f0dSDavid C Somayajulu  */
124411e25f0dSDavid C Somayajulu enum _ecore_status_t
124511e25f0dSDavid C Somayajulu ecore_mcp_get_temperature_info(struct ecore_hwfn *p_hwfn,
124611e25f0dSDavid C Somayajulu 			       struct ecore_ptt *p_ptt,
124711e25f0dSDavid C Somayajulu 			       struct ecore_temperature_info *p_temp_info);
124811e25f0dSDavid C Somayajulu 
124911e25f0dSDavid C Somayajulu /**
125011e25f0dSDavid C Somayajulu  * @brief Get MBA versions - get MBA sub images versions
125111e25f0dSDavid C Somayajulu  *
125211e25f0dSDavid C Somayajulu  *  @param p_hwfn      - hw function
125311e25f0dSDavid C Somayajulu  *  @param p_ptt       - PTT required for register access
125411e25f0dSDavid C Somayajulu  *  @param p_mba_vers  - MBA versions array to fill
125511e25f0dSDavid C Somayajulu  *
125611e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
125711e25f0dSDavid C Somayajulu  */
125811e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_get_mba_versions(
125911e25f0dSDavid C Somayajulu 	struct ecore_hwfn *p_hwfn,
126011e25f0dSDavid C Somayajulu 	struct ecore_ptt *p_ptt,
126111e25f0dSDavid C Somayajulu 	struct ecore_mba_vers *p_mba_vers);
126211e25f0dSDavid C Somayajulu 
126311e25f0dSDavid C Somayajulu /**
126411e25f0dSDavid C Somayajulu  * @brief Count memory ecc events
126511e25f0dSDavid C Somayajulu  *
126611e25f0dSDavid C Somayajulu  *  @param p_hwfn      - hw function
126711e25f0dSDavid C Somayajulu  *  @param p_ptt       - PTT required for register access
126811e25f0dSDavid C Somayajulu  *  @param num_events  - number of memory ecc events
126911e25f0dSDavid C Somayajulu  *
127011e25f0dSDavid C Somayajulu  * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful.
127111e25f0dSDavid C Somayajulu  */
127211e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_mem_ecc_events(struct ecore_hwfn *p_hwfn,
127311e25f0dSDavid C Somayajulu 					      struct ecore_ptt *p_ptt,
127411e25f0dSDavid C Somayajulu 					      u64 *num_events);
127511e25f0dSDavid C Somayajulu 
127611e25f0dSDavid C Somayajulu struct ecore_mdump_info {
127711e25f0dSDavid C Somayajulu 	u32 reason;
127811e25f0dSDavid C Somayajulu 	u32 version;
127911e25f0dSDavid C Somayajulu 	u32 config;
128011e25f0dSDavid C Somayajulu 	u32 epoch;
128111e25f0dSDavid C Somayajulu 	u32 num_of_logs;
128211e25f0dSDavid C Somayajulu 	u32 valid_logs;
128311e25f0dSDavid C Somayajulu };
128411e25f0dSDavid C Somayajulu 
128511e25f0dSDavid C Somayajulu /**
128611e25f0dSDavid C Somayajulu  * @brief - Gets the MFW crash dump configuration and logs info.
128711e25f0dSDavid C Somayajulu  *
128811e25f0dSDavid C Somayajulu  * @param p_hwfn
128911e25f0dSDavid C Somayajulu  * @param p_ptt
129011e25f0dSDavid C Somayajulu  * @param p_mdump_info
129111e25f0dSDavid C Somayajulu  *
129211e25f0dSDavid C Somayajulu  * @param return ECORE_SUCCESS upon success.
129311e25f0dSDavid C Somayajulu  */
129411e25f0dSDavid C Somayajulu enum _ecore_status_t
129511e25f0dSDavid C Somayajulu ecore_mcp_mdump_get_info(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt,
129611e25f0dSDavid C Somayajulu 			 struct ecore_mdump_info *p_mdump_info);
129711e25f0dSDavid C Somayajulu 
129811e25f0dSDavid C Somayajulu /**
129911e25f0dSDavid C Somayajulu  * @brief - Clears the MFW crash dump logs.
130011e25f0dSDavid C Somayajulu  *
130111e25f0dSDavid C Somayajulu  * @param p_hwfn
130211e25f0dSDavid C Somayajulu  * @param p_ptt
130311e25f0dSDavid C Somayajulu  *
130411e25f0dSDavid C Somayajulu  * @param return ECORE_SUCCESS upon success.
130511e25f0dSDavid C Somayajulu  */
130611e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_mdump_clear_logs(struct ecore_hwfn *p_hwfn,
130711e25f0dSDavid C Somayajulu 						struct ecore_ptt *p_ptt);
130811e25f0dSDavid C Somayajulu 
130911e25f0dSDavid C Somayajulu /**
13109efd0ba7SDavid C Somayajulu  * @brief - Clear the mdump retained data.
13119efd0ba7SDavid C Somayajulu  *
13129efd0ba7SDavid C Somayajulu  * @param p_hwfn
13139efd0ba7SDavid C Somayajulu  * @param p_ptt
13149efd0ba7SDavid C Somayajulu  *
13159efd0ba7SDavid C Somayajulu  * @param return ECORE_SUCCESS upon success.
13169efd0ba7SDavid C Somayajulu  */
13179efd0ba7SDavid C Somayajulu enum _ecore_status_t ecore_mcp_mdump_clr_retain(struct ecore_hwfn *p_hwfn,
13189efd0ba7SDavid C Somayajulu 						struct ecore_ptt *p_ptt);
13199efd0ba7SDavid C Somayajulu 
13209efd0ba7SDavid C Somayajulu /**
132111e25f0dSDavid C Somayajulu  * @brief - Gets the LLDP MAC address.
132211e25f0dSDavid C Somayajulu  *
132311e25f0dSDavid C Somayajulu  * @param p_hwfn
132411e25f0dSDavid C Somayajulu  * @param p_ptt
132511e25f0dSDavid C Somayajulu  * @param lldp_mac_addr - a buffer to be filled with the read LLDP MAC address.
132611e25f0dSDavid C Somayajulu  *
132711e25f0dSDavid C Somayajulu  * @param return ECORE_SUCCESS upon success.
132811e25f0dSDavid C Somayajulu  */
132911e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_get_lldp_mac(struct ecore_hwfn *p_hwfn,
133011e25f0dSDavid C Somayajulu 					    struct ecore_ptt *p_ptt,
133111e25f0dSDavid C Somayajulu 					    u8 lldp_mac_addr[ETH_ALEN]);
133211e25f0dSDavid C Somayajulu 
133311e25f0dSDavid C Somayajulu /**
133411e25f0dSDavid C Somayajulu  * @brief - Sets the LLDP MAC address.
133511e25f0dSDavid C Somayajulu  *
133611e25f0dSDavid C Somayajulu  * @param p_hwfn
133711e25f0dSDavid C Somayajulu  * @param p_ptt
133811e25f0dSDavid C Somayajulu  * @param lldp_mac_addr - a buffer with the LLDP MAC address to be written.
133911e25f0dSDavid C Somayajulu  *
134011e25f0dSDavid C Somayajulu  * @param return ECORE_SUCCESS upon success.
134111e25f0dSDavid C Somayajulu  */
134211e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_set_lldp_mac(struct ecore_hwfn *p_hwfn,
134311e25f0dSDavid C Somayajulu 					    struct ecore_ptt *p_ptt,
134411e25f0dSDavid C Somayajulu 					    u8 lldp_mac_addr[ETH_ALEN]);
134511e25f0dSDavid C Somayajulu 
134611e25f0dSDavid C Somayajulu /**
134711e25f0dSDavid C Somayajulu  * @brief - Processes the TLV request from MFW i.e., get the required TLV info
134811e25f0dSDavid C Somayajulu  *          from the ecore client and send it to the MFW.
134911e25f0dSDavid C Somayajulu  *
135011e25f0dSDavid C Somayajulu  * @param p_hwfn
135111e25f0dSDavid C Somayajulu  * @param p_ptt
135211e25f0dSDavid C Somayajulu  *
135311e25f0dSDavid C Somayajulu  * @param return ECORE_SUCCESS upon success.
135411e25f0dSDavid C Somayajulu  */
135511e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mfw_process_tlv_req(struct ecore_hwfn *p_hwfn,
135611e25f0dSDavid C Somayajulu 					       struct ecore_ptt *p_ptt);
135711e25f0dSDavid C Somayajulu 
135811e25f0dSDavid C Somayajulu /**
135911e25f0dSDavid C Somayajulu  * @brief - Update fcoe vlan id value to the MFW.
136011e25f0dSDavid C Somayajulu  *
136111e25f0dSDavid C Somayajulu  * @param p_hwfn
136211e25f0dSDavid C Somayajulu  * @param p_ptt
136311e25f0dSDavid C Somayajulu  * @param vlan - fcoe vlan
136411e25f0dSDavid C Somayajulu  *
136511e25f0dSDavid C Somayajulu  * @param return ECORE_SUCCESS upon success.
136611e25f0dSDavid C Somayajulu  */
136711e25f0dSDavid C Somayajulu enum _ecore_status_t
136811e25f0dSDavid C Somayajulu ecore_mcp_update_fcoe_cvid(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt,
136911e25f0dSDavid C Somayajulu 			   u16 vlan);
137011e25f0dSDavid C Somayajulu 
137111e25f0dSDavid C Somayajulu /**
137211e25f0dSDavid C Somayajulu  * @brief - Update fabric name (wwn) value to the MFW.
137311e25f0dSDavid C Somayajulu  *
137411e25f0dSDavid C Somayajulu  * @param p_hwfn
137511e25f0dSDavid C Somayajulu  * @param p_ptt
137611e25f0dSDavid C Somayajulu  * @param wwn - world wide name
137711e25f0dSDavid C Somayajulu  *
137811e25f0dSDavid C Somayajulu  * @param return ECORE_SUCCESS upon success.
137911e25f0dSDavid C Somayajulu  */
138011e25f0dSDavid C Somayajulu enum _ecore_status_t
138111e25f0dSDavid C Somayajulu ecore_mcp_update_fcoe_fabric_name(struct ecore_hwfn *p_hwfn,
138211e25f0dSDavid C Somayajulu 				  struct ecore_ptt *p_ptt, u8 *wwn);
1383*217ec208SDavid C Somayajulu 
1384*217ec208SDavid C Somayajulu /**
1385*217ec208SDavid C Somayajulu  * @brief - Return whether management firmware support smart AN
1386*217ec208SDavid C Somayajulu  *
1387*217ec208SDavid C Somayajulu  * @param p_hwfn
1388*217ec208SDavid C Somayajulu  *
1389*217ec208SDavid C Somayajulu  * @return bool - true if feature is supported.
1390*217ec208SDavid C Somayajulu  */
1391*217ec208SDavid C Somayajulu bool ecore_mcp_is_smart_an_supported(struct ecore_hwfn *p_hwfn);
1392*217ec208SDavid C Somayajulu 
1393*217ec208SDavid C Somayajulu /**
1394*217ec208SDavid C Somayajulu  * @brief - Return whether management firmware support setting of
1395*217ec208SDavid C Somayajulu  *          PCI relaxed ordering.
1396*217ec208SDavid C Somayajulu  *
1397*217ec208SDavid C Somayajulu  * @param p_hwfn
1398*217ec208SDavid C Somayajulu  *
1399*217ec208SDavid C Somayajulu  * @return bool - true if feature is supported.
1400*217ec208SDavid C Somayajulu  */
1401*217ec208SDavid C Somayajulu bool ecore_mcp_rlx_odr_supported(struct ecore_hwfn *p_hwfn);
140211e25f0dSDavid C Somayajulu #endif
1403