pcbit.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:4k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  * PCBIT-D device driver definitions
  3.  *
  4.  * Copyright (C) 1996 Universidade de Lisboa
  5.  * 
  6.  * Written by Pedro Roque Marques (roque@di.fc.ul.pt)
  7.  *
  8.  * This software may be used and distributed according to the terms of 
  9.  * the GNU General Public License, incorporated herein by reference.
  10.  */
  11. #ifndef PCBIT_H
  12. #define PCBIT_H
  13. #define MAX_PCBIT_CARDS 4
  14. #define BLOCK_TIMER
  15. #ifdef __KERNEL__
  16. struct pcbit_chan {
  17. unsigned short id;
  18. unsigned short callref;                   /* Call Reference */
  19. unsigned char  proto;                     /* layer2protocol  */
  20. unsigned char  queued;                    /* unacked data messages */
  21. unsigned char  layer2link;                /* used in TData */
  22. unsigned char  snum;                      /* used in TData */
  23. unsigned short s_refnum;
  24. unsigned short r_refnum;
  25. unsigned short fsm_state;
  26. struct timer_list fsm_timer;
  27. #ifdef  BLOCK_TIMER
  28. struct timer_list block_timer;
  29. #endif
  30. };
  31. struct msn_entry {
  32. char *msn;
  33. struct msn_entry * next;
  34. };
  35. struct pcbit_dev {
  36. /* board */
  37. volatile unsigned char* sh_mem; /* RDP address */
  38. unsigned long ph_mem;
  39. unsigned int irq;
  40. unsigned int id;
  41. unsigned int interrupt; /* set during interrupt 
  42.    processing */
  43. /* isdn4linux */
  44. struct msn_entry * msn_list; /* ISDN address list */
  45. isdn_if * dev_if;
  46. ushort ll_hdrlen;
  47. ushort hl_hdrlen;
  48. /* link layer */
  49. unsigned char l2_state;
  50. struct frame_buf *read_queue;
  51. struct frame_buf *read_frame;
  52. struct frame_buf *write_queue;
  53. /* Protocol start */
  54. wait_queue_head_t set_running_wq;
  55. struct timer_list set_running_timer;
  56. struct timer_list error_recover_timer;
  57. struct tq_struct qdelivery;
  58. u_char w_busy;
  59. u_char r_busy;
  60. volatile unsigned char *readptr;
  61. volatile unsigned char *writeptr;
  62. ushort loadptr;
  63. unsigned short fsize[8]; /* sent layer2 frames size */
  64. unsigned char send_seq;
  65. unsigned char rcv_seq;
  66. unsigned char unack_seq;
  67.   
  68. unsigned short free;
  69. /* channels */
  70. struct pcbit_chan *b1;
  71. struct pcbit_chan *b2;  
  72. };
  73. #define STATS_TIMER (10*HZ)
  74. #define ERRTIME     (HZ/10)
  75. /* MRU */
  76. #define MAXBUFSIZE  1534
  77. #define MRU   MAXBUFSIZE
  78. #define STATBUF_LEN 2048
  79. /*
  80.  * 
  81.  */
  82. #endif /* __KERNEL__ */
  83. /* isdn_ctrl only allows a long sized argument */
  84. struct pcbit_ioctl {
  85. union {
  86. struct byte_op {
  87. ushort addr;
  88. ushort value;
  89. } rdp_byte;
  90. unsigned long l2_status;
  91. } info;
  92. };
  93. #define PCBIT_IOCTL_GETSTAT  0x01    /* layer2 status */
  94. #define PCBIT_IOCTL_LWMODE   0x02    /* linear write mode */
  95. #define PCBIT_IOCTL_STRLOAD  0x03    /* start load mode */
  96. #define PCBIT_IOCTL_ENDLOAD  0x04    /* end load mode */
  97. #define PCBIT_IOCTL_SETBYTE  0x05    /* set byte */
  98. #define PCBIT_IOCTL_GETBYTE  0x06    /* get byte */
  99. #define PCBIT_IOCTL_RUNNING  0x07    /* set protocol running */
  100. #define PCBIT_IOCTL_WATCH188 0x08    /* set watch 188 */
  101. #define PCBIT_IOCTL_PING188  0x09    /* ping 188 */
  102. #define PCBIT_IOCTL_FWMODE   0x0A    /* firmware write mode */
  103. #define PCBIT_IOCTL_STOP     0x0B    /* stop protocol */
  104. #define PCBIT_IOCTL_APION    0x0C    /* issue API_ON  */
  105. #ifndef __KERNEL__
  106. #define PCBIT_GETSTAT  (PCBIT_IOCTL_GETSTAT  + IIOCDRVCTL)
  107. #define PCBIT_LWMODE   (PCBIT_IOCTL_LWMODE   + IIOCDRVCTL)
  108. #define PCBIT_STRLOAD  (PCBIT_IOCTL_STRLOAD  + IIOCDRVCTL)
  109. #define PCBIT_ENDLOAD  (PCBIT_IOCTL_ENDLOAD  + IIOCDRVCTL)
  110. #define PCBIT_SETBYTE  (PCBIT_IOCTL_SETBYTE  + IIOCDRVCTL)
  111. #define PCBIT_GETBYTE  (PCBIT_IOCTL_GETBYTE  + IIOCDRVCTL)
  112. #define PCBIT_RUNNING  (PCBIT_IOCTL_RUNNING  + IIOCDRVCTL)
  113. #define PCBIT_WATCH188 (PCBIT_IOCTL_WATCH188 + IIOCDRVCTL)
  114. #define PCBIT_PING188  (PCBIT_IOCTL_PING188  + IIOCDRVCTL)
  115. #define PCBIT_FWMODE   (PCBIT_IOCTL_FWMODE   + IIOCDRVCTL)
  116. #define PCBIT_STOP     (PCBIT_IOCTL_STOP     + IIOCDRVCTL)
  117. #define PCBIT_APION    (PCBIT_IOCTL_APION    + IIOCDRVCTL)
  118. #define MAXSUPERLINE 3000
  119. #endif
  120. #define L2_DOWN     0
  121. #define L2_LOADING  1
  122. #define L2_LWMODE   2
  123. #define L2_FWMODE   3
  124. #define L2_STARTING 4
  125. #define L2_RUNNING  5
  126. #define L2_ERROR    6
  127. #endif