13126df22SRasesh Mody /* SPDX-License-Identifier: BSD-3-Clause 29adde217SRasesh Mody * Copyright (c) 2016 - 2018 Cavium Inc. 3ec94dbc5SRasesh Mody * All rights reserved. 49adde217SRasesh Mody * www.cavium.com 5ec94dbc5SRasesh Mody */ 6ec94dbc5SRasesh Mody 7ec94dbc5SRasesh Mody #ifndef __ECORE_MCP_API_H__ 8ec94dbc5SRasesh Mody #define __ECORE_MCP_API_H__ 9ec94dbc5SRasesh Mody 10ec94dbc5SRasesh Mody #include "ecore_status.h" 11ec94dbc5SRasesh Mody 12ec94dbc5SRasesh Mody struct ecore_mcp_link_speed_params { 13ec94dbc5SRasesh Mody bool autoneg; 14ec94dbc5SRasesh Mody u32 advertised_speeds; /* bitmask of DRV_SPEED_CAPABILITY */ 15ec94dbc5SRasesh Mody u32 forced_speed; /* In Mb/s */ 16ec94dbc5SRasesh Mody }; 17ec94dbc5SRasesh Mody 18ec94dbc5SRasesh Mody struct ecore_mcp_link_pause_params { 19ec94dbc5SRasesh Mody bool autoneg; 20ec94dbc5SRasesh Mody bool forced_rx; 21ec94dbc5SRasesh Mody bool forced_tx; 22ec94dbc5SRasesh Mody }; 23ec94dbc5SRasesh Mody 243c6a3cf6SRasesh Mody enum ecore_mcp_eee_mode { 253c6a3cf6SRasesh Mody ECORE_MCP_EEE_DISABLED, 263c6a3cf6SRasesh Mody ECORE_MCP_EEE_ENABLED, 273c6a3cf6SRasesh Mody ECORE_MCP_EEE_UNSUPPORTED 283c6a3cf6SRasesh Mody }; 293c6a3cf6SRasesh Mody 303c6a3cf6SRasesh Mody struct ecore_link_eee_params { 313c6a3cf6SRasesh Mody u32 tx_lpi_timer; 323c6a3cf6SRasesh Mody #define ECORE_EEE_1G_ADV (1 << 0) 333c6a3cf6SRasesh Mody #define ECORE_EEE_10G_ADV (1 << 1) 343c6a3cf6SRasesh Mody /* Capabilities are represented using ECORE_EEE_*_ADV values */ 353c6a3cf6SRasesh Mody u8 adv_caps; 363c6a3cf6SRasesh Mody u8 lp_adv_caps; 373c6a3cf6SRasesh Mody bool enable; 383c6a3cf6SRasesh Mody bool tx_lpi_enable; 393c6a3cf6SRasesh Mody }; 403c6a3cf6SRasesh Mody 41ec94dbc5SRasesh Mody struct ecore_mcp_link_params { 42ec94dbc5SRasesh Mody struct ecore_mcp_link_speed_params speed; 43ec94dbc5SRasesh Mody struct ecore_mcp_link_pause_params pause; 44ec94dbc5SRasesh Mody u32 loopback_mode; /* in PMM_LOOPBACK values */ 453c6a3cf6SRasesh Mody struct ecore_link_eee_params eee; 46ec94dbc5SRasesh Mody }; 47ec94dbc5SRasesh Mody 48ec94dbc5SRasesh Mody struct ecore_mcp_link_capabilities { 49ec94dbc5SRasesh Mody u32 speed_capabilities; 5022d07d93SRasesh Mody bool default_speed_autoneg; /* In Mb/s */ 5122d07d93SRasesh Mody u32 default_speed; /* In Mb/s */ 523c6a3cf6SRasesh Mody enum ecore_mcp_eee_mode default_eee; 533c6a3cf6SRasesh Mody u32 eee_lpi_timer; 543c6a3cf6SRasesh Mody u8 eee_speed_caps; 55ec94dbc5SRasesh Mody }; 56ec94dbc5SRasesh Mody 57ec94dbc5SRasesh Mody struct ecore_mcp_link_state { 58ec94dbc5SRasesh Mody bool link_up; 59ec94dbc5SRasesh Mody 60ec94dbc5SRasesh Mody u32 min_pf_rate; /* In Mb/s */ 61eafbc6fcSRasesh Mody 62eafbc6fcSRasesh Mody /* Actual link speed in Mb/s */ 63eafbc6fcSRasesh Mody u32 line_speed; 64eafbc6fcSRasesh Mody 65eafbc6fcSRasesh Mody /* PF max speed in MB/s, deduced from line_speed 66eafbc6fcSRasesh Mody * according to PF max bandwidth configuration. 67eafbc6fcSRasesh Mody */ 68eafbc6fcSRasesh Mody u32 speed; 69ec94dbc5SRasesh Mody bool full_duplex; 70ec94dbc5SRasesh Mody 71ec94dbc5SRasesh Mody bool an; 72ec94dbc5SRasesh Mody bool an_complete; 73ec94dbc5SRasesh Mody bool parallel_detection; 74ec94dbc5SRasesh Mody bool pfc_enabled; 75ec94dbc5SRasesh Mody 76ec94dbc5SRasesh Mody #define ECORE_LINK_PARTNER_SPEED_1G_HD (1 << 0) 77ec94dbc5SRasesh Mody #define ECORE_LINK_PARTNER_SPEED_1G_FD (1 << 1) 78ec94dbc5SRasesh Mody #define ECORE_LINK_PARTNER_SPEED_10G (1 << 2) 79ec94dbc5SRasesh Mody #define ECORE_LINK_PARTNER_SPEED_20G (1 << 3) 80ec94dbc5SRasesh Mody #define ECORE_LINK_PARTNER_SPEED_25G (1 << 4) 81ec94dbc5SRasesh Mody #define ECORE_LINK_PARTNER_SPEED_40G (1 << 5) 82ec94dbc5SRasesh Mody #define ECORE_LINK_PARTNER_SPEED_50G (1 << 6) 83ec94dbc5SRasesh Mody #define ECORE_LINK_PARTNER_SPEED_100G (1 << 7) 84ec94dbc5SRasesh Mody u32 partner_adv_speed; 85ec94dbc5SRasesh Mody 86ec94dbc5SRasesh Mody bool partner_tx_flow_ctrl_en; 87ec94dbc5SRasesh Mody bool partner_rx_flow_ctrl_en; 88ec94dbc5SRasesh Mody 89ec94dbc5SRasesh Mody #define ECORE_LINK_PARTNER_SYMMETRIC_PAUSE (1) 90ec94dbc5SRasesh Mody #define ECORE_LINK_PARTNER_ASYMMETRIC_PAUSE (2) 91ec94dbc5SRasesh Mody #define ECORE_LINK_PARTNER_BOTH_PAUSE (3) 92ec94dbc5SRasesh Mody u8 partner_adv_pause; 93ec94dbc5SRasesh Mody 94ec94dbc5SRasesh Mody bool sfp_tx_fault; 953c6a3cf6SRasesh Mody 963c6a3cf6SRasesh Mody bool eee_active; 973c6a3cf6SRasesh Mody u8 eee_adv_caps; 983c6a3cf6SRasesh Mody u8 eee_lp_adv_caps; 99ec94dbc5SRasesh Mody }; 100ec94dbc5SRasesh Mody 101ec94dbc5SRasesh Mody struct ecore_mcp_function_info { 102ec94dbc5SRasesh Mody u8 pause_on_host; 103ec94dbc5SRasesh Mody 104ec94dbc5SRasesh Mody enum ecore_pci_personality protocol; 105ec94dbc5SRasesh Mody 106ec94dbc5SRasesh Mody u8 bandwidth_min; 107ec94dbc5SRasesh Mody u8 bandwidth_max; 108ec94dbc5SRasesh Mody 109ec94dbc5SRasesh Mody u8 mac[ETH_ALEN]; 110ec94dbc5SRasesh Mody 111ec94dbc5SRasesh Mody u64 wwn_port; 112ec94dbc5SRasesh Mody u64 wwn_node; 113ec94dbc5SRasesh Mody 114ec94dbc5SRasesh Mody #define ECORE_MCP_VLAN_UNSET (0xffff) 115ec94dbc5SRasesh Mody u16 ovlan; 1165c11b706SRasesh Mody 1175c11b706SRasesh Mody u16 mtu; 118ec94dbc5SRasesh Mody }; 119ec94dbc5SRasesh Mody 12022d07d93SRasesh Mody #ifndef __EXTRACT__LINUX__ 121252b88b5SHarish Patil enum ecore_nvm_images { 122252b88b5SHarish Patil ECORE_NVM_IMAGE_ISCSI_CFG, 123252b88b5SHarish Patil ECORE_NVM_IMAGE_FCOE_CFG, 124*2352f348SRasesh Mody ECORE_NVM_IMAGE_MDUMP, 125*2352f348SRasesh Mody ECORE_NVM_IMAGE_NVM_CFG1, 126*2352f348SRasesh Mody ECORE_NVM_IMAGE_DEFAULT_CFG, 127*2352f348SRasesh Mody ECORE_NVM_IMAGE_NVM_META, 128252b88b5SHarish Patil }; 12922d07d93SRasesh Mody #endif 130252b88b5SHarish Patil 131ec94dbc5SRasesh Mody struct ecore_mcp_drv_version { 132ec94dbc5SRasesh Mody u32 version; 133ec94dbc5SRasesh Mody u8 name[MCP_DRV_VER_STR_SIZE - 4]; 134ec94dbc5SRasesh Mody }; 135ec94dbc5SRasesh Mody 136ec94dbc5SRasesh Mody struct ecore_mcp_lan_stats { 137ec94dbc5SRasesh Mody u64 ucast_rx_pkts; 138ec94dbc5SRasesh Mody u64 ucast_tx_pkts; 139ec94dbc5SRasesh Mody u32 fcs_err; 140ec94dbc5SRasesh Mody }; 141ec94dbc5SRasesh Mody 142ec94dbc5SRasesh Mody #ifndef ECORE_PROTO_STATS 143ec94dbc5SRasesh Mody #define ECORE_PROTO_STATS 14422d07d93SRasesh Mody struct ecore_mcp_fcoe_stats { 14522d07d93SRasesh Mody u64 rx_pkts; 14622d07d93SRasesh Mody u64 tx_pkts; 14722d07d93SRasesh Mody u32 fcs_err; 14822d07d93SRasesh Mody u32 login_failure; 14922d07d93SRasesh Mody }; 15022d07d93SRasesh Mody 15122d07d93SRasesh Mody struct ecore_mcp_iscsi_stats { 15222d07d93SRasesh Mody u64 rx_pdus; 15322d07d93SRasesh Mody u64 tx_pdus; 15422d07d93SRasesh Mody u64 rx_bytes; 15522d07d93SRasesh Mody u64 tx_bytes; 15622d07d93SRasesh Mody }; 15722d07d93SRasesh Mody 15822d07d93SRasesh Mody struct ecore_mcp_rdma_stats { 15922d07d93SRasesh Mody u64 rx_pkts; 16022d07d93SRasesh Mody u64 tx_pkts; 16122d07d93SRasesh Mody u64 rx_bytes; 16222d07d93SRasesh Mody u64 tx_byts; 16322d07d93SRasesh Mody }; 164ec94dbc5SRasesh Mody 165ec94dbc5SRasesh Mody enum ecore_mcp_protocol_type { 166ec94dbc5SRasesh Mody ECORE_MCP_LAN_STATS, 16722d07d93SRasesh Mody ECORE_MCP_FCOE_STATS, 16822d07d93SRasesh Mody ECORE_MCP_ISCSI_STATS, 16922d07d93SRasesh Mody ECORE_MCP_RDMA_STATS 170ec94dbc5SRasesh Mody }; 171ec94dbc5SRasesh Mody 172ec94dbc5SRasesh Mody union ecore_mcp_protocol_stats { 173ec94dbc5SRasesh Mody struct ecore_mcp_lan_stats lan_stats; 17422d07d93SRasesh Mody struct ecore_mcp_fcoe_stats fcoe_stats; 17522d07d93SRasesh Mody struct ecore_mcp_iscsi_stats iscsi_stats; 17622d07d93SRasesh Mody struct ecore_mcp_rdma_stats rdma_stats; 177ec94dbc5SRasesh Mody }; 178ec94dbc5SRasesh Mody #endif 179ec94dbc5SRasesh Mody 180ec94dbc5SRasesh Mody enum ecore_ov_client { 181ec94dbc5SRasesh Mody ECORE_OV_CLIENT_DRV, 1823ca097bbSRasesh Mody ECORE_OV_CLIENT_USER, 1833ca097bbSRasesh Mody ECORE_OV_CLIENT_VENDOR_SPEC 184ec94dbc5SRasesh Mody }; 185ec94dbc5SRasesh Mody 186ec94dbc5SRasesh Mody enum ecore_ov_driver_state { 187ec94dbc5SRasesh Mody ECORE_OV_DRIVER_STATE_NOT_LOADED, 188ec94dbc5SRasesh Mody ECORE_OV_DRIVER_STATE_DISABLED, 189ec94dbc5SRasesh Mody ECORE_OV_DRIVER_STATE_ACTIVE 190ec94dbc5SRasesh Mody }; 191ec94dbc5SRasesh Mody 192ebbc55b8SRasesh Mody enum ecore_ov_eswitch { 193ebbc55b8SRasesh Mody ECORE_OV_ESWITCH_NONE, 194ebbc55b8SRasesh Mody ECORE_OV_ESWITCH_VEB, 195ebbc55b8SRasesh Mody ECORE_OV_ESWITCH_VEPA 196ebbc55b8SRasesh Mody }; 197ebbc55b8SRasesh Mody 198ec94dbc5SRasesh Mody #define ECORE_MAX_NPIV_ENTRIES 128 199ec94dbc5SRasesh Mody #define ECORE_WWN_SIZE 8 200ec94dbc5SRasesh Mody struct ecore_fc_npiv_tbl { 201ec94dbc5SRasesh Mody u32 count; 202ec94dbc5SRasesh Mody u8 wwpn[ECORE_MAX_NPIV_ENTRIES][ECORE_WWN_SIZE]; 203ec94dbc5SRasesh Mody u8 wwnn[ECORE_MAX_NPIV_ENTRIES][ECORE_WWN_SIZE]; 204ec94dbc5SRasesh Mody }; 205ec94dbc5SRasesh Mody 206ec94dbc5SRasesh Mody #ifndef __EXTRACT__LINUX__ 207ec94dbc5SRasesh Mody enum ecore_led_mode { 208ec94dbc5SRasesh Mody ECORE_LED_MODE_OFF, 209ec94dbc5SRasesh Mody ECORE_LED_MODE_ON, 210ec94dbc5SRasesh Mody ECORE_LED_MODE_RESTORE 211ec94dbc5SRasesh Mody }; 212ec94dbc5SRasesh Mody #endif 213ec94dbc5SRasesh Mody 214252b88b5SHarish Patil struct ecore_temperature_sensor { 215252b88b5SHarish Patil u8 sensor_location; 216252b88b5SHarish Patil u8 threshold_high; 217252b88b5SHarish Patil u8 critical; 218252b88b5SHarish Patil u8 current_temp; 219252b88b5SHarish Patil }; 220252b88b5SHarish Patil 221252b88b5SHarish Patil #define ECORE_MAX_NUM_OF_SENSORS 7 222252b88b5SHarish Patil struct ecore_temperature_info { 223252b88b5SHarish Patil u32 num_sensors; 224252b88b5SHarish Patil struct ecore_temperature_sensor sensors[ECORE_MAX_NUM_OF_SENSORS]; 225252b88b5SHarish Patil }; 226252b88b5SHarish Patil 227252b88b5SHarish Patil enum ecore_mba_img_idx { 228252b88b5SHarish Patil ECORE_MBA_LEGACY_IDX, 229252b88b5SHarish Patil ECORE_MBA_PCI3CLP_IDX, 230252b88b5SHarish Patil ECORE_MBA_PCI3_IDX, 231252b88b5SHarish Patil ECORE_MBA_FCODE_IDX, 232252b88b5SHarish Patil ECORE_EFI_X86_IDX, 233252b88b5SHarish Patil ECORE_EFI_IPF_IDX, 234252b88b5SHarish Patil ECORE_EFI_EBC_IDX, 235252b88b5SHarish Patil ECORE_EFI_X64_IDX, 236252b88b5SHarish Patil ECORE_MAX_NUM_OF_ROMIMG 237252b88b5SHarish Patil }; 238252b88b5SHarish Patil 239252b88b5SHarish Patil struct ecore_mba_vers { 240252b88b5SHarish Patil u32 mba_vers[ECORE_MAX_NUM_OF_ROMIMG]; 241252b88b5SHarish Patil }; 242252b88b5SHarish Patil 243ea7c1c6fSRasesh Mody enum ecore_mfw_tlv_type { 244ea7c1c6fSRasesh Mody ECORE_MFW_TLV_GENERIC = 0x1, /* Core driver TLVs */ 24543ef668cSRasesh Mody ECORE_MFW_TLV_ETH = 0x2, /* L2 driver TLVs */ 24643ef668cSRasesh Mody ECORE_MFW_TLV_FCOE = 0x4, /* FCoE protocol TLVs */ 24743ef668cSRasesh Mody ECORE_MFW_TLV_ISCSI = 0x8, /* SCSI protocol TLVs */ 24843ef668cSRasesh Mody ECORE_MFW_TLV_MAX = 0x16, 249ea7c1c6fSRasesh Mody }; 250ea7c1c6fSRasesh Mody 251ea7c1c6fSRasesh Mody struct ecore_mfw_tlv_generic { 252ea7c1c6fSRasesh Mody u16 feat_flags; 253ea7c1c6fSRasesh Mody bool feat_flags_set; 254ea7c1c6fSRasesh Mody u64 local_mac; 255ea7c1c6fSRasesh Mody bool local_mac_set; 256ea7c1c6fSRasesh Mody u64 additional_mac1; 257ea7c1c6fSRasesh Mody bool additional_mac1_set; 258ea7c1c6fSRasesh Mody u64 additional_mac2; 259ea7c1c6fSRasesh Mody bool additional_mac2_set; 26043ef668cSRasesh Mody u8 drv_state; 26143ef668cSRasesh Mody bool drv_state_set; 26243ef668cSRasesh Mody u8 pxe_progress; 26343ef668cSRasesh Mody bool pxe_progress_set; 26443ef668cSRasesh Mody u64 rx_frames; 26543ef668cSRasesh Mody bool rx_frames_set; 26643ef668cSRasesh Mody u64 rx_bytes; 26743ef668cSRasesh Mody bool rx_bytes_set; 26843ef668cSRasesh Mody u64 tx_frames; 26943ef668cSRasesh Mody bool tx_frames_set; 27043ef668cSRasesh Mody u64 tx_bytes; 27143ef668cSRasesh Mody bool tx_bytes_set; 27243ef668cSRasesh Mody }; 27343ef668cSRasesh Mody 27443ef668cSRasesh Mody struct ecore_mfw_tlv_eth { 275ea7c1c6fSRasesh Mody u16 lso_maxoff_size; 276ea7c1c6fSRasesh Mody bool lso_maxoff_size_set; 277ea7c1c6fSRasesh Mody u16 lso_minseg_size; 278ea7c1c6fSRasesh Mody bool lso_minseg_size_set; 279ea7c1c6fSRasesh Mody u8 prom_mode; 280ea7c1c6fSRasesh Mody bool prom_mode_set; 281ea7c1c6fSRasesh Mody u16 tx_descr_size; 282ea7c1c6fSRasesh Mody bool tx_descr_size_set; 283ea7c1c6fSRasesh Mody u16 rx_descr_size; 284ea7c1c6fSRasesh Mody bool rx_descr_size_set; 285ea7c1c6fSRasesh Mody u16 netq_count; 286ea7c1c6fSRasesh Mody bool netq_count_set; 287ea7c1c6fSRasesh Mody u32 tcp4_offloads; 288ea7c1c6fSRasesh Mody bool tcp4_offloads_set; 289ea7c1c6fSRasesh Mody u32 tcp6_offloads; 290ea7c1c6fSRasesh Mody bool tcp6_offloads_set; 291ea7c1c6fSRasesh Mody u16 tx_descr_qdepth; 292ea7c1c6fSRasesh Mody bool tx_descr_qdepth_set; 293ea7c1c6fSRasesh Mody u16 rx_descr_qdepth; 294ea7c1c6fSRasesh Mody bool rx_descr_qdepth_set; 295ea7c1c6fSRasesh Mody u8 iov_offload; 296ea7c1c6fSRasesh Mody bool iov_offload_set; 297ea7c1c6fSRasesh Mody u8 txqs_empty; 298ea7c1c6fSRasesh Mody bool txqs_empty_set; 299ea7c1c6fSRasesh Mody u8 rxqs_empty; 300ea7c1c6fSRasesh Mody bool rxqs_empty_set; 301ea7c1c6fSRasesh Mody u8 num_txqs_full; 302ea7c1c6fSRasesh Mody bool num_txqs_full_set; 303ea7c1c6fSRasesh Mody u8 num_rxqs_full; 304ea7c1c6fSRasesh Mody bool num_rxqs_full_set; 305ea7c1c6fSRasesh Mody }; 306ea7c1c6fSRasesh Mody 307ea7c1c6fSRasesh Mody struct ecore_mfw_tlv_fcoe { 308ea7c1c6fSRasesh Mody u8 scsi_timeout; 309ea7c1c6fSRasesh Mody bool scsi_timeout_set; 310ea7c1c6fSRasesh Mody u32 rt_tov; 311ea7c1c6fSRasesh Mody bool rt_tov_set; 312ea7c1c6fSRasesh Mody u32 ra_tov; 313ea7c1c6fSRasesh Mody bool ra_tov_set; 314ea7c1c6fSRasesh Mody u32 ed_tov; 315ea7c1c6fSRasesh Mody bool ed_tov_set; 316ea7c1c6fSRasesh Mody u32 cr_tov; 317ea7c1c6fSRasesh Mody bool cr_tov_set; 318ea7c1c6fSRasesh Mody u8 boot_type; 319ea7c1c6fSRasesh Mody bool boot_type_set; 320ea7c1c6fSRasesh Mody u8 npiv_state; 321ea7c1c6fSRasesh Mody bool npiv_state_set; 322ea7c1c6fSRasesh Mody u32 num_npiv_ids; 323ea7c1c6fSRasesh Mody bool num_npiv_ids_set; 324ea7c1c6fSRasesh Mody u8 switch_name[8]; 325ea7c1c6fSRasesh Mody bool switch_name_set; 326ea7c1c6fSRasesh Mody u16 switch_portnum; 327ea7c1c6fSRasesh Mody bool switch_portnum_set; 328ea7c1c6fSRasesh Mody u8 switch_portid[3]; 329ea7c1c6fSRasesh Mody bool switch_portid_set; 330ea7c1c6fSRasesh Mody u8 vendor_name[8]; 331ea7c1c6fSRasesh Mody bool vendor_name_set; 332ea7c1c6fSRasesh Mody u8 switch_model[8]; 333ea7c1c6fSRasesh Mody bool switch_model_set; 334ea7c1c6fSRasesh Mody u8 switch_fw_version[8]; 335ea7c1c6fSRasesh Mody bool switch_fw_version_set; 336ea7c1c6fSRasesh Mody u8 qos_pri; 337ea7c1c6fSRasesh Mody bool qos_pri_set; 338ea7c1c6fSRasesh Mody u8 port_alias[3]; 339ea7c1c6fSRasesh Mody bool port_alias_set; 340ea7c1c6fSRasesh Mody u8 port_state; 341ea7c1c6fSRasesh Mody bool port_state_set; 342ea7c1c6fSRasesh Mody u16 fip_tx_descr_size; 343ea7c1c6fSRasesh Mody bool fip_tx_descr_size_set; 344ea7c1c6fSRasesh Mody u16 fip_rx_descr_size; 345ea7c1c6fSRasesh Mody bool fip_rx_descr_size_set; 346ea7c1c6fSRasesh Mody u16 link_failures; 347ea7c1c6fSRasesh Mody bool link_failures_set; 348ea7c1c6fSRasesh Mody u8 fcoe_boot_progress; 349ea7c1c6fSRasesh Mody bool fcoe_boot_progress_set; 350ea7c1c6fSRasesh Mody u64 rx_bcast; 351ea7c1c6fSRasesh Mody bool rx_bcast_set; 352ea7c1c6fSRasesh Mody u64 tx_bcast; 353ea7c1c6fSRasesh Mody bool tx_bcast_set; 354ea7c1c6fSRasesh Mody u16 fcoe_txq_depth; 355ea7c1c6fSRasesh Mody bool fcoe_txq_depth_set; 356ea7c1c6fSRasesh Mody u16 fcoe_rxq_depth; 357ea7c1c6fSRasesh Mody bool fcoe_rxq_depth_set; 358ea7c1c6fSRasesh Mody u64 fcoe_rx_frames; 359ea7c1c6fSRasesh Mody bool fcoe_rx_frames_set; 360ea7c1c6fSRasesh Mody u64 fcoe_rx_bytes; 361ea7c1c6fSRasesh Mody bool fcoe_rx_bytes_set; 362ea7c1c6fSRasesh Mody u64 fcoe_tx_frames; 363ea7c1c6fSRasesh Mody bool fcoe_tx_frames_set; 364ea7c1c6fSRasesh Mody u64 fcoe_tx_bytes; 365ea7c1c6fSRasesh Mody bool fcoe_tx_bytes_set; 366ea7c1c6fSRasesh Mody u16 crc_count; 367ea7c1c6fSRasesh Mody bool crc_count_set; 368ea7c1c6fSRasesh Mody u32 crc_err_src_fcid[5]; 369ea7c1c6fSRasesh Mody bool crc_err_src_fcid_set[5]; 370ea7c1c6fSRasesh Mody u8 crc_err_tstamp[5][14]; 371ea7c1c6fSRasesh Mody bool crc_err_tstamp_set[5]; 372ea7c1c6fSRasesh Mody u16 losync_err; 373ea7c1c6fSRasesh Mody bool losync_err_set; 374ea7c1c6fSRasesh Mody u16 losig_err; 375ea7c1c6fSRasesh Mody bool losig_err_set; 376ea7c1c6fSRasesh Mody u16 primtive_err; 377ea7c1c6fSRasesh Mody bool primtive_err_set; 378ea7c1c6fSRasesh Mody u16 disparity_err; 379ea7c1c6fSRasesh Mody bool disparity_err_set; 380ea7c1c6fSRasesh Mody u16 code_violation_err; 381ea7c1c6fSRasesh Mody bool code_violation_err_set; 382ea7c1c6fSRasesh Mody u32 flogi_param[4]; 383ea7c1c6fSRasesh Mody bool flogi_param_set[4]; 384ea7c1c6fSRasesh Mody u8 flogi_tstamp[14]; 385ea7c1c6fSRasesh Mody bool flogi_tstamp_set; 386ea7c1c6fSRasesh Mody u32 flogi_acc_param[4]; 387ea7c1c6fSRasesh Mody bool flogi_acc_param_set[4]; 388ea7c1c6fSRasesh Mody u8 flogi_acc_tstamp[14]; 389ea7c1c6fSRasesh Mody bool flogi_acc_tstamp_set; 390ea7c1c6fSRasesh Mody u32 flogi_rjt; 391ea7c1c6fSRasesh Mody bool flogi_rjt_set; 392ea7c1c6fSRasesh Mody u8 flogi_rjt_tstamp[14]; 393ea7c1c6fSRasesh Mody bool flogi_rjt_tstamp_set; 394ea7c1c6fSRasesh Mody u32 fdiscs; 395ea7c1c6fSRasesh Mody bool fdiscs_set; 396ea7c1c6fSRasesh Mody u8 fdisc_acc; 397ea7c1c6fSRasesh Mody bool fdisc_acc_set; 398ea7c1c6fSRasesh Mody u8 fdisc_rjt; 399ea7c1c6fSRasesh Mody bool fdisc_rjt_set; 400ea7c1c6fSRasesh Mody u8 plogi; 401ea7c1c6fSRasesh Mody bool plogi_set; 402ea7c1c6fSRasesh Mody u8 plogi_acc; 403ea7c1c6fSRasesh Mody bool plogi_acc_set; 404ea7c1c6fSRasesh Mody u8 plogi_rjt; 405ea7c1c6fSRasesh Mody bool plogi_rjt_set; 406ea7c1c6fSRasesh Mody u32 plogi_dst_fcid[5]; 407ea7c1c6fSRasesh Mody bool plogi_dst_fcid_set[5]; 408ea7c1c6fSRasesh Mody u8 plogi_tstamp[5][14]; 409ea7c1c6fSRasesh Mody bool plogi_tstamp_set[5]; 410ea7c1c6fSRasesh Mody u32 plogi_acc_src_fcid[5]; 411ea7c1c6fSRasesh Mody bool plogi_acc_src_fcid_set[5]; 412ea7c1c6fSRasesh Mody u8 plogi_acc_tstamp[5][14]; 413ea7c1c6fSRasesh Mody bool plogi_acc_tstamp_set[5]; 414ea7c1c6fSRasesh Mody u8 tx_plogos; 415ea7c1c6fSRasesh Mody bool tx_plogos_set; 416ea7c1c6fSRasesh Mody u8 plogo_acc; 417ea7c1c6fSRasesh Mody bool plogo_acc_set; 418ea7c1c6fSRasesh Mody u8 plogo_rjt; 419ea7c1c6fSRasesh Mody bool plogo_rjt_set; 420ea7c1c6fSRasesh Mody u32 plogo_src_fcid[5]; 421ea7c1c6fSRasesh Mody bool plogo_src_fcid_set[5]; 422ea7c1c6fSRasesh Mody u8 plogo_tstamp[5][14]; 423ea7c1c6fSRasesh Mody bool plogo_tstamp_set[5]; 424ea7c1c6fSRasesh Mody u8 rx_logos; 425ea7c1c6fSRasesh Mody bool rx_logos_set; 426ea7c1c6fSRasesh Mody u8 tx_accs; 427ea7c1c6fSRasesh Mody bool tx_accs_set; 428ea7c1c6fSRasesh Mody u8 tx_prlis; 429ea7c1c6fSRasesh Mody bool tx_prlis_set; 430ea7c1c6fSRasesh Mody u8 rx_accs; 431ea7c1c6fSRasesh Mody bool rx_accs_set; 432ea7c1c6fSRasesh Mody u8 tx_abts; 433ea7c1c6fSRasesh Mody bool tx_abts_set; 434ea7c1c6fSRasesh Mody u8 rx_abts_acc; 435ea7c1c6fSRasesh Mody bool rx_abts_acc_set; 436ea7c1c6fSRasesh Mody u8 rx_abts_rjt; 437ea7c1c6fSRasesh Mody bool rx_abts_rjt_set; 438ea7c1c6fSRasesh Mody u32 abts_dst_fcid[5]; 439ea7c1c6fSRasesh Mody bool abts_dst_fcid_set[5]; 440ea7c1c6fSRasesh Mody u8 abts_tstamp[5][14]; 441ea7c1c6fSRasesh Mody bool abts_tstamp_set[5]; 442ea7c1c6fSRasesh Mody u8 rx_rscn; 443ea7c1c6fSRasesh Mody bool rx_rscn_set; 444ea7c1c6fSRasesh Mody u32 rx_rscn_nport[4]; 445ea7c1c6fSRasesh Mody bool rx_rscn_nport_set[4]; 446ea7c1c6fSRasesh Mody u8 tx_lun_rst; 447ea7c1c6fSRasesh Mody bool tx_lun_rst_set; 448ea7c1c6fSRasesh Mody u8 abort_task_sets; 449ea7c1c6fSRasesh Mody bool abort_task_sets_set; 450ea7c1c6fSRasesh Mody u8 tx_tprlos; 451ea7c1c6fSRasesh Mody bool tx_tprlos_set; 452ea7c1c6fSRasesh Mody u8 tx_nos; 453ea7c1c6fSRasesh Mody bool tx_nos_set; 454ea7c1c6fSRasesh Mody u8 rx_nos; 455ea7c1c6fSRasesh Mody bool rx_nos_set; 456ea7c1c6fSRasesh Mody u8 ols; 457ea7c1c6fSRasesh Mody bool ols_set; 458ea7c1c6fSRasesh Mody u8 lr; 459ea7c1c6fSRasesh Mody bool lr_set; 46043ef668cSRasesh Mody u8 lrr; 46143ef668cSRasesh Mody bool lrr_set; 462ea7c1c6fSRasesh Mody u8 tx_lip; 463ea7c1c6fSRasesh Mody bool tx_lip_set; 464ea7c1c6fSRasesh Mody u8 rx_lip; 465ea7c1c6fSRasesh Mody bool rx_lip_set; 466ea7c1c6fSRasesh Mody u8 eofa; 467ea7c1c6fSRasesh Mody bool eofa_set; 468ea7c1c6fSRasesh Mody u8 eofni; 469ea7c1c6fSRasesh Mody bool eofni_set; 470ea7c1c6fSRasesh Mody u8 scsi_chks; 471ea7c1c6fSRasesh Mody bool scsi_chks_set; 472ea7c1c6fSRasesh Mody u8 scsi_cond_met; 473ea7c1c6fSRasesh Mody bool scsi_cond_met_set; 474ea7c1c6fSRasesh Mody u8 scsi_busy; 475ea7c1c6fSRasesh Mody bool scsi_busy_set; 476ea7c1c6fSRasesh Mody u8 scsi_inter; 477ea7c1c6fSRasesh Mody bool scsi_inter_set; 478ea7c1c6fSRasesh Mody u8 scsi_inter_cond_met; 479ea7c1c6fSRasesh Mody bool scsi_inter_cond_met_set; 480ea7c1c6fSRasesh Mody u8 scsi_rsv_conflicts; 481ea7c1c6fSRasesh Mody bool scsi_rsv_conflicts_set; 482ea7c1c6fSRasesh Mody u8 scsi_tsk_full; 483ea7c1c6fSRasesh Mody bool scsi_tsk_full_set; 484ea7c1c6fSRasesh Mody u8 scsi_aca_active; 485ea7c1c6fSRasesh Mody bool scsi_aca_active_set; 486ea7c1c6fSRasesh Mody u8 scsi_tsk_abort; 487ea7c1c6fSRasesh Mody bool scsi_tsk_abort_set; 488ea7c1c6fSRasesh Mody u32 scsi_rx_chk[5]; 489ea7c1c6fSRasesh Mody bool scsi_rx_chk_set[5]; 490ea7c1c6fSRasesh Mody u8 scsi_chk_tstamp[5][14]; 491ea7c1c6fSRasesh Mody bool scsi_chk_tstamp_set[5]; 492ea7c1c6fSRasesh Mody }; 493ea7c1c6fSRasesh Mody 494ea7c1c6fSRasesh Mody struct ecore_mfw_tlv_iscsi { 495ea7c1c6fSRasesh Mody u8 target_llmnr; 496ea7c1c6fSRasesh Mody bool target_llmnr_set; 497ea7c1c6fSRasesh Mody u8 header_digest; 498ea7c1c6fSRasesh Mody bool header_digest_set; 499ea7c1c6fSRasesh Mody u8 data_digest; 500ea7c1c6fSRasesh Mody bool data_digest_set; 501ea7c1c6fSRasesh Mody u8 auth_method; 502ea7c1c6fSRasesh Mody bool auth_method_set; 503ea7c1c6fSRasesh Mody u16 boot_taget_portal; 504ea7c1c6fSRasesh Mody bool boot_taget_portal_set; 505ea7c1c6fSRasesh Mody u16 frame_size; 506ea7c1c6fSRasesh Mody bool frame_size_set; 507ea7c1c6fSRasesh Mody u16 tx_desc_size; 508ea7c1c6fSRasesh Mody bool tx_desc_size_set; 509ea7c1c6fSRasesh Mody u16 rx_desc_size; 510ea7c1c6fSRasesh Mody bool rx_desc_size_set; 511ea7c1c6fSRasesh Mody u8 boot_progress; 512ea7c1c6fSRasesh Mody bool boot_progress_set; 513ea7c1c6fSRasesh Mody u16 tx_desc_qdepth; 514ea7c1c6fSRasesh Mody bool tx_desc_qdepth_set; 515ea7c1c6fSRasesh Mody u16 rx_desc_qdepth; 516ea7c1c6fSRasesh Mody bool rx_desc_qdepth_set; 517ea7c1c6fSRasesh Mody u64 rx_frames; 518ea7c1c6fSRasesh Mody bool rx_frames_set; 519ea7c1c6fSRasesh Mody u64 rx_bytes; 520ea7c1c6fSRasesh Mody bool rx_bytes_set; 521ea7c1c6fSRasesh Mody u64 tx_frames; 522ea7c1c6fSRasesh Mody bool tx_frames_set; 523ea7c1c6fSRasesh Mody u64 tx_bytes; 524ea7c1c6fSRasesh Mody bool tx_bytes_set; 525ea7c1c6fSRasesh Mody }; 526ea7c1c6fSRasesh Mody 527ea7c1c6fSRasesh Mody union ecore_mfw_tlv_data { 528ea7c1c6fSRasesh Mody struct ecore_mfw_tlv_generic generic; 52943ef668cSRasesh Mody struct ecore_mfw_tlv_eth eth; 530ea7c1c6fSRasesh Mody struct ecore_mfw_tlv_fcoe fcoe; 531ea7c1c6fSRasesh Mody struct ecore_mfw_tlv_iscsi iscsi; 532ea7c1c6fSRasesh Mody }; 533ea7c1c6fSRasesh Mody 534cb719927SRasesh Mody enum ecore_hw_info_change { 535cb719927SRasesh Mody ECORE_HW_INFO_CHANGE_OVLAN, 536cb719927SRasesh Mody }; 537cb719927SRasesh Mody 538ec94dbc5SRasesh Mody /** 539ec94dbc5SRasesh Mody * @brief - returns the link params of the hw function 540ec94dbc5SRasesh Mody * 541ec94dbc5SRasesh Mody * @param p_hwfn 542ec94dbc5SRasesh Mody * 543ec94dbc5SRasesh Mody * @returns pointer to link params 544ec94dbc5SRasesh Mody */ 545ec94dbc5SRasesh Mody struct ecore_mcp_link_params *ecore_mcp_get_link_params(struct ecore_hwfn *); 546ec94dbc5SRasesh Mody 547ec94dbc5SRasesh Mody /** 548ec94dbc5SRasesh Mody * @brief - return the link state of the hw function 549ec94dbc5SRasesh Mody * 550ec94dbc5SRasesh Mody * @param p_hwfn 551ec94dbc5SRasesh Mody * 552ec94dbc5SRasesh Mody * @returns pointer to link state 553ec94dbc5SRasesh Mody */ 554ec94dbc5SRasesh Mody struct ecore_mcp_link_state *ecore_mcp_get_link_state(struct ecore_hwfn *); 555ec94dbc5SRasesh Mody 556ec94dbc5SRasesh Mody /** 557ec94dbc5SRasesh Mody * @brief - return the link capabilities of the hw function 558ec94dbc5SRasesh Mody * 559ec94dbc5SRasesh Mody * @param p_hwfn 560ec94dbc5SRasesh Mody * 561ec94dbc5SRasesh Mody * @returns pointer to link capabilities 562ec94dbc5SRasesh Mody */ 563ec94dbc5SRasesh Mody struct ecore_mcp_link_capabilities 564ec94dbc5SRasesh Mody *ecore_mcp_get_link_capabilities(struct ecore_hwfn *p_hwfn); 565ec94dbc5SRasesh Mody 566ec94dbc5SRasesh Mody /** 5678f87ba70SThierry Herbelot * @brief Request the MFW to set the link according to 'link_input'. 568ec94dbc5SRasesh Mody * 569ec94dbc5SRasesh Mody * @param p_hwfn 570ec94dbc5SRasesh Mody * @param p_ptt 571ec94dbc5SRasesh Mody * @param b_up - raise link if `true'. Reset link if `false'. 572ec94dbc5SRasesh Mody * 573ec94dbc5SRasesh Mody * @return enum _ecore_status_t 574ec94dbc5SRasesh Mody */ 575ec94dbc5SRasesh Mody enum _ecore_status_t ecore_mcp_set_link(struct ecore_hwfn *p_hwfn, 57622d07d93SRasesh Mody struct ecore_ptt *p_ptt, 57722d07d93SRasesh Mody bool b_up); 578ec94dbc5SRasesh Mody 579ec94dbc5SRasesh Mody /** 580ec94dbc5SRasesh Mody * @brief Get the management firmware version value 581ec94dbc5SRasesh Mody * 58222d07d93SRasesh Mody * @param p_hwfn 583ec94dbc5SRasesh Mody * @param p_ptt 584ec94dbc5SRasesh Mody * @param p_mfw_ver - mfw version value 585ec94dbc5SRasesh Mody * @param p_running_bundle_id - image id in nvram; Optional. 586ec94dbc5SRasesh Mody * 587ec94dbc5SRasesh Mody * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 588ec94dbc5SRasesh Mody */ 58922d07d93SRasesh Mody enum _ecore_status_t ecore_mcp_get_mfw_ver(struct ecore_hwfn *p_hwfn, 590ec94dbc5SRasesh Mody struct ecore_ptt *p_ptt, 591ec94dbc5SRasesh Mody u32 *p_mfw_ver, 592ec94dbc5SRasesh Mody u32 *p_running_bundle_id); 593ec94dbc5SRasesh Mody 594ec94dbc5SRasesh Mody /** 595f97b56f9SRasesh Mody * @brief Get the MBI version value 596f97b56f9SRasesh Mody * 597f97b56f9SRasesh Mody * @param p_hwfn 598f97b56f9SRasesh Mody * @param p_ptt 599f97b56f9SRasesh Mody * @param p_mbi_ver - A pointer to a variable to be filled with the MBI version. 600f97b56f9SRasesh Mody * 601f97b56f9SRasesh Mody * @return int - 0 - operation was successful. 602f97b56f9SRasesh Mody */ 603f97b56f9SRasesh Mody int ecore_mcp_get_mbi_ver(struct ecore_hwfn *p_hwfn, 604f97b56f9SRasesh Mody struct ecore_ptt *p_ptt, u32 *p_mbi_ver); 605f97b56f9SRasesh Mody 606f97b56f9SRasesh Mody /** 607ec94dbc5SRasesh Mody * @brief Get media type value of the port. 608ec94dbc5SRasesh Mody * 609ec94dbc5SRasesh Mody * @param p_dev - ecore dev pointer 610739a5b2fSRasesh Mody * @param p_ptt 611ec94dbc5SRasesh Mody * @param mfw_ver - media type value 612ec94dbc5SRasesh Mody * 613ec94dbc5SRasesh Mody * @return enum _ecore_status_t - 614ec94dbc5SRasesh Mody * ECORE_SUCCESS - Operation was successful. 615ec94dbc5SRasesh Mody * ECORE_BUSY - Operation failed 616ec94dbc5SRasesh Mody */ 617739a5b2fSRasesh Mody enum _ecore_status_t ecore_mcp_get_media_type(struct ecore_hwfn *p_hwfn, 618739a5b2fSRasesh Mody struct ecore_ptt *p_ptt, 619ec94dbc5SRasesh Mody u32 *media_type); 620ec94dbc5SRasesh Mody 621ec94dbc5SRasesh Mody /** 622bdc40630SRasesh Mody * @brief Get transceiver data of the port. 623bdc40630SRasesh Mody * 624bdc40630SRasesh Mody * @param p_dev - ecore dev pointer 625bdc40630SRasesh Mody * @param p_ptt 6266d1be6d6SRasesh Mody * @param p_transceiver_state - transceiver state. 627bdc40630SRasesh Mody * @param p_transceiver_type - media type value 628bdc40630SRasesh Mody * 629bdc40630SRasesh Mody * @return enum _ecore_status_t - 630bdc40630SRasesh Mody * ECORE_SUCCESS - Operation was successful. 631bdc40630SRasesh Mody * ECORE_BUSY - Operation failed 632bdc40630SRasesh Mody */ 633bdc40630SRasesh Mody enum _ecore_status_t ecore_mcp_get_transceiver_data(struct ecore_hwfn *p_hwfn, 634bdc40630SRasesh Mody struct ecore_ptt *p_ptt, 6356d1be6d6SRasesh Mody u32 *p_transceiver_state, 636bdc40630SRasesh Mody u32 *p_tranceiver_type); 637bdc40630SRasesh Mody 638bdc40630SRasesh Mody /** 639bdc40630SRasesh Mody * @brief Get transceiver supported speed mask. 640bdc40630SRasesh Mody * 641bdc40630SRasesh Mody * @param p_dev - ecore dev pointer 642bdc40630SRasesh Mody * @param p_ptt 643bdc40630SRasesh Mody * @param p_speed_mask - Bit mask of all supported speeds. 644bdc40630SRasesh Mody * 645bdc40630SRasesh Mody * @return enum _ecore_status_t - 646bdc40630SRasesh Mody * ECORE_SUCCESS - Operation was successful. 647bdc40630SRasesh Mody * ECORE_BUSY - Operation failed 648bdc40630SRasesh Mody */ 649bdc40630SRasesh Mody 650bdc40630SRasesh Mody enum _ecore_status_t ecore_mcp_trans_speed_mask(struct ecore_hwfn *p_hwfn, 651bdc40630SRasesh Mody struct ecore_ptt *p_ptt, 652bdc40630SRasesh Mody u32 *p_speed_mask); 653bdc40630SRasesh Mody 654bdc40630SRasesh Mody /** 655bdc40630SRasesh Mody * @brief Get board configuration. 656bdc40630SRasesh Mody * 657bdc40630SRasesh Mody * @param p_dev - ecore dev pointer 658bdc40630SRasesh Mody * @param p_ptt 659bdc40630SRasesh Mody * @param p_board_config - Board config. 660bdc40630SRasesh Mody * 661bdc40630SRasesh Mody * @return enum _ecore_status_t - 662bdc40630SRasesh Mody * ECORE_SUCCESS - Operation was successful. 663bdc40630SRasesh Mody * ECORE_BUSY - Operation failed 664bdc40630SRasesh Mody */ 665bdc40630SRasesh Mody enum _ecore_status_t ecore_mcp_get_board_config(struct ecore_hwfn *p_hwfn, 666bdc40630SRasesh Mody struct ecore_ptt *p_ptt, 667bdc40630SRasesh Mody u32 *p_board_config); 668bdc40630SRasesh Mody 669bdc40630SRasesh Mody /** 670ec94dbc5SRasesh Mody * @brief - Sends a command to the MCP mailbox. 671ec94dbc5SRasesh Mody * 672ec94dbc5SRasesh Mody * @param p_hwfn - hw function 673ec94dbc5SRasesh Mody * @param p_ptt - PTT required for register access 674ec94dbc5SRasesh Mody * @param cmd - command to be sent to the MCP 675eafbc6fcSRasesh Mody * @param param - Optional param 676eafbc6fcSRasesh Mody * @param o_mcp_resp - The MCP response code (exclude sequence) 677eafbc6fcSRasesh Mody * @param o_mcp_param - Optional parameter provided by the MCP response 678ec94dbc5SRasesh Mody * 679ec94dbc5SRasesh Mody * @return enum _ecore_status_t - 680ec94dbc5SRasesh Mody * ECORE_SUCCESS - operation was successful 681ec94dbc5SRasesh Mody * ECORE_BUSY - operation failed 682ec94dbc5SRasesh Mody */ 683ec94dbc5SRasesh Mody enum _ecore_status_t ecore_mcp_cmd(struct ecore_hwfn *p_hwfn, 684ec94dbc5SRasesh Mody struct ecore_ptt *p_ptt, u32 cmd, u32 param, 685ec94dbc5SRasesh Mody u32 *o_mcp_resp, u32 *o_mcp_param); 686ec94dbc5SRasesh Mody 687ec94dbc5SRasesh Mody /** 688ec94dbc5SRasesh Mody * @brief - drains the nig, allowing completion to pass in case of pauses. 689ec94dbc5SRasesh Mody * (Should be called only from sleepable context) 690ec94dbc5SRasesh Mody * 691ec94dbc5SRasesh Mody * @param p_hwfn 692ec94dbc5SRasesh Mody * @param p_ptt 693ec94dbc5SRasesh Mody */ 694ec94dbc5SRasesh Mody enum _ecore_status_t ecore_mcp_drain(struct ecore_hwfn *p_hwfn, 695ec94dbc5SRasesh Mody struct ecore_ptt *p_ptt); 696ec94dbc5SRasesh Mody 69722d07d93SRasesh Mody #ifndef LINUX_REMOVE 698ec94dbc5SRasesh Mody /** 699ec94dbc5SRasesh Mody * @brief - return the mcp function info of the hw function 700ec94dbc5SRasesh Mody * 701ec94dbc5SRasesh Mody * @param p_hwfn 702ec94dbc5SRasesh Mody * 703ec94dbc5SRasesh Mody * @returns pointer to mcp function info 704ec94dbc5SRasesh Mody */ 705ec94dbc5SRasesh Mody const struct ecore_mcp_function_info 706ec94dbc5SRasesh Mody *ecore_mcp_get_function_info(struct ecore_hwfn *p_hwfn); 70722d07d93SRasesh Mody #endif 708ec94dbc5SRasesh Mody 70922d07d93SRasesh Mody #ifndef LINUX_REMOVE 710ec94dbc5SRasesh Mody /** 711ec94dbc5SRasesh Mody * @brief - count number of function with a matching personality on engine. 712ec94dbc5SRasesh Mody * 713ec94dbc5SRasesh Mody * @param p_hwfn 714ec94dbc5SRasesh Mody * @param p_ptt 715ec94dbc5SRasesh Mody * @param personalities - a bitmask of ecore_pci_personality values 716ec94dbc5SRasesh Mody * 717ec94dbc5SRasesh Mody * @returns the count of all devices on engine whose personality match one of 718ec94dbc5SRasesh Mody * the bitsmasks. 719ec94dbc5SRasesh Mody */ 720ec94dbc5SRasesh Mody int ecore_mcp_get_personality_cnt(struct ecore_hwfn *p_hwfn, 72122d07d93SRasesh Mody struct ecore_ptt *p_ptt, 72222d07d93SRasesh Mody u32 personalities); 72322d07d93SRasesh Mody #endif 724ec94dbc5SRasesh Mody 725ec94dbc5SRasesh Mody /** 726ec94dbc5SRasesh Mody * @brief Get the flash size value 727ec94dbc5SRasesh Mody * 728ec94dbc5SRasesh Mody * @param p_hwfn 729ec94dbc5SRasesh Mody * @param p_ptt 730ec94dbc5SRasesh Mody * @param p_flash_size - flash size in bytes to be filled. 731ec94dbc5SRasesh Mody * 732ec94dbc5SRasesh Mody * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 733ec94dbc5SRasesh Mody */ 734ec94dbc5SRasesh Mody enum _ecore_status_t ecore_mcp_get_flash_size(struct ecore_hwfn *p_hwfn, 735ec94dbc5SRasesh Mody struct ecore_ptt *p_ptt, 736ec94dbc5SRasesh Mody u32 *p_flash_size); 737ec94dbc5SRasesh Mody 738ec94dbc5SRasesh Mody /** 739ec94dbc5SRasesh Mody * @brief Send driver version to MFW 740ec94dbc5SRasesh Mody * 741ec94dbc5SRasesh Mody * @param p_hwfn 742ec94dbc5SRasesh Mody * @param p_ptt 743ec94dbc5SRasesh Mody * @param version - Version value 744ec94dbc5SRasesh Mody * @param name - Protocol driver name 745ec94dbc5SRasesh Mody * 746ec94dbc5SRasesh Mody * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 747ec94dbc5SRasesh Mody */ 748ec94dbc5SRasesh Mody enum _ecore_status_t 749ec94dbc5SRasesh Mody ecore_mcp_send_drv_version(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt, 750ec94dbc5SRasesh Mody struct ecore_mcp_drv_version *p_ver); 751ec94dbc5SRasesh Mody 752ec94dbc5SRasesh Mody /** 753ec94dbc5SRasesh Mody * @brief Read the MFW process kill counter 754ec94dbc5SRasesh Mody * 755ec94dbc5SRasesh Mody * @param p_hwfn 756ec94dbc5SRasesh Mody * @param p_ptt 757ec94dbc5SRasesh Mody * 758ec94dbc5SRasesh Mody * @return u32 759ec94dbc5SRasesh Mody */ 760ec94dbc5SRasesh Mody u32 ecore_get_process_kill_counter(struct ecore_hwfn *p_hwfn, 761ec94dbc5SRasesh Mody struct ecore_ptt *p_ptt); 762ec94dbc5SRasesh Mody 763ec94dbc5SRasesh Mody /** 764ec94dbc5SRasesh Mody * @brief Trigger a recovery process 765ec94dbc5SRasesh Mody * 766ec94dbc5SRasesh Mody * @param p_hwfn 767ec94dbc5SRasesh Mody * @param p_ptt 768ec94dbc5SRasesh Mody * 769ec94dbc5SRasesh Mody * @return enum _ecore_status_t 770ec94dbc5SRasesh Mody */ 771ec94dbc5SRasesh Mody enum _ecore_status_t ecore_start_recovery_process(struct ecore_hwfn *p_hwfn, 772ec94dbc5SRasesh Mody struct ecore_ptt *p_ptt); 773ec94dbc5SRasesh Mody 774ec94dbc5SRasesh Mody /** 77560c78a5eSRasesh Mody * @brief A recovery handler must call this function as its first step. 77660c78a5eSRasesh Mody * It is assumed that the handler is not run from an interrupt context. 77760c78a5eSRasesh Mody * 77860c78a5eSRasesh Mody * @param p_dev 77960c78a5eSRasesh Mody * @param p_ptt 78060c78a5eSRasesh Mody * 78160c78a5eSRasesh Mody * @return enum _ecore_status_t 78260c78a5eSRasesh Mody */ 78360c78a5eSRasesh Mody enum _ecore_status_t ecore_recovery_prolog(struct ecore_dev *p_dev); 78460c78a5eSRasesh Mody 78560c78a5eSRasesh Mody /** 786ec94dbc5SRasesh Mody * @brief Notify MFW about the change in base device properties 787ec94dbc5SRasesh Mody * 788ec94dbc5SRasesh Mody * @param p_hwfn 789ec94dbc5SRasesh Mody * @param p_ptt 790ec94dbc5SRasesh Mody * @param client - ecore client type 791ec94dbc5SRasesh Mody * 792ec94dbc5SRasesh Mody * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 793ec94dbc5SRasesh Mody */ 794ec94dbc5SRasesh Mody enum _ecore_status_t 795ec94dbc5SRasesh Mody ecore_mcp_ov_update_current_config(struct ecore_hwfn *p_hwfn, 796ec94dbc5SRasesh Mody struct ecore_ptt *p_ptt, 797ec94dbc5SRasesh Mody enum ecore_ov_client client); 798ec94dbc5SRasesh Mody 799ec94dbc5SRasesh Mody /** 800ec94dbc5SRasesh Mody * @brief Notify MFW about the driver state 801ec94dbc5SRasesh Mody * 802ec94dbc5SRasesh Mody * @param p_hwfn 803ec94dbc5SRasesh Mody * @param p_ptt 804ec94dbc5SRasesh Mody * @param drv_state - Driver state 805ec94dbc5SRasesh Mody * 806ec94dbc5SRasesh Mody * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 807ec94dbc5SRasesh Mody */ 808ec94dbc5SRasesh Mody enum _ecore_status_t 809ec94dbc5SRasesh Mody ecore_mcp_ov_update_driver_state(struct ecore_hwfn *p_hwfn, 810ec94dbc5SRasesh Mody struct ecore_ptt *p_ptt, 811ec94dbc5SRasesh Mody enum ecore_ov_driver_state drv_state); 812ec94dbc5SRasesh Mody 813ec94dbc5SRasesh Mody /** 814ec94dbc5SRasesh Mody * @brief Read NPIV settings form the MFW 815ec94dbc5SRasesh Mody * 816ec94dbc5SRasesh Mody * @param p_hwfn 817ec94dbc5SRasesh Mody * @param p_ptt 818ec94dbc5SRasesh Mody * @param p_table - Array to hold the FC NPIV data. Client need allocate the 819ec94dbc5SRasesh Mody * required buffer. The field 'count' specifies number of NPIV 820ec94dbc5SRasesh Mody * entries. A value of 0 means the table was not populated. 821ec94dbc5SRasesh Mody * 822ec94dbc5SRasesh Mody * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 823ec94dbc5SRasesh Mody */ 824ec94dbc5SRasesh Mody enum _ecore_status_t 825ec94dbc5SRasesh Mody ecore_mcp_ov_get_fc_npiv(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt, 826ec94dbc5SRasesh Mody struct ecore_fc_npiv_tbl *p_table); 827ec94dbc5SRasesh Mody 828ec94dbc5SRasesh Mody /** 829ec94dbc5SRasesh Mody * @brief Send MTU size to MFW 830ec94dbc5SRasesh Mody * 831ec94dbc5SRasesh Mody * @param p_hwfn 832ec94dbc5SRasesh Mody * @param p_ptt 833ec94dbc5SRasesh Mody * @param mtu - MTU size 834ec94dbc5SRasesh Mody * 835ec94dbc5SRasesh Mody * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 836ec94dbc5SRasesh Mody */ 837ec94dbc5SRasesh Mody enum _ecore_status_t ecore_mcp_ov_update_mtu(struct ecore_hwfn *p_hwfn, 838ec94dbc5SRasesh Mody struct ecore_ptt *p_ptt, u16 mtu); 839ec94dbc5SRasesh Mody 840ec94dbc5SRasesh Mody /** 841ebbc55b8SRasesh Mody * @brief Send MAC address to MFW 842ebbc55b8SRasesh Mody * 843ebbc55b8SRasesh Mody * @param p_hwfn 844ebbc55b8SRasesh Mody * @param p_ptt 845ebbc55b8SRasesh Mody * @param mac - MAC address 846ebbc55b8SRasesh Mody * 847ebbc55b8SRasesh Mody * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 848ebbc55b8SRasesh Mody */ 849ebbc55b8SRasesh Mody enum _ecore_status_t 850ebbc55b8SRasesh Mody ecore_mcp_ov_update_mac(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt, 851ebbc55b8SRasesh Mody u8 *mac); 852ebbc55b8SRasesh Mody 853ebbc55b8SRasesh Mody /** 854ebbc55b8SRasesh Mody * @brief Send eswitch mode to MFW 855ebbc55b8SRasesh Mody * 856ebbc55b8SRasesh Mody * @param p_hwfn 857ebbc55b8SRasesh Mody * @param p_ptt 858ebbc55b8SRasesh Mody * @param eswitch - eswitch mode 859ebbc55b8SRasesh Mody * 860ebbc55b8SRasesh Mody * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 861ebbc55b8SRasesh Mody */ 862ebbc55b8SRasesh Mody enum _ecore_status_t 863ebbc55b8SRasesh Mody ecore_mcp_ov_update_eswitch(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt, 864ebbc55b8SRasesh Mody enum ecore_ov_eswitch eswitch); 865ebbc55b8SRasesh Mody 866ebbc55b8SRasesh Mody /** 867ec94dbc5SRasesh Mody * @brief Set LED status 868ec94dbc5SRasesh Mody * 869ec94dbc5SRasesh Mody * @param p_hwfn 870ec94dbc5SRasesh Mody * @param p_ptt 871ec94dbc5SRasesh Mody * @param mode - LED mode 872ec94dbc5SRasesh Mody * 873ec94dbc5SRasesh Mody * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 874ec94dbc5SRasesh Mody */ 875ec94dbc5SRasesh Mody enum _ecore_status_t ecore_mcp_set_led(struct ecore_hwfn *p_hwfn, 876ec94dbc5SRasesh Mody struct ecore_ptt *p_ptt, 877ec94dbc5SRasesh Mody enum ecore_led_mode mode); 878ec94dbc5SRasesh Mody 879ec94dbc5SRasesh Mody /** 880ec94dbc5SRasesh Mody * @brief Set secure mode 881ec94dbc5SRasesh Mody * 882ec94dbc5SRasesh Mody * @param p_dev 883ec94dbc5SRasesh Mody * @param addr - nvm offset 884ec94dbc5SRasesh Mody * 885ec94dbc5SRasesh Mody * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 886ec94dbc5SRasesh Mody */ 887ec94dbc5SRasesh Mody enum _ecore_status_t ecore_mcp_nvm_set_secure_mode(struct ecore_dev *p_dev, 888ec94dbc5SRasesh Mody u32 addr); 889ec94dbc5SRasesh Mody 890ec94dbc5SRasesh Mody /** 891ec94dbc5SRasesh Mody * @brief Write to phy 892ec94dbc5SRasesh Mody * 893ec94dbc5SRasesh Mody * @param p_dev 894ec94dbc5SRasesh Mody * @param addr - nvm offset 895ec94dbc5SRasesh Mody * @param cmd - nvm command 896ec94dbc5SRasesh Mody * @param p_buf - nvm write buffer 897ec94dbc5SRasesh Mody * @param len - buffer len 898ec94dbc5SRasesh Mody * 899ec94dbc5SRasesh Mody * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 900ec94dbc5SRasesh Mody */ 901ec94dbc5SRasesh Mody enum _ecore_status_t ecore_mcp_phy_write(struct ecore_dev *p_dev, u32 cmd, 902ec94dbc5SRasesh Mody u32 addr, u8 *p_buf, u32 len); 903ec94dbc5SRasesh Mody 904ec94dbc5SRasesh Mody /** 905ec94dbc5SRasesh Mody * @brief Write to nvm 906ec94dbc5SRasesh Mody * 907ec94dbc5SRasesh Mody * @param p_dev 908ec94dbc5SRasesh Mody * @param addr - nvm offset 909ec94dbc5SRasesh Mody * @param cmd - nvm command 910ec94dbc5SRasesh Mody * @param p_buf - nvm write buffer 911ec94dbc5SRasesh Mody * @param len - buffer len 912ec94dbc5SRasesh Mody * 913ec94dbc5SRasesh Mody * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 914ec94dbc5SRasesh Mody */ 915ec94dbc5SRasesh Mody enum _ecore_status_t ecore_mcp_nvm_write(struct ecore_dev *p_dev, u32 cmd, 916ec94dbc5SRasesh Mody u32 addr, u8 *p_buf, u32 len); 917ec94dbc5SRasesh Mody 918ec94dbc5SRasesh Mody /** 919ec94dbc5SRasesh Mody * @brief Put file begin 920ec94dbc5SRasesh Mody * 921ec94dbc5SRasesh Mody * @param p_dev 922ec94dbc5SRasesh Mody * @param addr - nvm offset 923ec94dbc5SRasesh Mody * 924ec94dbc5SRasesh Mody * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 925ec94dbc5SRasesh Mody */ 926ec94dbc5SRasesh Mody enum _ecore_status_t ecore_mcp_nvm_put_file_begin(struct ecore_dev *p_dev, 927ec94dbc5SRasesh Mody u32 addr); 928ec94dbc5SRasesh Mody 929ec94dbc5SRasesh Mody /** 930ec94dbc5SRasesh Mody * @brief Delete file 931ec94dbc5SRasesh Mody * 932ec94dbc5SRasesh Mody * @param p_dev 933ec94dbc5SRasesh Mody * @param addr - nvm offset 934ec94dbc5SRasesh Mody * 935ec94dbc5SRasesh Mody * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 936ec94dbc5SRasesh Mody */ 93722d07d93SRasesh Mody enum _ecore_status_t ecore_mcp_nvm_del_file(struct ecore_dev *p_dev, 93822d07d93SRasesh Mody u32 addr); 939ec94dbc5SRasesh Mody 940ec94dbc5SRasesh Mody /** 941ec94dbc5SRasesh Mody * @brief Check latest response 942ec94dbc5SRasesh Mody * 943ec94dbc5SRasesh Mody * @param p_dev 944ec94dbc5SRasesh Mody * @param p_buf - nvm write buffer 945ec94dbc5SRasesh Mody * 946ec94dbc5SRasesh Mody * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 947ec94dbc5SRasesh Mody */ 948ec94dbc5SRasesh Mody enum _ecore_status_t ecore_mcp_nvm_resp(struct ecore_dev *p_dev, u8 *p_buf); 949ec94dbc5SRasesh Mody 950ec94dbc5SRasesh Mody /** 951ec94dbc5SRasesh Mody * @brief Read from phy 952ec94dbc5SRasesh Mody * 953ec94dbc5SRasesh Mody * @param p_dev 954ec94dbc5SRasesh Mody * @param addr - nvm offset 955ec94dbc5SRasesh Mody * @param cmd - nvm command 956eafbc6fcSRasesh Mody * @param p_buf - nvm read buffer 957ec94dbc5SRasesh Mody * @param len - buffer len 958ec94dbc5SRasesh Mody * 959ec94dbc5SRasesh Mody * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 960ec94dbc5SRasesh Mody */ 961ec94dbc5SRasesh Mody enum _ecore_status_t ecore_mcp_phy_read(struct ecore_dev *p_dev, u32 cmd, 962979582a1SRasesh Mody u32 addr, u8 *p_buf, u32 *p_len); 963ec94dbc5SRasesh Mody 964ec94dbc5SRasesh Mody /** 965ec94dbc5SRasesh Mody * @brief Read from nvm 966ec94dbc5SRasesh Mody * 967ec94dbc5SRasesh Mody * @param p_dev 968ec94dbc5SRasesh Mody * @param addr - nvm offset 969eafbc6fcSRasesh Mody * @param p_buf - nvm read buffer 970ec94dbc5SRasesh Mody * @param len - buffer len 971ec94dbc5SRasesh Mody * 972ec94dbc5SRasesh Mody * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 973ec94dbc5SRasesh Mody */ 974ec94dbc5SRasesh Mody enum _ecore_status_t ecore_mcp_nvm_read(struct ecore_dev *p_dev, u32 addr, 975ec94dbc5SRasesh Mody u8 *p_buf, u32 len); 976ec94dbc5SRasesh Mody 977*2352f348SRasesh Mody struct ecore_nvm_image_att { 978*2352f348SRasesh Mody u32 start_addr; 979*2352f348SRasesh Mody u32 length; 980*2352f348SRasesh Mody }; 981*2352f348SRasesh Mody 982*2352f348SRasesh Mody /** 983*2352f348SRasesh Mody * @brief Allows reading a whole nvram image 984*2352f348SRasesh Mody * 985*2352f348SRasesh Mody * @param p_hwfn 986*2352f348SRasesh Mody * @param image_id - image to get attributes for 987*2352f348SRasesh Mody * @param p_image_att - image attributes structure into which to fill data 988*2352f348SRasesh Mody * 989*2352f348SRasesh Mody * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 990*2352f348SRasesh Mody */ 991*2352f348SRasesh Mody enum _ecore_status_t 992*2352f348SRasesh Mody ecore_mcp_get_nvm_image_att(struct ecore_hwfn *p_hwfn, 993*2352f348SRasesh Mody enum ecore_nvm_images image_id, 994*2352f348SRasesh Mody struct ecore_nvm_image_att *p_image_att); 995*2352f348SRasesh Mody 996*2352f348SRasesh Mody /** 997*2352f348SRasesh Mody * @brief Allows reading a whole nvram image 998*2352f348SRasesh Mody * 999*2352f348SRasesh Mody * @param p_hwfn 1000*2352f348SRasesh Mody * @param image_id - image requested for reading 1001*2352f348SRasesh Mody * @param p_buffer - allocated buffer into which to fill data 1002*2352f348SRasesh Mody * @param buffer_len - length of the allocated buffer. 1003*2352f348SRasesh Mody * 1004*2352f348SRasesh Mody * @return ECORE_SUCCESS if p_buffer now contains the nvram image. 1005*2352f348SRasesh Mody */ 1006*2352f348SRasesh Mody enum _ecore_status_t ecore_mcp_get_nvm_image(struct ecore_hwfn *p_hwfn, 1007*2352f348SRasesh Mody enum ecore_nvm_images image_id, 1008*2352f348SRasesh Mody u8 *p_buffer, u32 buffer_len); 1009*2352f348SRasesh Mody 1010ec94dbc5SRasesh Mody /** 10112292589aSRasesh Mody * @brief - Sends an NVM write command request to the MFW with 10122292589aSRasesh Mody * payload. 10132292589aSRasesh Mody * 10142292589aSRasesh Mody * @param p_hwfn 10152292589aSRasesh Mody * @param p_ptt 10162292589aSRasesh Mody * @param cmd - Command: Either DRV_MSG_CODE_NVM_WRITE_NVRAM or 10172292589aSRasesh Mody * DRV_MSG_CODE_NVM_PUT_FILE_DATA 10182292589aSRasesh Mody * @param param - [0:23] - Offset [24:31] - Size 10192292589aSRasesh Mody * @param o_mcp_resp - MCP response 10202292589aSRasesh Mody * @param o_mcp_param - MCP response param 10212292589aSRasesh Mody * @param i_txn_size - Buffer size 10222292589aSRasesh Mody * @param i_buf - Pointer to the buffer 10232292589aSRasesh Mody * 10242292589aSRasesh Mody * @param return ECORE_SUCCESS upon success. 10252292589aSRasesh Mody */ 10262292589aSRasesh Mody enum _ecore_status_t ecore_mcp_nvm_wr_cmd(struct ecore_hwfn *p_hwfn, 10272292589aSRasesh Mody struct ecore_ptt *p_ptt, 10282292589aSRasesh Mody u32 cmd, 10292292589aSRasesh Mody u32 param, 10302292589aSRasesh Mody u32 *o_mcp_resp, 10312292589aSRasesh Mody u32 *o_mcp_param, 10322292589aSRasesh Mody u32 i_txn_size, 10332292589aSRasesh Mody u32 *i_buf); 10342292589aSRasesh Mody 10352292589aSRasesh Mody /** 10362292589aSRasesh Mody * @brief - Sends an NVM read command request to the MFW to get 10372292589aSRasesh Mody * a buffer. 10382292589aSRasesh Mody * 10392292589aSRasesh Mody * @param p_hwfn 10402292589aSRasesh Mody * @param p_ptt 10412292589aSRasesh Mody * @param cmd - Command: DRV_MSG_CODE_NVM_GET_FILE_DATA or 10422292589aSRasesh Mody * DRV_MSG_CODE_NVM_READ_NVRAM commands 10432292589aSRasesh Mody * @param param - [0:23] - Offset [24:31] - Size 10442292589aSRasesh Mody * @param o_mcp_resp - MCP response 10452292589aSRasesh Mody * @param o_mcp_param - MCP response param 10462292589aSRasesh Mody * @param o_txn_size - Buffer size output 10472292589aSRasesh Mody * @param o_buf - Pointer to the buffer returned by the MFW. 10482292589aSRasesh Mody * 10492292589aSRasesh Mody * @param return ECORE_SUCCESS upon success. 10502292589aSRasesh Mody */ 10512292589aSRasesh Mody enum _ecore_status_t ecore_mcp_nvm_rd_cmd(struct ecore_hwfn *p_hwfn, 10522292589aSRasesh Mody struct ecore_ptt *p_ptt, 10532292589aSRasesh Mody u32 cmd, 10542292589aSRasesh Mody u32 param, 10552292589aSRasesh Mody u32 *o_mcp_resp, 10562292589aSRasesh Mody u32 *o_mcp_param, 10572292589aSRasesh Mody u32 *o_txn_size, 10582292589aSRasesh Mody u32 *o_buf); 10592292589aSRasesh Mody 10602292589aSRasesh Mody /** 1061ec94dbc5SRasesh Mody * @brief Read from sfp 1062ec94dbc5SRasesh Mody * 1063ec94dbc5SRasesh Mody * @param p_hwfn - hw function 1064ec94dbc5SRasesh Mody * @param p_ptt - PTT required for register access 1065ec94dbc5SRasesh Mody * @param port - transceiver port 1066ec94dbc5SRasesh Mody * @param addr - I2C address 1067ec94dbc5SRasesh Mody * @param offset - offset in sfp 1068ec94dbc5SRasesh Mody * @param len - buffer length 1069ec94dbc5SRasesh Mody * @param p_buf - buffer to read into 1070ec94dbc5SRasesh Mody * 1071ec94dbc5SRasesh Mody * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 1072ec94dbc5SRasesh Mody */ 1073ec94dbc5SRasesh Mody enum _ecore_status_t ecore_mcp_phy_sfp_read(struct ecore_hwfn *p_hwfn, 1074ec94dbc5SRasesh Mody struct ecore_ptt *p_ptt, 1075ec94dbc5SRasesh Mody u32 port, u32 addr, u32 offset, 1076ec94dbc5SRasesh Mody u32 len, u8 *p_buf); 1077ec94dbc5SRasesh Mody 1078ec94dbc5SRasesh Mody /** 1079ec94dbc5SRasesh Mody * @brief Write to sfp 1080ec94dbc5SRasesh Mody * 1081ec94dbc5SRasesh Mody * @param p_hwfn - hw function 1082ec94dbc5SRasesh Mody * @param p_ptt - PTT required for register access 1083ec94dbc5SRasesh Mody * @param port - transceiver port 1084ec94dbc5SRasesh Mody * @param addr - I2C address 1085ec94dbc5SRasesh Mody * @param offset - offset in sfp 1086ec94dbc5SRasesh Mody * @param len - buffer length 1087ec94dbc5SRasesh Mody * @param p_buf - buffer to write from 1088ec94dbc5SRasesh Mody * 1089ec94dbc5SRasesh Mody * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 1090ec94dbc5SRasesh Mody */ 1091ec94dbc5SRasesh Mody enum _ecore_status_t ecore_mcp_phy_sfp_write(struct ecore_hwfn *p_hwfn, 1092ec94dbc5SRasesh Mody struct ecore_ptt *p_ptt, 1093ec94dbc5SRasesh Mody u32 port, u32 addr, u32 offset, 1094ec94dbc5SRasesh Mody u32 len, u8 *p_buf); 1095ec94dbc5SRasesh Mody 1096ec94dbc5SRasesh Mody /** 1097ec94dbc5SRasesh Mody * @brief Gpio read 1098ec94dbc5SRasesh Mody * 1099ec94dbc5SRasesh Mody * @param p_hwfn - hw function 1100ec94dbc5SRasesh Mody * @param p_ptt - PTT required for register access 1101ec94dbc5SRasesh Mody * @param gpio - gpio number 1102ec94dbc5SRasesh Mody * @param gpio_val - value read from gpio 1103ec94dbc5SRasesh Mody * 1104ec94dbc5SRasesh Mody * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 1105ec94dbc5SRasesh Mody */ 1106ec94dbc5SRasesh Mody enum _ecore_status_t ecore_mcp_gpio_read(struct ecore_hwfn *p_hwfn, 1107ec94dbc5SRasesh Mody struct ecore_ptt *p_ptt, 1108ec94dbc5SRasesh Mody u16 gpio, u32 *gpio_val); 1109ec94dbc5SRasesh Mody 1110ec94dbc5SRasesh Mody /** 1111ec94dbc5SRasesh Mody * @brief Gpio write 1112ec94dbc5SRasesh Mody * 1113ec94dbc5SRasesh Mody * @param p_hwfn - hw function 1114ec94dbc5SRasesh Mody * @param p_ptt - PTT required for register access 1115ec94dbc5SRasesh Mody * @param gpio - gpio number 1116ec94dbc5SRasesh Mody * @param gpio_val - value to write to gpio 1117ec94dbc5SRasesh Mody * 1118ec94dbc5SRasesh Mody * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 1119ec94dbc5SRasesh Mody */ 1120ec94dbc5SRasesh Mody enum _ecore_status_t ecore_mcp_gpio_write(struct ecore_hwfn *p_hwfn, 1121ec94dbc5SRasesh Mody struct ecore_ptt *p_ptt, 1122ec94dbc5SRasesh Mody u16 gpio, u16 gpio_val); 112322d07d93SRasesh Mody 1124252b88b5SHarish Patil /** 1125252b88b5SHarish Patil * @brief Gpio get information 1126252b88b5SHarish Patil * 1127252b88b5SHarish Patil * @param p_hwfn - hw function 1128252b88b5SHarish Patil * @param p_ptt - PTT required for register access 1129252b88b5SHarish Patil * @param gpio - gpio number 1130252b88b5SHarish Patil * @param gpio_direction - gpio is output (0) or input (1) 1131252b88b5SHarish Patil * @param gpio_ctrl - gpio control is uninitialized (0), 1132252b88b5SHarish Patil * path 0 (1), path 1 (2) or shared(3) 1133252b88b5SHarish Patil * 1134252b88b5SHarish Patil * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 1135252b88b5SHarish Patil */ 1136252b88b5SHarish Patil enum _ecore_status_t ecore_mcp_gpio_info(struct ecore_hwfn *p_hwfn, 1137252b88b5SHarish Patil struct ecore_ptt *p_ptt, 1138252b88b5SHarish Patil u16 gpio, u32 *gpio_direction, 1139252b88b5SHarish Patil u32 *gpio_ctrl); 1140252b88b5SHarish Patil 1141252b88b5SHarish Patil /** 1142252b88b5SHarish Patil * @brief Bist register test 1143252b88b5SHarish Patil * 1144252b88b5SHarish Patil * @param p_hwfn - hw function 1145252b88b5SHarish Patil * @param p_ptt - PTT required for register access 1146252b88b5SHarish Patil * 1147252b88b5SHarish Patil * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 1148252b88b5SHarish Patil */ 1149252b88b5SHarish Patil enum _ecore_status_t ecore_mcp_bist_register_test(struct ecore_hwfn *p_hwfn, 1150252b88b5SHarish Patil struct ecore_ptt *p_ptt); 1151252b88b5SHarish Patil 1152252b88b5SHarish Patil /** 1153252b88b5SHarish Patil * @brief Bist clock test 1154252b88b5SHarish Patil * 1155252b88b5SHarish Patil * @param p_hwfn - hw function 1156252b88b5SHarish Patil * @param p_ptt - PTT required for register access 1157252b88b5SHarish Patil * 1158252b88b5SHarish Patil * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 1159252b88b5SHarish Patil */ 1160252b88b5SHarish Patil enum _ecore_status_t ecore_mcp_bist_clock_test(struct ecore_hwfn *p_hwfn, 1161252b88b5SHarish Patil struct ecore_ptt *p_ptt); 1162252b88b5SHarish Patil 1163252b88b5SHarish Patil /** 1164252b88b5SHarish Patil * @brief Bist nvm test - get number of images 1165252b88b5SHarish Patil * 1166252b88b5SHarish Patil * @param p_hwfn - hw function 1167252b88b5SHarish Patil * @param p_ptt - PTT required for register access 1168252b88b5SHarish Patil * @param num_images - number of images if operation was 1169252b88b5SHarish Patil * successful. 0 if not. 1170252b88b5SHarish Patil * 1171252b88b5SHarish Patil * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 1172252b88b5SHarish Patil */ 117322d07d93SRasesh Mody enum _ecore_status_t ecore_mcp_bist_nvm_test_get_num_images( 117422d07d93SRasesh Mody struct ecore_hwfn *p_hwfn, 1175252b88b5SHarish Patil struct ecore_ptt *p_ptt, 1176252b88b5SHarish Patil u32 *num_images); 1177252b88b5SHarish Patil 1178252b88b5SHarish Patil /** 1179252b88b5SHarish Patil * @brief Bist nvm test - get image attributes by index 1180252b88b5SHarish Patil * 1181252b88b5SHarish Patil * @param p_hwfn - hw function 1182252b88b5SHarish Patil * @param p_ptt - PTT required for register access 1183252b88b5SHarish Patil * @param p_image_att - Attributes of image 1184252b88b5SHarish Patil * @param image_index - Index of image to get information for 1185252b88b5SHarish Patil * 1186252b88b5SHarish Patil * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 1187252b88b5SHarish Patil */ 118822d07d93SRasesh Mody enum _ecore_status_t ecore_mcp_bist_nvm_test_get_image_att( 118922d07d93SRasesh Mody struct ecore_hwfn *p_hwfn, 1190252b88b5SHarish Patil struct ecore_ptt *p_ptt, 1191252b88b5SHarish Patil struct bist_nvm_image_att *p_image_att, 1192252b88b5SHarish Patil u32 image_index); 1193252b88b5SHarish Patil 1194252b88b5SHarish Patil /** 1195252b88b5SHarish Patil * @brief ecore_mcp_get_temperature_info - get the status of the temperature 1196252b88b5SHarish Patil * sensors 1197252b88b5SHarish Patil * 1198252b88b5SHarish Patil * @param p_hwfn - hw function 1199252b88b5SHarish Patil * @param p_ptt - PTT required for register access 1200252b88b5SHarish Patil * @param p_temp_status - A pointer to an ecore_temperature_info structure to 1201252b88b5SHarish Patil * be filled with the temperature data 1202252b88b5SHarish Patil * 1203252b88b5SHarish Patil * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 1204252b88b5SHarish Patil */ 1205252b88b5SHarish Patil enum _ecore_status_t 1206252b88b5SHarish Patil ecore_mcp_get_temperature_info(struct ecore_hwfn *p_hwfn, 1207252b88b5SHarish Patil struct ecore_ptt *p_ptt, 1208252b88b5SHarish Patil struct ecore_temperature_info *p_temp_info); 120922d07d93SRasesh Mody 1210252b88b5SHarish Patil /** 1211252b88b5SHarish Patil * @brief Get MBA versions - get MBA sub images versions 1212252b88b5SHarish Patil * 1213252b88b5SHarish Patil * @param p_hwfn - hw function 1214252b88b5SHarish Patil * @param p_ptt - PTT required for register access 1215252b88b5SHarish Patil * @param p_mba_vers - MBA versions array to fill 1216252b88b5SHarish Patil * 1217252b88b5SHarish Patil * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 1218252b88b5SHarish Patil */ 1219252b88b5SHarish Patil enum _ecore_status_t ecore_mcp_get_mba_versions( 1220252b88b5SHarish Patil struct ecore_hwfn *p_hwfn, 1221252b88b5SHarish Patil struct ecore_ptt *p_ptt, 1222252b88b5SHarish Patil struct ecore_mba_vers *p_mba_vers); 1223252b88b5SHarish Patil 1224252b88b5SHarish Patil /** 1225252b88b5SHarish Patil * @brief Count memory ecc events 1226252b88b5SHarish Patil * 1227252b88b5SHarish Patil * @param p_hwfn - hw function 1228252b88b5SHarish Patil * @param p_ptt - PTT required for register access 1229252b88b5SHarish Patil * @param num_events - number of memory ecc events 1230252b88b5SHarish Patil * 1231252b88b5SHarish Patil * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 1232252b88b5SHarish Patil */ 1233252b88b5SHarish Patil enum _ecore_status_t ecore_mcp_mem_ecc_events(struct ecore_hwfn *p_hwfn, 1234252b88b5SHarish Patil struct ecore_ptt *p_ptt, 1235252b88b5SHarish Patil u64 *num_events); 1236252b88b5SHarish Patil 1237f8da0cd6SRasesh Mody struct ecore_mdump_info { 1238f8da0cd6SRasesh Mody u32 reason; 1239f8da0cd6SRasesh Mody u32 version; 1240f8da0cd6SRasesh Mody u32 config; 1241f8da0cd6SRasesh Mody u32 epoch; 1242f8da0cd6SRasesh Mody u32 num_of_logs; 1243f8da0cd6SRasesh Mody u32 valid_logs; 1244f8da0cd6SRasesh Mody }; 1245f8da0cd6SRasesh Mody 1246301ea2d7SRasesh Mody /** 1247f8da0cd6SRasesh Mody * @brief - Gets the MFW crash dump configuration and logs info. 1248301ea2d7SRasesh Mody * 1249f8da0cd6SRasesh Mody * @param p_hwfn 1250f8da0cd6SRasesh Mody * @param p_ptt 1251f8da0cd6SRasesh Mody * @param p_mdump_info 1252301ea2d7SRasesh Mody * 1253f8da0cd6SRasesh Mody * @param return ECORE_SUCCESS upon success. 1254301ea2d7SRasesh Mody */ 1255f8da0cd6SRasesh Mody enum _ecore_status_t 1256f8da0cd6SRasesh Mody ecore_mcp_mdump_get_info(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt, 1257f8da0cd6SRasesh Mody struct ecore_mdump_info *p_mdump_info); 1258f8da0cd6SRasesh Mody 1259f8da0cd6SRasesh Mody /** 1260f8da0cd6SRasesh Mody * @brief - Clears the MFW crash dump logs. 1261f8da0cd6SRasesh Mody * 1262f8da0cd6SRasesh Mody * @param p_hwfn 1263f8da0cd6SRasesh Mody * @param p_ptt 1264f8da0cd6SRasesh Mody * 1265f8da0cd6SRasesh Mody * @param return ECORE_SUCCESS upon success. 1266f8da0cd6SRasesh Mody */ 1267f8da0cd6SRasesh Mody enum _ecore_status_t ecore_mcp_mdump_clear_logs(struct ecore_hwfn *p_hwfn, 1268f8da0cd6SRasesh Mody struct ecore_ptt *p_ptt); 1269301ea2d7SRasesh Mody 1270ea7c1c6fSRasesh Mody /** 1271a064d7d2SRasesh Mody * @brief - Clear the mdump retained data. 1272a064d7d2SRasesh Mody * 1273a064d7d2SRasesh Mody * @param p_hwfn 1274a064d7d2SRasesh Mody * @param p_ptt 1275a064d7d2SRasesh Mody * 1276a064d7d2SRasesh Mody * @param return ECORE_SUCCESS upon success. 1277a064d7d2SRasesh Mody */ 1278a064d7d2SRasesh Mody enum _ecore_status_t ecore_mcp_mdump_clr_retain(struct ecore_hwfn *p_hwfn, 1279a064d7d2SRasesh Mody struct ecore_ptt *p_ptt); 1280a064d7d2SRasesh Mody 1281a064d7d2SRasesh Mody /** 1282ea7c1c6fSRasesh Mody * @brief - Processes the TLV request from MFW i.e., get the required TLV info 1283ea7c1c6fSRasesh Mody * from the ecore client and send it to the MFW. 1284ea7c1c6fSRasesh Mody * 1285ea7c1c6fSRasesh Mody * @param p_hwfn 1286ea7c1c6fSRasesh Mody * @param p_ptt 1287ea7c1c6fSRasesh Mody * 1288ea7c1c6fSRasesh Mody * @param return ECORE_SUCCESS upon success. 1289ea7c1c6fSRasesh Mody */ 1290ea7c1c6fSRasesh Mody enum _ecore_status_t ecore_mfw_process_tlv_req(struct ecore_hwfn *p_hwfn, 1291ea7c1c6fSRasesh Mody struct ecore_ptt *p_ptt); 1292ea7c1c6fSRasesh Mody 1293652ee28aSRasesh Mody 1294652ee28aSRasesh Mody /** 1295652ee28aSRasesh Mody * @brief - Return whether management firmware support smart AN 1296652ee28aSRasesh Mody * 1297652ee28aSRasesh Mody * @param p_hwfn 1298652ee28aSRasesh Mody * 1299652ee28aSRasesh Mody * @return bool - true iff feature is supported. 1300652ee28aSRasesh Mody */ 1301652ee28aSRasesh Mody bool ecore_mcp_is_smart_an_supported(struct ecore_hwfn *p_hwfn); 1302ec94dbc5SRasesh Mody #endif 1303