version 1.508.4.30, 2019/02/11 13:44:34 |
version 1.508.4.31, 2019/03/07 17:11:53 |
|
|
* - Virtual Function |
* - Virtual Function |
* - Set LED correctly (based on contents in EEPROM) |
* - Set LED correctly (based on contents in EEPROM) |
* - Rework how parameters are loaded from the EEPROM. |
* - Rework how parameters are loaded from the EEPROM. |
* - Image Unique ID |
|
*/ |
*/ |
|
|
#include <sys/cdefs.h> |
#include <sys/cdefs.h> |
Line 157 __KERNEL_RCSID(0, "$NetBSD$"); |
|
Line 156 __KERNEL_RCSID(0, "$NetBSD$"); |
|
int wm_debug = WM_DEBUG_TX | WM_DEBUG_RX | WM_DEBUG_LINK | WM_DEBUG_GMII |
int wm_debug = WM_DEBUG_TX | WM_DEBUG_RX | WM_DEBUG_LINK | WM_DEBUG_GMII |
| WM_DEBUG_MANAGE | WM_DEBUG_NVM | WM_DEBUG_INIT | WM_DEBUG_LOCK; |
| WM_DEBUG_MANAGE | WM_DEBUG_NVM | WM_DEBUG_INIT | WM_DEBUG_LOCK; |
|
|
#define DPRINTF(x, y) if (wm_debug & (x)) printf y |
#define DPRINTF(x, y) do { if (wm_debug & (x)) printf y; } while (0) |
#else |
#else |
#define DPRINTF(x, y) __nothing |
#define DPRINTF(x, y) __nothing |
#endif /* WM_DEBUG */ |
#endif /* WM_DEBUG */ |
Line 1465 static const struct wm_product { |
|
Line 1464 static const struct wm_product { |
|
WM_T_I210, WMP_F_COPPER }, |
WM_T_I210, WMP_F_COPPER }, |
|
|
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I210_COPPER_WOF, |
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I210_COPPER_WOF, |
"I210 Ethernet (FLASH less)", |
"I210 Ethernet (Copper, FLASH less)", |
WM_T_I210, WMP_F_COPPER }, |
WM_T_I210, WMP_F_COPPER }, |
|
|
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I210_FIBER, |
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I210_FIBER, |
Line 1477 static const struct wm_product { |
|
Line 1476 static const struct wm_product { |
|
WM_T_I210, WMP_F_SERDES }, |
WM_T_I210, WMP_F_SERDES }, |
|
|
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I210_SERDES_WOF, |
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I210_SERDES_WOF, |
"I210 Gigabit Ethernet (FLASH less)", |
"I210 Gigabit Ethernet (SERDES, FLASH less)", |
WM_T_I210, WMP_F_SERDES }, |
WM_T_I210, WMP_F_SERDES }, |
|
|
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I210_SGMII, |
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I210_SGMII, |
"I210 Gigabit Ethernet (SGMII)", |
"I210 Gigabit Ethernet (SGMII)", |
WM_T_I210, WMP_F_COPPER }, |
WM_T_I210, WMP_F_COPPER }, |
|
|
|
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I210_SGMII_WOF, |
|
"I210 Gigabit Ethernet (SGMII, FLASH less)", |
|
WM_T_I210, WMP_F_COPPER }, |
|
|
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I211_COPPER, |
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I211_COPPER, |
"I211 Ethernet (COPPER)", |
"I211 Ethernet (COPPER)", |
WM_T_I211, WMP_F_COPPER }, |
WM_T_I211, WMP_F_COPPER }, |
Line 1511 static const struct wm_product { |
|
Line 1514 static const struct wm_product { |
|
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I218_LM3, |
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I218_LM3, |
"I218 LM Ethernet Connection", |
"I218 LM Ethernet Connection", |
WM_T_PCH_LPT, WMP_F_COPPER }, |
WM_T_PCH_LPT, WMP_F_COPPER }, |
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I219_V, |
|
"I219 V Ethernet Connection", |
|
WM_T_PCH_SPT, WMP_F_COPPER }, |
|
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I219_V2, |
|
"I219 V Ethernet Connection", |
|
WM_T_PCH_SPT, WMP_F_COPPER }, |
|
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I219_V4, |
|
"I219 V Ethernet Connection", |
|
WM_T_PCH_SPT, WMP_F_COPPER }, |
|
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I219_V5, |
|
"I219 V Ethernet Connection", |
|
WM_T_PCH_SPT, WMP_F_COPPER }, |
|
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I219_LM, |
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I219_LM, |
"I219 LM Ethernet Connection", |
"I219 LM Ethernet Connection", |
WM_T_PCH_SPT, WMP_F_COPPER }, |
WM_T_PCH_SPT, WMP_F_COPPER }, |
Line 1538 static const struct wm_product { |
|
Line 1529 static const struct wm_product { |
|
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I219_LM5, |
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I219_LM5, |
"I219 LM Ethernet Connection", |
"I219 LM Ethernet Connection", |
WM_T_PCH_SPT, WMP_F_COPPER }, |
WM_T_PCH_SPT, WMP_F_COPPER }, |
|
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I219_LM6, |
|
"I219 LM Ethernet Connection", |
|
WM_T_PCH_CNP, WMP_F_COPPER }, |
|
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I219_LM7, |
|
"I219 LM Ethernet Connection", |
|
WM_T_PCH_CNP, WMP_F_COPPER }, |
|
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I219_LM8, |
|
"I219 LM Ethernet Connection", |
|
WM_T_PCH_CNP, WMP_F_COPPER }, |
|
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I219_LM9, |
|
"I219 LM Ethernet Connection", |
|
WM_T_PCH_CNP, WMP_F_COPPER }, |
|
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I219_V, |
|
"I219 V Ethernet Connection", |
|
WM_T_PCH_SPT, WMP_F_COPPER }, |
|
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I219_V2, |
|
"I219 V Ethernet Connection", |
|
WM_T_PCH_SPT, WMP_F_COPPER }, |
|
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I219_V4, |
|
"I219 V Ethernet Connection", |
|
WM_T_PCH_SPT, WMP_F_COPPER }, |
|
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I219_V5, |
|
"I219 V Ethernet Connection", |
|
WM_T_PCH_SPT, WMP_F_COPPER }, |
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I219_V6, |
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I219_V6, |
"I219 V Ethernet Connection", |
"I219 V Ethernet Connection", |
WM_T_PCH_CNP, WMP_F_COPPER }, |
WM_T_PCH_CNP, WMP_F_COPPER }, |
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I219_V7, |
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I219_V7, |
"I219 V Ethernet Connection", |
"I219 V Ethernet Connection", |
WM_T_PCH_CNP, WMP_F_COPPER }, |
WM_T_PCH_CNP, WMP_F_COPPER }, |
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I219_LM6, |
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I219_V8, |
"I219 LM Ethernet Connection", |
"I219 V Ethernet Connection", |
WM_T_PCH_CNP, WMP_F_COPPER }, |
WM_T_PCH_CNP, WMP_F_COPPER }, |
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I219_LM7, |
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I219_V9, |
"I219 LM Ethernet Connection", |
"I219 V Ethernet Connection", |
WM_T_PCH_CNP, WMP_F_COPPER }, |
WM_T_PCH_CNP, WMP_F_COPPER }, |
{ 0, 0, |
{ 0, 0, |
NULL, |
NULL, |
Line 2968 wm_detach(device_t self, int flags __unu |
|
Line 2983 wm_detach(device_t self, int flags __unu |
|
evcnt_detach(&sc->sc_ev_rx_macctl); |
evcnt_detach(&sc->sc_ev_rx_macctl); |
#endif /* WM_EVENT_COUNTERS */ |
#endif /* WM_EVENT_COUNTERS */ |
|
|
|
rnd_detach_source(&sc->rnd_source); |
|
|
/* Tell the firmware about the release */ |
/* Tell the firmware about the release */ |
WM_CORE_LOCK(sc); |
WM_CORE_LOCK(sc); |
wm_release_manageability(sc); |
wm_release_manageability(sc); |
Line 13184 wm_nvm_version(struct wm_softc *sc) |
|
Line 13201 wm_nvm_version(struct wm_softc *sc) |
|
* 82572EI 0x5069 5.6.9? |
* 82572EI 0x5069 5.6.9? |
* 82574L 0x1080 1.8.0? (the spec update notes about 2.1.4) |
* 82574L 0x1080 1.8.0? (the spec update notes about 2.1.4) |
* 0x2013 2.1.3? |
* 0x2013 2.1.3? |
* 82583 0x10a0 1.10.0? (document says it's default vaule) |
* 82583 0x10a0 1.10.0? (document says it's default value) |
*/ |
*/ |
|
|
/* |
/* |
Line 14849 wm_set_eee_i350(struct wm_softc *sc) |
|
Line 14866 wm_set_eee_i350(struct wm_softc *sc) |
|
{ |
{ |
uint32_t ipcnfg, eeer; |
uint32_t ipcnfg, eeer; |
|
|
|
KASSERT(sc->sc_mediatype == WM_MEDIATYPE_COPPER); |
|
|
ipcnfg = CSR_READ(sc, WMREG_IPCNFG); |
ipcnfg = CSR_READ(sc, WMREG_IPCNFG); |
eeer = CSR_READ(sc, WMREG_EEER); |
eeer = CSR_READ(sc, WMREG_EEER); |
|
|