http://downloads.netgear.com/files/GPL/GPL_Source_V361j_DM111PSP_series_consumer_rele...
[bcm963xx.git] / bcmdrivers / broadcom / include / bcm963xx / adsldrv.h
1 /*
2 <:copyright-gpl
3  Copyright 2004 Broadcom Corp. All Rights Reserved.
4  
5  This program is free software; you can distribute it and/or modify it
6  under the terms of the GNU General Public License (Version 2) as
7  published by the Free Software Foundation.
8  
9  This program is distributed in the hope it will be useful, but WITHOUT
10  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12  for more details.
13
14  You should have received a copy of the GNU General Public License along
15  with this program; if not, write to the Free Software Foundation, Inc.,
16  59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
17 :>
18 */
19
20 /***************************************************************************
21  * File Name  : AdslDrv.h
22  *
23  * Description: This file contains the definitions and structures for the
24  *              Linux IOCTL interface that used between the user mode ADSL
25  *              API library and the kernel ADSL API driver.
26  *
27  * Updates    : 11/02/2001  lkaplan.  Created.
28  ***************************************************************************/
29
30 #if !defined(_ADSLDRV_H_)
31 #define _ADSLDRV_H_
32
33 #if defined(__cplusplus)
34 extern "C" {
35 #endif
36
37 /* Incldes. */
38 #include <bcmadsl.h>
39
40 /* Defines. */
41 #define DSL_IFNAME               "dsl0"
42 #define ADSLDRV_MAJOR            208 /* arbitrary unused value */
43
44 #ifdef HMI_QA_SUPPORT
45 #include "HmiDef.h"
46 #endif
47
48 #define ADSLIOCTL_CHECK \
49     _IOR(ADSLDRV_MAJOR, 0, ADSLDRV_STATUS_ONLY)
50 #define ADSLIOCTL_INITIALIZE \
51     _IOWR(ADSLDRV_MAJOR, 1, ADSLDRV_INITIALIZE)
52 #define ADSLIOCTL_UNINITIALIZE \
53     _IOR(ADSLDRV_MAJOR, 2, ADSLDRV_STATUS_ONLY)
54 #define ADSLIOCTL_CONNECTION_START \
55     _IOWR(ADSLDRV_MAJOR, 3, ADSLDRV_STATUS_ONLY)
56 #define ADSLIOCTL_CONNECTION_STOP \
57     _IOR(ADSLDRV_MAJOR, 4, ADSLDRV_STATUS_ONLY)
58 #define ADSLIOCTL_GET_PHY_ADDR \
59     _IOR(ADSLDRV_MAJOR, 5, ADSLDRV_PHY_ADDR)
60 #define ADSLIOCTL_SET_PHY_ADDR \
61     _IOWR(ADSLDRV_MAJOR, 6, ADSLDRV_PHY_ADDR)
62 #define ADSLIOCTL_MAP_ATM_PORT_IDS \
63     _IOWR(ADSLDRV_MAJOR, 7, ADSLDRV_MAP_ATM_PORT)
64 #define ADSLIOCTL_GET_CONNECTION_INFO \
65     _IOR(ADSLDRV_MAJOR, 8, ADSLDRV_CONNECTION_INFO)
66 #define ADSLIOCTL_DIAG_COMMAND \
67     _IOR(ADSLDRV_MAJOR, 9, ADSLDRV_DIAG)
68 #define ADSLIOCTL_GET_OBJ_VALUE \
69     _IOR(ADSLDRV_MAJOR, 10, ADSLDRV_GET_OBJ)
70 #define ADSLIOCTL_START_BERT \
71     _IOR(ADSLDRV_MAJOR, 11, ADSLDRV_BERT)
72 #define ADSLIOCTL_STOP_BERT \
73     _IOR(ADSLDRV_MAJOR, 12, ADSLDRV_STATUS_ONLY)
74 #define ADSLIOCTL_CONFIGURE \
75     _IOR(ADSLDRV_MAJOR, 13, ADSLDRV_CONFIGURE)
76 #define ADSLIOCTL_TEST \
77     _IOR(ADSLDRV_MAJOR, 14, ADSLDRV_TEST)
78 #define ADSLIOCTL_GET_CONSTEL_POINTS \
79     _IOR(ADSLDRV_MAJOR, 15, ADSLDRV_GET_CONSTEL_POINTS)
80 #define ADSLIOCTL_GET_VERSION \
81     _IOR(ADSLDRV_MAJOR, 16, ADSLDRV_GET_VERSION)
82 #define ADSLIOCTL_SET_SDRAM_BASE \
83     _IOR(ADSLDRV_MAJOR, 17, ADSLDRV_SET_SDRAM_BASE)
84 #define ADSLIOCTL_RESET_STAT_COUNTERS \
85     _IOR(ADSLDRV_MAJOR, 18, ADSLDRV_STATUS_ONLY)
86 #define ADSLIOCTL_SET_OEM_PARAM \
87     _IOR(ADSLDRV_MAJOR, 19, ADSLDRV_SET_OEM_PARAM)
88 #define ADSLIOCTL_START_BERT_EX \
89     _IOR(ADSLDRV_MAJOR, 20, ADSLDRV_BERT_EX)
90 #define ADSLIOCTL_STOP_BERT_EX \
91     _IOR(ADSLDRV_MAJOR, 21, ADSLDRV_STATUS_ONLY)
92 #define ADSLIOCTL_SET_OBJ_VALUE \
93     _IOR(ADSLDRV_MAJOR, 22, ADSLDRV_GET_OBJ)
94 //swda.030507
95 #define ADSLIOCTL_GET_ADSL_CONNECTION_COUNTER \
96     _IOR(ADSLDRV_MAJOR, 23, ADSLDRV_GET_ADSL_CONNECTION_COUNTER)
97 #define ADSLIOCTL_EOC_PROCESS \
98     _IOR(ADSLDRV_MAJOR, 24, ADSLDRV_EOC_PROCESS)
99 #ifdef HMI_QA_SUPPORT    
100 #define ADSLIOCTL_HMI_COMMAND \
101     _IOR(ADSLDRV_MAJOR, 25, ADSLDRV_HMI)    
102 #define MAX_ADSLDRV_IOCTL_COMMANDS   26
103 #else
104 #define MAX_ADSLDRV_IOCTL_COMMANDS   25
105 #endif
106
107 /* Typedefs. */
108 typedef struct
109 {
110     BCMADSL_STATUS bvStatus;
111 } ADSLDRV_STATUS_ONLY, *PADSLDRV_STATUS_ONLY;
112
113 typedef struct
114 {
115     ADSL_FN_NOTIFY_CB pFnNotifyCb;
116     UINT32 ulParm;
117     adslCfgProfile *pAdslCfg;
118     BCMADSL_STATUS bvStatus;
119 } ADSLDRV_INITIALIZE, *PADSLDRV_INITIALIZE;
120
121 typedef struct
122 {
123     ADSL_CHANNEL_ADDR ChannelAddr;
124     BCMADSL_STATUS bvStatus;
125 } ADSLDRV_PHY_ADDR, *PADSLDRV_PHY_ADDR;
126
127 typedef struct
128 {
129     UINT16 usAtmFastPortId;
130     UINT16 usAtmInterleavedPortId;
131     BCMADSL_STATUS bvStatus;
132 } ADSLDRV_MAP_ATM_PORT, *PADSLDRV_MAP_ATM_PORT;
133
134 typedef struct
135 {
136     ADSL_CONNECTION_INFO ConnectionInfo;
137     BCMADSL_STATUS bvStatus;
138 } ADSLDRV_CONNECTION_INFO, *PADSLDRV_CONNECTION_INFO;
139
140 typedef struct
141 {
142     int diagCmd;
143     int diagMap;
144     int logTime;
145     int srvIpAddr;
146     int gwIpAddr;
147     BCMADSL_STATUS      bvStatus;
148 } ADSLDRV_DIAG, *PADSLDRV_DIAG;
149
150 typedef struct
151 {
152     char *objId;
153     int  objIdLen;
154     char *dataBuf;
155     long dataBufLen;
156     BCMADSL_STATUS bvStatus;
157 } ADSLDRV_GET_OBJ, *PADSLDRV_GET_OBJ;
158
159 typedef struct
160 {
161     unsigned long totalBits;
162     BCMADSL_STATUS bvStatus;
163 } ADSLDRV_BERT, *PADSLDRV_BERT;
164
165 typedef struct
166 {
167     unsigned long totalSec;
168     BCMADSL_STATUS bvStatus;
169 } ADSLDRV_BERT_EX, *PADSLDRV_BERT_EX;
170
171 typedef struct
172 {
173     adslCfgProfile *pAdslCfg;
174     BCMADSL_STATUS bvStatus;
175 } ADSLDRV_CONFIGURE, *PADSLDRV_CONFIGURE;
176
177 typedef struct
178 {
179     unsigned long   testCmd;
180     unsigned long   xmtStartTone;
181     unsigned long   xmtNumTones;
182     unsigned long   rcvStartTone;
183     unsigned long   rcvNumTones;
184     char *xmtToneMap;
185     char *rcvToneMap;
186     BCMADSL_STATUS      bvStatus;
187 } ADSLDRV_TEST, *PADSLDRV_TEST;
188
189 typedef struct
190 {
191     int toneId;
192     ADSL_CONSTELLATION_POINT *pointBuf;
193     int numPoints;
194     BCMADSL_STATUS bvStatus;
195 } ADSLDRV_GET_CONSTEL_POINTS, *PADSLDRV_GET_CONSTEL_POINTS;
196
197 typedef struct
198 {
199     adslVersionInfo *pAdslVer;
200     BCMADSL_STATUS  bvStatus;
201 } ADSLDRV_GET_VERSION, *PADSLDRV_GET_VERSION;
202
203 typedef struct
204 {
205     unsigned long sdramBaseAddr;
206     BCMADSL_STATUS bvStatus;
207 } ADSLDRV_SET_SDRAM_BASE, *PADSLDRV_SET_SDRAM_BASE;
208
209
210 typedef struct
211 {
212     int paramId;
213     void *buf;
214     int len;
215     BCMADSL_STATUS bvStatus;
216 } ADSLDRV_SET_OEM_PARAM, *PADSLDRV_SET_OEM_PARAM;
217
218 //swda add start
219 typedef struct
220 {
221     adslConnectionCounter   *pAdslConnectCnt;
222     BCMADSL_STATUS              bvStatus;
223 } ADSLDRV_GET_ADSL_CONNECTION_COUNTER, *PADSLDRV_GET_ADSL_CONNECTION_COUNTER;
224
225 typedef struct
226 {
227         int eoc_cmd;
228         char *eoc_message;
229         char eoc_len;
230         BCMADSL_STATUS bvStatus;
231 } ADSLDRV_EOC_PROCESS, *PADSLDRV_EOC_PROCESS;
232 //swda add end
233
234 #if defined(__cplusplus)
235 }
236 #endif
237
238
239 /* declaration for read, write, poll operations */
240 #define ADSL_EOC_FRAME_RCVD         (1 << BCM_ADSL_G997_FRAME_RECEIVED)
241 #define ADSL_EOC_FRAME_SENT         (1 << BCM_ADSL_G997_FRAME_SENT)
242 #define ADSL_LINK_DROPPED           (1 << BCM_ADSL_LINK_DOWN)
243 #define ADSL_EOC_ANY_EVENT          (ADSL_EOC_FRAME_RCVD | ADSL_EOC_FRAME_SENT | ADSL_LINK_DROPPED)
244 #define ADSL_EOC_RDWR_EVENT         (ADSL_EOC_FRAME_RCVD | ADSL_EOC_FRAME_SENT)
245
246 #define ADSL_EOC_HDR                {0xff, 0x03, 0x81, 0x4c}
247 #define ADSL_2P_HDR_OFFSET          2  /* 0x81, 4c */
248 #define ADSL_HDR_OFFSET             0  /* 0xff, 0x3, 0x81, 4c */
249 #define ADSL_EOC_HDR_LEN            4
250 #define ADSL_2P_EOC_HDR_LEN         2
251 #define ADSL_EOC_ENABLE             {0xff, 0x03, 0x00, 0x57}
252
253 //swda add,08/07/2006
254 //#define ADSL_EOC_POLL 0
255 #define ADSL_EOC_READ   1
256 #define ADSL_EOC_WRITE  2
257 //swda add end
258
259 void AdslCheckLinkupMsg(void);
260 void snmp_adsl_eoc_event(void);
261
262 #endif // _ADSLDRV_H_
263