cyclades.h
001: 
002: 
003: 
004: 
005: <bentson@grieg.seaslug.org>
006: <ivan@cyclades.com>
007: 
008: 
009: 
010: 
011: 
012: 
013: 
014: 
015: 
016: 
017: 
018: 
019: 
020: 
021: 
022: 
023: 
024: 
025: 
026: 
027: 
028: 
029: 
030: 
031: 
032: 
033: 
034: 
035: 
036: 
037: 
038: 
039: 
040: 
041: 
042: 
043: 
044: 
045: 
046: 
047: 
048: 
049: 
050: 
051: 
052: 
053: 
054: 
055: 
056: 
057: 
058: 
059: 
060: 
061: <mec@duracef.shout.net>
062: 
063: 
064: 
065: 
066: 
067: #ifndef _LINUX_CYCLADES_H
068: #define _LINUX_CYCLADES_H
069: 
070: #include <linux/types.h>
071: 
072: struct cyclades_monitor {
073:         unsigned long           int_count;
074:         unsigned long           char_count;
075:         unsigned long           char_max;
076:         unsigned long           char_last;
077: };
078: 
079: 
080: 
081: 
082: 
083: 
084: struct cyclades_idle_stats {
085:     __kernel_time_t in_use;     
086:     __kernel_time_t recv_idle;  
087:     __kernel_time_t xmit_idle;  
088:     unsigned long  recv_bytes;  
089:     unsigned long  xmit_bytes;  
090:     unsigned long  overruns;    
091:     unsigned long  frame_errs;  
092:     unsigned long  parity_errs; 
093: };
094: 
095: #define CYCLADES_MAGIC  0x4359
096: 
097: #define CYGETMON                0x435901
098: #define CYGETTHRESH             0x435902
099: #define CYSETTHRESH             0x435903
100: #define CYGETDEFTHRESH          0x435904
101: #define CYSETDEFTHRESH          0x435905
102: #define CYGETTIMEOUT            0x435906
103: #define CYSETTIMEOUT            0x435907
104: #define CYGETDEFTIMEOUT         0x435908
105: #define CYSETDEFTIMEOUT         0x435909
106: #define CYSETRFLOW              0x43590a
107: #define CYGETRFLOW              0x43590b
108: #define CYSETRTSDTR_INV         0x43590c
109: #define CYGETRTSDTR_INV         0x43590d
110: #define CYZSETPOLLCYCLE         0x43590e
111: #define CYZGETPOLLCYCLE         0x43590f
112: #define CYGETCD1400VER          0x435910
113: #define CYSETWAIT               0x435912
114: #define CYGETWAIT               0x435913
115: 
116: 
117: 
118: #define CZIOC           ('M' << 8)
119: #define CZ_NBOARDS      (CZIOC|0xfa)
120: #define CZ_BOOT_START   (CZIOC|0xfb)
121: #define CZ_BOOT_DATA    (CZIOC|0xfc)
122: #define CZ_BOOT_END     (CZIOC|0xfd)
123: #define CZ_TEST         (CZIOC|0xfe)
124: 
125: #define CZ_DEF_POLL     (HZ/25)
126: 
127: #define MAX_BOARD       4       
128: #define MAX_DEV         256     
129: #define CYZ_MAX_SPEED   921600
130: 
131: #define CYZ_FIFO_SIZE   16
132: 
133: #define CYZ_BOOT_NWORDS 0x100
134: struct CYZ_BOOT_CTRL {
135:         unsigned short  nboard;
136:         int             status[MAX_BOARD];
137:         int             nchannel[MAX_BOARD];
138:         int             fw_rev[MAX_BOARD];
139:         unsigned long   offset;
140:         unsigned long   data[CYZ_BOOT_NWORDS];
141: };
142: 
143: 
144: #ifndef DP_WINDOW_SIZE
145: 
146: 
147: 
148: 
149: #define DP_WINDOW_SIZE          (0x00080000)    
150: #define ZE_DP_WINDOW_SIZE       (0x00100000)    
151: 
152: #define CTRL_WINDOW_SIZE        (0x00000080)    
153: 
154: 
155: 
156: 
157: 
158: 
159: 
160: struct  CUSTOM_REG {
161:         __u32   fpga_id;                
162:         __u32   fpga_version;           
163:         __u32   cpu_start;              
164:         __u32   cpu_stop;               
165:         __u32   misc_reg;               
166:         __u32   idt_mode;               
167:         __u32   uart_irq_status;        
168:         __u32   clear_timer0_irq;       
169:         __u32   clear_timer1_irq;       
170:         __u32   clear_timer2_irq;       
171:         __u32   test_register;          
172:         __u32   test_count;             
173:         __u32   timer_select;           
174:         __u32   pr_uart_irq_status;     
175:         __u32   ram_wait_state;         
176:         __u32   uart_wait_state;        
177:         __u32   timer_wait_state;       
178:         __u32   ack_wait_state;         
179: };
180: 
181: 
182: 
183: 
184: 
185: 
186: 
187: struct RUNTIME_9060 {
188:         __u32   loc_addr_range; 
189:         __u32   loc_addr_base;  
190:         __u32   loc_arbitr;     
191:         __u32   endian_descr;   
192:         __u32   loc_rom_range;  
193:         __u32   loc_rom_base;   
194:         __u32   loc_bus_descr;  
195:         __u32   loc_range_mst;  
196:         __u32   loc_base_mst;   
197:         __u32   loc_range_io;   
198:         __u32   pci_base_mst;   
199:         __u32   pci_conf_io;    
200:         __u32   filler1;        
201:         __u32   filler2;        
202:         __u32   filler3;        
203:         __u32   filler4;        
204:         __u32   mail_box_0;     
205:         __u32   mail_box_1;     
206:         __u32   mail_box_2;     
207:         __u32   mail_box_3;     
208:         __u32   filler5;        
209:         __u32   filler6;        
210:         __u32   filler7;        
211:         __u32   filler8;        
212:         __u32   pci_doorbell;   
213:         __u32   loc_doorbell;   
214:         __u32   intr_ctrl_stat; 
215:         __u32   init_ctrl;      
216: };
217: 
218: 
219: 
220: #define WIN_RAM         0x00000001L     
221: #define WIN_CREG        0x14000001L     
222: 
223: 
224: 
225: #define TIMER_BY_1M     0x00            
226: #define TIMER_BY_256K   0x01            
227: #define TIMER_BY_128K   0x02            
228: #define TIMER_BY_32K    0x03            
229: 
230: 
231: #endif
232: 
233: #ifndef ZFIRM_ID
234: 
235: 
236: 
237: 
238: 
239: 
240: 
241: 
242: 
243: #define MAX_CHAN        64              
244: 
245: 
246: 
247: #define ID_ADDRESS      0x00000180L     
248: #define ZFIRM_ID        0x5557465AL     
249: #define ZFIRM_HLT       0x59505B5CL     
250: #define ZFIRM_RST       0x56040674L     
251: 
252: #define ZF_TINACT_DEF   1000            
253: 
254: #define ZF_TINACT       ZF_TINACT_DEF
255: 
256: struct  FIRM_ID {
257:         __u32   signature;              
258:         __u32   zfwctrl_addr;           
259: };
260: 
261: 
262: 
263: #define C_OS_LINUX      0x00000030      
264: 
265: 
266: 
267: #define C_CH_DISABLE    0x00000000      
268: #define C_CH_TXENABLE   0x00000001      
269: #define C_CH_RXENABLE   0x00000002      
270: #define C_CH_ENABLE     0x00000003      
271: #define C_CH_LOOPBACK   0x00000004      
272: 
273: 
274: 
275: #define C_PR_NONE       0x00000000      
276: #define C_PR_ODD        0x00000001      
277: #define C_PR_EVEN       0x00000002      
278: #define C_PR_MARK       0x00000004      
279: #define C_PR_SPACE      0x00000008      
280: #define C_PR_PARITY     0x000000ff
281: 
282: #define C_PR_DISCARD    0x00000100      
283: #define C_PR_IGNORE     0x00000200      
284: 
285: 
286: 
287: #define C_DL_CS5        0x00000001
288: #define C_DL_CS6        0x00000002
289: #define C_DL_CS7        0x00000004
290: #define C_DL_CS8        0x00000008
291: #define C_DL_CS         0x0000000f
292: #define C_DL_1STOP      0x00000010
293: #define C_DL_15STOP     0x00000020
294: #define C_DL_2STOP      0x00000040
295: #define C_DL_STOP       0x000000f0
296: 
297: 
298: 
299: #define C_IN_DISABLE    0x00000000      
300: #define C_IN_TXBEMPTY   0x00000001      
301: #define C_IN_TXLOWWM    0x00000002      
302: #define C_IN_RXHIWM     0x00000010      
303: #define C_IN_RXNNDT     0x00000020      
304: #define C_IN_MDCD       0x00000100      
305: #define C_IN_MDSR       0x00000200      
306: #define C_IN_MRI        0x00000400      
307: #define C_IN_MCTS       0x00000800      
308: #define C_IN_RXBRK      0x00001000      
309: #define C_IN_PR_ERROR   0x00002000      
310: #define C_IN_FR_ERROR   0x00004000      
311: #define C_IN_OVR_ERROR  0x00008000      
312: #define C_IN_RXOFL      0x00010000      
313: #define C_IN_IOCTLW     0x00020000      
314: #define C_IN_MRTS       0x00040000      
315: #define C_IN_ICHAR      0x00080000
316:  
317: 
318: 
319: #define C_FL_OXX        0x00000001      
320: #define C_FL_IXX        0x00000002      
321: #define C_FL_OIXANY     0x00000004      
322: #define C_FL_SWFLOW     0x0000000f
323: 
324: 
325: 
326: #define C_FS_TXIDLE     0x00000000      
327: #define C_FS_SENDING    0x00000001      
328: #define C_FS_SWFLOW     0x00000002      
329: 
330: 
331: 
332: #define C_RS_PARAM      0x80000000      
333: 
334: #define C_RS_RTS        0x00000001      
335: #define C_RS_DTR        0x00000004      
336: #define C_RS_DCD        0x00000100      
337: #define C_RS_DSR        0x00000200      
338: #define C_RS_RI         0x00000400      
339: #define C_RS_CTS        0x00000800      
340: 
341: 
342: 
343: #define C_CM_RESET      0x01            
344: #define C_CM_IOCTL      0x02            
345: #define C_CM_IOCTLW     0x03            
346: #define C_CM_IOCTLM     0x04            
347: #define C_CM_SENDXOFF   0x10            
348: #define C_CM_SENDXON    0x11            
349: #define C_CM_CLFLOW     0x12            
350: #define C_CM_SENDBRK    0x41            
351: #define C_CM_INTBACK    0x42            
352: #define C_CM_SET_BREAK  0x43            
353: #define C_CM_CLR_BREAK  0x44            
354: #define C_CM_CMD_DONE   0x45            
355: #define C_CM_INTBACK2   0x46            
356: #define C_CM_TINACT     0x51            
357: #define C_CM_IRQ_ENBL   0x52            
358: #define C_CM_IRQ_DSBL   0x53            
359: #define C_CM_ACK_ENBL   0x54            
360: #define C_CM_ACK_DSBL   0x55            
361: #define C_CM_FLUSH_RX   0x56            
362: #define C_CM_FLUSH_TX   0x57            
363: #define C_CM_Q_ENABLE   0x58            
364: 
365: #define C_CM_Q_DISABLE  0x59            
366: 
367: 
368: #define C_CM_TXBEMPTY   0x60            
369: #define C_CM_TXLOWWM    0x61            
370: #define C_CM_RXHIWM     0x62            
371: #define C_CM_RXNNDT     0x63            
372: #define C_CM_TXFEMPTY   0x64
373: #define C_CM_ICHAR      0x65
374: #define C_CM_MDCD       0x70            
375: #define C_CM_MDSR       0x71            
376: #define C_CM_MRI        0x72            
377: #define C_CM_MCTS       0x73            
378: #define C_CM_MRTS       0x74            
379: #define C_CM_RXBRK      0x84            
380: #define C_CM_PR_ERROR   0x85            
381: #define C_CM_FR_ERROR   0x86            
382: #define C_CM_OVR_ERROR  0x87            
383: #define C_CM_RXOFL      0x88            
384: #define C_CM_CMDERROR   0x90            
385: #define C_CM_FATAL      0x91            
386: #define C_CM_HW_RESET   0x92            
387: 
388: 
389: 
390: 
391: 
392: 
393: 
394: struct CH_CTRL {
395:         __u32   op_mode;        
396:         __u32   intr_enable;    
397:         __u32   sw_flow;        
398:         __u32   flow_status;    
399:         __u32   comm_baud;      
400:         __u32   comm_parity;    
401:         __u32   comm_data_l;    
402:         __u32   comm_flags;     
403:         __u32   hw_flow;        
404:         __u32   rs_control;     
405:         __u32   rs_status;      
406:         __u32   flow_xon;       
407:         __u32   flow_xoff;      
408:         __u32   hw_overflow;    
409:         __u32   sw_overflow;    
410:         __u32   comm_error;     
411:         __u32 ichar;
412:         __u32 filler[7];
413: };
414: 
415: 
416: 
417: 
418: 
419: 
420: 
421: struct  BUF_CTRL        {
422:         __u32   flag_dma;       
423:         __u32   tx_bufaddr;     
424:         __u32   tx_bufsize;     
425:         __u32   tx_threshold;   
426:         __u32   tx_get;         
427:         __u32   tx_put;         
428:         __u32   rx_bufaddr;     
429:         __u32   rx_bufsize;     
430:         __u32   rx_threshold;   
431:         __u32   rx_get;         
432:         __u32   rx_put;         
433:         __u32   filler[5];      
434: };
435: 
436: 
437: 
438: 
439: 
440: 
441: struct BOARD_CTRL {
442: 
443:         
444:         __u32   n_channel;      
445:         __u32   fw_version;     
446: 
447:         
448:         __u32   op_system;      
449:         __u32   dr_version;     
450: 
451:         
452:         __u32   inactivity;     
453: 
454:         
455:         __u32   hcmd_channel;   
456:         __u32   hcmd_param;     
457: 
458:         
459:         __u32   fwcmd_channel;  
460:         __u32   fwcmd_param;    
461:         __u32   zf_int_queue_addr; 
462: 
463:         
464:         __u32   filler[6];
465: };
466: 
467: 
468: 
469: #define QUEUE_SIZE      (10*MAX_CHAN)
470: 
471: struct  INT_QUEUE {
472:         unsigned char   intr_code[QUEUE_SIZE];
473:         unsigned long   channel[QUEUE_SIZE];
474:         unsigned long   param[QUEUE_SIZE];
475:         unsigned long   put;
476:         unsigned long   get;
477: };
478: 
479: 
480: 
481: 
482: 
483:  
484: struct ZFW_CTRL {
485:         struct BOARD_CTRL       board_ctrl;
486:         struct CH_CTRL          ch_ctrl[MAX_CHAN];
487:         struct BUF_CTRL         buf_ctrl[MAX_CHAN];
488: };
489: 
490: 
491: #endif
492: 
493: #endif 
494: 
      
      
      
      
   
      
      
         
            
            © Andrew Scott 2006 -
            2025, 
            All Rights Reserved