Commit c26c56c0f40e200e61d1390629c806f6adaffbcc
Committed by
Linus Torvalds
1 parent
6f967f7891
Exists in
master
and in
39 other branches
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> |