xref: /freebsd/sys/dev/igc/igc_api.h (revision 994297b01b98816bea1abf45ae4bac1bc69ee7a0)
1 /*-
2  * Copyright 2021 Intel Corp
3  * Copyright 2021 Rubicon Communications, LLC (Netgate)
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  * $FreeBSD$
7  */
8 
9 #ifndef _IGC_API_H_
10 #define _IGC_API_H_
11 
12 #include "igc_hw.h"
13 
14 extern void igc_init_function_pointers_i225(struct igc_hw *hw);
15 
16 s32 igc_set_mac_type(struct igc_hw *hw);
17 s32 igc_setup_init_funcs(struct igc_hw *hw, bool init_device);
18 s32 igc_init_mac_params(struct igc_hw *hw);
19 s32 igc_init_nvm_params(struct igc_hw *hw);
20 s32 igc_init_phy_params(struct igc_hw *hw);
21 s32 igc_get_bus_info(struct igc_hw *hw);
22 void igc_clear_vfta(struct igc_hw *hw);
23 void igc_write_vfta(struct igc_hw *hw, u32 offset, u32 value);
24 s32 igc_force_mac_fc(struct igc_hw *hw);
25 s32 igc_check_for_link(struct igc_hw *hw);
26 s32 igc_reset_hw(struct igc_hw *hw);
27 s32 igc_init_hw(struct igc_hw *hw);
28 s32 igc_setup_link(struct igc_hw *hw);
29 s32 igc_get_speed_and_duplex(struct igc_hw *hw, u16 *speed, u16 *duplex);
30 s32 igc_disable_pcie_master(struct igc_hw *hw);
31 void igc_config_collision_dist(struct igc_hw *hw);
32 int igc_rar_set(struct igc_hw *hw, u8 *addr, u32 index);
33 u32 igc_hash_mc_addr(struct igc_hw *hw, u8 *mc_addr);
34 void igc_update_mc_addr_list(struct igc_hw *hw, u8 *mc_addr_list,
35 			       u32 mc_addr_count);
36 s32 igc_check_reset_block(struct igc_hw *hw);
37 s32 igc_get_cable_length(struct igc_hw *hw);
38 s32 igc_validate_mdi_setting(struct igc_hw *hw);
39 s32 igc_read_phy_reg(struct igc_hw *hw, u32 offset, u16 *data);
40 s32 igc_write_phy_reg(struct igc_hw *hw, u32 offset, u16 data);
41 s32 igc_get_phy_info(struct igc_hw *hw);
42 void igc_release_phy(struct igc_hw *hw);
43 s32 igc_acquire_phy(struct igc_hw *hw);
44 s32 igc_phy_hw_reset(struct igc_hw *hw);
45 void igc_power_up_phy(struct igc_hw *hw);
46 void igc_power_down_phy(struct igc_hw *hw);
47 s32 igc_read_mac_addr(struct igc_hw *hw);
48 s32 igc_read_pba_string(struct igc_hw *hw, u8 *pba_num, u32 pba_num_size);
49 void igc_reload_nvm(struct igc_hw *hw);
50 s32 igc_update_nvm_checksum(struct igc_hw *hw);
51 s32 igc_validate_nvm_checksum(struct igc_hw *hw);
52 s32 igc_read_nvm(struct igc_hw *hw, u16 offset, u16 words, u16 *data);
53 s32 igc_write_nvm(struct igc_hw *hw, u16 offset, u16 words, u16 *data);
54 s32 igc_set_d3_lplu_state(struct igc_hw *hw, bool active);
55 s32 igc_set_d0_lplu_state(struct igc_hw *hw, bool active);
56 
57 #endif /* _IGC_API_H_ */
58