mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-26 22:24:09 +08:00
e8759ad17d
The Siemens IOT2040 comes with a RS485 interface that allows to enable or disable bus termination via software. Add a bit to the flags field of serial_rs485 that applications can set in order to request this feature from the hardware. This seems generic enough to add it for everyone. Existing driver will simply ignore it when set. Signed-off-by: Sascha Weisenberger <sascha.weisenberger@siemens.com> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
135 lines
3.3 KiB
C
135 lines
3.3 KiB
C
/*
|
|
* include/linux/serial.h
|
|
*
|
|
* Copyright (C) 1992 by Theodore Ts'o.
|
|
*
|
|
* Redistribution of this file is permitted under the terms of the GNU
|
|
* Public License (GPL)
|
|
*/
|
|
|
|
#ifndef _UAPI_LINUX_SERIAL_H
|
|
#define _UAPI_LINUX_SERIAL_H
|
|
|
|
#include <linux/types.h>
|
|
|
|
#include <linux/tty_flags.h>
|
|
|
|
|
|
struct serial_struct {
|
|
int type;
|
|
int line;
|
|
unsigned int port;
|
|
int irq;
|
|
int flags;
|
|
int xmit_fifo_size;
|
|
int custom_divisor;
|
|
int baud_base;
|
|
unsigned short close_delay;
|
|
char io_type;
|
|
char reserved_char[1];
|
|
int hub6;
|
|
unsigned short closing_wait; /* time to wait before closing */
|
|
unsigned short closing_wait2; /* no longer used... */
|
|
unsigned char *iomem_base;
|
|
unsigned short iomem_reg_shift;
|
|
unsigned int port_high;
|
|
unsigned long iomap_base; /* cookie passed into ioremap */
|
|
};
|
|
|
|
/*
|
|
* For the close wait times, 0 means wait forever for serial port to
|
|
* flush its output. 65535 means don't wait at all.
|
|
*/
|
|
#define ASYNC_CLOSING_WAIT_INF 0
|
|
#define ASYNC_CLOSING_WAIT_NONE 65535
|
|
|
|
/*
|
|
* These are the supported serial types.
|
|
*/
|
|
#define PORT_UNKNOWN 0
|
|
#define PORT_8250 1
|
|
#define PORT_16450 2
|
|
#define PORT_16550 3
|
|
#define PORT_16550A 4
|
|
#define PORT_CIRRUS 5 /* usurped by cyclades.c */
|
|
#define PORT_16650 6
|
|
#define PORT_16650V2 7
|
|
#define PORT_16750 8
|
|
#define PORT_STARTECH 9 /* usurped by cyclades.c */
|
|
#define PORT_16C950 10 /* Oxford Semiconductor */
|
|
#define PORT_16654 11
|
|
#define PORT_16850 12
|
|
#define PORT_RSA 13 /* RSA-DV II/S card */
|
|
#define PORT_MAX 13
|
|
|
|
#define SERIAL_IO_PORT 0
|
|
#define SERIAL_IO_HUB6 1
|
|
#define SERIAL_IO_MEM 2
|
|
#define SERIAL_IO_MEM32 3
|
|
#define SERIAL_IO_AU 4
|
|
#define SERIAL_IO_TSI 5
|
|
#define SERIAL_IO_MEM32BE 6
|
|
#define SERIAL_IO_MEM16 7
|
|
|
|
#define UART_CLEAR_FIFO 0x01
|
|
#define UART_USE_FIFO 0x02
|
|
#define UART_STARTECH 0x04
|
|
#define UART_NATSEMI 0x08
|
|
|
|
|
|
/*
|
|
* Multiport serial configuration structure --- external structure
|
|
*/
|
|
struct serial_multiport_struct {
|
|
int irq;
|
|
int port1;
|
|
unsigned char mask1, match1;
|
|
int port2;
|
|
unsigned char mask2, match2;
|
|
int port3;
|
|
unsigned char mask3, match3;
|
|
int port4;
|
|
unsigned char mask4, match4;
|
|
int port_monitor;
|
|
int reserved[32];
|
|
};
|
|
|
|
/*
|
|
* Serial input interrupt line counters -- external structure
|
|
* Four lines can interrupt: CTS, DSR, RI, DCD
|
|
*/
|
|
struct serial_icounter_struct {
|
|
int cts, dsr, rng, dcd;
|
|
int rx, tx;
|
|
int frame, overrun, parity, brk;
|
|
int buf_overrun;
|
|
int reserved[9];
|
|
};
|
|
|
|
/*
|
|
* Serial interface for controlling RS485 settings on chips with suitable
|
|
* support. Set with TIOCSRS485 and get with TIOCGRS485 if supported by your
|
|
* platform. The set function returns the new state, with any unsupported bits
|
|
* reverted appropriately.
|
|
*/
|
|
|
|
struct serial_rs485 {
|
|
__u32 flags; /* RS485 feature flags */
|
|
#define SER_RS485_ENABLED (1 << 0) /* If enabled */
|
|
#define SER_RS485_RTS_ON_SEND (1 << 1) /* Logical level for
|
|
RTS pin when
|
|
sending */
|
|
#define SER_RS485_RTS_AFTER_SEND (1 << 2) /* Logical level for
|
|
RTS pin after sent*/
|
|
#define SER_RS485_RX_DURING_TX (1 << 4)
|
|
#define SER_RS485_TERMINATE_BUS (1 << 5) /* Enable bus
|
|
termination
|
|
(if supported) */
|
|
__u32 delay_rts_before_send; /* Delay before send (milliseconds) */
|
|
__u32 delay_rts_after_send; /* Delay after send (milliseconds) */
|
|
__u32 padding[5]; /* Memory is cheap, new structs
|
|
are a royal PITA .. */
|
|
};
|
|
|
|
#endif /* _UAPI_LINUX_SERIAL_H */
|