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