root/include/uapi/linux/serial.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-1.0+ WITH Linux-syscall-note */
   2 /*
   3  * include/linux/serial.h
   4  *
   5  * Copyright (C) 1992 by Theodore Ts'o.
   6  * 
   7  * Redistribution of this file is permitted under the terms of the GNU 
   8  * Public License (GPL)
   9  */
  10 
  11 #ifndef _UAPI_LINUX_SERIAL_H
  12 #define _UAPI_LINUX_SERIAL_H
  13 
  14 #include <linux/types.h>
  15 
  16 #include <linux/tty_flags.h>
  17 
  18 
  19 struct serial_struct {
  20         int     type;
  21         int     line;
  22         unsigned int    port;
  23         int     irq;
  24         int     flags;
  25         int     xmit_fifo_size;
  26         int     custom_divisor;
  27         int     baud_base;
  28         unsigned short  close_delay;
  29         char    io_type;
  30         char    reserved_char[1];
  31         int     hub6;
  32         unsigned short  closing_wait; /* time to wait before closing */
  33         unsigned short  closing_wait2; /* no longer used... */
  34         unsigned char   *iomem_base;
  35         unsigned short  iomem_reg_shift;
  36         unsigned int    port_high;
  37         unsigned long   iomap_base;     /* cookie passed into ioremap */
  38 };
  39 
  40 /*
  41  * For the close wait times, 0 means wait forever for serial port to
  42  * flush its output.  65535 means don't wait at all.
  43  */
  44 #define ASYNC_CLOSING_WAIT_INF  0
  45 #define ASYNC_CLOSING_WAIT_NONE 65535
  46 
  47 /*
  48  * These are the supported serial types.
  49  */
  50 #define PORT_UNKNOWN    0
  51 #define PORT_8250       1
  52 #define PORT_16450      2
  53 #define PORT_16550      3
  54 #define PORT_16550A     4
  55 #define PORT_CIRRUS     5       /* usurped by cyclades.c */
  56 #define PORT_16650      6
  57 #define PORT_16650V2    7
  58 #define PORT_16750      8
  59 #define PORT_STARTECH   9       /* usurped by cyclades.c */
  60 #define PORT_16C950     10      /* Oxford Semiconductor */
  61 #define PORT_16654      11
  62 #define PORT_16850      12
  63 #define PORT_RSA        13      /* RSA-DV II/S card */
  64 #define PORT_MAX        13
  65 
  66 #define SERIAL_IO_PORT  0
  67 #define SERIAL_IO_HUB6  1
  68 #define SERIAL_IO_MEM   2
  69 #define SERIAL_IO_MEM32   3
  70 #define SERIAL_IO_AU      4
  71 #define SERIAL_IO_TSI     5
  72 #define SERIAL_IO_MEM32BE 6
  73 #define SERIAL_IO_MEM16 7
  74 
  75 #define UART_CLEAR_FIFO         0x01
  76 #define UART_USE_FIFO           0x02
  77 #define UART_STARTECH           0x04
  78 #define UART_NATSEMI            0x08
  79 
  80 
  81 /*
  82  * Multiport serial configuration structure --- external structure
  83  */
  84 struct serial_multiport_struct {
  85         int             irq;
  86         int             port1;
  87         unsigned char   mask1, match1;
  88         int             port2;
  89         unsigned char   mask2, match2;
  90         int             port3;
  91         unsigned char   mask3, match3;
  92         int             port4;
  93         unsigned char   mask4, match4;
  94         int             port_monitor;
  95         int     reserved[32];
  96 };
  97 
  98 /*
  99  * Serial input interrupt line counters -- external structure
 100  * Four lines can interrupt: CTS, DSR, RI, DCD
 101  */
 102 struct serial_icounter_struct {
 103         int cts, dsr, rng, dcd;
 104         int rx, tx;
 105         int frame, overrun, parity, brk;
 106         int buf_overrun;
 107         int reserved[9];
 108 };
 109 
 110 /*
 111  * Serial interface for controlling RS485 settings on chips with suitable
 112  * support. Set with TIOCSRS485 and get with TIOCGRS485 if supported by your
 113  * platform. The set function returns the new state, with any unsupported bits
 114  * reverted appropriately.
 115  */
 116 
 117 struct serial_rs485 {
 118         __u32   flags;                  /* RS485 feature flags */
 119 #define SER_RS485_ENABLED               (1 << 0)        /* If enabled */
 120 #define SER_RS485_RTS_ON_SEND           (1 << 1)        /* Logical level for
 121                                                            RTS pin when
 122                                                            sending */
 123 #define SER_RS485_RTS_AFTER_SEND        (1 << 2)        /* Logical level for
 124                                                            RTS pin after sent*/
 125 #define SER_RS485_RX_DURING_TX          (1 << 4)
 126 #define SER_RS485_TERMINATE_BUS         (1 << 5)        /* Enable bus
 127                                                            termination
 128                                                            (if supported) */
 129         __u32   delay_rts_before_send;  /* Delay before send (milliseconds) */
 130         __u32   delay_rts_after_send;   /* Delay after send (milliseconds) */
 131         __u32   padding[5];             /* Memory is cheap, new structs
 132                                            are a royal PITA .. */
 133 };
 134 
 135 /*
 136  * Serial interface for controlling ISO7816 settings on chips with suitable
 137  * support. Set with TIOCSISO7816 and get with TIOCGISO7816 if supported by
 138  * your platform.
 139  */
 140 struct serial_iso7816 {
 141         __u32   flags;                  /* ISO7816 feature flags */
 142 #define SER_ISO7816_ENABLED             (1 << 0)
 143 #define SER_ISO7816_T_PARAM             (0x0f << 4)
 144 #define SER_ISO7816_T(t)                (((t) & 0x0f) << 4)
 145         __u32   tg;
 146         __u32   sc_fi;
 147         __u32   sc_di;
 148         __u32   clk;
 149         __u32   reserved[5];
 150 };
 151 
 152 #endif /* _UAPI_LINUX_SERIAL_H */

/* [<][>][^][v][top][bottom][index][help] */