diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/devpts_fs.h | 20 | ||||
-rw-r--r-- | include/linux/pci_ids.h | 5 | ||||
-rw-r--r-- | include/linux/serial_8250.h | 2 | ||||
-rw-r--r-- | include/linux/tty.h | 45 | ||||
-rw-r--r-- | include/linux/tty_flip.h | 2 | ||||
-rw-r--r-- | include/uapi/asm-generic/ioctls.h | 3 | ||||
-rw-r--r-- | include/uapi/linux/serial_core.h | 5 | ||||
-rw-r--r-- | include/uapi/linux/serial_reg.h | 18 |
8 files changed, 54 insertions, 46 deletions
diff --git a/include/linux/devpts_fs.h b/include/linux/devpts_fs.h index 5ce0e5fd712..251a2090a55 100644 --- a/include/linux/devpts_fs.h +++ b/include/linux/devpts_fs.h | |||
@@ -20,28 +20,28 @@ | |||
20 | int devpts_new_index(struct inode *ptmx_inode); | 20 | int devpts_new_index(struct inode *ptmx_inode); |
21 | void devpts_kill_index(struct inode *ptmx_inode, int idx); | 21 | void devpts_kill_index(struct inode *ptmx_inode, int idx); |
22 | /* mknod in devpts */ | 22 | /* mknod in devpts */ |
23 | int devpts_pty_new(struct inode *ptmx_inode, struct tty_struct *tty); | 23 | struct inode *devpts_pty_new(struct inode *ptmx_inode, dev_t device, int index, |
24 | /* get tty structure */ | 24 | void *priv); |
25 | struct tty_struct *devpts_get_tty(struct inode *pts_inode, int number); | 25 | /* get private structure */ |
26 | void *devpts_get_priv(struct inode *pts_inode); | ||
26 | /* unlink */ | 27 | /* unlink */ |
27 | void devpts_pty_kill(struct tty_struct *tty); | 28 | void devpts_pty_kill(struct inode *inode); |
28 | 29 | ||
29 | #else | 30 | #else |
30 | 31 | ||
31 | /* Dummy stubs in the no-pty case */ | 32 | /* Dummy stubs in the no-pty case */ |
32 | static inline int devpts_new_index(struct inode *ptmx_inode) { return -EINVAL; } | 33 | static inline int devpts_new_index(struct inode *ptmx_inode) { return -EINVAL; } |
33 | static inline void devpts_kill_index(struct inode *ptmx_inode, int idx) { } | 34 | static inline void devpts_kill_index(struct inode *ptmx_inode, int idx) { } |
34 | static inline int devpts_pty_new(struct inode *ptmx_inode, | 35 | static inline struct inode *devpts_pty_new(struct inode *ptmx_inode, |
35 | struct tty_struct *tty) | 36 | dev_t device, int index, void *priv) |
36 | { | 37 | { |
37 | return -EINVAL; | 38 | return ERR_PTR(-EINVAL); |
38 | } | 39 | } |
39 | static inline struct tty_struct *devpts_get_tty(struct inode *pts_inode, | 40 | static inline void *devpts_get_priv(struct inode *pts_inode) |
40 | int number) | ||
41 | { | 41 | { |
42 | return NULL; | 42 | return NULL; |
43 | } | 43 | } |
44 | static inline void devpts_pty_kill(struct tty_struct *tty) { } | 44 | static inline void devpts_pty_kill(struct inode *inode) { } |
45 | 45 | ||
46 | #endif | 46 | #endif |
47 | 47 | ||
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index 9d36b829533..0f8447376dd 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
@@ -1985,6 +1985,9 @@ | |||
1985 | #define PCI_DEVICE_ID_EXAR_XR17C152 0x0152 | 1985 | #define PCI_DEVICE_ID_EXAR_XR17C152 0x0152 |
1986 | #define PCI_DEVICE_ID_EXAR_XR17C154 0x0154 | 1986 | #define PCI_DEVICE_ID_EXAR_XR17C154 0x0154 |
1987 | #define PCI_DEVICE_ID_EXAR_XR17C158 0x0158 | 1987 | #define PCI_DEVICE_ID_EXAR_XR17C158 0x0158 |
1988 | #define PCI_DEVICE_ID_EXAR_XR17V352 0x0352 | ||
1989 | #define PCI_DEVICE_ID_EXAR_XR17V354 0x0354 | ||
1990 | #define PCI_DEVICE_ID_EXAR_XR17V358 0x0358 | ||
1988 | 1991 | ||
1989 | #define PCI_VENDOR_ID_MICROGATE 0x13c0 | 1992 | #define PCI_VENDOR_ID_MICROGATE 0x13c0 |
1990 | #define PCI_DEVICE_ID_MICROGATE_USC 0x0010 | 1993 | #define PCI_DEVICE_ID_MICROGATE_USC 0x0010 |
@@ -2323,6 +2326,8 @@ | |||
2323 | 2326 | ||
2324 | #define PCI_VENDOR_ID_TOPSPIN 0x1867 | 2327 | #define PCI_VENDOR_ID_TOPSPIN 0x1867 |
2325 | 2328 | ||
2329 | #define PCI_VENDOR_ID_COMMTECH 0x18f7 | ||
2330 | |||
2326 | #define PCI_VENDOR_ID_SILAN 0x1904 | 2331 | #define PCI_VENDOR_ID_SILAN 0x1904 |
2327 | 2332 | ||
2328 | #define PCI_VENDOR_ID_RENESAS 0x1912 | 2333 | #define PCI_VENDOR_ID_RENESAS 0x1912 |
diff --git a/include/linux/serial_8250.h b/include/linux/serial_8250.h index c174c90fb3f..c490d20b3fb 100644 --- a/include/linux/serial_8250.h +++ b/include/linux/serial_8250.h | |||
@@ -105,6 +105,8 @@ extern int early_serial_setup(struct uart_port *port); | |||
105 | 105 | ||
106 | extern int serial8250_find_port(struct uart_port *p); | 106 | extern int serial8250_find_port(struct uart_port *p); |
107 | extern int serial8250_find_port_for_earlycon(void); | 107 | extern int serial8250_find_port_for_earlycon(void); |
108 | extern unsigned int serial8250_early_in(struct uart_port *port, int offset); | ||
109 | extern void serial8250_early_out(struct uart_port *port, int offset, int value); | ||
108 | extern int setup_early_serial8250_console(char *cmdline); | 110 | extern int setup_early_serial8250_console(char *cmdline); |
109 | extern void serial8250_do_set_termios(struct uart_port *port, | 111 | extern void serial8250_do_set_termios(struct uart_port *port, |
110 | struct ktermios *termios, struct ktermios *old); | 112 | struct ktermios *termios, struct ktermios *old); |
diff --git a/include/linux/tty.h b/include/linux/tty.h index f0b4eb47297..8db1b569c37 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h | |||
@@ -188,7 +188,9 @@ struct tty_port_operations { | |||
188 | }; | 188 | }; |
189 | 189 | ||
190 | struct tty_port { | 190 | struct tty_port { |
191 | struct tty_bufhead buf; /* Locked internally */ | ||
191 | struct tty_struct *tty; /* Back pointer */ | 192 | struct tty_struct *tty; /* Back pointer */ |
193 | struct tty_struct *itty; /* internal back ptr */ | ||
192 | const struct tty_port_operations *ops; /* Port operations */ | 194 | const struct tty_port_operations *ops; /* Port operations */ |
193 | spinlock_t lock; /* Lock protecting tty field */ | 195 | spinlock_t lock; /* Lock protecting tty field */ |
194 | int blocked_open; /* Waiting to open */ | 196 | int blocked_open; /* Waiting to open */ |
@@ -197,6 +199,9 @@ struct tty_port { | |||
197 | wait_queue_head_t close_wait; /* Close waiters */ | 199 | wait_queue_head_t close_wait; /* Close waiters */ |
198 | wait_queue_head_t delta_msr_wait; /* Modem status change */ | 200 | wait_queue_head_t delta_msr_wait; /* Modem status change */ |
199 | unsigned long flags; /* TTY flags ASY_*/ | 201 | unsigned long flags; /* TTY flags ASY_*/ |
202 | unsigned long iflags; /* TTYP_ internal flags */ | ||
203 | #define TTYP_FLUSHING 1 /* Flushing to ldisc in progress */ | ||
204 | #define TTYP_FLUSHPENDING 2 /* Queued buffer flush pending */ | ||
200 | unsigned char console:1; /* port is a console */ | 205 | unsigned char console:1; /* port is a console */ |
201 | struct mutex mutex; /* Locking */ | 206 | struct mutex mutex; /* Locking */ |
202 | struct mutex buf_mutex; /* Buffer alloc lock */ | 207 | struct mutex buf_mutex; /* Buffer alloc lock */ |
@@ -235,6 +240,7 @@ struct tty_struct { | |||
235 | struct mutex ldisc_mutex; | 240 | struct mutex ldisc_mutex; |
236 | struct tty_ldisc *ldisc; | 241 | struct tty_ldisc *ldisc; |
237 | 242 | ||
243 | struct mutex atomic_write_lock; | ||
238 | struct mutex legacy_mutex; | 244 | struct mutex legacy_mutex; |
239 | struct mutex termios_mutex; | 245 | struct mutex termios_mutex; |
240 | spinlock_t ctrl_lock; | 246 | spinlock_t ctrl_lock; |
@@ -254,7 +260,6 @@ struct tty_struct { | |||
254 | 260 | ||
255 | struct tty_struct *link; | 261 | struct tty_struct *link; |
256 | struct fasync_struct *fasync; | 262 | struct fasync_struct *fasync; |
257 | struct tty_bufhead buf; /* Locked internally */ | ||
258 | int alt_speed; /* For magic substitution of 38400 bps */ | 263 | int alt_speed; /* For magic substitution of 38400 bps */ |
259 | wait_queue_head_t write_wait; | 264 | wait_queue_head_t write_wait; |
260 | wait_queue_head_t read_wait; | 265 | wait_queue_head_t read_wait; |
@@ -265,37 +270,10 @@ struct tty_struct { | |||
265 | 270 | ||
266 | #define N_TTY_BUF_SIZE 4096 | 271 | #define N_TTY_BUF_SIZE 4096 |
267 | 272 | ||
268 | /* | ||
269 | * The following is data for the N_TTY line discipline. For | ||
270 | * historical reasons, this is included in the tty structure. | ||
271 | * Mostly locked by the BKL. | ||
272 | */ | ||
273 | unsigned int column; | ||
274 | unsigned char lnext:1, erasing:1, raw:1, real_raw:1, icanon:1; | ||
275 | unsigned char closing:1; | 273 | unsigned char closing:1; |
276 | unsigned char echo_overrun:1; | ||
277 | unsigned short minimum_to_wake; | 274 | unsigned short minimum_to_wake; |
278 | unsigned long overrun_time; | ||
279 | int num_overrun; | ||
280 | unsigned long process_char_map[256/(8*sizeof(unsigned long))]; | ||
281 | char *read_buf; | ||
282 | int read_head; | ||
283 | int read_tail; | ||
284 | int read_cnt; | ||
285 | unsigned long read_flags[N_TTY_BUF_SIZE/(8*sizeof(unsigned long))]; | ||
286 | unsigned char *echo_buf; | ||
287 | unsigned int echo_pos; | ||
288 | unsigned int echo_cnt; | ||
289 | int canon_data; | ||
290 | unsigned long canon_head; | ||
291 | unsigned int canon_column; | ||
292 | struct mutex atomic_read_lock; | ||
293 | struct mutex atomic_write_lock; | ||
294 | struct mutex output_lock; | ||
295 | struct mutex echo_lock; | ||
296 | unsigned char *write_buf; | 275 | unsigned char *write_buf; |
297 | int write_cnt; | 276 | int write_cnt; |
298 | spinlock_t read_lock; | ||
299 | /* If the tty has a pending do_SAK, queue it here - akpm */ | 277 | /* If the tty has a pending do_SAK, queue it here - akpm */ |
300 | struct work_struct SAK_work; | 278 | struct work_struct SAK_work; |
301 | struct tty_port *port; | 279 | struct tty_port *port; |
@@ -335,8 +313,6 @@ struct tty_file_private { | |||
335 | #define TTY_PTY_LOCK 16 /* pty private */ | 313 | #define TTY_PTY_LOCK 16 /* pty private */ |
336 | #define TTY_NO_WRITE_SPLIT 17 /* Preserve write boundaries to driver */ | 314 | #define TTY_NO_WRITE_SPLIT 17 /* Preserve write boundaries to driver */ |
337 | #define TTY_HUPPED 18 /* Post driver->hangup() */ | 315 | #define TTY_HUPPED 18 /* Post driver->hangup() */ |
338 | #define TTY_FLUSHING 19 /* Flushing to ldisc in progress */ | ||
339 | #define TTY_FLUSHPENDING 20 /* Queued buffer flush pending */ | ||
340 | #define TTY_HUPPING 21 /* ->hangup() in progress */ | 316 | #define TTY_HUPPING 21 /* ->hangup() in progress */ |
341 | 317 | ||
342 | #define TTY_WRITE_FLUSH(tty) tty_write_flush((tty)) | 318 | #define TTY_WRITE_FLUSH(tty) tty_write_flush((tty)) |
@@ -412,9 +388,9 @@ extern void disassociate_ctty(int priv); | |||
412 | extern void no_tty(void); | 388 | extern void no_tty(void); |
413 | extern void tty_flip_buffer_push(struct tty_struct *tty); | 389 | extern void tty_flip_buffer_push(struct tty_struct *tty); |
414 | extern void tty_flush_to_ldisc(struct tty_struct *tty); | 390 | extern void tty_flush_to_ldisc(struct tty_struct *tty); |
415 | extern void tty_buffer_free_all(struct tty_struct *tty); | 391 | extern void tty_buffer_free_all(struct tty_port *port); |
416 | extern void tty_buffer_flush(struct tty_struct *tty); | 392 | extern void tty_buffer_flush(struct tty_struct *tty); |
417 | extern void tty_buffer_init(struct tty_struct *tty); | 393 | extern void tty_buffer_init(struct tty_port *port); |
418 | extern speed_t tty_get_baud_rate(struct tty_struct *tty); | 394 | extern speed_t tty_get_baud_rate(struct tty_struct *tty); |
419 | extern speed_t tty_termios_baud_rate(struct ktermios *termios); | 395 | extern speed_t tty_termios_baud_rate(struct ktermios *termios); |
420 | extern speed_t tty_termios_input_baud_rate(struct ktermios *termios); | 396 | extern speed_t tty_termios_input_baud_rate(struct ktermios *termios); |
@@ -479,6 +455,7 @@ extern struct device *tty_port_register_device_attr(struct tty_port *port, | |||
479 | const struct attribute_group **attr_grp); | 455 | const struct attribute_group **attr_grp); |
480 | extern int tty_port_alloc_xmit_buf(struct tty_port *port); | 456 | extern int tty_port_alloc_xmit_buf(struct tty_port *port); |
481 | extern void tty_port_free_xmit_buf(struct tty_port *port); | 457 | extern void tty_port_free_xmit_buf(struct tty_port *port); |
458 | extern void tty_port_destroy(struct tty_port *port); | ||
482 | extern void tty_port_put(struct tty_port *port); | 459 | extern void tty_port_put(struct tty_port *port); |
483 | 460 | ||
484 | static inline struct tty_port *tty_port_get(struct tty_port *port) | 461 | static inline struct tty_port *tty_port_get(struct tty_port *port) |
@@ -535,7 +512,7 @@ extern void n_tty_inherit_ops(struct tty_ldisc_ops *ops); | |||
535 | /* tty_audit.c */ | 512 | /* tty_audit.c */ |
536 | #ifdef CONFIG_AUDIT | 513 | #ifdef CONFIG_AUDIT |
537 | extern void tty_audit_add_data(struct tty_struct *tty, unsigned char *data, | 514 | extern void tty_audit_add_data(struct tty_struct *tty, unsigned char *data, |
538 | size_t size); | 515 | size_t size, unsigned icanon); |
539 | extern void tty_audit_exit(void); | 516 | extern void tty_audit_exit(void); |
540 | extern void tty_audit_fork(struct signal_struct *sig); | 517 | extern void tty_audit_fork(struct signal_struct *sig); |
541 | extern void tty_audit_tiocsti(struct tty_struct *tty, char ch); | 518 | extern void tty_audit_tiocsti(struct tty_struct *tty, char ch); |
@@ -544,7 +521,7 @@ extern int tty_audit_push_task(struct task_struct *tsk, | |||
544 | kuid_t loginuid, u32 sessionid); | 521 | kuid_t loginuid, u32 sessionid); |
545 | #else | 522 | #else |
546 | static inline void tty_audit_add_data(struct tty_struct *tty, | 523 | static inline void tty_audit_add_data(struct tty_struct *tty, |
547 | unsigned char *data, size_t size) | 524 | unsigned char *data, size_t size, unsigned icanon) |
548 | { | 525 | { |
549 | } | 526 | } |
550 | static inline void tty_audit_tiocsti(struct tty_struct *tty, char ch) | 527 | static inline void tty_audit_tiocsti(struct tty_struct *tty, char ch) |
diff --git a/include/linux/tty_flip.h b/include/linux/tty_flip.h index 9239d033a0a..2002344ed36 100644 --- a/include/linux/tty_flip.h +++ b/include/linux/tty_flip.h | |||
@@ -11,7 +11,7 @@ void tty_schedule_flip(struct tty_struct *tty); | |||
11 | static inline int tty_insert_flip_char(struct tty_struct *tty, | 11 | static inline int tty_insert_flip_char(struct tty_struct *tty, |
12 | unsigned char ch, char flag) | 12 | unsigned char ch, char flag) |
13 | { | 13 | { |
14 | struct tty_buffer *tb = tty->buf.tail; | 14 | struct tty_buffer *tb = tty->port->buf.tail; |
15 | if (tb && tb->used < tb->size) { | 15 | if (tb && tb->used < tb->size) { |
16 | tb->flag_buf_ptr[tb->used] = flag; | 16 | tb->flag_buf_ptr[tb->used] = flag; |
17 | tb->char_buf_ptr[tb->used++] = ch; | 17 | tb->char_buf_ptr[tb->used++] = ch; |
diff --git a/include/uapi/asm-generic/ioctls.h b/include/uapi/asm-generic/ioctls.h index 199975fac39..143dacbb7d9 100644 --- a/include/uapi/asm-generic/ioctls.h +++ b/include/uapi/asm-generic/ioctls.h | |||
@@ -74,6 +74,9 @@ | |||
74 | #define TCSETXW 0x5435 | 74 | #define TCSETXW 0x5435 |
75 | #define TIOCSIG _IOW('T', 0x36, int) /* pty: generate signal */ | 75 | #define TIOCSIG _IOW('T', 0x36, int) /* pty: generate signal */ |
76 | #define TIOCVHANGUP 0x5437 | 76 | #define TIOCVHANGUP 0x5437 |
77 | #define TIOCGPKT _IOR('T', 0x38, int) /* Get packet mode state */ | ||
78 | #define TIOCGPTLCK _IOR('T', 0x39, int) /* Get Pty lock state */ | ||
79 | #define TIOCGEXCL _IOR('T', 0x40, int) /* Get exclusive mode state */ | ||
77 | 80 | ||
78 | #define FIONCLEX 0x5450 | 81 | #define FIONCLEX 0x5450 |
79 | #define FIOCLEX 0x5451 | 82 | #define FIOCLEX 0x5451 |
diff --git a/include/uapi/linux/serial_core.h b/include/uapi/linux/serial_core.h index 7e1ab20adc0..78f99d97475 100644 --- a/include/uapi/linux/serial_core.h +++ b/include/uapi/linux/serial_core.h | |||
@@ -49,7 +49,8 @@ | |||
49 | #define PORT_XR17D15X 21 /* Exar XR17D15x UART */ | 49 | #define PORT_XR17D15X 21 /* Exar XR17D15x UART */ |
50 | #define PORT_LPC3220 22 /* NXP LPC32xx SoC "Standard" UART */ | 50 | #define PORT_LPC3220 22 /* NXP LPC32xx SoC "Standard" UART */ |
51 | #define PORT_8250_CIR 23 /* CIR infrared port, has its own driver */ | 51 | #define PORT_8250_CIR 23 /* CIR infrared port, has its own driver */ |
52 | #define PORT_MAX_8250 23 /* max port ID */ | 52 | #define PORT_XR17V35X 24 /* Exar XR17V35x UARTs */ |
53 | #define PORT_MAX_8250 24 /* max port ID */ | ||
53 | 54 | ||
54 | /* | 55 | /* |
55 | * ARM specific type numbers. These are not currently guaranteed | 56 | * ARM specific type numbers. These are not currently guaranteed |
@@ -215,5 +216,7 @@ | |||
215 | /* Energy Micro efm32 SoC */ | 216 | /* Energy Micro efm32 SoC */ |
216 | #define PORT_EFMUART 100 | 217 | #define PORT_EFMUART 100 |
217 | 218 | ||
219 | /* ARC (Synopsys) on-chip UART */ | ||
220 | #define PORT_ARC 101 | ||
218 | 221 | ||
219 | #endif /* _UAPILINUX_SERIAL_CORE_H */ | 222 | #endif /* _UAPILINUX_SERIAL_CORE_H */ |
diff --git a/include/uapi/linux/serial_reg.h b/include/uapi/linux/serial_reg.h index 5ed325e88a8..e6322605b13 100644 --- a/include/uapi/linux/serial_reg.h +++ b/include/uapi/linux/serial_reg.h | |||
@@ -367,5 +367,23 @@ | |||
367 | #define UART_OMAP_MDR1_CIR_MODE 0x06 /* CIR mode */ | 367 | #define UART_OMAP_MDR1_CIR_MODE 0x06 /* CIR mode */ |
368 | #define UART_OMAP_MDR1_DISABLE 0x07 /* Disable (default state) */ | 368 | #define UART_OMAP_MDR1_DISABLE 0x07 /* Disable (default state) */ |
369 | 369 | ||
370 | /* | ||
371 | * These are definitions for the Exar XR17V35X and XR17(C|D)15X | ||
372 | */ | ||
373 | #define UART_EXAR_8XMODE 0x88 /* 8X sampling rate select */ | ||
374 | #define UART_EXAR_SLEEP 0x8b /* Sleep mode */ | ||
375 | #define UART_EXAR_DVID 0x8d /* Device identification */ | ||
376 | |||
377 | #define UART_EXAR_FCTR 0x08 /* Feature Control Register */ | ||
378 | #define UART_FCTR_EXAR_IRDA 0x08 /* IrDa data encode select */ | ||
379 | #define UART_FCTR_EXAR_485 0x10 /* Auto 485 half duplex dir ctl */ | ||
380 | #define UART_FCTR_EXAR_TRGA 0x00 /* FIFO trigger table A */ | ||
381 | #define UART_FCTR_EXAR_TRGB 0x60 /* FIFO trigger table B */ | ||
382 | #define UART_FCTR_EXAR_TRGC 0x80 /* FIFO trigger table C */ | ||
383 | #define UART_FCTR_EXAR_TRGD 0xc0 /* FIFO trigger table D programmable */ | ||
384 | |||
385 | #define UART_EXAR_TXTRG 0x0a /* Tx FIFO trigger level write-only */ | ||
386 | #define UART_EXAR_RXTRG 0x0b /* Rx FIFO trigger level write-only */ | ||
387 | |||
370 | #endif /* _LINUX_SERIAL_REG_H */ | 388 | #endif /* _LINUX_SERIAL_REG_H */ |
371 | 389 | ||