18c2ecf20Sopenharmony_ci/* Broadcom NetXtreme-C/E network driver. 28c2ecf20Sopenharmony_ci * 38c2ecf20Sopenharmony_ci * Copyright (c) 2014-2016 Broadcom Corporation 48c2ecf20Sopenharmony_ci * Copyright (c) 2016-2017 Broadcom Limited 58c2ecf20Sopenharmony_ci * 68c2ecf20Sopenharmony_ci * This program is free software; you can redistribute it and/or modify 78c2ecf20Sopenharmony_ci * it under the terms of the GNU General Public License as published by 88c2ecf20Sopenharmony_ci * the Free Software Foundation. 98c2ecf20Sopenharmony_ci */ 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci#ifndef BNXT_ETHTOOL_H 128c2ecf20Sopenharmony_ci#define BNXT_ETHTOOL_H 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_cistruct bnxt_led_cfg { 158c2ecf20Sopenharmony_ci u8 led_id; 168c2ecf20Sopenharmony_ci u8 led_state; 178c2ecf20Sopenharmony_ci u8 led_color; 188c2ecf20Sopenharmony_ci u8 unused; 198c2ecf20Sopenharmony_ci __le16 led_blink_on; 208c2ecf20Sopenharmony_ci __le16 led_blink_off; 218c2ecf20Sopenharmony_ci u8 led_group_id; 228c2ecf20Sopenharmony_ci u8 rsvd; 238c2ecf20Sopenharmony_ci}; 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_ci#define COREDUMP_LIST_BUF_LEN 2048 268c2ecf20Sopenharmony_ci#define COREDUMP_RETRIEVE_BUF_LEN 4096 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_cistruct bnxt_coredump { 298c2ecf20Sopenharmony_ci void *data; 308c2ecf20Sopenharmony_ci int data_size; 318c2ecf20Sopenharmony_ci u16 total_segs; 328c2ecf20Sopenharmony_ci}; 338c2ecf20Sopenharmony_ci 348c2ecf20Sopenharmony_ci#define BNXT_COREDUMP_BUF_LEN(len) ((len) - sizeof(struct bnxt_coredump_record)) 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_cistruct bnxt_hwrm_dbg_dma_info { 378c2ecf20Sopenharmony_ci void *dest_buf; 388c2ecf20Sopenharmony_ci int dest_buf_size; 398c2ecf20Sopenharmony_ci u16 dma_len; 408c2ecf20Sopenharmony_ci u16 seq_off; 418c2ecf20Sopenharmony_ci u16 data_len_off; 428c2ecf20Sopenharmony_ci u16 segs; 438c2ecf20Sopenharmony_ci u32 seg_start; 448c2ecf20Sopenharmony_ci u32 buf_len; 458c2ecf20Sopenharmony_ci}; 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_cistruct hwrm_dbg_cmn_input { 488c2ecf20Sopenharmony_ci __le16 req_type; 498c2ecf20Sopenharmony_ci __le16 cmpl_ring; 508c2ecf20Sopenharmony_ci __le16 seq_id; 518c2ecf20Sopenharmony_ci __le16 target_id; 528c2ecf20Sopenharmony_ci __le64 resp_addr; 538c2ecf20Sopenharmony_ci __le64 host_dest_addr; 548c2ecf20Sopenharmony_ci __le32 host_buf_len; 558c2ecf20Sopenharmony_ci}; 568c2ecf20Sopenharmony_ci 578c2ecf20Sopenharmony_cistruct hwrm_dbg_cmn_output { 588c2ecf20Sopenharmony_ci __le16 error_code; 598c2ecf20Sopenharmony_ci __le16 req_type; 608c2ecf20Sopenharmony_ci __le16 seq_id; 618c2ecf20Sopenharmony_ci __le16 resp_len; 628c2ecf20Sopenharmony_ci u8 flags; 638c2ecf20Sopenharmony_ci #define HWRM_DBG_CMN_FLAGS_MORE 1 648c2ecf20Sopenharmony_ci}; 658c2ecf20Sopenharmony_ci 668c2ecf20Sopenharmony_ci#define BNXT_CRASH_DUMP_LEN (8 << 20) 678c2ecf20Sopenharmony_ci 688c2ecf20Sopenharmony_ci#define BNXT_LED_DFLT_ENA \ 698c2ecf20Sopenharmony_ci (PORT_LED_CFG_REQ_ENABLES_LED0_ID | \ 708c2ecf20Sopenharmony_ci PORT_LED_CFG_REQ_ENABLES_LED0_STATE | \ 718c2ecf20Sopenharmony_ci PORT_LED_CFG_REQ_ENABLES_LED0_BLINK_ON | \ 728c2ecf20Sopenharmony_ci PORT_LED_CFG_REQ_ENABLES_LED0_BLINK_OFF | \ 738c2ecf20Sopenharmony_ci PORT_LED_CFG_REQ_ENABLES_LED0_GROUP_ID) 748c2ecf20Sopenharmony_ci 758c2ecf20Sopenharmony_ci#define BNXT_LED_DFLT_ENA_SHIFT 6 768c2ecf20Sopenharmony_ci 778c2ecf20Sopenharmony_ci#define BNXT_LED_DFLT_ENABLES(x) \ 788c2ecf20Sopenharmony_ci cpu_to_le32(BNXT_LED_DFLT_ENA << (BNXT_LED_DFLT_ENA_SHIFT * (x))) 798c2ecf20Sopenharmony_ci 808c2ecf20Sopenharmony_ci#define BNXT_FW_RESET_AP (ETH_RESET_AP << ETH_RESET_SHARED_SHIFT) 818c2ecf20Sopenharmony_ci#define BNXT_FW_RESET_CHIP ((ETH_RESET_MGMT | ETH_RESET_IRQ | \ 828c2ecf20Sopenharmony_ci ETH_RESET_DMA | ETH_RESET_FILTER | \ 838c2ecf20Sopenharmony_ci ETH_RESET_OFFLOAD | ETH_RESET_MAC | \ 848c2ecf20Sopenharmony_ci ETH_RESET_PHY | ETH_RESET_RAM) \ 858c2ecf20Sopenharmony_ci << ETH_RESET_SHARED_SHIFT) 868c2ecf20Sopenharmony_ci 878c2ecf20Sopenharmony_ci#define BNXT_PXP_REG_LEN 0x3110 888c2ecf20Sopenharmony_ci 898c2ecf20Sopenharmony_ciextern const struct ethtool_ops bnxt_ethtool_ops; 908c2ecf20Sopenharmony_ci 918c2ecf20Sopenharmony_ciu32 bnxt_get_rxfh_indir_size(struct net_device *dev); 928c2ecf20Sopenharmony_ciu32 _bnxt_fw_to_ethtool_adv_spds(u16, u8); 938c2ecf20Sopenharmony_ciu32 bnxt_fw_to_ethtool_speed(u16); 948c2ecf20Sopenharmony_ciu16 bnxt_get_fw_auto_link_speeds(u32); 958c2ecf20Sopenharmony_ciint bnxt_hwrm_nvm_get_dev_info(struct bnxt *bp, 968c2ecf20Sopenharmony_ci struct hwrm_nvm_get_dev_info_output *nvm_dev_info); 978c2ecf20Sopenharmony_ciint bnxt_flash_package_from_file(struct net_device *dev, const char *filename, 988c2ecf20Sopenharmony_ci u32 install_type); 998c2ecf20Sopenharmony_civoid bnxt_ethtool_init(struct bnxt *bp); 1008c2ecf20Sopenharmony_civoid bnxt_ethtool_free(struct bnxt *bp); 1018c2ecf20Sopenharmony_ci 1028c2ecf20Sopenharmony_ci#endif 103