Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]

Diff markup

Differences between /linux/drivers/isdn/hardware/eicon/divasfunc.c (Version 2.6.25) and /linux/drivers/isdn/hardware/eicon/divasfunc.c (Version 2.6.11.8)


  1 /* $Id: divasfunc.c,v 1.23.4.2 2004/08/28 20:0      1 
  2  *                                                
  3  * Low level driver for Eicon DIVA Server ISDN    
  4  *                                                
  5  * Copyright 2000-2003 by Armin Schindler (mac    
  6  * Copyright 2000-2003 Cytronics & Melware (in    
  7  *                                                
  8  * This software may be used and distributed a    
  9  * of the GNU General Public License, incorpor    
 10  */                                               
 11                                                   
 12 #include "platform.h"                             
 13 #include "di_defs.h"                              
 14 #include "pc.h"                                   
 15 #include "di.h"                                   
 16 #include "io.h"                                   
 17 #include "divasync.h"                             
 18 #include "diva.h"                                 
 19 #include "xdi_vers.h"                             
 20                                                   
 21 #define DBG_MINIMUM  (DL_LOG + DL_FTL + DL_ERR    
 22 #define DBG_DEFAULT  (DBG_MINIMUM + DL_XLOG +     
 23                                                   
 24 static int debugmask;                             
 25                                                   
 26 extern void DIVA_DIDD_Read(void *, int);          
 27                                                   
 28 extern PISDN_ADAPTER IoAdapters[MAX_ADAPTER];     
 29                                                   
 30 extern char *DRIVERRELEASE_DIVAS;                 
 31                                                   
 32 static dword notify_handle;                       
 33 static DESCRIPTOR DAdapter;                       
 34 static DESCRIPTOR MAdapter;                       
 35                                                   
 36 /* -------------------------------------------    
 37     MAINT driver connector section                
 38    -------------------------------------------    
 39 static void no_printf(unsigned char *x, ...)      
 40 {                                                 
 41         /* dummy debug function */                
 42 }                                                 
 43                                                   
 44 #include "debuglib.c"                             
 45                                                   
 46 /*                                                
 47  * get the adapters serial number                 
 48  */                                               
 49 void diva_get_vserial_number(PISDN_ADAPTER IoA    
 50 {                                                 
 51         int contr = 0;                            
 52                                                   
 53         if ((contr = ((IoAdapter->serialNo & 0    
 54                 sprintf(buf, "%d-%d",             
 55                         IoAdapter->serialNo &     
 56         } else {                                  
 57                 sprintf(buf, "%d", IoAdapter->    
 58         }                                         
 59 }                                                 
 60                                                   
 61 /*                                                
 62  * register a new adapter                         
 63  */                                               
 64 void diva_xdi_didd_register_adapter(int card)     
 65 {                                                 
 66         DESCRIPTOR d;                             
 67         IDI_SYNC_REQ req;                         
 68                                                   
 69         if (card && ((card - 1) < MAX_ADAPTER)    
 70             IoAdapters[card - 1] && Requests[c    
 71                 d.type = IoAdapters[card - 1]-    
 72                 d.request = Requests[card - 1]    
 73                 d.channels = IoAdapters[card -    
 74                 d.features = IoAdapters[card -    
 75                 DBG_TRC(("DIDD register A(%d)     
 76                          d.channels))             
 77                     /* workaround for differen    
 78                     strlcpy(IoAdapters[card -     
 79                             IoAdapters[card -     
 80                             sizeof(IoAdapters[    
 81                 req.didd_remove_adapter.e.Req     
 82                 req.didd_add_adapter.e.Rc = ID    
 83                 req.didd_add_adapter.info.desc    
 84                 DAdapter.request((ENTITY *) &     
 85                 if (req.didd_add_adapter.e.Rc     
 86                         DBG_ERR(("DIDD registe    
 87                 }                                 
 88                 IoAdapters[card - 1]->os_trap_    
 89         }                                         
 90 }                                                 
 91                                                   
 92 /*                                                
 93  * remove an adapter                              
 94  */                                               
 95 void diva_xdi_didd_remove_adapter(int card)       
 96 {                                                 
 97         IDI_SYNC_REQ req;                         
 98         ADAPTER *a = &IoAdapters[card - 1]->a;    
 99                                                   
100         IoAdapters[card - 1]->os_trap_nfy_Fnc     
101         DBG_TRC(("DIDD de-register A(%d)", car    
102         req.didd_remove_adapter.e.Req = 0;        
103         req.didd_remove_adapter.e.Rc = IDI_SYN    
104         req.didd_remove_adapter.info.p_request    
105             (IDI_CALL) Requests[card - 1];        
106         DAdapter.request((ENTITY *) & req);       
107         memset(&(a->IdTable), 0x00, 256);         
108 }                                                 
109                                                   
110 /*                                                
111  * start debug                                    
112  */                                               
113 static void start_dbg(void)                       
114 {                                                 
115         DbgRegister("DIVAS", DRIVERRELEASE_DIV    
116         DBG_LOG(("DIVA ISDNXDI BUILD (%s[%s]-%    
117                  DIVA_BUILD, diva_xdi_common_c    
118                  __TIME__))                       
119 }                                                 
120                                                   
121 /*                                                
122  * stop debug                                     
123  */                                               
124 static void stop_dbg(void)                        
125 {                                                 
126         DbgDeregister();                          
127         memset(&MAdapter, 0, sizeof(MAdapter))    
128         dprintf = no_printf;                      
129 }                                                 
130                                                   
131 /*                                                
132  * didd callback function                         
133  */                                               
134 static void *didd_callback(void *context, DESC    
135                            int removal)           
136 {                                                 
137         if (adapter->type == IDI_DADAPTER) {      
138                 DBG_ERR(("Notification about I    
139                 return (NULL);                    
140         }                                         
141                                                   
142         if (adapter->type == IDI_DIMAINT) {       
143                 if (removal) {                    
144                         stop_dbg();               
145                 } else {                          
146                         memcpy(&MAdapter, adap    
147                         dprintf = (DIVA_DI_PRI    
148                         start_dbg();              
149                 }                                 
150         }                                         
151         return (NULL);                            
152 }                                                 
153                                                   
154 /*                                                
155  * connect to didd                                
156  */                                               
157 static int DIVA_INIT_FUNCTION connect_didd(voi    
158 {                                                 
159         int x = 0;                                
160         int dadapter = 0;                         
161         IDI_SYNC_REQ req;                         
162         DESCRIPTOR DIDD_Table[MAX_DESCRIPTORS]    
163                                                   
164         DIVA_DIDD_Read(DIDD_Table, sizeof(DIDD    
165                                                   
166         for (x = 0; x < MAX_DESCRIPTORS; x++)     
167                 if (DIDD_Table[x].type == IDI_    
168                         dadapter = 1;             
169                         memcpy(&DAdapter, &DID    
170                         req.didd_notify.e.Req     
171                         req.didd_notify.e.Rc =    
172                             IDI_SYNC_REQ_DIDD_    
173                         req.didd_notify.info.c    
174                         req.didd_notify.info.c    
175                         DAdapter.request((ENTI    
176                         if (req.didd_notify.e.    
177                                 stop_dbg();       
178                                 return (0);       
179                         }                         
180                         notify_handle = req.di    
181                 } else if (DIDD_Table[x].type     
182                         memcpy(&MAdapter, &DID    
183                         dprintf = (DIVA_DI_PRI    
184                         start_dbg();              
185                 }                                 
186         }                                         
187                                                   
188         if (!dadapter) {                          
189                 stop_dbg();                       
190         }                                         
191                                                   
192         return (dadapter);                        
193 }                                                 
194                                                   
195 /*                                                
196  * disconnect from didd                           
197  */                                               
198 static void disconnect_didd(void)                 
199 {                                                 
200         IDI_SYNC_REQ req;                         
201                                                   
202         stop_dbg();                               
203                                                   
204         req.didd_notify.e.Req = 0;                
205         req.didd_notify.e.Rc = IDI_SYNC_REQ_DI    
206         req.didd_notify.info.handle = notify_h    
207         DAdapter.request((ENTITY *) & req);       
208 }                                                 
209                                                   
210 /*                                                
211  * init                                           
212  */                                               
213 int DIVA_INIT_FUNCTION divasfunc_init(int dbgm    
214 {                                                 
215         char *version;                            
216                                                   
217         debugmask = dbgmask;                      
218                                                   
219         if (!connect_didd()) {                    
220                 DBG_ERR(("divasfunc: failed to    
221                 return (0);                       
222         }                                         
223                                                   
224         version = diva_xdi_common_code_build;     
225                                                   
226         divasa_xdi_driver_entry();                
227                                                   
228         return (1);                               
229 }                                                 
230                                                   
231 /*                                                
232  * exit                                           
233  */                                               
234 void divasfunc_exit(void)                         
235 {                                                 
236         divasa_xdi_driver_unload();               
237         disconnect_didd();                        
238 }                                                 
239                                                   
  This page was automatically generated by the LXR engine.