summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/io/axf/ax88172reg.h
blob: ae297df7fb2186a41cec53de6dd961c24ead27ef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
/*
 * @(#)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__ */