www.usr.com/support/gpl/USR9108_release1.5.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
85 #define MAX_ADSLDRV_IOCTL_COMMANDS   22
86
87 /* Typedefs. */
88 typedef struct
89 {
90     BCMADSL_STATUS bvStatus;
91 } ADSLDRV_STATUS_ONLY, *PADSLDRV_STATUS_ONLY;
92
93 typedef struct
94 {
95     ADSL_FN_NOTIFY_CB pFnNotifyCb;
96     UINT32 ulParm;
97     adslCfgProfile *pAdslCfg;
98     BCMADSL_STATUS bvStatus;
99 } ADSLDRV_INITIALIZE, *PADSLDRV_INITIALIZE;
100
101 typedef struct
102 {
103     ADSL_CHANNEL_ADDR ChannelAddr;
104     BCMADSL_STATUS bvStatus;
105 } ADSLDRV_PHY_ADDR, *PADSLDRV_PHY_ADDR;
106
107 typedef struct
108 {
109     UINT16 usAtmFastPortId;
110     UINT16 usAtmInterleavedPortId;
111     BCMADSL_STATUS bvStatus;
112 } ADSLDRV_MAP_ATM_PORT, *PADSLDRV_MAP_ATM_PORT;
113
114 typedef struct
115 {
116     ADSL_CONNECTION_INFO ConnectionInfo;
117     BCMADSL_STATUS bvStatus;
118 } ADSLDRV_CONNECTION_INFO, *PADSLDRV_CONNECTION_INFO;
119
120 typedef struct
121 {
122     int diagCmd;
123     int diagMap;
124     int logTime;
125     int srvIpAddr;
126     int gwIpAddr;
127     BCMADSL_STATUS      bvStatus;
128 } ADSLDRV_DIAG, *PADSLDRV_DIAG;
129
130 typedef struct
131 {
132     char *objId;
133     int  objIdLen;
134     char *dataBuf;
135     long dataBufLen;
136     BCMADSL_STATUS bvStatus;
137 } ADSLDRV_GET_OBJ, *PADSLDRV_GET_OBJ;
138
139 typedef struct
140 {
141     unsigned long totalBits;
142     BCMADSL_STATUS bvStatus;
143 } ADSLDRV_BERT, *PADSLDRV_BERT;
144
145 typedef struct
146 {
147     unsigned long totalSec;
148     BCMADSL_STATUS bvStatus;
149 } ADSLDRV_BERT_EX, *PADSLDRV_BERT_EX;
150
151 typedef struct
152 {
153     adslCfgProfile *pAdslCfg;
154     BCMADSL_STATUS bvStatus;
155 } ADSLDRV_CONFIGURE, *PADSLDRV_CONFIGURE;
156
157 typedef struct
158 {
159     unsigned long   testCmd;
160     unsigned long   xmtStartTone;
161     unsigned long   xmtNumTones;
162     unsigned long   rcvStartTone;
163     unsigned long   rcvNumTones;
164     char *xmtToneMap;
165     char *rcvToneMap;
166     BCMADSL_STATUS      bvStatus;
167 } ADSLDRV_TEST, *PADSLDRV_TEST;
168
169 typedef struct
170 {
171     int toneId;
172     ADSL_CONSTELLATION_POINT *pointBuf;
173     int numPoints;
174     BCMADSL_STATUS bvStatus;
175 } ADSLDRV_GET_CONSTEL_POINTS, *PADSLDRV_GET_CONSTEL_POINTS;
176
177 typedef struct
178 {
179     adslVersionInfo *pAdslVer;
180     BCMADSL_STATUS  bvStatus;
181 } ADSLDRV_GET_VERSION, *PADSLDRV_GET_VERSION;
182
183 typedef struct
184 {
185     unsigned long sdramBaseAddr;
186     BCMADSL_STATUS bvStatus;
187 } ADSLDRV_SET_SDRAM_BASE, *PADSLDRV_SET_SDRAM_BASE;
188
189
190 typedef struct
191 {
192     int paramId;
193     void *buf;
194     int len;
195     BCMADSL_STATUS bvStatus;
196 } ADSLDRV_SET_OEM_PARAM, *PADSLDRV_SET_OEM_PARAM;
197
198 #if defined(__cplusplus)
199 }
200 #endif
201
202
203 /* declaration for read, write, poll operations */
204 #define ADSL_EOC_FRAME_RCVD         (1 << BCM_ADSL_G997_FRAME_RECEIVED)
205 #define ADSL_EOC_FRAME_SENT         (1 << BCM_ADSL_G997_FRAME_SENT)
206 #define ADSL_LINK_DROPPED           (1 << BCM_ADSL_LINK_DOWN)
207 #define ADSL_EOC_ANY_EVENT          (ADSL_EOC_FRAME_RCVD | ADSL_EOC_FRAME_SENT | ADSL_LINK_DROPPED)
208 #define ADSL_EOC_RDWR_EVENT         (ADSL_EOC_FRAME_RCVD | ADSL_EOC_FRAME_SENT)
209
210 #define ADSL_EOC_HDR                {0xff, 0x03, 0x81, 0x4c}
211 #define ADSL_2P_HDR_OFFSET          2  /* 0x81, 4c */
212 #define ADSL_HDR_OFFSET             0  /* 0xff, 0x3, 0x81, 4c */
213 #define ADSL_EOC_HDR_LEN            4
214 #define ADSL_2P_EOC_HDR_LEN         2
215 #define ADSL_EOC_ENABLE             {0xff, 0x03, 0x00, 0x57}
216
217 void AdslCheckLinkupMsg(void);
218 void snmp_adsl_eoc_event(void);
219
220 #endif // _ADSLDRV_H_
221