1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* Copyright(c) 2024 Intel Corporation. */
3 
4 #ifndef _IXGBE_E610_H_
5 #define _IXGBE_E610_H_
6 
7 #include "ixgbe_type.h"
8 
9 int ixgbe_aci_send_cmd(struct ixgbe_hw *hw, struct ixgbe_aci_desc *desc,
10 		       void *buf, u16 buf_size);
11 bool ixgbe_aci_check_event_pending(struct ixgbe_hw *hw);
12 int ixgbe_aci_get_event(struct ixgbe_hw *hw, struct ixgbe_aci_event *e,
13 			bool *pending);
14 void ixgbe_fill_dflt_direct_cmd_desc(struct ixgbe_aci_desc *desc, u16 opcode);
15 int ixgbe_acquire_res(struct ixgbe_hw *hw, enum ixgbe_aci_res_ids res,
16 		      enum ixgbe_aci_res_access_type access, u32 timeout);
17 void ixgbe_release_res(struct ixgbe_hw *hw, enum ixgbe_aci_res_ids res);
18 int ixgbe_aci_list_caps(struct ixgbe_hw *hw, void *buf, u16 buf_size,
19 			u32 *cap_count, enum ixgbe_aci_opc opc);
20 int ixgbe_discover_dev_caps(struct ixgbe_hw *hw,
21 			    struct ixgbe_hw_dev_caps *dev_caps);
22 int ixgbe_discover_func_caps(struct ixgbe_hw *hw,
23 			     struct ixgbe_hw_func_caps *func_caps);
24 int ixgbe_get_caps(struct ixgbe_hw *hw);
25 int ixgbe_aci_disable_rxen(struct ixgbe_hw *hw);
26 int ixgbe_aci_get_phy_caps(struct ixgbe_hw *hw, bool qual_mods, u8 report_mode,
27 			   struct ixgbe_aci_cmd_get_phy_caps_data *pcaps);
28 void ixgbe_copy_phy_caps_to_cfg(struct ixgbe_aci_cmd_get_phy_caps_data *caps,
29 				struct ixgbe_aci_cmd_set_phy_cfg_data *cfg);
30 int ixgbe_aci_set_phy_cfg(struct ixgbe_hw *hw,
31 			  struct ixgbe_aci_cmd_set_phy_cfg_data *cfg);
32 int ixgbe_aci_set_link_restart_an(struct ixgbe_hw *hw, bool ena_link);
33 int ixgbe_update_link_info(struct ixgbe_hw *hw);
34 int ixgbe_get_link_status(struct ixgbe_hw *hw, bool *link_up);
35 int ixgbe_aci_get_link_info(struct ixgbe_hw *hw, bool ena_lse,
36 			    struct ixgbe_link_status *link);
37 int ixgbe_aci_set_event_mask(struct ixgbe_hw *hw, u8 port_num, u16 mask);
38 int ixgbe_configure_lse(struct ixgbe_hw *hw, bool activate, u16 mask);
39 enum ixgbe_media_type ixgbe_get_media_type_e610(struct ixgbe_hw *hw);
40 int ixgbe_setup_link_e610(struct ixgbe_hw *hw, ixgbe_link_speed speed,
41 			  bool autoneg_wait);
42 int ixgbe_check_link_e610(struct ixgbe_hw *hw, ixgbe_link_speed *speed,
43 			  bool *link_up, bool link_up_wait_to_complete);
44 int ixgbe_get_link_capabilities_e610(struct ixgbe_hw *hw,
45 				     ixgbe_link_speed *speed,
46 				     bool *autoneg);
47 int ixgbe_cfg_phy_fc(struct ixgbe_hw *hw,
48 		     struct ixgbe_aci_cmd_set_phy_cfg_data *cfg,
49 		     enum ixgbe_fc_mode req_mode);
50 int ixgbe_setup_fc_e610(struct ixgbe_hw *hw);
51 void ixgbe_fc_autoneg_e610(struct ixgbe_hw *hw);
52 void ixgbe_disable_rx_e610(struct ixgbe_hw *hw);
53 int ixgbe_init_phy_ops_e610(struct ixgbe_hw *hw);
54 int ixgbe_identify_phy_e610(struct ixgbe_hw *hw);
55 int ixgbe_identify_module_e610(struct ixgbe_hw *hw);
56 int ixgbe_setup_phy_link_e610(struct ixgbe_hw *hw);
57 int ixgbe_set_phy_power_e610(struct ixgbe_hw *hw, bool on);
58 int ixgbe_enter_lplu_e610(struct ixgbe_hw *hw);
59 int ixgbe_init_eeprom_params_e610(struct ixgbe_hw *hw);
60 int ixgbe_aci_get_netlist_node(struct ixgbe_hw *hw,
61 			       struct ixgbe_aci_cmd_get_link_topo *cmd,
62 			       u8 *node_part_number, u16 *node_handle);
63 int ixgbe_acquire_nvm(struct ixgbe_hw *hw,
64 		      enum ixgbe_aci_res_access_type access);
65 void ixgbe_release_nvm(struct ixgbe_hw *hw);
66 int ixgbe_aci_read_nvm(struct ixgbe_hw *hw, u16 module_typeid, u32 offset,
67 		       u16 length, void *data, bool last_command,
68 		       bool read_shadow_ram);
69 int ixgbe_nvm_validate_checksum(struct ixgbe_hw *hw);
70 int ixgbe_read_sr_word_aci(struct ixgbe_hw  *hw, u16 offset, u16 *data);
71 int ixgbe_read_flat_nvm(struct ixgbe_hw  *hw, u32 offset, u32 *length,
72 			u8 *data, bool read_shadow_ram);
73 int ixgbe_read_sr_buf_aci(struct ixgbe_hw *hw, u16 offset, u16 *words,
74 			  u16 *data);
75 int ixgbe_read_ee_aci_e610(struct ixgbe_hw *hw, u16 offset, u16 *data);
76 int ixgbe_read_ee_aci_buffer_e610(struct ixgbe_hw *hw, u16 offset,
77 				  u16 words, u16 *data);
78 int ixgbe_validate_eeprom_checksum_e610(struct ixgbe_hw *hw, u16 *checksum_val);
79 int ixgbe_reset_hw_e610(struct ixgbe_hw *hw);
80 
81 #endif /* _IXGBE_E610_H_ */
82