Annotation of sys/dev/pci/ixgb_ee.h, Revision 1.1.1.1
1.1 nbrk 1: /*******************************************************************************
2:
3: Copyright (c) 2001-2005, Intel Corporation
4: All rights reserved.
5:
6: Redistribution and use in source and binary forms, with or without
7: modification, are permitted provided that the following conditions are met:
8:
9: 1. Redistributions of source code must retain the above copyright notice,
10: this list of conditions and the following disclaimer.
11:
12: 2. Redistributions in binary form must reproduce the above copyright
13: notice, this list of conditions and the following disclaimer in the
14: documentation and/or other materials provided with the distribution.
15:
16: 3. Neither the name of the Intel Corporation nor the names of its
17: contributors may be used to endorse or promote products derived from
18: this software without specific prior written permission.
19:
20: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21: AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22: IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23: ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24: LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25: CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26: SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27: INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29: ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30: POSSIBILITY OF SUCH DAMAGE.
31:
32: *******************************************************************************/
33:
34: /* $OpenBSD: ixgb_ee.h,v 1.1 2005/11/14 23:25:43 brad Exp $ */
35:
36: #ifndef _IXGB_EE_H_
37: #define _IXGB_EE_H_
38:
39: #define IXGB_EEPROM_SIZE 64 /* Size in words */
40:
41: #define IXGB_ETH_LENGTH_OF_ADDRESS 6
42:
43: /* EEPROM Commands */
44: #define EEPROM_READ_OPCODE 0x6 /* EEPROM read opcode */
45: #define EEPROM_WRITE_OPCODE 0x5 /* EEPROM write opcode */
46: #define EEPROM_ERASE_OPCODE 0x7 /* EEPROM erase opcode */
47: #define EEPROM_EWEN_OPCODE 0x13 /* EEPROM erase/write enable */
48: #define EEPROM_EWDS_OPCODE 0x10 /* EEPROM erase/write disable */
49:
50: /* EEPROM MAP (Word Offsets) */
51: #define EEPROM_IA_1_2_REG 0x0000
52: #define EEPROM_IA_3_4_REG 0x0001
53: #define EEPROM_IA_5_6_REG 0x0002
54: #define EEPROM_COMPATIBILITY_REG 0x0003
55: #define EEPROM_PBA_1_2_REG 0x0008
56: #define EEPROM_PBA_3_4_REG 0x0009
57: #define EEPROM_INIT_CONTROL1_REG 0x000A
58: #define EEPROM_SUBSYS_ID_REG 0x000B
59: #define EEPROM_SUBVEND_ID_REG 0x000C
60: #define EEPROM_DEVICE_ID_REG 0x000D
61: #define EEPROM_VENDOR_ID_REG 0x000E
62: #define EEPROM_INIT_CONTROL2_REG 0x000F
63: #define EEPROM_SWDPINS_REG 0x0020
64: #define EEPROM_CIRCUIT_CTRL_REG 0x0021
65: #define EEPROM_D0_D3_POWER_REG 0x0022
66: #define EEPROM_FLASH_VERSION 0x0032
67: #define EEPROM_CHECKSUM_REG 0x003F
68:
69: /* Mask bits for fields in Word 0x0a of the EEPROM */
70:
71: #define EEPROM_ICW1_SIGNATURE_MASK 0xC000
72: #define EEPROM_ICW1_SIGNATURE_VALID 0x4000
73: #define EEPROM_ICW1_SIGNATURE_CLEAR 0x0000
74:
75: /* For checksumming, the sum of all words in the EEPROM should equal 0xBABA. */
76: #define EEPROM_SUM 0xBABA
77:
78: /* EEPROM Map Sizes (Byte Counts) */
79: #define PBA_SIZE 4
80:
81: /* EEPROM Map defines (WORD OFFSETS)*/
82:
83: /* EEPROM structure */
84: struct ixgb_ee_map_type {
85: uint8_t mac_addr[IXGB_ETH_LENGTH_OF_ADDRESS];
86: uint16_t compatibility;
87: uint16_t reserved1[4];
88: uint32_t pba_number;
89: uint16_t init_ctrl_reg_1;
90: uint16_t subsystem_id;
91: uint16_t subvendor_id;
92: uint16_t device_id;
93: uint16_t vendor_id;
94: uint16_t init_ctrl_reg_2;
95: uint16_t oem_reserved[16];
96: uint16_t swdpins_reg;
97: uint16_t circuit_ctrl_reg;
98: uint8_t d3_power;
99: uint8_t d0_power;
100: uint16_t reserved2[28];
101: uint16_t checksum;
102: };
103:
104: /* EEPROM Functions */
105: uint16_t ixgb_read_eeprom(struct ixgb_hw *hw, uint16_t reg);
106:
107: boolean_t ixgb_validate_eeprom_checksum(struct ixgb_hw *hw);
108:
109: void ixgb_update_eeprom_checksum(struct ixgb_hw *hw);
110:
111: void ixgb_write_eeprom(struct ixgb_hw *hw, uint16_t reg, uint16_t data);
112:
113: #endif /* IXGB_EE_H */
CVSweb