http://downloads.netgear.com/files/GPL/DM111PSP_v3.61d_GPL.tar.gz
[bcm963xx.git] / bcmdrivers / broadcom / include / bcm963xx / adsldrv.h
1 /*
2 <:copyright-broadcom 
3  
4  Copyright (c) 2002 Broadcom Corporation 
5  All Rights Reserved 
6  No portions of this material may be reproduced in any form without the 
7  written permission of: 
8           Broadcom Corporation 
9           16215 Alton Parkway 
10           Irvine, California 92619 
11  All information contained in this document is Broadcom Corporation 
12  company private, proprietary, and trade secret. 
13  
14 :>
15 */
16 /***************************************************************************
17  * File Name  : AdslDrv.h
18  *
19  * Description: This file contains the definitions and structures for the
20  *              Linux IOCTL interface that used between the user mode ADSL
21  *              API library and the kernel ADSL API driver.
22  *
23  * Updates    : 11/02/2001  lkaplan.  Created.
24  ***************************************************************************/
25
26 #if !defined(_ADSLDRV_H_)
27 #define _ADSLDRV_H_
28
29 #if defined(__cplusplus)
30 extern "C" {
31 #endif
32
33 /* Incldes. */
34 #include <bcmadsl.h>
35
36 /* Defines. */
37 #define DSL_IFNAME               "dsl0"
38 #define ADSLDRV_MAJOR            208 /* arbitrary unused value */
39
40 #define ADSLIOCTL_CHECK \
41     _IOR(ADSLDRV_MAJOR, 0, ADSLDRV_STATUS_ONLY)
42 #define ADSLIOCTL_INITIALIZE \
43     _IOWR(ADSLDRV_MAJOR, 1, ADSLDRV_INITIALIZE)
44 #define ADSLIOCTL_UNINITIALIZE \
45     _IOR(ADSLDRV_MAJOR, 2, ADSLDRV_STATUS_ONLY)
46 #define ADSLIOCTL_CONNECTION_START \
47     _IOWR(ADSLDRV_MAJOR, 3, ADSLDRV_STATUS_ONLY)
48 #define ADSLIOCTL_CONNECTION_STOP \
49     _IOR(ADSLDRV_MAJOR, 4, ADSLDRV_STATUS_ONLY)
50 #define ADSLIOCTL_GET_PHY_ADDR \
51     _IOR(ADSLDRV_MAJOR, 5, ADSLDRV_PHY_ADDR)
52 #define ADSLIOCTL_SET_PHY_ADDR \
53     _IOWR(ADSLDRV_MAJOR, 6, ADSLDRV_PHY_ADDR)
54 #define ADSLIOCTL_MAP_ATM_PORT_IDS \
55     _IOWR(ADSLDRV_MAJOR, 7, ADSLDRV_MAP_ATM_PORT)
56 #define ADSLIOCTL_GET_CONNECTION_INFO \
57     _IOR(ADSLDRV_MAJOR, 8, ADSLDRV_CONNECTION_INFO)
58 #define ADSLIOCTL_DIAG_COMMAND \
59     _IOR(ADSLDRV_MAJOR, 9, ADSLDRV_DIAG)
60 #define ADSLIOCTL_GET_OBJ_VALUE \
61     _IOR(ADSLDRV_MAJOR, 10, ADSLDRV_GET_OBJ)
62 #define ADSLIOCTL_START_BERT \
63     _IOR(ADSLDRV_MAJOR, 11, ADSLDRV_BERT)
64 #define ADSLIOCTL_STOP_BERT \
65     _IOR(ADSLDRV_MAJOR, 12, ADSLDRV_STATUS_ONLY)
66 #define ADSLIOCTL_CONFIGURE \
67     _IOR(ADSLDRV_MAJOR, 13, ADSLDRV_CONFIGURE)
68 #define ADSLIOCTL_TEST \
69     _IOR(ADSLDRV_MAJOR, 14, ADSLDRV_TEST)
70 #define ADSLIOCTL_GET_CONSTEL_POINTS \
71     _IOR(ADSLDRV_MAJOR, 15, ADSLDRV_GET_CONSTEL_POINTS)
72 #define ADSLIOCTL_GET_VERSION \
73     _IOR(ADSLDRV_MAJOR, 16, ADSLDRV_GET_VERSION)
74 #define ADSLIOCTL_SET_SDRAM_BASE \
75     _IOR(ADSLDRV_MAJOR, 17, ADSLDRV_SET_SDRAM_BASE)
76 #define ADSLIOCTL_RESET_STAT_COUNTERS \
77     _IOR(ADSLDRV_MAJOR, 18, ADSLDRV_STATUS_ONLY)
78 #define ADSLIOCTL_SET_OEM_PARAM \
79     _IOR(ADSLDRV_MAJOR, 19, ADSLDRV_SET_OEM_PARAM)
80 #define ADSLIOCTL_START_BERT_EX \
81     _IOR(ADSLDRV_MAJOR, 20, ADSLDRV_BERT_EX)
82 #define ADSLIOCTL_STOP_BERT_EX \
83     _IOR(ADSLDRV_MAJOR, 21, ADSLDRV_STATUS_ONLY)
84 #define ADSLIOCTL_SET_OBJ_VALUE \
85     _IOR(ADSLDRV_MAJOR, 22, ADSLDRV_GET_OBJ)
86 #define MAX_ADSLDRV_IOCTL_COMMANDS   23
87
88 /* Typedefs. */
89 typedef struct
90 {
91     BCMADSL_STATUS bvStatus;
92 } ADSLDRV_STATUS_ONLY, *PADSLDRV_STATUS_ONLY;
93
94 typedef struct
95 {
96     ADSL_FN_NOTIFY_CB pFnNotifyCb;
97     UINT32 ulParm;
98     adslCfgProfile *pAdslCfg;
99     BCMADSL_STATUS bvStatus;
100 } ADSLDRV_INITIALIZE, *PADSLDRV_INITIALIZE;
101
102 typedef struct
103 {
104     ADSL_CHANNEL_ADDR ChannelAddr;
105     BCMADSL_STATUS bvStatus;
106 } ADSLDRV_PHY_ADDR, *PADSLDRV_PHY_ADDR;
107
108 typedef struct
109 {
110     UINT16 usAtmFastPortId;
111     UINT16 usAtmInterleavedPortId;
112     BCMADSL_STATUS bvStatus;
113 } ADSLDRV_MAP_ATM_PORT, *PADSLDRV_MAP_ATM_PORT;
114
115 typedef struct
116 {
117     ADSL_CONNECTION_INFO ConnectionInfo;
118     BCMADSL_STATUS bvStatus;
119 } ADSLDRV_CONNECTION_INFO, *PADSLDRV_CONNECTION_INFO;
120
121 typedef struct
122 {
123     int diagCmd;
124     int diagMap;
125     int logTime;
126     int srvIpAddr;
127     int gwIpAddr;
128     BCMADSL_STATUS      bvStatus;
129 } ADSLDRV_DIAG, *PADSLDRV_DIAG;
130
131 typedef struct
132 {
133     char *objId;
134     int  objIdLen;
135     char *dataBuf;
136     long dataBufLen;
137     BCMADSL_STATUS bvStatus;
138 } ADSLDRV_GET_OBJ, *PADSLDRV_GET_OBJ;
139
140 typedef struct
141 {
142     unsigned long totalBits;
143     BCMADSL_STATUS bvStatus;
144 } ADSLDRV_BERT, *PADSLDRV_BERT;
145
146 typedef struct
147 {
148     unsigned long totalSec;
149     BCMADSL_STATUS bvStatus;
150 } ADSLDRV_BERT_EX, *PADSLDRV_BERT_EX;
151
152 typedef struct
153 {
154     adslCfgProfile *pAdslCfg;
155     BCMADSL_STATUS bvStatus;
156 } ADSLDRV_CONFIGURE, *PADSLDRV_CONFIGURE;
157
158 typedef struct
159 {
160     unsigned long   testCmd;
161     unsigned long   xmtStartTone;
162     unsigned long   xmtNumTones;
163     unsigned long   rcvStartTone;
164     unsigned long   rcvNumTones;
165     char *xmtToneMap;
166     char *rcvToneMap;
167     BCMADSL_STATUS      bvStatus;
168 } ADSLDRV_TEST, *PADSLDRV_TEST;
169
170 typedef struct
171 {
172     int toneId;
173     ADSL_CONSTELLATION_POINT *pointBuf;
174     int numPoints;
175     BCMADSL_STATUS bvStatus;
176 } ADSLDRV_GET_CONSTEL_POINTS, *PADSLDRV_GET_CONSTEL_POINTS;
177
178 typedef struct
179 {
180     adslVersionInfo *pAdslVer;
181     BCMADSL_STATUS  bvStatus;
182 } ADSLDRV_GET_VERSION, *PADSLDRV_GET_VERSION;
183
184 typedef struct
185 {
186     unsigned long sdramBaseAddr;
187     BCMADSL_STATUS bvStatus;
188 } ADSLDRV_SET_SDRAM_BASE, *PADSLDRV_SET_SDRAM_BASE;
189
190
191 typedef struct
192 {
193     int paramId;
194     void *buf;
195     int len;
196     BCMADSL_STATUS bvStatus;
197 } ADSLDRV_SET_OEM_PARAM, *PADSLDRV_SET_OEM_PARAM;
198
199 #if defined(__cplusplus)
200 }
201 #endif
202
203
204 /* declaration for read, write, poll operations */
205 #define ADSL_EOC_FRAME_RCVD         (1 << BCM_ADSL_G997_FRAME_RECEIVED)
206 #define ADSL_EOC_FRAME_SENT         (1 << BCM_ADSL_G997_FRAME_SENT)
207 #define ADSL_LINK_DROPPED           (1 << BCM_ADSL_LINK_DOWN)
208 #define ADSL_EOC_ANY_EVENT          (ADSL_EOC_FRAME_RCVD | ADSL_EOC_FRAME_SENT | ADSL_LINK_DROPPED)
209 #define ADSL_EOC_RDWR_EVENT         (ADSL_EOC_FRAME_RCVD | ADSL_EOC_FRAME_SENT)
210
211 #define ADSL_EOC_HDR                {0xff, 0x03, 0x81, 0x4c}
212 #define ADSL_2P_HDR_OFFSET          2  /* 0x81, 4c */
213 #define ADSL_HDR_OFFSET             0  /* 0xff, 0x3, 0x81, 4c */
214 #define ADSL_EOC_HDR_LEN            4
215 #define ADSL_2P_EOC_HDR_LEN         2
216 #define ADSL_EOC_ENABLE             {0xff, 0x03, 0x00, 0x57}
217
218 void AdslCheckLinkupMsg(void);
219 void snmp_adsl_eoc_event(void);
220
221 #endif // _ADSLDRV_H_
222