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