xref: /OK3568_Linux_fs/kernel/drivers/net/ethernet/realtek/r8168/r8168_asf.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun ################################################################################
4*4882a593Smuzhiyun #
5*4882a593Smuzhiyun # r8168 is the Linux device driver released for Realtek Gigabit Ethernet
6*4882a593Smuzhiyun # controllers with PCI-Express interface.
7*4882a593Smuzhiyun #
8*4882a593Smuzhiyun # Copyright(c) 2021 Realtek Semiconductor Corp. All rights reserved.
9*4882a593Smuzhiyun #
10*4882a593Smuzhiyun # This program is free software; you can redistribute it and/or modify it
11*4882a593Smuzhiyun # under the terms of the GNU General Public License as published by the Free
12*4882a593Smuzhiyun # Software Foundation; either version 2 of the License, or (at your option)
13*4882a593Smuzhiyun # any later version.
14*4882a593Smuzhiyun #
15*4882a593Smuzhiyun # This program is distributed in the hope that it will be useful, but WITHOUT
16*4882a593Smuzhiyun # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
17*4882a593Smuzhiyun # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
18*4882a593Smuzhiyun # more details.
19*4882a593Smuzhiyun #
20*4882a593Smuzhiyun # You should have received a copy of the GNU General Public License along with
21*4882a593Smuzhiyun # this program; if not, see <http://www.gnu.org/licenses/>.
22*4882a593Smuzhiyun #
23*4882a593Smuzhiyun # Author:
24*4882a593Smuzhiyun # Realtek NIC software team <nicfae@realtek.com>
25*4882a593Smuzhiyun # No. 2, Innovation Road II, Hsinchu Science Park, Hsinchu 300, Taiwan
26*4882a593Smuzhiyun #
27*4882a593Smuzhiyun ################################################################################
28*4882a593Smuzhiyun */
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun /************************************************************************************
31*4882a593Smuzhiyun  *  This product is covered by one or more of the following patents:
32*4882a593Smuzhiyun  *  US6,570,884, US6,115,776, and US6,327,625.
33*4882a593Smuzhiyun  ***********************************************************************************/
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun #define SIOCDEVPRIVATE_RTLASF   SIOCDEVPRIVATE
36*4882a593Smuzhiyun 
37*4882a593Smuzhiyun #define FUNCTION_ENABLE		1
38*4882a593Smuzhiyun #define FUNCTION_DISABLE	0
39*4882a593Smuzhiyun 
40*4882a593Smuzhiyun #define ASFCONFIG	0
41*4882a593Smuzhiyun #define ASFCAPABILITY	1
42*4882a593Smuzhiyun #define ASFCOMMULEN	0
43*4882a593Smuzhiyun #define ASFHBPERIOD	0
44*4882a593Smuzhiyun #define ASFWD16RST	0
45*4882a593Smuzhiyun #define ASFCAPMASK	0
46*4882a593Smuzhiyun #define ASFALERTRESND	0
47*4882a593Smuzhiyun #define ASFLSNRPOLLCYC	0
48*4882a593Smuzhiyun #define ASFSNRPOLLCYC	0
49*4882a593Smuzhiyun #define ASFWD8RESET	0
50*4882a593Smuzhiyun #define ASFRWHEXNUM	0
51*4882a593Smuzhiyun 
52*4882a593Smuzhiyun #define FMW_CAP_MASK	0x0000F867
53*4882a593Smuzhiyun #define SPC_CMD_MASK	0x1F00
54*4882a593Smuzhiyun #define SYS_CAP_MASK	0xFF
55*4882a593Smuzhiyun #define DISABLE_MASK	0x00
56*4882a593Smuzhiyun 
57*4882a593Smuzhiyun #define MAX_DATA_LEN	200
58*4882a593Smuzhiyun #define MAX_STR_LEN	200
59*4882a593Smuzhiyun 
60*4882a593Smuzhiyun #define COMMU_STR_MAX_LEN	23
61*4882a593Smuzhiyun 
62*4882a593Smuzhiyun #define KEY_LEN		20
63*4882a593Smuzhiyun #define UUID_LEN	16
64*4882a593Smuzhiyun #define SYSID_LEN	2
65*4882a593Smuzhiyun 
66*4882a593Smuzhiyun #define RW_ONE_BYTE	1
67*4882a593Smuzhiyun #define RW_TWO_BYTES	2
68*4882a593Smuzhiyun #define RW_FOUR_BYTES	4
69*4882a593Smuzhiyun 
70*4882a593Smuzhiyun enum asf_registers {
71*4882a593Smuzhiyun         HBPeriod	= 0x0000,
72*4882a593Smuzhiyun         WD8Rst		= 0x0002,
73*4882a593Smuzhiyun         WD8Timer	= 0x0003,
74*4882a593Smuzhiyun         WD16Rst		= 0x0004,
75*4882a593Smuzhiyun         LSnsrPollCycle	= 0x0006,
76*4882a593Smuzhiyun         ASFSnsrPollPrd	= 0x0007,
77*4882a593Smuzhiyun         AlertReSendCnt	= 0x0008,
78*4882a593Smuzhiyun         AlertReSendItvl	= 0x0009,
79*4882a593Smuzhiyun         SMBAddr		= 0x000A,
80*4882a593Smuzhiyun         SMBCap		= 0x000B,
81*4882a593Smuzhiyun         ASFConfigR0	= 0x000C,
82*4882a593Smuzhiyun         ASFConfigR1	= 0x000D,
83*4882a593Smuzhiyun         WD16Timer	= 0x000E,
84*4882a593Smuzhiyun         ConsoleMA	= 0x0010,
85*4882a593Smuzhiyun         ConsoleIP	= 0x0016,
86*4882a593Smuzhiyun         IPAddr		= 0x001A,
87*4882a593Smuzhiyun 
88*4882a593Smuzhiyun         UUID		= 0x0020,
89*4882a593Smuzhiyun         IANA		= 0x0030,
90*4882a593Smuzhiyun         SysID		= 0x0034,
91*4882a593Smuzhiyun         Community	= 0x0036,
92*4882a593Smuzhiyun         StringLength	= 0x004D,
93*4882a593Smuzhiyun         LC		= 0x004E,
94*4882a593Smuzhiyun         EntityInst	= 0x004F,
95*4882a593Smuzhiyun         FmCapMsk	= 0x0050,
96*4882a593Smuzhiyun         SpCMDMsk	= 0x0054,
97*4882a593Smuzhiyun         SysCapMsk	= 0x0056,
98*4882a593Smuzhiyun         WDSysSt		= 0x0057,
99*4882a593Smuzhiyun         RxMsgType	= 0x0058,
100*4882a593Smuzhiyun         RxSpCMD		= 0x0059,
101*4882a593Smuzhiyun         RxSpCMDPa	= 0x005A,
102*4882a593Smuzhiyun         RxBtOpMsk	= 0x005C,
103*4882a593Smuzhiyun         RmtRstAddr	= 0x005E,
104*4882a593Smuzhiyun         RmtRstCmd	= 0x005F,
105*4882a593Smuzhiyun         RmtRstData	= 0x0060,
106*4882a593Smuzhiyun         RmtPwrOffAddr	= 0x0061,
107*4882a593Smuzhiyun         RmtPwrOffCmd	= 0x0062,
108*4882a593Smuzhiyun         RmtPwrOffData	= 0x0063,
109*4882a593Smuzhiyun         RmtPwrOnAddr	= 0x0064,
110*4882a593Smuzhiyun         RmtPwrOnCmd	= 0x0065,
111*4882a593Smuzhiyun         RmtPwrOnData	= 0x0066,
112*4882a593Smuzhiyun         RmtPCRAddr	= 0x0067,
113*4882a593Smuzhiyun         RmtPCRCmd	= 0x0068,
114*4882a593Smuzhiyun         RmtPCRData	= 0x0069,
115*4882a593Smuzhiyun         RMCP_IANA	= 0x006A,
116*4882a593Smuzhiyun         RMCP_OEM	= 0x006E,
117*4882a593Smuzhiyun         ASFSnsr0Addr	= 0x0070,
118*4882a593Smuzhiyun 
119*4882a593Smuzhiyun         ASFSnsrEvSt	= 0x0073,
120*4882a593Smuzhiyun         ASFSnsrEvAlert	= 0x0081,
121*4882a593Smuzhiyun 
122*4882a593Smuzhiyun         LSnsrNo		= 0x00AD,
123*4882a593Smuzhiyun         AssrtEvntMsk	= 0x00AE,
124*4882a593Smuzhiyun         DeAssrtEvntMsk	= 0x00AF,
125*4882a593Smuzhiyun 
126*4882a593Smuzhiyun         LSnsrAddr0	= 0x00B0,
127*4882a593Smuzhiyun         LAlertCMD0	= 0x00B1,
128*4882a593Smuzhiyun         LAlertDataMsk0	= 0x00B2,
129*4882a593Smuzhiyun         LAlertCmp0	= 0x00B3,
130*4882a593Smuzhiyun         LAlertESnsrT0	= 0x00B4,
131*4882a593Smuzhiyun         LAlertET0	= 0x00B5,
132*4882a593Smuzhiyun         LAlertEOffset0	= 0x00B6,
133*4882a593Smuzhiyun         LAlertES0	= 0x00B7,
134*4882a593Smuzhiyun         LAlertSN0	= 0x00B8,
135*4882a593Smuzhiyun         LAlertEntity0	= 0x00B9,
136*4882a593Smuzhiyun         LAlertEI0	= 0x00BA,
137*4882a593Smuzhiyun         LSnsrState0	= 0x00BB,
138*4882a593Smuzhiyun 
139*4882a593Smuzhiyun         LSnsrAddr1	= 0x00BD,
140*4882a593Smuzhiyun         LAlertCMD1	= 0x00BE,
141*4882a593Smuzhiyun         LAlertDataMsk1	= 0x00BF,
142*4882a593Smuzhiyun         LAlertCmp1	= 0x00C0,
143*4882a593Smuzhiyun         LAlertESnsrT1	= 0x00C1,
144*4882a593Smuzhiyun         LAlertET1	= 0x00C2,
145*4882a593Smuzhiyun         LAlertEOffset1	= 0x00C3,
146*4882a593Smuzhiyun         LAlertES1	= 0x00C4,
147*4882a593Smuzhiyun         LAlertSN1	= 0x00C5,
148*4882a593Smuzhiyun         LAlertEntity1	= 0x00C6,
149*4882a593Smuzhiyun         LAlertEI1	= 0x00C7,
150*4882a593Smuzhiyun         LSnsrState1	= 0x00C8,
151*4882a593Smuzhiyun 
152*4882a593Smuzhiyun         LSnsrAddr2	= 0x00CA,
153*4882a593Smuzhiyun         LAlertCMD2	= 0x00CB,
154*4882a593Smuzhiyun         LAlertDataMsk2	= 0x00CC,
155*4882a593Smuzhiyun         LAlertCmp2	= 0x00CD,
156*4882a593Smuzhiyun         LAlertESnsrT2	= 0x00CE,
157*4882a593Smuzhiyun         LAlertET2	= 0x00CF,
158*4882a593Smuzhiyun         LAlertEOffset2	= 0x00D0,
159*4882a593Smuzhiyun         LAlertES2	= 0x00D1,
160*4882a593Smuzhiyun         LAlertSN2	= 0x00D2,
161*4882a593Smuzhiyun         LAlertEntity2	= 0x00D3,
162*4882a593Smuzhiyun         LAlertEI2	= 0x00D4,
163*4882a593Smuzhiyun         LSnsrState2	= 0x00D5,
164*4882a593Smuzhiyun 
165*4882a593Smuzhiyun         LSnsrAddr3	= 0x00D7,
166*4882a593Smuzhiyun         LAlertCMD3	= 0x00D8,
167*4882a593Smuzhiyun         LAlertDataMsk3	= 0x00D9,
168*4882a593Smuzhiyun         LAlertCmp3	= 0x00DA,
169*4882a593Smuzhiyun         LAlertESnsrT3	= 0x00DB,
170*4882a593Smuzhiyun         LAlertET3	= 0x00DC,
171*4882a593Smuzhiyun         LAlertEOffset3	= 0x00DD,
172*4882a593Smuzhiyun         LAlertES3	= 0x00DE,
173*4882a593Smuzhiyun         LAlertSN3	= 0x00DF,
174*4882a593Smuzhiyun         LAlertEntity3	= 0x00E0,
175*4882a593Smuzhiyun         LAlertEI3	= 0x00E1,
176*4882a593Smuzhiyun         LSnsrState3	= 0x00E2,
177*4882a593Smuzhiyun 
178*4882a593Smuzhiyun         LSnsrAddr4	= 0x00E4,
179*4882a593Smuzhiyun         LAlertCMD4	= 0x00E5,
180*4882a593Smuzhiyun         LAlertDataMsk4	= 0x00E6,
181*4882a593Smuzhiyun         LAlertCmp4	= 0x00E7,
182*4882a593Smuzhiyun         LAlertESnsrT4	= 0x00E8,
183*4882a593Smuzhiyun         LAlertET4	= 0x00E9,
184*4882a593Smuzhiyun         LAlertEOffset4	= 0x00EA,
185*4882a593Smuzhiyun         LAlertES4	= 0x00EB,
186*4882a593Smuzhiyun         LAlertSN4	= 0x00EC,
187*4882a593Smuzhiyun         LAlertEntity4	= 0x00ED,
188*4882a593Smuzhiyun         LAlertEI4	= 0x00EE,
189*4882a593Smuzhiyun         LSnsrState4	= 0x00EF,
190*4882a593Smuzhiyun 
191*4882a593Smuzhiyun         LSnsrAddr5	= 0x00F1,
192*4882a593Smuzhiyun         LAlertCMD5	= 0x00F2,
193*4882a593Smuzhiyun         LAlertDataMsk5	= 0x00F3,
194*4882a593Smuzhiyun         LAlertCmp5	= 0x00F4,
195*4882a593Smuzhiyun         LAlertESnsrT5	= 0x00F5,
196*4882a593Smuzhiyun         LAlertET5	= 0x00F6,
197*4882a593Smuzhiyun         LAlertEOffset5	= 0x00F7,
198*4882a593Smuzhiyun         LAlertES5	= 0x00F8,
199*4882a593Smuzhiyun         LAlertSN5	= 0x00F9,
200*4882a593Smuzhiyun         LAlertEntity5	= 0x00FA,
201*4882a593Smuzhiyun         LAlertEI5	= 0x00FB,
202*4882a593Smuzhiyun         LSnsrState5	= 0x00FC,
203*4882a593Smuzhiyun 
204*4882a593Smuzhiyun         LSnsrAddr6	= 0x00FE,
205*4882a593Smuzhiyun         LAlertCMD6	= 0x00FF,
206*4882a593Smuzhiyun         LAlertDataMsk6	= 0x0100,
207*4882a593Smuzhiyun         LAlertCmp6	= 0x0101,
208*4882a593Smuzhiyun         LAlertESnsrT6	= 0x0102,
209*4882a593Smuzhiyun         LAlertET6	= 0x0103,
210*4882a593Smuzhiyun         LAlertEOffset6	= 0x0104,
211*4882a593Smuzhiyun         LAlertES6	= 0x0105,
212*4882a593Smuzhiyun         LAlertSN6	= 0x0106,
213*4882a593Smuzhiyun         LAlertEntity6	= 0x0107,
214*4882a593Smuzhiyun         LAlertEI6	= 0x0108,
215*4882a593Smuzhiyun         LSnsrState6	= 0x0109,
216*4882a593Smuzhiyun 
217*4882a593Smuzhiyun         LSnsrAddr7	= 0x010B,
218*4882a593Smuzhiyun         LAlertCMD7	= 0x010C,
219*4882a593Smuzhiyun         LAlertDataMsk7	= 0x010D,
220*4882a593Smuzhiyun         LAlertCmp7	= 0x010E,
221*4882a593Smuzhiyun         LAlertESnsrT7	= 0x010F,
222*4882a593Smuzhiyun         LAlertET7	= 0x0110,
223*4882a593Smuzhiyun         LAlertEOffset7	= 0x0111,
224*4882a593Smuzhiyun         LAlertES7	= 0x0112,
225*4882a593Smuzhiyun         LAlertSN7	= 0x0113,
226*4882a593Smuzhiyun         LAlertEntity7	= 0x0114,
227*4882a593Smuzhiyun         LAlertEI7	= 0x0115,
228*4882a593Smuzhiyun         LSnsrState7	= 0x0116,
229*4882a593Smuzhiyun         LAssert		= 0x0117,
230*4882a593Smuzhiyun         LDAssert	= 0x0118,
231*4882a593Smuzhiyun         IPServiceType	= 0x0119,
232*4882a593Smuzhiyun         IPIdfr		= 0x011A,
233*4882a593Smuzhiyun         FlagFOffset	= 0x011C,
234*4882a593Smuzhiyun         TTL		= 0x011E,
235*4882a593Smuzhiyun         HbtEI		= 0x011F,
236*4882a593Smuzhiyun         MgtConSID1	= 0x0120,
237*4882a593Smuzhiyun         MgtConSID2	= 0x0124,
238*4882a593Smuzhiyun         MgdCltSID	= 0x0128,
239*4882a593Smuzhiyun         StCd		= 0x012C,
240*4882a593Smuzhiyun         MgtConUR	= 0x012D,
241*4882a593Smuzhiyun         MgtConUNL	= 0x012E,
242*4882a593Smuzhiyun 
243*4882a593Smuzhiyun         AuthPd		= 0x0130,
244*4882a593Smuzhiyun         IntyPd		= 0x0138,
245*4882a593Smuzhiyun         MgtConRN	= 0x0140,
246*4882a593Smuzhiyun         MgdCtlRN	= 0x0150,
247*4882a593Smuzhiyun         MgtConUN	= 0x0160,
248*4882a593Smuzhiyun         Rakp2IntCk	= 0x0170,
249*4882a593Smuzhiyun         KO		= 0x017C,
250*4882a593Smuzhiyun         KA		= 0x0190,
251*4882a593Smuzhiyun         KG		= 0x01A4,
252*4882a593Smuzhiyun         KR		= 0x01B8,
253*4882a593Smuzhiyun         CP		= 0x01CC,
254*4882a593Smuzhiyun         CQ		= 0x01D0,
255*4882a593Smuzhiyun         KC		= 0x01D4,
256*4882a593Smuzhiyun         ConsoleSid	= 0x01E8,
257*4882a593Smuzhiyun 
258*4882a593Smuzhiyun         SIK1		= 0x01FC,
259*4882a593Smuzhiyun         SIK2		= 0x0210,
260*4882a593Smuzhiyun         Udpsrc_port	= 0x0224,
261*4882a593Smuzhiyun         Udpdes_port	= 0x0226,
262*4882a593Smuzhiyun         Asf_debug_mux	= 0x0228
263*4882a593Smuzhiyun };
264*4882a593Smuzhiyun 
265*4882a593Smuzhiyun enum asf_cmdln_opt {
266*4882a593Smuzhiyun         ASF_GET,
267*4882a593Smuzhiyun         ASF_SET,
268*4882a593Smuzhiyun         ASF_HELP
269*4882a593Smuzhiyun };
270*4882a593Smuzhiyun 
271*4882a593Smuzhiyun struct asf_ioctl_struct {
272*4882a593Smuzhiyun         unsigned int arg;
273*4882a593Smuzhiyun         unsigned int offset;
274*4882a593Smuzhiyun         union {
275*4882a593Smuzhiyun                 unsigned int data[MAX_DATA_LEN];
276*4882a593Smuzhiyun                 char string[MAX_STR_LEN];
277*4882a593Smuzhiyun         } u;
278*4882a593Smuzhiyun };
279*4882a593Smuzhiyun 
280*4882a593Smuzhiyun int rtl8168_asf_ioctl(struct net_device *dev, struct ifreq *ifr);
281*4882a593Smuzhiyun void rtl8168_asf_hbperiod(struct rtl8168_private *tp, int arg, unsigned int *data);
282*4882a593Smuzhiyun void rtl8168_asf_wd16rst(struct rtl8168_private *tp, int arg, unsigned int *data);
283*4882a593Smuzhiyun void rtl8168_asf_console_mac(struct rtl8168_private *, int arg, unsigned int *data);
284*4882a593Smuzhiyun void rtl8168_asf_ip_address(struct rtl8168_private *, int arg, int offset, unsigned int *data);
285*4882a593Smuzhiyun void rtl8168_asf_config_regs(struct rtl8168_private *tp, int arg, int offset, unsigned int *data);
286*4882a593Smuzhiyun void rtl8168_asf_capability_masks(struct rtl8168_private *tp, int arg, int offset, unsigned int *data);
287*4882a593Smuzhiyun void rtl8168_asf_community_string(struct rtl8168_private *tp, int arg, char *string);
288*4882a593Smuzhiyun void rtl8168_asf_community_string_len(struct rtl8168_private *tp, int arg, unsigned int *data);
289*4882a593Smuzhiyun void rtl8168_asf_alert_resend_interval(struct rtl8168_private *tp, int arg, unsigned int *data);
290*4882a593Smuzhiyun void rtl8168_asf_time_period(struct rtl8168_private *tp, int arg, int offset, unsigned int *data);
291*4882a593Smuzhiyun void rtl8168_asf_key_access(struct rtl8168_private *, int arg, int offset, unsigned int *data);
292*4882a593Smuzhiyun void rtl8168_asf_rw_hexadecimal(struct rtl8168_private *tp, int arg, int offset, int len, unsigned int *data);
293*4882a593Smuzhiyun void rtl8168_asf_rw_iana(struct rtl8168_private *tp, int arg, unsigned int *data);
294*4882a593Smuzhiyun void rtl8168_asf_rw_uuid(struct rtl8168_private *tp, int arg, unsigned int *data);
295*4882a593Smuzhiyun void rtl8168_asf_rw_systemid(struct rtl8168_private *tp, int arg, unsigned int *data);
296