xref: /dflybsd-src/sys/dev/netif/ig_hal/e1000_i210.h (revision 65aebe9f9faf98a2c7eaca700e786d06c34a9929)
14be59a01SSepherosa Ziehau /******************************************************************************
24be59a01SSepherosa Ziehau 
3*65aebe9fSSepherosa Ziehau   Copyright (c) 2001-2016, Intel Corporation
44be59a01SSepherosa Ziehau   All rights reserved.
54be59a01SSepherosa Ziehau 
64be59a01SSepherosa Ziehau   Redistribution and use in source and binary forms, with or without
74be59a01SSepherosa Ziehau   modification, are permitted provided that the following conditions are met:
84be59a01SSepherosa Ziehau 
94be59a01SSepherosa Ziehau    1. Redistributions of source code must retain the above copyright notice,
104be59a01SSepherosa Ziehau       this list of conditions and the following disclaimer.
114be59a01SSepherosa Ziehau 
124be59a01SSepherosa Ziehau    2. Redistributions in binary form must reproduce the above copyright
134be59a01SSepherosa Ziehau       notice, this list of conditions and the following disclaimer in the
144be59a01SSepherosa Ziehau       documentation and/or other materials provided with the distribution.
154be59a01SSepherosa Ziehau 
164be59a01SSepherosa Ziehau    3. Neither the name of the Intel Corporation nor the names of its
174be59a01SSepherosa Ziehau       contributors may be used to endorse or promote products derived from
184be59a01SSepherosa Ziehau       this software without specific prior written permission.
194be59a01SSepherosa Ziehau 
204be59a01SSepherosa Ziehau   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
214be59a01SSepherosa Ziehau   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
224be59a01SSepherosa Ziehau   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
234be59a01SSepherosa Ziehau   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
244be59a01SSepherosa Ziehau   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
254be59a01SSepherosa Ziehau   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
264be59a01SSepherosa Ziehau   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
274be59a01SSepherosa Ziehau   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
284be59a01SSepherosa Ziehau   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
294be59a01SSepherosa Ziehau   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
304be59a01SSepherosa Ziehau   POSSIBILITY OF SUCH DAMAGE.
314be59a01SSepherosa Ziehau 
324be59a01SSepherosa Ziehau ******************************************************************************/
334be59a01SSepherosa Ziehau /*$FreeBSD$*/
344be59a01SSepherosa Ziehau 
354be59a01SSepherosa Ziehau #ifndef _E1000_I210_H_
364be59a01SSepherosa Ziehau #define _E1000_I210_H_
374be59a01SSepherosa Ziehau 
38379ebbe7SSepherosa Ziehau bool e1000_get_flash_presence_i210(struct e1000_hw *hw);
394be59a01SSepherosa Ziehau s32 e1000_update_flash_i210(struct e1000_hw *hw);
404be59a01SSepherosa Ziehau s32 e1000_update_nvm_checksum_i210(struct e1000_hw *hw);
414be59a01SSepherosa Ziehau s32 e1000_validate_nvm_checksum_i210(struct e1000_hw *hw);
424be59a01SSepherosa Ziehau s32 e1000_write_nvm_srwr_i210(struct e1000_hw *hw, u16 offset,
434be59a01SSepherosa Ziehau 			      u16 words, u16 *data);
444be59a01SSepherosa Ziehau s32 e1000_read_nvm_srrd_i210(struct e1000_hw *hw, u16 offset,
454be59a01SSepherosa Ziehau 			     u16 words, u16 *data);
464be59a01SSepherosa Ziehau s32 e1000_read_invm_version(struct e1000_hw *hw,
474be59a01SSepherosa Ziehau 			    struct e1000_fw_version *invm_ver);
484be59a01SSepherosa Ziehau s32 e1000_acquire_swfw_sync_i210(struct e1000_hw *hw, u16 mask);
494be59a01SSepherosa Ziehau void e1000_release_swfw_sync_i210(struct e1000_hw *hw, u16 mask);
50379ebbe7SSepherosa Ziehau s32 e1000_read_xmdio_reg(struct e1000_hw *hw, u16 addr, u8 dev_addr,
51379ebbe7SSepherosa Ziehau 			 u16 *data);
52379ebbe7SSepherosa Ziehau s32 e1000_write_xmdio_reg(struct e1000_hw *hw, u16 addr, u8 dev_addr,
53379ebbe7SSepherosa Ziehau 			  u16 data);
54ba0123e0SSepherosa Ziehau s32 e1000_init_hw_i210(struct e1000_hw *hw);
554be59a01SSepherosa Ziehau 
564be59a01SSepherosa Ziehau #define E1000_STM_OPCODE		0xDB00
574be59a01SSepherosa Ziehau #define E1000_EEPROM_FLASH_SIZE_WORD	0x11
584be59a01SSepherosa Ziehau 
594be59a01SSepherosa Ziehau #define INVM_DWORD_TO_RECORD_TYPE(invm_dword) \
604be59a01SSepherosa Ziehau 	(u8)((invm_dword) & 0x7)
614be59a01SSepherosa Ziehau #define INVM_DWORD_TO_WORD_ADDRESS(invm_dword) \
624be59a01SSepherosa Ziehau 	(u8)(((invm_dword) & 0x0000FE00) >> 9)
634be59a01SSepherosa Ziehau #define INVM_DWORD_TO_WORD_DATA(invm_dword) \
644be59a01SSepherosa Ziehau 	(u16)(((invm_dword) & 0xFFFF0000) >> 16)
654be59a01SSepherosa Ziehau 
664be59a01SSepherosa Ziehau enum E1000_INVM_STRUCTURE_TYPE {
674be59a01SSepherosa Ziehau 	E1000_INVM_UNINITIALIZED_STRUCTURE		= 0x00,
684be59a01SSepherosa Ziehau 	E1000_INVM_WORD_AUTOLOAD_STRUCTURE		= 0x01,
694be59a01SSepherosa Ziehau 	E1000_INVM_CSR_AUTOLOAD_STRUCTURE		= 0x02,
704be59a01SSepherosa Ziehau 	E1000_INVM_PHY_REGISTER_AUTOLOAD_STRUCTURE	= 0x03,
714be59a01SSepherosa Ziehau 	E1000_INVM_RSA_KEY_SHA256_STRUCTURE		= 0x04,
724be59a01SSepherosa Ziehau 	E1000_INVM_INVALIDATED_STRUCTURE		= 0x0F,
734be59a01SSepherosa Ziehau };
744be59a01SSepherosa Ziehau 
754be59a01SSepherosa Ziehau #define E1000_INVM_RSA_KEY_SHA256_DATA_SIZE_IN_DWORDS	8
764be59a01SSepherosa Ziehau #define E1000_INVM_CSR_AUTOLOAD_DATA_SIZE_IN_DWORDS	1
774be59a01SSepherosa Ziehau #define E1000_INVM_ULT_BYTES_SIZE	8
784be59a01SSepherosa Ziehau #define E1000_INVM_RECORD_SIZE_IN_BYTES	4
794be59a01SSepherosa Ziehau #define E1000_INVM_VER_FIELD_ONE	0x1FF8
804be59a01SSepherosa Ziehau #define E1000_INVM_VER_FIELD_TWO	0x7FE000
814be59a01SSepherosa Ziehau #define E1000_INVM_IMGTYPE_FIELD	0x1F800000
824be59a01SSepherosa Ziehau 
834be59a01SSepherosa Ziehau #define E1000_INVM_MAJOR_MASK	0x3F0
844be59a01SSepherosa Ziehau #define E1000_INVM_MINOR_MASK	0xF
854be59a01SSepherosa Ziehau #define E1000_INVM_MAJOR_SHIFT	4
864be59a01SSepherosa Ziehau 
874be59a01SSepherosa Ziehau #define ID_LED_DEFAULT_I210		((ID_LED_OFF1_ON2  << 8) | \
884be59a01SSepherosa Ziehau 					 (ID_LED_DEF1_DEF2 <<  4) | \
894be59a01SSepherosa Ziehau 					 (ID_LED_OFF1_OFF2))
904be59a01SSepherosa Ziehau #define ID_LED_DEFAULT_I210_SERDES	((ID_LED_DEF1_DEF2 << 8) | \
914be59a01SSepherosa Ziehau 					 (ID_LED_DEF1_DEF2 <<  4) | \
92ba0123e0SSepherosa Ziehau 					 (ID_LED_OFF1_ON2))
934be59a01SSepherosa Ziehau 
94379ebbe7SSepherosa Ziehau /* NVM offset defaults for I211 devices */
954be59a01SSepherosa Ziehau #define NVM_INIT_CTRL_2_DEFAULT_I211	0X7243
964be59a01SSepherosa Ziehau #define NVM_INIT_CTRL_4_DEFAULT_I211	0x00C1
974be59a01SSepherosa Ziehau #define NVM_LED_1_CFG_DEFAULT_I211	0x0184
984be59a01SSepherosa Ziehau #define NVM_LED_0_2_CFG_DEFAULT_I211	0x200C
99ba0123e0SSepherosa Ziehau 
100ba0123e0SSepherosa Ziehau /* PLL Defines */
101ba0123e0SSepherosa Ziehau #define E1000_PCI_PMCSR			0x44
102ba0123e0SSepherosa Ziehau #define E1000_PCI_PMCSR_D3		0x03
103ba0123e0SSepherosa Ziehau #define E1000_MAX_PLL_TRIES		5
104ba0123e0SSepherosa Ziehau #define E1000_PHY_PLL_UNCONF		0xFF
105ba0123e0SSepherosa Ziehau #define E1000_PHY_PLL_FREQ_PAGE		0xFC0000
106ba0123e0SSepherosa Ziehau #define E1000_PHY_PLL_FREQ_REG		0x000E
107ba0123e0SSepherosa Ziehau #define E1000_INVM_DEFAULT_AL		0x202F
108ba0123e0SSepherosa Ziehau #define E1000_INVM_AUTOLOAD		0x0A
109ba0123e0SSepherosa Ziehau #define E1000_INVM_PLL_WO_VAL		0x0010
110ba0123e0SSepherosa Ziehau 
1114be59a01SSepherosa Ziehau #endif
112