http://downloads.netgear.com/files/GPL/GPL_Source_V361j_DM111PSP_series_consumer_rele...
[bcm963xx.git] / bcmdrivers / broadcom / include / bcm963xx / bcmadsl.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  : Adsl.h
22 //
23 // Description: This file contains the definitions, structures and function
24 //              prototypes for ADSL PHY interface
25 //
26 //**************************************************************************
27 #if !defined(_BCMADSL_H_)
28 #define _BCMADSL_H_
29
30 #if defined(__cplusplus)
31 extern "C" {
32 #endif
33
34 /* Incldes. */
35 #include "AdslMibDef.h"
36
37 //**************************************************************************
38 // Type Definitions
39 //**************************************************************************
40
41 // Return status values
42 typedef enum BcmAdslStatus
43 {
44     BCMADSL_STATUS_SUCCESS = 0,
45     BCMADSL_STATUS_ERROR
46 } BCMADSL_STATUS;
47
48 // Return status values
49 typedef enum AdslLinkState
50 {
51     BCM_ADSL_LINK_UP = 0,
52     BCM_ADSL_LINK_DOWN,
53         BCM_ADSL_TRAINING_G992_EXCHANGE,
54         BCM_ADSL_TRAINING_G992_CHANNEL_ANALYSIS,
55         BCM_ADSL_TRAINING_G992_STARTED,
56         BCM_ADSL_TRAINING_G994,
57         BCM_ADSL_G994_NONSTDINFO_RECEIVED,
58     BCM_ADSL_BERT_COMPLETE,
59         BCM_ADSL_ATM_IDLE,
60     BCM_ADSL_EVENT,
61     BCM_ADSL_G997_FRAME_RECEIVED,
62     BCM_ADSL_G997_FRAME_SENT
63 } ADSL_LINK_STATE;
64
65 #ifndef DISABLE_ADSL_OLD_DEF
66 #define ADSL_LINK_UP            BCM_ADSL_LINK_UP
67 #define ADSL_LINK_DOWN          BCM_ADSL_LINK_DOWN
68 #endif
69
70 /* ADSL test modes */
71 typedef enum AdslTestMode
72 {
73     ADSL_TEST_NORMAL = 0,
74     ADSL_TEST_REVERB,
75     ADSL_TEST_MEDLEY,
76     ADSL_TEST_SELECT_TONES,
77     ADSL_TEST_NO_AUTO_RETRAIN,
78         ADSL_TEST_MARGIN_TWEAK,
79         ADSL_TEST_ESTIMATE_PLL_PHASE,
80         ADSL_TEST_REPORT_PLL_PHASE_STATUS,
81         ADSL_TEST_AFELOOPBACK,
82     ADSL_TEST_L3,
83     ADSL_TEST_DIAGMODE,
84     ADSL_TEST_L0
85 } ADSL_TEST_MODE;
86
87 // ADSL_CHANNEL_ADDR Contains ADSL Utopia PHY addresses
88 typedef struct AdslChannelAddr
89 {
90     UINT16 usFastChannelAddr;
91     UINT16 usInterleavedChannelAddr;
92 } ADSL_CHANNEL_ADDR, *PADSL_CHANNEL_ADDR;
93
94 // ADSL_CONNECTION_INFO Contains ADSL Connection Info
95 typedef struct AdslConnectionInfo
96 {
97         ADSL_LINK_STATE LinkState; 
98 //LGD_FOR_TR098
99     unsigned long ShowtimeStart;
100     UINT32 ulFastUpStreamRate;
101     UINT32 ulFastDnStreamRate;
102     UINT32 ulInterleavedUpStreamRate;
103     UINT32 ulInterleavedDnStreamRate;
104 } ADSL_CONNECTION_INFO, *PADSL_CONNECTION_INFO;
105
106 //swda.030507
107 typedef struct _adslConnectionCounter {
108     char            link_state[16];
109         int                     line_up_count;
110         char                system_up_time_duration[13];
111     char                    line_up_time_duration[13];
112 } adslConnectionCounter;
113
114 /* OEM parameter definition */
115 #define ADSL_OEM_G994_VENDOR_ID       1    /* Vendor ID used during G.994 handshake */
116 #define ADSL_OEM_G994_XMT_NS_INFO     2    /* G.994 non-standard info field to send */
117 #define ADSL_OEM_G994_RCV_NS_INFO     3    /* G.994 received non-standard */
118 #define ADSL_OEM_EOC_VENDOR_ID        4    /* EOC reg. 0 */
119 #define ADSL_OEM_EOC_VERSION          5    /* EOC reg. 1 */
120 #define ADSL_OEM_EOC_SERIAL_NUMBER    6    /* EOC reg. 2 */
121 #define ADSL_OEM_T1413_VENDOR_ID      7    /* Vendor ID used during T1.413 handshake */
122 #define ADSL_OEM_T1413_EOC_VENDOR_ID  8    /* EOC reg. 0 (vendor ID) in T1.413 mode */
123
124 /* XMT gain definitions */
125 #define ADSL_XMT_GAIN_AUTO                        0x80000000
126
127 typedef struct
128 {
129     int                         diagCmd;
130     int                         diagMap;
131     int                         logTime;
132         int                             srvIpAddr;
133         int                             gwIpAddr;
134 } ADSL_DIAG, *PADSL_DIAG;
135
136 typedef struct
137 {
138     short                       x;
139     short                       y;
140 } ADSL_CONSTELLATION_POINT, *PADSL_CONSTELLATION_POINT;
141
142 #define ADSL_CONSTEL_DATA_ID            0
143 #define ADSL_CONSTEL_PILOT_ID           1
144
145 #define ADSL_MIB_INFO   adslMibInfo
146 typedef ADSL_MIB_INFO   *PADSL_MIB_INFO;
147
148 typedef void (*ADSL_FN_NOTIFY_CB) (ADSL_LINK_STATE AdslLinkState, UINT32 ulParm); 
149
150 //**************************************************************************
151 // Function Prototypes
152 //**************************************************************************
153
154 BCMADSL_STATUS BcmAdsl_Check(void);
155 BCMADSL_STATUS BcmAdsl_Initialize(ADSL_FN_NOTIFY_CB pFnNotifyCb, UINT32 ulParm, adslCfgProfile *pAdslCfg);
156 #ifdef LINUX
157 BCMADSL_STATUS BcmAdsl_MapAtmPortIDs(UINT16 usAtmFastPortId, UINT16 usAtmInterleavedPortId);
158 #endif
159 BCMADSL_STATUS BcmAdsl_Uninitialize(void);
160 BCMADSL_STATUS BcmAdsl_ConnectionStart(void);
161 BCMADSL_STATUS BcmAdsl_ConnectionStop(void);
162 BCMADSL_STATUS BcmAdsl_GetPhyAddresses(PADSL_CHANNEL_ADDR pChannelAddr);
163 BCMADSL_STATUS BcmAdsl_SetPhyAddresses(PADSL_CHANNEL_ADDR pChannelAddr);
164 BCMADSL_STATUS BcmAdsl_GetConnectionInfo(PADSL_CONNECTION_INFO pConnectionInfo);
165 BCMADSL_STATUS BcmAdsl_DiagCommand(PADSL_DIAG pAdslDiag);
166 int BcmAdsl_SetObjectValue(char *objId, int objIdLen, char *dataBuf, long *dataBufLen);
167 int BcmAdsl_GetObjectValue(char *objId, int objIdLen, char *dataBuf, long *dataBufLen);
168 BCMADSL_STATUS BcmAdsl_StartBERT(unsigned long totalBits);
169 BCMADSL_STATUS BcmAdsl_StopBERT(void);
170 BCMADSL_STATUS BcmAdsl_BertStartEx(unsigned long bertSec);
171 BCMADSL_STATUS BcmAdsl_BertStopEx(void);
172 BCMADSL_STATUS BcmAdsl_CheckPowerLoss(void);
173 BCMADSL_STATUS BcmAdsl_SendDyingGasp(int powerCtl);
174 BCMADSL_STATUS BcmAdsl_Configure(adslCfgProfile *pAdslCfg);
175 BCMADSL_STATUS BcmAdsl_GetVersion(adslVersionInfo *pAdslVer);
176 BCMADSL_STATUS BcmAdsl_SetSDRAMBaseAddr(void *pAddr);
177 //swda.030528
178 BCMADSL_STATUS BcmAdsl_GetAdslConnectionCnt(adslConnectionCounter *padslconncnt);
179 BCMADSL_STATUS BcmAdsl_SetVcEntry (int gfc, int port, int vpi, int vci);
180 BCMADSL_STATUS BcmAdsl_SetVcEntryEx (int gfc, int port, int vpi, int vci, int pti_clp);
181
182 BCMADSL_STATUS BcmAdsl_ResetStatCounters(void);
183 BCMADSL_STATUS BcmAdsl_SetAtmLoopbackMode(void);
184 BCMADSL_STATUS BcmAdsl_SetTestMode(ADSL_TEST_MODE testMode);
185 BCMADSL_STATUS BcmAdsl_SelectTones(
186         int             xmtStartTone, 
187         int             xmtNumTones, 
188         int             rcvStartTone,
189         int             rcvNumTones, 
190         char    *xmtToneMap,
191         char    *rcvToneMap
192         );
193 BCMADSL_STATUS BcmAdsl_SetDiagMode(int diagMode);
194
195 int BcmAdsl_GetConstellationPoints (int toneId, ADSL_CONSTELLATION_POINT *pointBuf, int numPoints);
196
197 int BcmAdsl_GetOemParameter (int paramId, void *buf, int len);
198 int BcmAdsl_SetOemParameter (int paramId, void *buf, int len);
199 int BcmAdsl_SetXmtGain(int gain);
200
201 UINT32  BcmAdsl_GetSelfTestMode(void);
202 void    BcmAdsl_SetSelfTestMode(UINT32 stMode);
203 UINT32  BcmAdsl_GetSelfTestResults(void);
204
205 BCMADSL_STATUS BcmAdsl_G997SendData(void *buf, int len);
206 void *BcmAdsl_G997FrameGet(int *pLen);
207 void *BcmAdsl_G997FrameGetNext(int *pLen);
208 void  BcmAdsl_G997FrameFinished(void);
209 void BcmAdsl_DyingGaspHandler(void *context);
210
211 void BcmAdsl_AtmClearVcTable(void);
212 void BcmAdsl_AtmAddVc(int vpi, int vci);
213 void BcmAdsl_AtmDeleteVc(int vpi, int vci);
214 void BcmAdsl_AtmSetMaxSdu(unsigned short maxsdu);
215 void BcmAdsl_AtmSetPortId(int path, int portId) ;
216
217 #if defined(__cplusplus)
218 }
219 #endif
220
221 #endif // _BCMADSL_H_
222