hayesesp.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. #ifndef HAYESESP_H
  2. #define HAYESESP_H
  3. struct hayes_esp_config {
  4. short flow_on;
  5. short flow_off;
  6. short rx_trigger;
  7. short tx_trigger;
  8. short pio_threshold;
  9. unsigned char rx_timeout;
  10. char dma_channel;
  11. };
  12. #ifdef __KERNEL__
  13. #define ESP_DMA_CHANNEL 0
  14. #define ESP_RX_TRIGGER 768
  15. #define ESP_TX_TRIGGER 768
  16. #define ESP_FLOW_OFF 1016
  17. #define ESP_FLOW_ON 944
  18. #define ESP_RX_TMOUT 128
  19. #define ESP_PIO_THRESHOLD 32
  20. #define ESP_IN_MAJOR 57 /* major dev # for dial in */
  21. #define ESP_OUT_MAJOR 58 /* major dev # for dial out */
  22. #define ESPC_SCALE 3
  23. #define UART_ESI_BASE 0x00
  24. #define UART_ESI_SID 0x01
  25. #define UART_ESI_RX 0x02
  26. #define UART_ESI_TX 0x02
  27. #define UART_ESI_CMD1 0x04
  28. #define UART_ESI_CMD2 0x05
  29. #define UART_ESI_STAT1 0x04
  30. #define UART_ESI_STAT2 0x05
  31. #define UART_ESI_RWS 0x07
  32. #define UART_IER_DMA_TMOUT 0x80
  33. #define UART_IER_DMA_TC 0x08
  34. #define ESI_SET_IRQ 0x04
  35. #define ESI_SET_DMA_TMOUT 0x05
  36. #define ESI_SET_SRV_MASK 0x06
  37. #define ESI_SET_ERR_MASK 0x07
  38. #define ESI_SET_FLOW_CNTL 0x08
  39. #define ESI_SET_FLOW_CHARS 0x09
  40. #define ESI_SET_FLOW_LVL 0x0a
  41. #define ESI_SET_TRIGGER 0x0b
  42. #define ESI_SET_RX_TIMEOUT 0x0c
  43. #define ESI_SET_FLOW_TMOUT 0x0d
  44. #define ESI_WRITE_UART 0x0e
  45. #define ESI_READ_UART 0x0f
  46. #define ESI_SET_MODE 0x10
  47. #define ESI_GET_ERR_STAT 0x12
  48. #define ESI_GET_UART_STAT 0x13
  49. #define ESI_GET_RX_AVAIL 0x14
  50. #define ESI_GET_TX_AVAIL 0x15
  51. #define ESI_START_DMA_RX 0x16
  52. #define ESI_START_DMA_TX 0x17
  53. #define ESI_ISSUE_BREAK 0x1a
  54. #define ESI_FLUSH_RX 0x1b
  55. #define ESI_FLUSH_TX 0x1c
  56. #define ESI_SET_BAUD 0x1d
  57. #define ESI_SET_ENH_IRQ 0x1f
  58. #define ESI_SET_REINTR 0x20
  59. #define ESI_SET_PRESCALAR 0x23
  60. #define ESI_NO_COMMAND 0xff
  61. #define ESP_STAT_RX_TIMEOUT 0x01
  62. #define ESP_STAT_DMA_RX 0x02
  63. #define ESP_STAT_DMA_TX 0x04
  64. #define ESP_STAT_NEVER_DMA 0x08
  65. #define ESP_STAT_USE_PIO 0x10
  66. #define ESP_EVENT_WRITE_WAKEUP 0
  67. #define ESP_MAGIC 0x53ee
  68. #define ESP_XMIT_SIZE 4096
  69. struct esp_struct {
  70. int magic;
  71. spinlock_t lock;
  72. int port;
  73. int irq;
  74. int flags; /* defined in tty.h */
  75. struct tty_struct *tty;
  76. int read_status_mask;
  77. int ignore_status_mask;
  78. int timeout;
  79. int stat_flags;
  80. int custom_divisor;
  81. int close_delay;
  82. unsigned short closing_wait;
  83. unsigned short closing_wait2;
  84. int IER; /* Interrupt Enable Register */
  85. int MCR; /* Modem control register */
  86. unsigned long event;
  87. unsigned long last_active;
  88. int line;
  89. int count; /* # of fd on device */
  90. int blocked_open; /* # of blocked opens */
  91. unsigned char *xmit_buf;
  92. int xmit_head;
  93. int xmit_tail;
  94. int xmit_cnt;
  95. struct work_struct tqueue;
  96. struct work_struct tqueue_hangup;
  97. wait_queue_head_t open_wait;
  98. wait_queue_head_t close_wait;
  99. wait_queue_head_t delta_msr_wait;
  100. wait_queue_head_t break_wait;
  101. struct async_icount icount; /* kernel counters for the 4 input interrupts */
  102. struct hayes_esp_config config; /* port configuration */
  103. struct esp_struct *next_port; /* For the linked list */
  104. };
  105. struct esp_pio_buffer {
  106. unsigned char data[1024];
  107. struct esp_pio_buffer *next;
  108. };
  109. #endif /* __KERNEL__ */
  110. #endif /* ESP_H */