ax88172reg.h revision 6716431ba7de213d5c318e58dc24c8a36da9b068
/*
* @(#)ax88172reg.h 1.1 09/06/15
* Macro definitions for ASIX AX88172 USB to fast ethernet controler
* based on ASIX AX88172/88772 data sheet
* This file is public domain. Coded by M.Murayama (KHF04453@nifty.com)
*/
#ifndef __AX88172_H__
#define __AX88172_H__
/*
* Vendor command definitions
*/
#define VCMD_READ_SRAM 0x02
#define VCMD_WRITE_RXSRAM 0x03
#define VCMD_WRITE_TXSRAM 0x04
#define VCMD_SOFTWARE_MII_OP 0x06
#define VCMD_READ_MII_REG 0x07
#define VCMD_WRITE_MII_REG 0x08
#define VCMD_READ_MII_OPMODE 0x09
#define VCMD_HARDWARE_MII_OP 0x0a
#define VCMD_READ_SROM 0x0b
#define VCMD_WRITE_SROM 0x0c
#define VCMD_WRITE_SROM_ENABLE 0x0d
#define VCMD_WRITE_SROM_DISABLE 0x0e
#define VCMD_READ_RXCTRL 0x0f
#define VCMD_WRITE_RXCTRL 0x10
#define VCMD_READ_IPGS 0x11
#define VCMD_WRITE_IPG 0x12
#define VCMD_WRITE_IPG1 0x13
#define VCMD_WRITE_IPG2 0x14
#define VCMD_READ_MCAST_FILTER 0x15
#define VCMD_WRITE_MCAST_FILTER 0x16
#define VCMD_READ_NODE_ID 0x17
#define VCMD_READ_PHY_IDS 0x19
#define VCMD_READ_MEDIUM_STATUS 0x1a
#define VCMD_WRITE_MEDIUM_STATUS 0x1b
#define VCMD_SET_MONITOR_MODE 0x1c
#define VCMD_GET_MONITOR_MODE 0x1d
#define VCMD_READ_GPIO 0x1e
#define VCMD_WRITE_GPIO 0x1f
/* ax88772 only, currently not supported */
#define VCMD_WRITE_IPGS_88772 0x12
#define VCMD_READ_NODE_ID_88772 0x13
#define VCMD_WRITE_NODE_ID_88772 0x14
#define VCMD_WRITE_TEST_REG_88772 0x17
#define VCMD_SOFTWARE_RESET_88772 0x20
#define VCMD_READ_PHY_SELECT_88772 0x21
#define VCMD_WRITE_PHY_SELECT_88772 0x22
/*
* Register definitions
*/
/* Rx control register */
#define RCR_SO 0x80 /* Start Operation */
#define RCR_AP_88772 0x20 /* accept physical address from mcast filter */
#define RCR_AM 0x10 /* accept multicast address */
#define RCR_AB 0x08 /* accept broadcast address */
#define RCR_SEP 0x04 /* save error packet */
#define RCR_AMALL 0x02 /* accept all multicast address */
#define RCR_PRO 0x01 /* promiscious, all frames received */
#define RCR_MFB 0x0300
#define RCR_MFB_SHIFT 8
#define RCR_MFB_2K (0U << RCR_MFB_SHIFT)
#define RCR_MFB_4K (1U << RCR_MFB_SHIFT)
#define RCR_MFB_8K (2U << RCR_MFB_SHIFT)
#define RCR_MFB_16K (3U << RCR_MFB_SHIFT)
#define RCR_BITS \
"\020" \
"\010SO" \
"\006AP" \
"\005AM" \
"\004AB" \
"\003SEP" \
"\002AMALL" \
"\001PRO"
/* Medium status register */
#define MSR_SM 0x1000 /* super mac support */
#define MSR_SBP 0x0800 /* stop backpressure */
#define MSR_PS 0x0200 /* port speed in mii mode */
#define MSR_RE 0x0100 /* rx enable */
#define MSR_PF 0x0080 /* check only length/type for pause frame */
#define MSR_JFE 0x0040 /* jumbo frame enable */
#define MSR_TFC 0x0020 /* tx flow control enable */
#define MSR_RFC 0x0010 /* rx flow control enable (178) */
#define MSR_FCEN 0x0010 /* flow control enable (172/772) */
#define MSR_ENCK 0x0008 /* Enable GTX_CLK and TXC clock output (178) */
#define MSR_TXABT 0x0004 /* Tx abort allow, always set */
#define MSR_FDPX 0x0002 /* full duplex */
#define MSR_GM 0x0001 /* Gigabit mode (178) */
#define MSR_BITS \
"\020" \
"\015SM" \
"\014SBP" \
"\012PS" \
"\011RE" \
"\005FCEN" \
"\004ENCK" \
"\003TXABT" \
"\002FDPX" \
"\001GM"
/* monitor mode register */
#define MMR_RWMP 0x04 /* remote wakeup by magic pkt */
#define MMR_RWLU 0x02 /* remote wakeup by linkup */
#define MMR_MOM 0x01 /* monitor mode 1:en, 0:dis */
#define MMR_BITS \
"\020" \
"\003RWMP" \
"\002RWLU" \
"\001MOM"
/* GPIO register */
#define GPIO_RSE 0x80 /* reload serial eeprom (88772) */
#define GPIO_DATA2 0x20
#define GPIO_EN2 0x10
#define GPIO_DATA1 0x08
#define GPIO_EN1 0x04
#define GPIO_DATA0 0x02
#define GPIO_EN0 0x01
#define GPIO_BITS \
"\020" \
"\010RSE" \
"\006DATA2" \
"\005EN2" \
"\004DATA1" \
"\003EN1" \
"\002DATA0" \
"\001EN0"
/* Software reset register */
#define SWRST_IPPD 0x40 /* internal phy power down control */
#define SWRST_IPRL 0x20 /* internal phy reset control */
#define SWRST_BZ 0x10 /* force Bulk In to return zero-length pkt */
#define SWRST_PRL 0x08 /* external phy reset pin level */
#define SWRST_PRTE 0x04 /* external phy tri-state enable */
#define SWRST_RT 0x02 /* clear frame length error for Bulk-Out */
#define SWRST_RR 0x01 /* clear frame length error for Bulk-In */
#define SWRST_BITS \
"\020" \
"\007IPPD" \
"\006IPRL" \
"\005BZ" \
"\004PRL" \
"\003PRTE" \
"\002RT" \
"\001RR"
/* Software PHY Select Status register */
#define SPSS_ASEL 0x02 /* 1:auto select 0:manual select */
#define SPSS_PSEL 0x01 /* 1:intenal phy, 0:external (when ASEL=0) */
#endif /* __AX88172_H__ */