mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-27 13:33:40 +00:00
5a5bba053d
Broadcom bnxt L2 driver support. Used by the Broadcom iproc platforms. Signed-off-by: Bharat Gooty <bharat.gooty@broadcom.com> Reviewed-by: Ramon Fried <rfried.dev@gmail.com> Signed-off-by: Roman Bacik <roman.bacik@broadcom.com>
889 lines
23 KiB
C
889 lines
23 KiB
C
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
/*
|
|
* Copyright 2019-2021 Broadcom.
|
|
*/
|
|
|
|
#ifndef _BNXT_HSI_H_
|
|
#define _BNXT_HSI_H_
|
|
|
|
/* input (size:128b/16B) */
|
|
struct input {
|
|
__le16 req_type;
|
|
__le16 cmpl_ring;
|
|
__le16 seq_id;
|
|
__le16 target_id;
|
|
__le64 resp_addr;
|
|
};
|
|
|
|
/* output (size:64b/8B) */
|
|
struct output {
|
|
__le16 error_code;
|
|
__le16 req_type;
|
|
__le16 seq_id;
|
|
__le16 resp_len;
|
|
};
|
|
|
|
/* hwrm_short_input (size:128b/16B) */
|
|
struct hwrm_short_input {
|
|
__le16 req_type;
|
|
__le16 signature;
|
|
#define SHORT_REQ_SIGNATURE_SHORT_CMD 0x4321UL
|
|
__le16 unused_0;
|
|
__le16 size;
|
|
__le64 req_addr;
|
|
};
|
|
|
|
#define HWRM_VER_GET 0x0UL
|
|
#define HWRM_FUNC_RESET 0x11UL
|
|
#define HWRM_FUNC_QCAPS 0x15UL
|
|
#define HWRM_FUNC_QCFG 0x16UL
|
|
#define HWRM_FUNC_CFG 0x17UL
|
|
#define HWRM_FUNC_DRV_UNRGTR 0x1aUL
|
|
#define HWRM_FUNC_DRV_RGTR 0x1dUL
|
|
#define HWRM_PORT_PHY_CFG 0x20UL
|
|
#define HWRM_PORT_MAC_CFG 0x21UL
|
|
#define HWRM_PORT_PHY_QCFG 0x27UL
|
|
#define HWRM_VNIC_ALLOC 0x40UL
|
|
#define HWRM_VNIC_FREE 0x41UL
|
|
#define HWRM_VNIC_CFG 0x42UL
|
|
#define HWRM_RING_ALLOC 0x50UL
|
|
#define HWRM_RING_FREE 0x51UL
|
|
#define HWRM_RING_GRP_ALLOC 0x60UL
|
|
#define HWRM_RING_GRP_FREE 0x61UL
|
|
#define HWRM_CFA_L2_FILTER_ALLOC 0x90UL
|
|
#define HWRM_CFA_L2_FILTER_FREE 0x91UL
|
|
#define HWRM_CFA_L2_SET_RX_MASK 0x93UL
|
|
#define HWRM_STAT_CTX_ALLOC 0xb0UL
|
|
#define HWRM_STAT_CTX_FREE 0xb1UL
|
|
#define HWRM_FUNC_RESOURCE_QCAPS 0x190UL
|
|
#define HWRM_NVM_FLUSH 0xfff0UL
|
|
#define HWRM_NVM_GET_VARIABLE 0xfff1UL
|
|
#define HWRM_NVM_SET_VARIABLE 0xfff2UL
|
|
|
|
#define HWRM_NA_SIGNATURE ((__le32)(-1))
|
|
#define HWRM_MAX_REQ_LEN 128
|
|
#define HWRM_VERSION_MAJOR 1
|
|
#define HWRM_VERSION_MINOR 10
|
|
#define HWRM_VERSION_UPDATE 0
|
|
|
|
/* hwrm_ver_get_input (size:192b/24B) */
|
|
struct hwrm_ver_get_input {
|
|
__le16 req_type;
|
|
__le16 cmpl_ring;
|
|
__le16 seq_id;
|
|
__le16 target_id;
|
|
__le64 resp_addr;
|
|
u8 hwrm_intf_maj;
|
|
u8 hwrm_intf_min;
|
|
u8 hwrm_intf_upd;
|
|
u8 unused_0[5];
|
|
};
|
|
|
|
/* hwrm_ver_get_output (size:1408b/176B) */
|
|
struct hwrm_ver_get_output {
|
|
__le16 error_code;
|
|
__le16 req_type;
|
|
__le16 seq_id;
|
|
__le16 resp_len;
|
|
u8 hwrm_intf_maj_8b;
|
|
u8 hwrm_intf_min_8b;
|
|
u8 hwrm_intf_upd_8b;
|
|
u8 hwrm_intf_rsvd_8b;
|
|
u8 hwrm_fw_maj_8b;
|
|
u8 hwrm_fw_min_8b;
|
|
u8 hwrm_fw_bld_8b;
|
|
u8 hwrm_fw_rsvd_8b;
|
|
u8 mgmt_fw_maj_8b;
|
|
u8 mgmt_fw_min_8b;
|
|
u8 mgmt_fw_bld_8b;
|
|
u8 mgmt_fw_rsvd_8b;
|
|
u8 netctrl_fw_maj_8b;
|
|
u8 netctrl_fw_min_8b;
|
|
u8 netctrl_fw_bld_8b;
|
|
u8 netctrl_fw_rsvd_8b;
|
|
__le32 dev_caps_cfg;
|
|
#define VER_GET_RESP_DEV_CAPS_CFG_SHORT_CMD_SUPPORTED 0x4UL
|
|
#define VER_GET_RESP_DEV_CAPS_CFG_SHORT_CMD_REQUIRED 0x8UL
|
|
u8 roce_fw_maj_8b;
|
|
u8 roce_fw_min_8b;
|
|
u8 roce_fw_bld_8b;
|
|
u8 roce_fw_rsvd_8b;
|
|
char hwrm_fw_name[16];
|
|
char mgmt_fw_name[16];
|
|
char netctrl_fw_name[16];
|
|
u8 reserved2[16];
|
|
char roce_fw_name[16];
|
|
__le16 chip_num;
|
|
u8 chip_rev;
|
|
u8 chip_metal;
|
|
u8 chip_bond_id;
|
|
u8 chip_platform_type;
|
|
__le16 max_req_win_len;
|
|
__le16 max_resp_len;
|
|
__le16 def_req_timeout;
|
|
u8 flags;
|
|
u8 unused_0[2];
|
|
u8 always_1;
|
|
__le16 hwrm_intf_major;
|
|
__le16 hwrm_intf_minor;
|
|
__le16 hwrm_intf_build;
|
|
__le16 hwrm_intf_patch;
|
|
__le16 hwrm_fw_major;
|
|
__le16 hwrm_fw_minor;
|
|
__le16 hwrm_fw_build;
|
|
__le16 hwrm_fw_patch;
|
|
__le16 mgmt_fw_major;
|
|
__le16 mgmt_fw_minor;
|
|
__le16 mgmt_fw_build;
|
|
__le16 mgmt_fw_patch;
|
|
__le16 netctrl_fw_major;
|
|
__le16 netctrl_fw_minor;
|
|
__le16 netctrl_fw_build;
|
|
__le16 netctrl_fw_patch;
|
|
__le16 roce_fw_major;
|
|
__le16 roce_fw_minor;
|
|
__le16 roce_fw_build;
|
|
__le16 roce_fw_patch;
|
|
__le16 max_ext_req_len;
|
|
u8 unused_1[5];
|
|
u8 valid;
|
|
};
|
|
|
|
/* hwrm_async_event_cmpl (size:128b/16B) */
|
|
struct hwrm_async_event_cmpl {
|
|
__le16 type;
|
|
__le16 event_id;
|
|
#define ASYNC_EVENT_CMPL_EVENT_ID_LINK_STATUS_CHANGE 0x0UL
|
|
__le32 event_data2;
|
|
u8 opaque_v;
|
|
u8 timestamp_lo;
|
|
__le16 timestamp_hi;
|
|
__le32 event_data1;
|
|
};
|
|
|
|
/* hwrm_func_reset_input (size:192b/24B) */
|
|
struct hwrm_func_reset_input {
|
|
__le16 req_type;
|
|
__le16 cmpl_ring;
|
|
__le16 seq_id;
|
|
__le16 target_id;
|
|
__le64 resp_addr;
|
|
__le32 enables;
|
|
__le16 vf_id;
|
|
u8 func_reset_level;
|
|
#define FUNC_RESET_REQ_FUNC_RESET_LEVEL_RESETME 0x1UL
|
|
u8 unused_0;
|
|
};
|
|
|
|
/* hwrm_func_qcaps_input (size:192b/24B) */
|
|
struct hwrm_func_qcaps_input {
|
|
__le16 req_type;
|
|
__le16 cmpl_ring;
|
|
__le16 seq_id;
|
|
__le16 target_id;
|
|
__le64 resp_addr;
|
|
__le16 fid;
|
|
u8 unused_0[6];
|
|
};
|
|
|
|
/* hwrm_func_qcaps_output (size:640b/80B) */
|
|
struct hwrm_func_qcaps_output {
|
|
__le16 error_code;
|
|
__le16 req_type;
|
|
__le16 seq_id;
|
|
__le16 resp_len;
|
|
__le16 fid;
|
|
__le16 port_id;
|
|
__le32 flags;
|
|
u8 mac_address[6];
|
|
__le16 max_rsscos_ctx;
|
|
__le16 max_cmpl_rings;
|
|
__le16 max_tx_rings;
|
|
__le16 max_rx_rings;
|
|
__le16 max_l2_ctxs;
|
|
__le16 max_vnics;
|
|
__le16 first_vf_id;
|
|
__le16 max_vfs;
|
|
__le16 max_stat_ctx;
|
|
__le32 max_encap_records;
|
|
__le32 max_decap_records;
|
|
__le32 max_tx_em_flows;
|
|
__le32 max_tx_wm_flows;
|
|
__le32 max_rx_em_flows;
|
|
__le32 max_rx_wm_flows;
|
|
__le32 max_mcast_filters;
|
|
__le32 max_flow_id;
|
|
__le32 max_hw_ring_grps;
|
|
__le16 max_sp_tx_rings;
|
|
u8 unused_0;
|
|
u8 valid;
|
|
};
|
|
|
|
/* hwrm_func_qcfg_input (size:192b/24B) */
|
|
struct hwrm_func_qcfg_input {
|
|
__le16 req_type;
|
|
__le16 cmpl_ring;
|
|
__le16 seq_id;
|
|
__le16 target_id;
|
|
__le64 resp_addr;
|
|
__le16 fid;
|
|
u8 unused_0[6];
|
|
};
|
|
|
|
/* hwrm_func_qcfg_output (size:704b/88B) */
|
|
struct hwrm_func_qcfg_output {
|
|
__le16 error_code;
|
|
__le16 req_type;
|
|
__le16 seq_id;
|
|
__le16 resp_len;
|
|
__le16 fid;
|
|
__le16 port_id;
|
|
__le16 vlan;
|
|
__le16 flags;
|
|
#define FUNC_QCFG_RESP_FLAGS_MULTI_HOST 0x20UL
|
|
u8 mac_address[6];
|
|
__le16 pci_id;
|
|
__le16 alloc_rsscos_ctx;
|
|
__le16 alloc_cmpl_rings;
|
|
__le16 alloc_tx_rings;
|
|
__le16 alloc_rx_rings;
|
|
__le16 alloc_l2_ctx;
|
|
__le16 alloc_vnics;
|
|
__le16 mtu;
|
|
__le16 mru;
|
|
__le16 stat_ctx_id;
|
|
u8 port_partition_type;
|
|
#define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR1_0 0x2UL
|
|
u8 port_pf_cnt;
|
|
__le16 dflt_vnic_id;
|
|
__le16 max_mtu_configured;
|
|
__le32 min_bw;
|
|
__le32 max_bw;
|
|
u8 evb_mode;
|
|
u8 options;
|
|
__le16 alloc_vfs;
|
|
__le32 alloc_mcast_filters;
|
|
__le32 alloc_hw_ring_grps;
|
|
__le16 alloc_sp_tx_rings;
|
|
__le16 alloc_stat_ctx;
|
|
__le16 alloc_msix;
|
|
__le16 registered_vfs;
|
|
u8 unused_1[3];
|
|
u8 always_1;
|
|
__le32 reset_addr_poll;
|
|
u8 unused_2[3];
|
|
u8 valid;
|
|
};
|
|
|
|
/* hwrm_func_cfg_input (size:704b/88B) */
|
|
struct hwrm_func_cfg_input {
|
|
__le16 req_type;
|
|
__le16 cmpl_ring;
|
|
__le16 seq_id;
|
|
__le16 target_id;
|
|
__le64 resp_addr;
|
|
__le16 fid;
|
|
__le16 num_msix;
|
|
__le32 flags;
|
|
__le32 enables;
|
|
#define FUNC_CFG_REQ_ENABLES_NUM_CMPL_RINGS 0x8UL
|
|
#define FUNC_CFG_REQ_ENABLES_NUM_TX_RINGS 0x10UL
|
|
#define FUNC_CFG_REQ_ENABLES_NUM_RX_RINGS 0x20UL
|
|
#define FUNC_CFG_REQ_ENABLES_NUM_STAT_CTXS 0x100UL
|
|
#define FUNC_CFG_REQ_ENABLES_ASYNC_EVENT_CR 0x4000UL
|
|
#define FUNC_CFG_REQ_ENABLES_NUM_HW_RING_GRPS 0x80000UL
|
|
__le16 mtu;
|
|
__le16 mru;
|
|
__le16 num_rsscos_ctxs;
|
|
__le16 num_cmpl_rings;
|
|
__le16 num_tx_rings;
|
|
__le16 num_rx_rings;
|
|
__le16 num_l2_ctxs;
|
|
__le16 num_vnics;
|
|
__le16 num_stat_ctxs;
|
|
__le16 num_hw_ring_grps;
|
|
u8 dflt_mac_addr[6];
|
|
__le16 dflt_vlan;
|
|
__be32 dflt_ip_addr[4];
|
|
__le32 min_bw;
|
|
__le32 max_bw;
|
|
__le16 async_event_cr;
|
|
u8 vlan_antispoof_mode;
|
|
u8 allowed_vlan_pris;
|
|
u8 evb_mode;
|
|
u8 options;
|
|
__le16 num_mcast_filters;
|
|
};
|
|
|
|
/* hwrm_func_drv_rgtr_input (size:896b/112B) */
|
|
struct hwrm_func_drv_rgtr_input {
|
|
__le16 req_type;
|
|
__le16 cmpl_ring;
|
|
__le16 seq_id;
|
|
__le16 target_id;
|
|
__le64 resp_addr;
|
|
__le32 flags;
|
|
__le32 enables;
|
|
#define FUNC_DRV_RGTR_REQ_ENABLES_OS_TYPE 0x1UL
|
|
#define FUNC_DRV_RGTR_REQ_ENABLES_VER 0x2UL
|
|
#define FUNC_DRV_RGTR_REQ_ENABLES_ASYNC_EVENT_FWD 0x10UL
|
|
__le16 os_type;
|
|
#define FUNC_DRV_RGTR_REQ_OS_TYPE_OTHER 0x1UL
|
|
u8 ver_maj_8b;
|
|
u8 ver_min_8b;
|
|
u8 ver_upd_8b;
|
|
u8 unused_0[3];
|
|
__le32 timestamp;
|
|
u8 unused_1[4];
|
|
__le32 vf_req_fwd[8];
|
|
__le32 async_event_fwd[8];
|
|
__le16 ver_maj;
|
|
__le16 ver_min;
|
|
__le16 ver_upd;
|
|
__le16 ver_patch;
|
|
};
|
|
|
|
/* hwrm_func_drv_unrgtr_input (size:192b/24B) */
|
|
struct hwrm_func_drv_unrgtr_input {
|
|
__le16 req_type;
|
|
__le16 cmpl_ring;
|
|
__le16 seq_id;
|
|
__le16 target_id;
|
|
__le64 resp_addr;
|
|
__le32 flags;
|
|
#define FUNC_DRV_UNRGTR_REQ_FLAGS_PREPARE_FOR_SHUTDOWN 0x1UL
|
|
u8 unused_0[4];
|
|
};
|
|
|
|
/* hwrm_func_resource_qcaps_input (size:192b/24B) */
|
|
struct hwrm_func_resource_qcaps_input {
|
|
__le16 req_type;
|
|
__le16 cmpl_ring;
|
|
__le16 seq_id;
|
|
__le16 target_id;
|
|
__le64 resp_addr;
|
|
__le16 fid;
|
|
u8 unused_0[6];
|
|
};
|
|
|
|
/* hwrm_func_resource_qcaps_output (size:448b/56B) */
|
|
struct hwrm_func_resource_qcaps_output {
|
|
__le16 error_code;
|
|
__le16 req_type;
|
|
__le16 seq_id;
|
|
__le16 resp_len;
|
|
__le16 max_vfs;
|
|
__le16 max_msix;
|
|
__le16 vf_reservation_strategy;
|
|
__le16 min_rsscos_ctx;
|
|
__le16 max_rsscos_ctx;
|
|
__le16 min_cmpl_rings;
|
|
__le16 max_cmpl_rings;
|
|
__le16 min_tx_rings;
|
|
__le16 max_tx_rings;
|
|
__le16 min_rx_rings;
|
|
__le16 max_rx_rings;
|
|
__le16 min_l2_ctxs;
|
|
__le16 max_l2_ctxs;
|
|
__le16 min_vnics;
|
|
__le16 max_vnics;
|
|
__le16 min_stat_ctx;
|
|
__le16 max_stat_ctx;
|
|
__le16 min_hw_ring_grps;
|
|
__le16 max_hw_ring_grps;
|
|
__le16 max_tx_scheduler_inputs;
|
|
__le16 flags;
|
|
u8 unused_0[5];
|
|
u8 valid;
|
|
};
|
|
|
|
/* hwrm_func_vlan_qcfg_input (size:192b/24B) */
|
|
struct hwrm_func_vlan_qcfg_input {
|
|
__le16 req_type;
|
|
__le16 cmpl_ring;
|
|
__le16 seq_id;
|
|
__le16 target_id;
|
|
__le64 resp_addr;
|
|
__le16 fid;
|
|
u8 unused_0[6];
|
|
};
|
|
|
|
/* hwrm_port_phy_cfg_input (size:448b/56B) */
|
|
struct hwrm_port_phy_cfg_input {
|
|
__le16 req_type;
|
|
__le16 cmpl_ring;
|
|
__le16 seq_id;
|
|
__le16 target_id;
|
|
__le64 resp_addr;
|
|
__le32 flags;
|
|
#define PORT_PHY_CFG_REQ_FLAGS_RESET_PHY 0x1UL
|
|
#define PORT_PHY_CFG_REQ_FLAGS_FORCE 0x4UL
|
|
__le32 enables;
|
|
#define PORT_PHY_CFG_REQ_ENABLES_AUTO_MODE 0x1UL
|
|
#define PORT_PHY_CFG_REQ_ENABLES_AUTO_DUPLEX 0x2UL
|
|
#define PORT_PHY_CFG_REQ_ENABLES_AUTO_PAUSE 0x4UL
|
|
#define PORT_PHY_CFG_REQ_ENABLES_AUTO_LINK_SPEED_MASK 0x10UL
|
|
__le16 port_id;
|
|
__le16 force_link_speed;
|
|
#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_1GB 0xaUL
|
|
#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_10GB 0x64UL
|
|
#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_25GB 0xfaUL
|
|
#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_40GB 0x190UL
|
|
#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_50GB 0x1f4UL
|
|
#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_100GB 0x3e8UL
|
|
u8 auto_mode;
|
|
#define PORT_PHY_CFG_REQ_AUTO_MODE_SPEED_MASK 0x4UL
|
|
u8 auto_duplex;
|
|
#define PORT_PHY_CFG_REQ_AUTO_DUPLEX_BOTH 0x2UL
|
|
u8 auto_pause;
|
|
#define PORT_PHY_CFG_REQ_AUTO_PAUSE_TX 0x1UL
|
|
#define PORT_PHY_CFG_REQ_AUTO_PAUSE_RX 0x2UL
|
|
u8 unused_0;
|
|
__le16 auto_link_speed;
|
|
__le16 auto_link_speed_mask;
|
|
#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_100MB 0x2UL
|
|
#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_1GB 0x8UL
|
|
#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_10GB 0x40UL
|
|
#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_25GB 0x100UL
|
|
#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_40GB 0x200UL
|
|
#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_50GB 0x400UL
|
|
#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_100GB 0x800UL
|
|
u8 wirespeed;
|
|
u8 lpbk;
|
|
u8 force_pause;
|
|
u8 unused_1;
|
|
__le32 preemphasis;
|
|
__le16 eee_link_speed_mask;
|
|
u8 unused_2[2];
|
|
__le32 tx_lpi_timer;
|
|
__le32 unused_3;
|
|
};
|
|
|
|
/* hwrm_port_phy_qcfg_input (size:192b/24B) */
|
|
struct hwrm_port_phy_qcfg_input {
|
|
__le16 req_type;
|
|
__le16 cmpl_ring;
|
|
__le16 seq_id;
|
|
__le16 target_id;
|
|
__le64 resp_addr;
|
|
__le16 port_id;
|
|
u8 unused_0[6];
|
|
};
|
|
|
|
/* hwrm_port_phy_qcfg_output (size:768b/96B) */
|
|
struct hwrm_port_phy_qcfg_output {
|
|
__le16 error_code;
|
|
__le16 req_type;
|
|
__le16 seq_id;
|
|
__le16 resp_len;
|
|
u8 link;
|
|
#define PORT_PHY_QCFG_RESP_LINK_LINK 0x2UL
|
|
u8 unused_0;
|
|
__le16 link_speed;
|
|
#define PORT_PHY_QCFG_RESP_LINK_SPEED_100MB 0x1UL
|
|
#define PORT_PHY_QCFG_RESP_LINK_SPEED_1GB 0xaUL
|
|
#define PORT_PHY_QCFG_RESP_LINK_SPEED_2GB 0x14UL
|
|
#define PORT_PHY_QCFG_RESP_LINK_SPEED_2_5GB 0x19UL
|
|
#define PORT_PHY_QCFG_RESP_LINK_SPEED_10GB 0x64UL
|
|
#define PORT_PHY_QCFG_RESP_LINK_SPEED_20GB 0xc8UL
|
|
#define PORT_PHY_QCFG_RESP_LINK_SPEED_25GB 0xfaUL
|
|
#define PORT_PHY_QCFG_RESP_LINK_SPEED_40GB 0x190UL
|
|
#define PORT_PHY_QCFG_RESP_LINK_SPEED_50GB 0x1f4UL
|
|
#define PORT_PHY_QCFG_RESP_LINK_SPEED_100GB 0x3e8UL
|
|
#define PORT_PHY_QCFG_RESP_LINK_SPEED_10MB 0xffffUL
|
|
u8 duplex_cfg;
|
|
u8 pause;
|
|
__le16 support_speeds;
|
|
#define PORT_QCFG_SUPPORT_SPEEDS_100MBHD 0x1UL
|
|
#define PORT_QCFG_SUPPORT_SPEEDS_100MB 0x2UL
|
|
#define PORT_QCFG_SUPPORT_SPEEDS_1GBHD 0x4UL
|
|
#define PORT_QCFG_SUPPORT_SPEEDS_1GB 0x8UL
|
|
#define PORT_QCFG_SUPPORT_SPEEDS_2GB 0x10UL
|
|
#define PORT_QCFG_SUPPORT_SPEEDS_2_5GB 0x20UL
|
|
#define PORT_QCFG_SUPPORT_SPEEDS_10GB 0x40UL
|
|
#define PORT_QCFG_SUPPORT_SPEEDS_20GB 0x80UL
|
|
#define PORT_QCFG_SUPPORT_SPEEDS_25GB 0x100UL
|
|
#define PORT_QCFG_SUPPORT_SPEEDS_50GB 0x400UL
|
|
#define PORT_QCFG_SUPPORT_SPEEDS_100GB 0x800UL
|
|
#define PORT_QCFG_SUPPORT_SPEEDS_200GB 0x4000UL
|
|
__le16 force_link_speed;
|
|
u8 auto_mode;
|
|
u8 auto_pause;
|
|
__le16 auto_link_speed;
|
|
__le16 auto_link_speed_mask;
|
|
u8 wirespeed;
|
|
u8 lpbk;
|
|
u8 force_pause;
|
|
u8 module_status;
|
|
__le32 preemphasis;
|
|
u8 phy_maj;
|
|
u8 phy_min;
|
|
u8 phy_bld;
|
|
u8 phy_type;
|
|
u8 media_type;
|
|
u8 xcvr_pkg_type;
|
|
u8 eee_config_phy_addr;
|
|
u8 parallel_detect;
|
|
__le16 link_partner_adv_speeds;
|
|
u8 link_partner_adv_auto_mode;
|
|
u8 link_partner_adv_pause;
|
|
__le16 adv_eee_link_speed_mask;
|
|
__le16 link_partner_adv_eee_link_speed_mask;
|
|
__le32 xcvr_identifier_type_tx_lpi_timer;
|
|
__le16 fec_cfg;
|
|
u8 duplex_state;
|
|
u8 option_flags;
|
|
char phy_vendor_name[16];
|
|
char phy_vendor_partnumber[16];
|
|
u8 unused_2[7];
|
|
u8 valid;
|
|
};
|
|
|
|
/* hwrm_port_mac_cfg_input (size:320b/40B) */
|
|
struct hwrm_port_mac_cfg_input {
|
|
__le16 req_type;
|
|
__le16 cmpl_ring;
|
|
__le16 seq_id;
|
|
__le16 target_id;
|
|
__le64 resp_addr;
|
|
__le32 flags;
|
|
__le32 enables;
|
|
__le16 port_id;
|
|
u8 ipg;
|
|
u8 lpbk;
|
|
#define PORT_MAC_CFG_REQ_LPBK_NONE 0x0UL
|
|
u8 vlan_pri2cos_map_pri;
|
|
u8 reserved1;
|
|
u8 tunnel_pri2cos_map_pri;
|
|
u8 dscp2pri_map_pri;
|
|
__le16 rx_ts_capture_ptp_msg_type;
|
|
__le16 tx_ts_capture_ptp_msg_type;
|
|
u8 cos_field_cfg;
|
|
u8 unused_0[3];
|
|
};
|
|
|
|
/* hwrm_vnic_alloc_input (size:192b/24B) */
|
|
struct hwrm_vnic_alloc_input {
|
|
__le16 req_type;
|
|
__le16 cmpl_ring;
|
|
__le16 seq_id;
|
|
__le16 target_id;
|
|
__le64 resp_addr;
|
|
__le32 flags;
|
|
#define VNIC_ALLOC_REQ_FLAGS_DEFAULT 0x1UL
|
|
u8 unused_0[4];
|
|
};
|
|
|
|
/* hwrm_vnic_alloc_output (size:128b/16B) */
|
|
struct hwrm_vnic_alloc_output {
|
|
__le16 error_code;
|
|
__le16 req_type;
|
|
__le16 seq_id;
|
|
__le16 resp_len;
|
|
__le32 vnic_id;
|
|
u8 unused_0[3];
|
|
u8 valid;
|
|
};
|
|
|
|
/* hwrm_vnic_free_input (size:192b/24B) */
|
|
struct hwrm_vnic_free_input {
|
|
__le16 req_type;
|
|
__le16 cmpl_ring;
|
|
__le16 seq_id;
|
|
__le16 target_id;
|
|
__le64 resp_addr;
|
|
__le32 vnic_id;
|
|
u8 unused_0[4];
|
|
};
|
|
|
|
/* hwrm_vnic_cfg_input (size:320b/40B) */
|
|
struct hwrm_vnic_cfg_input {
|
|
__le16 req_type;
|
|
__le16 cmpl_ring;
|
|
__le16 seq_id;
|
|
__le16 target_id;
|
|
__le64 resp_addr;
|
|
__le32 flags;
|
|
__le32 enables;
|
|
#define VNIC_CFG_REQ_ENABLES_DFLT_RING_GRP 0x1UL
|
|
#define VNIC_CFG_REQ_ENABLES_MRU 0x10UL
|
|
__le16 vnic_id;
|
|
__le16 dflt_ring_grp;
|
|
__le16 rss_rule;
|
|
__le16 cos_rule;
|
|
__le16 lb_rule;
|
|
__le16 mru;
|
|
__le16 default_rx_ring_id;
|
|
__le16 default_cmpl_ring_id;
|
|
};
|
|
|
|
/* hwrm_ring_alloc_input (size:704b/88B) */
|
|
struct hwrm_ring_alloc_input {
|
|
__le16 req_type;
|
|
__le16 cmpl_ring;
|
|
__le16 seq_id;
|
|
__le16 target_id;
|
|
__le64 resp_addr;
|
|
__le32 enables;
|
|
#define RING_ALLOC_REQ_ENABLES_RX_BUF_SIZE_VALID 0x100UL
|
|
u8 ring_type;
|
|
#define RING_ALLOC_REQ_RING_TYPE_L2_CMPL 0x0UL
|
|
#define RING_ALLOC_REQ_RING_TYPE_TX 0x1UL
|
|
#define RING_ALLOC_REQ_RING_TYPE_RX 0x2UL
|
|
u8 unused_0;
|
|
__le16 flags;
|
|
__le64 page_tbl_addr;
|
|
__le32 fbo;
|
|
u8 page_size;
|
|
u8 page_tbl_depth;
|
|
u8 unused_1[2];
|
|
__le32 length;
|
|
__le16 logical_id;
|
|
__le16 cmpl_ring_id;
|
|
__le16 queue_id;
|
|
__le16 rx_buf_size;
|
|
__le16 rx_ring_id;
|
|
__le16 nq_ring_id;
|
|
__le16 ring_arb_cfg;
|
|
__le16 unused_3;
|
|
__le32 reserved3;
|
|
__le32 stat_ctx_id;
|
|
__le32 reserved4;
|
|
__le32 max_bw;
|
|
u8 int_mode;
|
|
#define RING_ALLOC_REQ_INT_MODE_POLL 0x3UL
|
|
u8 unused_4[3];
|
|
__le64 cq_handle;
|
|
};
|
|
|
|
/* hwrm_ring_alloc_output (size:128b/16B) */
|
|
struct hwrm_ring_alloc_output {
|
|
__le16 error_code;
|
|
__le16 req_type;
|
|
__le16 seq_id;
|
|
__le16 resp_len;
|
|
__le16 ring_id;
|
|
__le16 logical_ring_id;
|
|
u8 unused_0[3];
|
|
u8 valid;
|
|
};
|
|
|
|
/* hwrm_ring_free_input (size:192b/24B) */
|
|
struct hwrm_ring_free_input {
|
|
__le16 req_type;
|
|
__le16 cmpl_ring;
|
|
__le16 seq_id;
|
|
__le16 target_id;
|
|
__le64 resp_addr;
|
|
u8 ring_type;
|
|
#define RING_FREE_REQ_RING_TYPE_L2_CMPL 0x0UL
|
|
#define RING_FREE_REQ_RING_TYPE_TX 0x1UL
|
|
#define RING_FREE_REQ_RING_TYPE_RX 0x2UL
|
|
u8 unused_0;
|
|
__le16 ring_id;
|
|
u8 unused_1[4];
|
|
};
|
|
|
|
/* hwrm_ring_grp_alloc_input (size:192b/24B) */
|
|
struct hwrm_ring_grp_alloc_input {
|
|
__le16 req_type;
|
|
__le16 cmpl_ring;
|
|
__le16 seq_id;
|
|
__le16 target_id;
|
|
__le64 resp_addr;
|
|
__le16 cr;
|
|
__le16 rr;
|
|
__le16 ar;
|
|
__le16 sc;
|
|
};
|
|
|
|
/* hwrm_ring_grp_alloc_output (size:128b/16B) */
|
|
struct hwrm_ring_grp_alloc_output {
|
|
__le16 error_code;
|
|
__le16 req_type;
|
|
__le16 seq_id;
|
|
__le16 resp_len;
|
|
__le32 ring_group_id;
|
|
u8 unused_0[3];
|
|
u8 valid;
|
|
};
|
|
|
|
/* hwrm_ring_grp_free_input (size:192b/24B) */
|
|
struct hwrm_ring_grp_free_input {
|
|
__le16 req_type;
|
|
__le16 cmpl_ring;
|
|
__le16 seq_id;
|
|
__le16 target_id;
|
|
__le64 resp_addr;
|
|
__le32 ring_group_id;
|
|
u8 unused_0[4];
|
|
};
|
|
|
|
/* hwrm_cfa_l2_filter_alloc_input (size:768b/96B) */
|
|
struct hwrm_cfa_l2_filter_alloc_input {
|
|
__le16 req_type;
|
|
__le16 cmpl_ring;
|
|
__le16 seq_id;
|
|
__le16 target_id;
|
|
__le64 resp_addr;
|
|
__le32 flags;
|
|
#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH_RX 0x1UL
|
|
__le32 enables;
|
|
#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_ADDR 0x1UL
|
|
#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_ADDR_MASK 0x2UL
|
|
#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_DST_ID 0x8000UL
|
|
u8 l2_addr[6];
|
|
u8 unused_0[2];
|
|
u8 l2_addr_mask[6];
|
|
__le16 l2_ovlan;
|
|
__le16 l2_ovlan_mask;
|
|
__le16 l2_ivlan;
|
|
__le16 l2_ivlan_mask;
|
|
u8 unused_1[2];
|
|
u8 t_l2_addr[6];
|
|
u8 unused_2[2];
|
|
u8 t_l2_addr_mask[6];
|
|
__le16 t_l2_ovlan;
|
|
__le16 t_l2_ovlan_mask;
|
|
__le16 t_l2_ivlan;
|
|
__le16 t_l2_ivlan_mask;
|
|
u8 src_type;
|
|
#define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_NPORT 0x0UL
|
|
u8 unused_3;
|
|
__le32 src_id;
|
|
u8 tunnel_type;
|
|
u8 unused_4;
|
|
__le16 dst_id;
|
|
__le16 mirror_vnic_id;
|
|
u8 pri_hint;
|
|
u8 unused_5;
|
|
__le32 unused_6;
|
|
__le64 l2_filter_id_hint;
|
|
};
|
|
|
|
/* hwrm_cfa_l2_filter_alloc_output (size:192b/24B) */
|
|
struct hwrm_cfa_l2_filter_alloc_output {
|
|
__le16 error_code;
|
|
__le16 req_type;
|
|
__le16 seq_id;
|
|
__le16 resp_len;
|
|
__le64 l2_filter_id;
|
|
__le32 flow_id;
|
|
u8 unused_0[3];
|
|
u8 valid;
|
|
};
|
|
|
|
/* hwrm_cfa_l2_filter_free_input (size:192b/24B) */
|
|
struct hwrm_cfa_l2_filter_free_input {
|
|
__le16 req_type;
|
|
__le16 cmpl_ring;
|
|
__le16 seq_id;
|
|
__le16 target_id;
|
|
__le64 resp_addr;
|
|
__le64 l2_filter_id;
|
|
};
|
|
|
|
/* hwrm_cfa_l2_set_rx_mask_input (size:448b/56B) */
|
|
struct hwrm_cfa_l2_set_rx_mask_input {
|
|
__le16 req_type;
|
|
__le16 cmpl_ring;
|
|
__le16 seq_id;
|
|
__le16 target_id;
|
|
__le64 resp_addr;
|
|
__le32 vnic_id;
|
|
__le32 mask;
|
|
#define CFA_L2_SET_RX_MASK_REQ_MASK_MCAST 0x2UL
|
|
#define CFA_L2_SET_RX_MASK_REQ_MASK_ALL_MCAST 0x4UL
|
|
#define CFA_L2_SET_RX_MASK_REQ_MASK_BCAST 0x8UL
|
|
#define CFA_L2_SET_RX_MASK_REQ_MASK_PROMISCUOUS 0x10UL
|
|
__le64 mc_tbl_addr;
|
|
__le32 num_mc_entries;
|
|
u8 unused_0[4];
|
|
__le64 vlan_tag_tbl_addr;
|
|
__le32 num_vlan_tags;
|
|
u8 unused_1[4];
|
|
};
|
|
|
|
/* hwrm_stat_ctx_alloc_input (size:256b/32B) */
|
|
struct hwrm_stat_ctx_alloc_input {
|
|
__le16 req_type;
|
|
__le16 cmpl_ring;
|
|
__le16 seq_id;
|
|
__le16 target_id;
|
|
__le64 resp_addr;
|
|
__le64 stats_dma_addr;
|
|
__le32 update_period_ms;
|
|
u8 stat_ctx_flags;
|
|
u8 unused_0[3];
|
|
};
|
|
|
|
/* hwrm_stat_ctx_alloc_output (size:128b/16B) */
|
|
struct hwrm_stat_ctx_alloc_output {
|
|
__le16 error_code;
|
|
__le16 req_type;
|
|
__le16 seq_id;
|
|
__le16 resp_len;
|
|
__le32 stat_ctx_id;
|
|
u8 unused_0[3];
|
|
u8 valid;
|
|
};
|
|
|
|
/* hwrm_stat_ctx_free_input (size:192b/24B) */
|
|
struct hwrm_stat_ctx_free_input {
|
|
__le16 req_type;
|
|
__le16 cmpl_ring;
|
|
__le16 seq_id;
|
|
__le16 target_id;
|
|
__le64 resp_addr;
|
|
__le32 stat_ctx_id;
|
|
u8 unused_0[4];
|
|
};
|
|
|
|
/* hwrm_nvm_flush_input (size:128b/16B) */
|
|
struct hwrm_nvm_flush_input {
|
|
__le16 req_type;
|
|
__le16 cmpl_ring;
|
|
__le16 seq_id;
|
|
__le16 target_id;
|
|
__le64 resp_addr;
|
|
};
|
|
|
|
/* hwrm_nvm_get_variable_input (size:320b/40B) */
|
|
struct hwrm_nvm_get_variable_input {
|
|
__le16 req_type;
|
|
__le16 cmpl_ring;
|
|
__le16 seq_id;
|
|
__le16 target_id;
|
|
__le64 resp_addr;
|
|
__le64 dest_data_addr;
|
|
__le16 data_len;
|
|
__le16 option_num;
|
|
__le16 dimensions;
|
|
__le16 index_0;
|
|
__le16 index_1;
|
|
__le16 index_2;
|
|
__le16 index_3;
|
|
u8 flags;
|
|
u8 unused_0;
|
|
};
|
|
|
|
/* hwrm_nvm_set_variable_input (size:320b/40B) */
|
|
struct hwrm_nvm_set_variable_input {
|
|
__le16 req_type;
|
|
__le16 cmpl_ring;
|
|
__le16 seq_id;
|
|
__le16 target_id;
|
|
__le64 resp_addr;
|
|
__le64 src_data_addr;
|
|
__le16 data_len;
|
|
__le16 option_num;
|
|
__le16 dimensions;
|
|
__le16 index_0;
|
|
__le16 index_1;
|
|
__le16 index_2;
|
|
__le16 index_3;
|
|
u8 flags;
|
|
u8 unused_0;
|
|
};
|
|
|
|
#endif /* _BNXT_HSI_H_ */
|