ixgb_ee.h 3.4 KB
Newer Older
L
Linus Torvalds 已提交
1 2
/*******************************************************************************

3
  Intel PRO/10GbE Linux driver
4
  Copyright(c) 1999 - 2008 Intel Corporation.
5 6 7 8 9 10 11 12

  This program is free software; you can redistribute it and/or modify it
  under the terms and conditions of the GNU General Public License,
  version 2, as published by the Free Software Foundation.

  This program is distributed in the hope it will be useful, but WITHOUT
  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
L
Linus Torvalds 已提交
13
  more details.
14

L
Linus Torvalds 已提交
15
  You should have received a copy of the GNU General Public License along with
16 17 18 19 20 21
  this program; if not, write to the Free Software Foundation, Inc.,
  51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.

  The full GNU General Public License is included in this distribution in
  the file called "COPYING".

L
Linus Torvalds 已提交
22 23
  Contact Information:
  Linux NICS <linux.nics@intel.com>
24
  e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
L
Linus Torvalds 已提交
25 26 27 28 29 30 31 32 33 34 35 36
  Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497

*******************************************************************************/

#ifndef _IXGB_EE_H_
#define _IXGB_EE_H_

#define IXGB_EEPROM_SIZE    64	/* Size in words */

#define IXGB_ETH_LENGTH_OF_ADDRESS   6

/* EEPROM Commands */
J
Jesse Brandeburg 已提交
37 38 39 40 41
#define EEPROM_READ_OPCODE  0x6	/* EEPROM read opcode */
#define EEPROM_WRITE_OPCODE 0x5	/* EEPROM write opcode */
#define EEPROM_ERASE_OPCODE 0x7	/* EEPROM erase opcode */
#define EEPROM_EWEN_OPCODE  0x13	/* EEPROM erase/write enable */
#define EEPROM_EWDS_OPCODE  0x10	/* EEPROM erase/write disable */
L
Linus Torvalds 已提交
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77

/* EEPROM MAP (Word Offsets) */
#define EEPROM_IA_1_2_REG        0x0000
#define EEPROM_IA_3_4_REG        0x0001
#define EEPROM_IA_5_6_REG        0x0002
#define EEPROM_COMPATIBILITY_REG 0x0003
#define EEPROM_PBA_1_2_REG       0x0008
#define EEPROM_PBA_3_4_REG       0x0009
#define EEPROM_INIT_CONTROL1_REG 0x000A
#define EEPROM_SUBSYS_ID_REG     0x000B
#define EEPROM_SUBVEND_ID_REG    0x000C
#define EEPROM_DEVICE_ID_REG     0x000D
#define EEPROM_VENDOR_ID_REG     0x000E
#define EEPROM_INIT_CONTROL2_REG 0x000F
#define EEPROM_SWDPINS_REG       0x0020
#define EEPROM_CIRCUIT_CTRL_REG  0x0021
#define EEPROM_D0_D3_POWER_REG   0x0022
#define EEPROM_FLASH_VERSION     0x0032
#define EEPROM_CHECKSUM_REG      0x003F

/* Mask bits for fields in Word 0x0a of the EEPROM */

#define EEPROM_ICW1_SIGNATURE_MASK  0xC000
#define EEPROM_ICW1_SIGNATURE_VALID 0x4000
#define EEPROM_ICW1_SIGNATURE_CLEAR 0x0000

/* For checksumming, the sum of all words in the EEPROM should equal 0xBABA. */
#define EEPROM_SUM 0xBABA

/* EEPROM Map Sizes (Byte Counts) */
#define PBA_SIZE 4

/* EEPROM Map defines (WORD OFFSETS)*/

/* EEPROM structure */
struct ixgb_ee_map_type {
78
	u8 mac_addr[IXGB_ETH_LENGTH_OF_ADDRESS];
A
Al Viro 已提交
79 80 81 82 83 84 85 86 87 88 89 90
	__le16 compatibility;
	__le16 reserved1[4];
	__le32 pba_number;
	__le16 init_ctrl_reg_1;
	__le16 subsystem_id;
	__le16 subvendor_id;
	__le16 device_id;
	__le16 vendor_id;
	__le16 init_ctrl_reg_2;
	__le16 oem_reserved[16];
	__le16 swdpins_reg;
	__le16 circuit_ctrl_reg;
91 92
	u8 d3_power;
	u8 d0_power;
A
Al Viro 已提交
93 94
	__le16 reserved2[28];
	__le16 checksum;
L
Linus Torvalds 已提交
95 96 97
};

/* EEPROM Functions */
98
u16 ixgb_read_eeprom(struct ixgb_hw *hw, u16 reg);
L
Linus Torvalds 已提交
99

J
Joe Perches 已提交
100
bool ixgb_validate_eeprom_checksum(struct ixgb_hw *hw);
L
Linus Torvalds 已提交
101 102 103

void ixgb_update_eeprom_checksum(struct ixgb_hw *hw);

104
void ixgb_write_eeprom(struct ixgb_hw *hw, u16 reg, u16 data);
L
Linus Torvalds 已提交
105 106

#endif				/* IXGB_EE_H */