serial.h
上传用户:szlgq88
上传日期:2009-04-28
资源大小:48287k
文件大小:5k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * include/linux/serial.h
  3.  *
  4.  * Copyright (C) 1992 by Theodore Ts'o.
  5.  * 
  6.  * Redistribution of this file is permitted under the terms of the GNU 
  7.  * Public License (GPL)
  8.  */
  9. #ifndef _LINUX_SERIAL_H
  10. #define _LINUX_SERIAL_H
  11. #ifdef __KERNEL__
  12. #include <asm/page.h>
  13. /*
  14.  * Counters of the input lines (CTS, DSR, RI, CD) interrupts
  15.  */
  16. struct async_icount {
  17. __u32 cts, dsr, rng, dcd, tx, rx;
  18. __u32 frame, parity, overrun, brk;
  19. __u32 buf_overrun;
  20. };
  21. /*
  22.  * The size of the serial xmit buffer is 1 page, or 4096 bytes
  23.  */
  24. #define SERIAL_XMIT_SIZE PAGE_SIZE
  25. #endif
  26. struct serial_struct {
  27. int type;
  28. int line;
  29. unsigned int port;
  30. int irq;
  31. int flags;
  32. int xmit_fifo_size;
  33. int custom_divisor;
  34. int baud_base;
  35. unsigned short close_delay;
  36. char io_type;
  37. char reserved_char[1];
  38. int hub6;
  39. unsigned short closing_wait; /* time to wait before closing */
  40. unsigned short closing_wait2; /* no longer used... */
  41. unsigned char *iomem_base;
  42. unsigned short iomem_reg_shift;
  43. unsigned int port_high;
  44. unsigned long iomap_base; /* cookie passed into ioremap */
  45. };
  46. /*
  47.  * For the close wait times, 0 means wait forever for serial port to
  48.  * flush its output.  65535 means don't wait at all.
  49.  */
  50. #define ASYNC_CLOSING_WAIT_INF 0
  51. #define ASYNC_CLOSING_WAIT_NONE 65535
  52. /*
  53.  * These are the supported serial types.
  54.  */
  55. #define PORT_UNKNOWN 0
  56. #define PORT_8250 1
  57. #define PORT_16450 2
  58. #define PORT_16550 3
  59. #define PORT_16550A 4
  60. #define PORT_CIRRUS     5 /* usurped by cyclades.c */
  61. #define PORT_16650 6
  62. #define PORT_16650V2 7
  63. #define PORT_16750 8
  64. #define PORT_STARTECH 9 /* usurped by cyclades.c */
  65. #define PORT_16C950 10 /* Oxford Semiconductor */
  66. #define PORT_16654 11
  67. #define PORT_16850 12
  68. #define PORT_RSA 13 /* RSA-DV II/S card */
  69. #define PORT_MAX 13
  70. #define SERIAL_IO_PORT 0
  71. #define SERIAL_IO_HUB6 1
  72. #define SERIAL_IO_MEM 2
  73. struct serial_uart_config {
  74. char *name;
  75. int dfl_xmit_fifo_size;
  76. int flags;
  77. };
  78. #define UART_CLEAR_FIFO 0x01
  79. #define UART_USE_FIFO 0x02
  80. #define UART_STARTECH 0x04
  81. #define UART_NATSEMI 0x08
  82. /*
  83.  * Definitions for async_struct (and serial_struct) flags field
  84.  */
  85. #define ASYNC_HUP_NOTIFY 0x0001 /* Notify getty on hangups and closes 
  86.    on the callout port */
  87. #define ASYNC_FOURPORT  0x0002 /* Set OU1, OUT2 per AST Fourport settings */
  88. #define ASYNC_SAK 0x0004 /* Secure Attention Key (Orange book) */
  89. #define ASYNC_SPLIT_TERMIOS 0x0008 /* Separate termios for dialin/callout */
  90. #define ASYNC_SPD_MASK 0x1030
  91. #define ASYNC_SPD_HI 0x0010 /* Use 56000 instead of 38400 bps */
  92. #define ASYNC_SPD_VHI 0x0020  /* Use 115200 instead of 38400 bps */
  93. #define ASYNC_SPD_CUST 0x0030  /* Use user-specified divisor */
  94. #define ASYNC_SKIP_TEST 0x0040 /* Skip UART test during autoconfiguration */
  95. #define ASYNC_AUTO_IRQ  0x0080 /* Do automatic IRQ during autoconfiguration */
  96. #define ASYNC_SESSION_LOCKOUT 0x0100 /* Lock out cua opens based on session */
  97. #define ASYNC_PGRP_LOCKOUT    0x0200 /* Lock out cua opens based on pgrp */
  98. #define ASYNC_CALLOUT_NOHUP   0x0400 /* Don't do hangups for cua device */
  99. #define ASYNC_HARDPPS_CD 0x0800 /* Call hardpps when CD goes high  */
  100. #define ASYNC_SPD_SHI 0x1000 /* Use 230400 instead of 38400 bps */
  101. #define ASYNC_SPD_WARP 0x1010 /* Use 460800 instead of 38400 bps */
  102. #define ASYNC_LOW_LATENCY 0x2000 /* Request low latency behaviour */
  103. #define ASYNC_BUGGY_UART  0x4000 /* This is a buggy UART, skip some safety
  104.   * checks.  Note: can be dangerous! */
  105. #define ASYNC_AUTOPROBE  0x8000 /* Port was autoprobed by PCI or PNP code */
  106. #define ASYNC_FLAGS 0x7FFF /* Possible legal async flags */
  107. #define ASYNC_USR_MASK 0x3430 /* Legal flags that non-privileged
  108.  * users can set or reset */
  109. /* Internal flags used only by kernel/chr_drv/serial.c */
  110. #define ASYNC_INITIALIZED 0x80000000 /* Serial port was initialized */
  111. #define ASYNC_NORMAL_ACTIVE 0x20000000 /* Normal device is active */
  112. #define ASYNC_BOOT_AUTOCONF 0x10000000 /* Autoconfigure port on bootup */
  113. #define ASYNC_CLOSING 0x08000000 /* Serial port is closing */
  114. #define ASYNC_CTS_FLOW 0x04000000 /* Do CTS flow control */
  115. #define ASYNC_CHECK_CD 0x02000000 /* i.e., CLOCAL */
  116. #define ASYNC_SHARE_IRQ 0x01000000 /* for multifunction cards
  117.      --- no longer used */
  118. #define ASYNC_CONS_FLOW 0x00800000 /* flow control for console  */
  119. #define ASYNC_BOOT_ONLYMCA 0x00400000 /* Probe only if MCA bus */
  120. #define ASYNC_INTERNAL_FLAGS 0xFFC00000 /* Internal flags */
  121. /*
  122.  * Multiport serial configuration structure --- external structure
  123.  */
  124. struct serial_multiport_struct {
  125. int irq;
  126. int port1;
  127. unsigned char mask1, match1;
  128. int port2;
  129. unsigned char mask2, match2;
  130. int port3;
  131. unsigned char mask3, match3;
  132. int port4;
  133. unsigned char mask4, match4;
  134. int port_monitor;
  135. int reserved[32];
  136. };
  137. /*
  138.  * Serial input interrupt line counters -- external structure
  139.  * Four lines can interrupt: CTS, DSR, RI, DCD
  140.  */
  141. struct serial_icounter_struct {
  142. int cts, dsr, rng, dcd;
  143. int rx, tx;
  144. int frame, overrun, parity, brk;
  145. int buf_overrun;
  146. int reserved[9];
  147. };
  148. #ifdef __KERNEL__
  149. #include <linux/compiler.h>
  150. /* Allow architectures to override entries in serial8250_ports[] at run time: */
  151. struct uart_port; /* forward declaration */
  152. extern int early_serial_setup(struct uart_port *port);
  153. extern int early_serial_console_init(char *options);
  154. extern int serial8250_start_console(struct uart_port *port, char *options);
  155. #endif /* __KERNEL__ */
  156. #endif /* _LINUX_SERIAL_H */