net/txgbe: add MAC address operations
[dpdk.git] / drivers / net / txgbe / base / txgbe_eeprom.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2015-2020
3  */
4
5 #ifndef _TXGBE_EEPROM_H_
6 #define _TXGBE_EEPROM_H_
7
8 /* Checksum and EEPROM pointers */
9 #define TXGBE_PBANUM_PTR_GUARD          0xFAFA
10 #define TXGBE_EEPROM_SUM                0xBABA
11
12 #define TXGBE_FW_PTR                    0x0F
13 #define TXGBE_PBANUM0_PTR               0x05
14 #define TXGBE_PBANUM1_PTR               0x06
15 #define TXGBE_SW_REGION_PTR             0x1C
16
17 #define TXGBE_EE_CSUM_MAX               0x800
18 #define TXGBE_EEPROM_CHECKSUM           0x2F
19
20 #define TXGBE_SAN_MAC_ADDR_PTR          0x18
21 #define TXGBE_DEVICE_CAPS               0x1C
22 #define TXGBE_EEPROM_VERSION_L          0x1D
23 #define TXGBE_EEPROM_VERSION_H          0x1E
24 #define TXGBE_ISCSI_BOOT_CONFIG         0x07
25
26 #define TXGBE_SAN_MAC_ADDR_PORT0_OFFSET         0x0
27 #define TXGBE_SAN_MAC_ADDR_PORT1_OFFSET         0x3
28 #define TXGBE_DEVICE_CAPS_ALLOW_ANY_SFP         0x1
29 #define TXGBE_FW_LESM_PARAMETERS_PTR            0x2
30 #define TXGBE_FW_LESM_STATE_1                   0x1
31 #define TXGBE_FW_LESM_STATE_ENABLED             0x8000 /* LESM Enable bit */
32
33 s32 txgbe_init_eeprom_params(struct txgbe_hw *hw);
34 s32 txgbe_calc_eeprom_checksum(struct txgbe_hw *hw);
35 s32 txgbe_validate_eeprom_checksum(struct txgbe_hw *hw, u16 *checksum_val);
36 s32 txgbe_update_eeprom_checksum(struct txgbe_hw *hw);
37 s32 txgbe_get_eeprom_semaphore(struct txgbe_hw *hw);
38 void txgbe_release_eeprom_semaphore(struct txgbe_hw *hw);
39
40 s32 txgbe_ee_read16(struct txgbe_hw *hw, u32 offset, u16 *data);
41 s32 txgbe_ee_readw_sw(struct txgbe_hw *hw, u32 offset, u16 *data);
42 s32 txgbe_ee_readw_buffer(struct txgbe_hw *hw, u32 offset, u32 words,
43                                 void *data);
44 s32 txgbe_ee_read32(struct txgbe_hw *hw, u32 addr, u32 *data);
45 s32 txgbe_ee_read_buffer(struct txgbe_hw *hw, u32 addr, u32 len, void *data);
46
47 s32 txgbe_ee_write16(struct txgbe_hw *hw, u32 offset, u16 data);
48 s32 txgbe_ee_writew_sw(struct txgbe_hw *hw, u32 offset, u16 data);
49 s32 txgbe_ee_writew_buffer(struct txgbe_hw *hw, u32 offset, u32 words,
50                                 void *data);
51 s32 txgbe_ee_write32(struct txgbe_hw *hw, u32 addr, u32 data);
52 s32 txgbe_ee_write_buffer(struct txgbe_hw *hw, u32 addr, u32 len, void *data);
53
54
55 #endif /* _TXGBE_EEPROM_H_ */