19d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok/*******************************************************************************
29d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok
39d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok  Intel(R) Gigabit Ethernet Linux driver
46e861326b1d78bb439c0724864a6ca83ec23d289Carolyn Wyborny  Copyright(c) 2007-2012 Intel Corporation.
59d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok
69d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok  This program is free software; you can redistribute it and/or modify it
79d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok  under the terms and conditions of the GNU General Public License,
89d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok  version 2, as published by the Free Software Foundation.
99d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok
109d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok  This program is distributed in the hope it will be useful, but WITHOUT
119d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
129d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
139d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok  more details.
149d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok
159d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok  You should have received a copy of the GNU General Public License along with
169d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok  this program; if not, write to the Free Software Foundation, Inc.,
179d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok  51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
189d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok
199d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok  The full GNU General Public License is included in this distribution in
209d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok  the file called "COPYING".
219d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok
229d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok  Contact Information:
239d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok  e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
249d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok  Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
259d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok
269d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok*******************************************************************************/
279d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok
289d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok#ifndef _E1000_MAC_H_
299d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok#define _E1000_MAC_H_
309d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok
319d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok#include "e1000_hw.h"
329d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok
339d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok#include "e1000_phy.h"
349d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok#include "e1000_nvm.h"
359d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok#include "e1000_defines.h"
369d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok
379d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok/*
389d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok * Functions that should not be called directly from drivers but can be used
399d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok * by other files in this 'shared code'
409d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok */
419d5c824399dea881779d78a6c147288bf2dccb6bAuke Koks32  igb_blink_led(struct e1000_hw *hw);
429d5c824399dea881779d78a6c147288bf2dccb6bAuke Koks32  igb_check_for_copper_link(struct e1000_hw *hw);
439d5c824399dea881779d78a6c147288bf2dccb6bAuke Koks32  igb_cleanup_led(struct e1000_hw *hw);
449d5c824399dea881779d78a6c147288bf2dccb6bAuke Koks32  igb_config_fc_after_link_up(struct e1000_hw *hw);
459d5c824399dea881779d78a6c147288bf2dccb6bAuke Koks32  igb_disable_pcie_master(struct e1000_hw *hw);
469d5c824399dea881779d78a6c147288bf2dccb6bAuke Koks32  igb_force_mac_fc(struct e1000_hw *hw);
479d5c824399dea881779d78a6c147288bf2dccb6bAuke Koks32  igb_get_auto_rd_done(struct e1000_hw *hw);
489d5c824399dea881779d78a6c147288bf2dccb6bAuke Koks32  igb_get_bus_info_pcie(struct e1000_hw *hw);
499d5c824399dea881779d78a6c147288bf2dccb6bAuke Koks32  igb_get_hw_semaphore(struct e1000_hw *hw);
509d5c824399dea881779d78a6c147288bf2dccb6bAuke Koks32  igb_get_speed_and_duplex_copper(struct e1000_hw *hw, u16 *speed,
519d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok				       u16 *duplex);
529d5c824399dea881779d78a6c147288bf2dccb6bAuke Koks32  igb_id_led_init(struct e1000_hw *hw);
539d5c824399dea881779d78a6c147288bf2dccb6bAuke Koks32  igb_led_off(struct e1000_hw *hw);
5428fc06f58b1fe567bb86c7d0e3d93137e5c0126eAlexander Duyckvoid igb_update_mc_addr_list(struct e1000_hw *hw,
5528fc06f58b1fe567bb86c7d0e3d93137e5c0126eAlexander Duyck	                     u8 *mc_addr_list, u32 mc_addr_count);
569d5c824399dea881779d78a6c147288bf2dccb6bAuke Koks32  igb_setup_link(struct e1000_hw *hw);
579d5c824399dea881779d78a6c147288bf2dccb6bAuke Koks32  igb_validate_mdi_setting(struct e1000_hw *hw);
589d5c824399dea881779d78a6c147288bf2dccb6bAuke Koks32  igb_write_8bit_ctrl_reg(struct e1000_hw *hw, u32 reg,
599d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok			       u32 offset, u8 data);
609d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok
619d5c824399dea881779d78a6c147288bf2dccb6bAuke Kokvoid igb_clear_hw_cntrs_base(struct e1000_hw *hw);
629d5c824399dea881779d78a6c147288bf2dccb6bAuke Kokvoid igb_clear_vfta(struct e1000_hw *hw);
631128c756bef8285db3bbde5b26d4a6b4c7e2e613Carolyn Wybornyvoid igb_clear_vfta_i350(struct e1000_hw *hw);
64cad6d05f5676d879bb2a48154aea26cd81ebf1bbAlexander Duycks32  igb_vfta_set(struct e1000_hw *hw, u32 vid, bool add);
659d5c824399dea881779d78a6c147288bf2dccb6bAuke Kokvoid igb_config_collision_dist(struct e1000_hw *hw);
665ac1665906559768029c398d9ede8e7cdd73004eAlexander Duyckvoid igb_init_rx_addrs(struct e1000_hw *hw, u16 rar_count);
67549bdd84dce242e15a9d7b42787ae481ba29f458Alexander Duyckvoid igb_mta_set(struct e1000_hw *hw, u32 hash_value);
689d5c824399dea881779d78a6c147288bf2dccb6bAuke Kokvoid igb_put_hw_semaphore(struct e1000_hw *hw);
699d5c824399dea881779d78a6c147288bf2dccb6bAuke Kokvoid igb_rar_set(struct e1000_hw *hw, u8 *addr, u32 index);
709d5c824399dea881779d78a6c147288bf2dccb6bAuke Koks32  igb_check_alt_mac_addr(struct e1000_hw *hw);
719d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok
729d5c824399dea881779d78a6c147288bf2dccb6bAuke Kokbool igb_enable_mng_pass_thru(struct e1000_hw *hw);
739d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok
749d5c824399dea881779d78a6c147288bf2dccb6bAuke Kokenum e1000_mng_mode {
759d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok	e1000_mng_mode_none = 0,
769d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok	e1000_mng_mode_asf,
779d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok	e1000_mng_mode_pt,
789d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok	e1000_mng_mode_ipmi,
799d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok	e1000_mng_mode_host_if_only
809d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok};
819d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok
829d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok#define E1000_FACTPS_MNGCG    0x20000000
839d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok
849d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok#define E1000_FWSM_MODE_MASK  0xE
859d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok#define E1000_FWSM_MODE_SHIFT 1
869d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok
879d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok#define E1000_MNG_DHCP_COOKIE_STATUS_VLAN    0x2
889d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok
899d5c824399dea881779d78a6c147288bf2dccb6bAuke Kokextern void e1000_init_function_pointers_82575(struct e1000_hw *hw);
909d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok
919d5c824399dea881779d78a6c147288bf2dccb6bAuke Kok#endif
92