1c0c050c5SMichael Chan /* Broadcom NetXtreme-C/E network driver. 2c0c050c5SMichael Chan * 311f15ed3SMichael Chan * Copyright (c) 2014-2016 Broadcom Corporation 48e202366SMichael Chan * Copyright (c) 2016-2017 Broadcom Limited 5c0c050c5SMichael Chan * 6c0c050c5SMichael Chan * This program is free software; you can redistribute it and/or modify 7c0c050c5SMichael Chan * it under the terms of the GNU General Public License as published by 8c0c050c5SMichael Chan * the Free Software Foundation. 9c0c050c5SMichael Chan */ 10c0c050c5SMichael Chan 11c0c050c5SMichael Chan #ifndef BNXT_ETHTOOL_H 12c0c050c5SMichael Chan #define BNXT_ETHTOOL_H 13c0c050c5SMichael Chan 145ad2cbeeSMichael Chan struct bnxt_led_cfg { 155ad2cbeeSMichael Chan u8 led_id; 165ad2cbeeSMichael Chan u8 led_state; 175ad2cbeeSMichael Chan u8 led_color; 185ad2cbeeSMichael Chan u8 unused; 195ad2cbeeSMichael Chan __le16 led_blink_on; 205ad2cbeeSMichael Chan __le16 led_blink_off; 215ad2cbeeSMichael Chan u8 led_group_id; 225ad2cbeeSMichael Chan u8 rsvd; 235ad2cbeeSMichael Chan }; 245ad2cbeeSMichael Chan 255ad2cbeeSMichael Chan #define BNXT_LED_DFLT_ENA \ 265ad2cbeeSMichael Chan (PORT_LED_CFG_REQ_ENABLES_LED0_ID | \ 275ad2cbeeSMichael Chan PORT_LED_CFG_REQ_ENABLES_LED0_STATE | \ 285ad2cbeeSMichael Chan PORT_LED_CFG_REQ_ENABLES_LED0_BLINK_ON | \ 295ad2cbeeSMichael Chan PORT_LED_CFG_REQ_ENABLES_LED0_BLINK_OFF | \ 305ad2cbeeSMichael Chan PORT_LED_CFG_REQ_ENABLES_LED0_GROUP_ID) 315ad2cbeeSMichael Chan 325ad2cbeeSMichael Chan #define BNXT_LED_DFLT_ENA_SHIFT 6 335ad2cbeeSMichael Chan 345ad2cbeeSMichael Chan #define BNXT_LED_DFLT_ENABLES(x) \ 355ad2cbeeSMichael Chan cpu_to_le32(BNXT_LED_DFLT_ENA << (BNXT_LED_DFLT_ENA_SHIFT * (x))) 365ad2cbeeSMichael Chan 377a13240eSEdwin Peer #define BNXT_FW_RESET_AP (ETH_RESET_AP << ETH_RESET_SHARED_SHIFT) 387a13240eSEdwin Peer #define BNXT_FW_RESET_CHIP ((ETH_RESET_MGMT | ETH_RESET_IRQ | \ 397a13240eSEdwin Peer ETH_RESET_DMA | ETH_RESET_FILTER | \ 407a13240eSEdwin Peer ETH_RESET_OFFLOAD | ETH_RESET_MAC | \ 417a13240eSEdwin Peer ETH_RESET_PHY | ETH_RESET_RAM) \ 427a13240eSEdwin Peer << ETH_RESET_SHARED_SHIFT) 4349f7972fSVasundhara Volam 44b5d600b0SVasundhara Volam #define BNXT_PXP_REG_LEN 0x3110 45b5d600b0SVasundhara Volam 46c0c050c5SMichael Chan extern const struct ethtool_ops bnxt_ethtool_ops; 47c0c050c5SMichael Chan 48b73c1d08SMichael Chan u32 bnxt_get_rxfh_indir_size(struct net_device *dev); 49170ce013SMichael Chan u32 _bnxt_fw_to_ethtool_adv_spds(u16, u8); 50c0c050c5SMichael Chan u32 bnxt_fw_to_ethtool_speed(u16); 51939f7f0cSMichael Chan u16 bnxt_get_fw_auto_link_speeds(u32); 524933f675SVasundhara Volam int bnxt_hwrm_nvm_get_dev_info(struct bnxt *bp, 534933f675SVasundhara Volam struct hwrm_nvm_get_dev_info_output *nvm_dev_info); 548f6c5e4dSEdwin Peer int bnxt_hwrm_firmware_reset(struct net_device *dev, u8 proc_type, 558f6c5e4dSEdwin Peer u8 self_reset, u8 flags); 56b44cfd4fSJacob Keller int bnxt_flash_package_from_fw_obj(struct net_device *dev, const struct firmware *fw, 57ab0bed4bSKalesh AP u32 install_type, struct netlink_ext_ack *extack); 5863185eb3SVikas Gupta int bnxt_get_pkginfo(struct net_device *dev, char *ver, int size); 59eb513658SMichael Chan void bnxt_ethtool_init(struct bnxt *bp); 60eb513658SMichael Chan void bnxt_ethtool_free(struct bnxt *bp); 61*5b6ff128Svikas int bnxt_find_nvram_item(struct net_device *dev, u16 type, u16 ordinal, 62*5b6ff128Svikas u16 ext, u16 *index, u32 *item_length, 63*5b6ff128Svikas u32 *data_length); 64*5b6ff128Svikas int bnxt_find_nvram_item(struct net_device *dev, u16 type, u16 ordinal, 65*5b6ff128Svikas u16 ext, u16 *index, u32 *item_length, 66*5b6ff128Svikas u32 *data_length); 67*5b6ff128Svikas int bnxt_flash_nvram(struct net_device *dev, u16 dir_type, 68*5b6ff128Svikas u16 dir_ordinal, u16 dir_ext, u16 dir_attr, 69*5b6ff128Svikas u32 dir_item_len, const u8 *data, 70*5b6ff128Svikas size_t data_len); 71*5b6ff128Svikas int bnxt_get_nvram_item(struct net_device *dev, u32 index, u32 offset, 72*5b6ff128Svikas u32 length, u8 *data); 73c0c050c5SMichael Chan 74c0c050c5SMichael Chan #endif 75