Commit c26c56c0f40e200e61d1390629c806f6adaffbcc

Authored by Alan Cox
Committed by Linus Torvalds
1 parent 6f967f7891

tty: Cris has a nice RS485 ioctl so we should steal it

JP Tosoni observed:

"About a RS485 ioctl: could you consider the attached files which are
 already in the Linux kernel (in include/asm-cris).  They define a
 TIOCSERSETRS485 (ioctl.h), and the data structure (rs485.h)
 with allows to specify timings. Sounds just like what we want ?"

and he's right: sort of. Rework the structure to use flag bits and make the
time delay a fixed sized field so we don't get 32/64bit problems. Add the ioctls
to x86 so that people know what to add to their platform of choice.

Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Showing 2 changed files with 18 additions and 0 deletions Side-by-side Diff

include/asm-x86/ioctls.h
... ... @@ -51,6 +51,8 @@
51 51 #define TCSETS2 _IOW('T', 0x2B, struct termios2)
52 52 #define TCSETSW2 _IOW('T', 0x2C, struct termios2)
53 53 #define TCSETSF2 _IOW('T', 0x2D, struct termios2)
  54 +#define TIOCGRS485 0x542E
  55 +#define TIOCSRS485 0x542F
54 56 #define TIOCGPTN _IOR('T', 0x30, unsigned int)
55 57 /* Get Pty Number (of pty-mux device) */
56 58 #define TIOCSPTLCK _IOW('T', 0x31, int) /* Lock/unlock Pty */
include/linux/serial.h
... ... @@ -173,6 +173,22 @@
173 173 int reserved[9];
174 174 };
175 175  
  176 +/*
  177 + * Serial interface for controlling RS485 settings on chips with suitable
  178 + * support. Set with TIOCSRS485 and get with TIOCGRS485 if supported by your
  179 + * platform. The set function returns the new state, with any unsupported bits
  180 + * reverted appropriately.
  181 + */
  182 +
  183 +struct serial_rs485 {
  184 + __u32 flags; /* RS485 feature flags */
  185 +#define SER_RS485_ENABLED (1 << 0)
  186 +#define SER_RS485_RTS_ON_SEND (1 << 1)
  187 +#define SER_RS485_RTS_AFTER_SEND (1 << 2)
  188 + __u32 delay_rts_before_send; /* Milliseconds */
  189 + __u32 padding[6]; /* Memory is cheap, new structs
  190 + are a royal PITA .. */
  191 +};
176 192  
177 193 #ifdef __KERNEL__
178 194 #include <linux/compiler.h>