/* * ASIX AX88179/178A USB 3.0/2.0 to Gigabit Ethernet Devices * * Copyright (C) 2011-2013 ASIX * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that 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 more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see <http://www.gnu.org/licenses/>. */#include<linux/module.h>#include<linux/etherdevice.h>#include<linux/mii.h>#include<linux/usb.h>#include<linux/crc32.h>#include<linux/usb/usbnet.h>#define AX88179_PHY_ID 0x03#define AX_EEPROM_LEN 0x100#define AX88179_EEPROM_MAGIC 0x17900b95#define AX_MCAST_FLTSIZE 8#define AX_MAX_MCAST 64#define AX_INT_PPLS_LINK ((u32)BIT(16))#define AX_RXHDR_L4_TYPE_MASK 0x1c#define AX_RXHDR_L4_TYPE_UDP 4#define AX_RXHDR_L4_TYPE_TCP 16#define AX_RXHDR_L3CSUM_ERR 2#define AX_RXHDR_L4CSUM_ERR 1#define AX_RXHDR_CRC_ERR ((u32)BIT(29))#define AX_RXHDR_DROP_ERR ((u32)BIT(31))#define AX_ACCESS_MAC 0x01#define AX_ACCESS_PHY 0x02#define AX_ACCESS_EEPROM 0x04#define AX_ACCESS_EFUS 0x05#define AX_PAUSE_WATERLVL_HIGH 0x54#define AX_PAUSE_WATERLVL_LOW 0x55#define PHYSICAL_LINK_STATUS 0x02#define AX_USB_SS 0x04#define AX_USB_HS 0x02#define GENERAL_STATUS 0x03/* Check AX88179 version. UA1:Bit2 = 0, UA2:Bit2 = 1 */#define AX_SECLD 0x04#define AX_SROM_ADDR 0x07#define AX_SROM_CMD 0x0a#define EEP_RD 0x04#define EEP_BUSY 0x10#define AX_SROM_DATA_LOW 0x08#define AX_SROM_DATA_HIGH 0x09#define AX_RX_CTL 0x0b#define AX_RX_CTL_DROPCRCERR 0x0100#define AX_RX_CTL_IPE 0x0200#define AX_RX_CTL_START 0x0080#define AX_RX_CTL_AP 0x0020#define AX_RX_CTL_AM 0x0010#define AX_RX_CTL_AB 0x0008#define AX_RX_CTL_AMALL 0x0002#define AX_RX_CTL_PRO 0x0001#define AX_RX_CTL_STOP 0x0000#define AX_NODE_ID 0x10#define AX_MULFLTARY 0x16#define AX_MEDIUM_STATUS_MODE 0x22#define AX_MEDIUM_GIGAMODE 0x01#define AX_MEDIUM_FULL_DUPLEX 0x02#define AX_MEDIUM_EN_125MHZ 0x08#define AX_MEDIUM_RXFLOW_CTRLEN 0x10#define AX_MEDIUM_TXFLOW_CTRLEN 0x20#define AX_MEDIUM_RECEIVE_EN 0x100#define AX_MEDIUM_PS 0x200