diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-02-15 14:37:02 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-02-15 14:37:02 -0500 |
| commit | a9724125ad014decf008d782e60447c811391326 (patch) | |
| tree | 4fac069d155f2495907fa9c296cc5426d0eebf55 /include | |
| parent | 46f7b635569731ff81a3b72d1bcd4415b293b637 (diff) | |
| parent | c09babfab7ae8c7d79a5dce9d866fbb28b82dde4 (diff) | |
Merge tag 'tty-3.20-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
Pull tty/serial driver patches from Greg KH:
"Here's the big tty/serial driver update for 3.20-rc1. Nothing huge
here, just lots of driver updates and some core tty layer fixes as
well. All have been in linux-next with no reported issues"
* tag 'tty-3.20-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (119 commits)
serial: 8250: Fix UART_BUG_TXEN workaround
serial: driver for ETRAX FS UART
tty: remove unused variable sprop
serial: of-serial: fetch line number from DT
serial: samsung: earlycon support depends on CONFIG_SERIAL_SAMSUNG_CONSOLE
tty/serial: serial8250_set_divisor() can be static
tty/serial: Add Spreadtrum sc9836-uart driver support
Documentation: DT: Add bindings for Spreadtrum SoC Platform
serial: samsung: remove redundant interrupt enabling
tty: Remove external interface for tty_set_termios()
serial: omap: Fix RTS handling
serial: 8250_omap: Use UPSTAT_AUTORTS for RTS handling
serial: core: Rework hw-assisted flow control support
tty/serial: 8250_early: Add support for PXA UARTs
tty/serial: of_serial: add support for PXA/MMP uarts
tty/serial: of_serial: add DT alias ID handling
serial: 8250: Prevent concurrent updates to shadow registers
serial: 8250: Use canary to restart console after suspend
serial: 8250: Refactor XR17V35X divisor calculation
serial: 8250: Refactor divisor programming
...
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/pnp.h | 12 | ||||
| -rw-r--r-- | include/linux/serial_8250.h | 4 | ||||
| -rw-r--r-- | include/linux/serial_core.h | 22 | ||||
| -rw-r--r-- | include/linux/serial_s3c.h | 28 | ||||
| -rw-r--r-- | include/linux/tty.h | 25 | ||||
| -rw-r--r-- | include/linux/vt_buffer.h | 4 | ||||
| -rw-r--r-- | include/uapi/linux/serial_core.h | 12 | ||||
| -rw-r--r-- | include/uapi/linux/serial_reg.h | 3 |
8 files changed, 98 insertions, 12 deletions
diff --git a/include/linux/pnp.h b/include/linux/pnp.h index 195aafc6cd07..6512e9cbc6d5 100644 --- a/include/linux/pnp.h +++ b/include/linux/pnp.h | |||
| @@ -12,6 +12,7 @@ | |||
| 12 | #include <linux/list.h> | 12 | #include <linux/list.h> |
| 13 | #include <linux/errno.h> | 13 | #include <linux/errno.h> |
| 14 | #include <linux/mod_devicetable.h> | 14 | #include <linux/mod_devicetable.h> |
| 15 | #include <linux/console.h> | ||
| 15 | 16 | ||
| 16 | #define PNP_NAME_LEN 50 | 17 | #define PNP_NAME_LEN 50 |
| 17 | 18 | ||
| @@ -309,15 +310,22 @@ struct pnp_fixup { | |||
| 309 | #define PNP_DISABLE 0x0004 | 310 | #define PNP_DISABLE 0x0004 |
| 310 | #define PNP_CONFIGURABLE 0x0008 | 311 | #define PNP_CONFIGURABLE 0x0008 |
| 311 | #define PNP_REMOVABLE 0x0010 | 312 | #define PNP_REMOVABLE 0x0010 |
| 313 | #define PNP_CONSOLE 0x0020 | ||
| 312 | 314 | ||
| 313 | #define pnp_can_read(dev) (((dev)->protocol->get) && \ | 315 | #define pnp_can_read(dev) (((dev)->protocol->get) && \ |
| 314 | ((dev)->capabilities & PNP_READ)) | 316 | ((dev)->capabilities & PNP_READ)) |
| 315 | #define pnp_can_write(dev) (((dev)->protocol->set) && \ | 317 | #define pnp_can_write(dev) (((dev)->protocol->set) && \ |
| 316 | ((dev)->capabilities & PNP_WRITE)) | 318 | ((dev)->capabilities & PNP_WRITE)) |
| 317 | #define pnp_can_disable(dev) (((dev)->protocol->disable) && \ | 319 | #define pnp_can_disable(dev) (((dev)->protocol->disable) && \ |
| 318 | ((dev)->capabilities & PNP_DISABLE)) | 320 | ((dev)->capabilities & PNP_DISABLE) && \ |
| 321 | (!((dev)->capabilities & PNP_CONSOLE) || \ | ||
| 322 | console_suspend_enabled)) | ||
| 319 | #define pnp_can_configure(dev) ((!(dev)->active) && \ | 323 | #define pnp_can_configure(dev) ((!(dev)->active) && \ |
| 320 | ((dev)->capabilities & PNP_CONFIGURABLE)) | 324 | ((dev)->capabilities & PNP_CONFIGURABLE)) |
| 325 | #define pnp_can_suspend(dev) (((dev)->protocol->suspend) && \ | ||
| 326 | (!((dev)->capabilities & PNP_CONSOLE) || \ | ||
| 327 | console_suspend_enabled)) | ||
| 328 | |||
| 321 | 329 | ||
| 322 | #ifdef CONFIG_ISAPNP | 330 | #ifdef CONFIG_ISAPNP |
| 323 | extern struct pnp_protocol isapnp_protocol; | 331 | extern struct pnp_protocol isapnp_protocol; |
diff --git a/include/linux/serial_8250.h b/include/linux/serial_8250.h index e02acf0a0ec9..a8efa235b7c1 100644 --- a/include/linux/serial_8250.h +++ b/include/linux/serial_8250.h | |||
| @@ -85,6 +85,9 @@ struct uart_8250_port { | |||
| 85 | unsigned char mcr_force; /* mask of forced bits */ | 85 | unsigned char mcr_force; /* mask of forced bits */ |
| 86 | unsigned char cur_iotype; /* Running I/O type */ | 86 | unsigned char cur_iotype; /* Running I/O type */ |
| 87 | unsigned int rpm_tx_active; | 87 | unsigned int rpm_tx_active; |
| 88 | unsigned char canary; /* non-zero during system sleep | ||
| 89 | * if no_console_suspend | ||
| 90 | */ | ||
| 88 | 91 | ||
| 89 | /* | 92 | /* |
| 90 | * Some bits in registers are cleared on a read, so they must | 93 | * Some bits in registers are cleared on a read, so they must |
| @@ -126,6 +129,7 @@ extern int serial8250_do_startup(struct uart_port *port); | |||
| 126 | extern void serial8250_do_shutdown(struct uart_port *port); | 129 | extern void serial8250_do_shutdown(struct uart_port *port); |
| 127 | extern void serial8250_do_pm(struct uart_port *port, unsigned int state, | 130 | extern void serial8250_do_pm(struct uart_port *port, unsigned int state, |
| 128 | unsigned int oldstate); | 131 | unsigned int oldstate); |
| 132 | extern void serial8250_do_set_mctrl(struct uart_port *port, unsigned int mctrl); | ||
| 129 | extern int fsl8250_handle_irq(struct uart_port *port); | 133 | extern int fsl8250_handle_irq(struct uart_port *port); |
| 130 | int serial8250_handle_irq(struct uart_port *port, unsigned int iir); | 134 | int serial8250_handle_irq(struct uart_port *port, unsigned int iir); |
| 131 | unsigned char serial8250_rx_chars(struct uart_8250_port *up, unsigned char lsr); | 135 | unsigned char serial8250_rx_chars(struct uart_8250_port *up, unsigned char lsr); |
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h index 057038cf2788..baf3e1d08416 100644 --- a/include/linux/serial_core.h +++ b/include/linux/serial_core.h | |||
| @@ -123,6 +123,7 @@ struct uart_port { | |||
| 123 | void (*set_termios)(struct uart_port *, | 123 | void (*set_termios)(struct uart_port *, |
| 124 | struct ktermios *new, | 124 | struct ktermios *new, |
| 125 | struct ktermios *old); | 125 | struct ktermios *old); |
| 126 | void (*set_mctrl)(struct uart_port *, unsigned int); | ||
| 126 | int (*startup)(struct uart_port *port); | 127 | int (*startup)(struct uart_port *port); |
| 127 | void (*shutdown)(struct uart_port *port); | 128 | void (*shutdown)(struct uart_port *port); |
| 128 | void (*throttle)(struct uart_port *port); | 129 | void (*throttle)(struct uart_port *port); |
| @@ -190,8 +191,10 @@ struct uart_port { | |||
| 190 | #define UPF_NO_TXEN_TEST ((__force upf_t) (1 << 15)) | 191 | #define UPF_NO_TXEN_TEST ((__force upf_t) (1 << 15)) |
| 191 | #define UPF_MAGIC_MULTIPLIER ((__force upf_t) ASYNC_MAGIC_MULTIPLIER /* 16 */ ) | 192 | #define UPF_MAGIC_MULTIPLIER ((__force upf_t) ASYNC_MAGIC_MULTIPLIER /* 16 */ ) |
| 192 | 193 | ||
| 193 | /* Port has hardware-assisted h/w flow control (iow, auto-RTS *not* auto-CTS) */ | 194 | /* Port has hardware-assisted h/w flow control */ |
| 194 | #define UPF_HARD_FLOW ((__force upf_t) (1 << 21)) | 195 | #define UPF_AUTO_CTS ((__force upf_t) (1 << 20)) |
| 196 | #define UPF_AUTO_RTS ((__force upf_t) (1 << 21)) | ||
| 197 | #define UPF_HARD_FLOW ((__force upf_t) (UPF_AUTO_CTS | UPF_AUTO_RTS)) | ||
| 195 | /* Port has hardware-assisted s/w flow control */ | 198 | /* Port has hardware-assisted s/w flow control */ |
| 196 | #define UPF_SOFT_FLOW ((__force upf_t) (1 << 22)) | 199 | #define UPF_SOFT_FLOW ((__force upf_t) (1 << 22)) |
| 197 | #define UPF_CONS_FLOW ((__force upf_t) (1 << 23)) | 200 | #define UPF_CONS_FLOW ((__force upf_t) (1 << 23)) |
| @@ -213,11 +216,17 @@ struct uart_port { | |||
| 213 | #error Change mask not equivalent to userspace-visible bit defines | 216 | #error Change mask not equivalent to userspace-visible bit defines |
| 214 | #endif | 217 | #endif |
| 215 | 218 | ||
| 216 | /* status must be updated while holding port lock */ | 219 | /* |
| 220 | * Must hold termios_rwsem, port mutex and port lock to change; | ||
| 221 | * can hold any one lock to read. | ||
| 222 | */ | ||
| 217 | upstat_t status; | 223 | upstat_t status; |
| 218 | 224 | ||
| 219 | #define UPSTAT_CTS_ENABLE ((__force upstat_t) (1 << 0)) | 225 | #define UPSTAT_CTS_ENABLE ((__force upstat_t) (1 << 0)) |
| 220 | #define UPSTAT_DCD_ENABLE ((__force upstat_t) (1 << 1)) | 226 | #define UPSTAT_DCD_ENABLE ((__force upstat_t) (1 << 1)) |
| 227 | #define UPSTAT_AUTORTS ((__force upstat_t) (1 << 2)) | ||
| 228 | #define UPSTAT_AUTOCTS ((__force upstat_t) (1 << 3)) | ||
| 229 | #define UPSTAT_AUTOXOFF ((__force upstat_t) (1 << 4)) | ||
| 221 | 230 | ||
| 222 | int hw_stopped; /* sw-assisted CTS flow state */ | 231 | int hw_stopped; /* sw-assisted CTS flow state */ |
| 223 | unsigned int mctrl; /* current modem ctrl settings */ | 232 | unsigned int mctrl; /* current modem ctrl settings */ |
| @@ -391,6 +400,13 @@ static inline bool uart_cts_enabled(struct uart_port *uport) | |||
| 391 | return !!(uport->status & UPSTAT_CTS_ENABLE); | 400 | return !!(uport->status & UPSTAT_CTS_ENABLE); |
| 392 | } | 401 | } |
| 393 | 402 | ||
| 403 | static inline bool uart_softcts_mode(struct uart_port *uport) | ||
| 404 | { | ||
| 405 | upstat_t mask = UPSTAT_CTS_ENABLE | UPSTAT_AUTOCTS; | ||
| 406 | |||
| 407 | return ((uport->status & mask) == UPSTAT_CTS_ENABLE); | ||
| 408 | } | ||
| 409 | |||
| 394 | /* | 410 | /* |
| 395 | * The following are helper functions for the low level drivers. | 411 | * The following are helper functions for the low level drivers. |
| 396 | */ | 412 | */ |
diff --git a/include/linux/serial_s3c.h b/include/linux/serial_s3c.h index e6fc9567690b..a7f004a3c177 100644 --- a/include/linux/serial_s3c.h +++ b/include/linux/serial_s3c.h | |||
| @@ -104,6 +104,31 @@ | |||
| 104 | S3C2410_UCON_RXIRQMODE | \ | 104 | S3C2410_UCON_RXIRQMODE | \ |
| 105 | S3C2410_UCON_RXFIFO_TOI) | 105 | S3C2410_UCON_RXFIFO_TOI) |
| 106 | 106 | ||
| 107 | #define S3C64XX_UCON_TXBURST_1 (0<<20) | ||
| 108 | #define S3C64XX_UCON_TXBURST_4 (1<<20) | ||
| 109 | #define S3C64XX_UCON_TXBURST_8 (2<<20) | ||
| 110 | #define S3C64XX_UCON_TXBURST_16 (3<<20) | ||
| 111 | #define S3C64XX_UCON_TXBURST_MASK (0xf<<20) | ||
| 112 | #define S3C64XX_UCON_RXBURST_1 (0<<16) | ||
| 113 | #define S3C64XX_UCON_RXBURST_4 (1<<16) | ||
| 114 | #define S3C64XX_UCON_RXBURST_8 (2<<16) | ||
| 115 | #define S3C64XX_UCON_RXBURST_16 (3<<16) | ||
| 116 | #define S3C64XX_UCON_RXBURST_MASK (0xf<<16) | ||
| 117 | #define S3C64XX_UCON_TIMEOUT_SHIFT (12) | ||
| 118 | #define S3C64XX_UCON_TIMEOUT_MASK (0xf<<12) | ||
| 119 | #define S3C64XX_UCON_EMPTYINT_EN (1<<11) | ||
| 120 | #define S3C64XX_UCON_DMASUS_EN (1<<10) | ||
| 121 | #define S3C64XX_UCON_TXINT_LEVEL (1<<9) | ||
| 122 | #define S3C64XX_UCON_RXINT_LEVEL (1<<8) | ||
| 123 | #define S3C64XX_UCON_TIMEOUT_EN (1<<7) | ||
| 124 | #define S3C64XX_UCON_ERRINT_EN (1<<6) | ||
| 125 | #define S3C64XX_UCON_TXMODE_DMA (2<<2) | ||
| 126 | #define S3C64XX_UCON_TXMODE_CPU (1<<2) | ||
| 127 | #define S3C64XX_UCON_TXMODE_MASK (3<<2) | ||
| 128 | #define S3C64XX_UCON_RXMODE_DMA (2<<0) | ||
| 129 | #define S3C64XX_UCON_RXMODE_CPU (1<<0) | ||
| 130 | #define S3C64XX_UCON_RXMODE_MASK (3<<0) | ||
| 131 | |||
| 107 | #define S3C2410_UFCON_FIFOMODE (1<<0) | 132 | #define S3C2410_UFCON_FIFOMODE (1<<0) |
| 108 | #define S3C2410_UFCON_TXTRIG0 (0<<6) | 133 | #define S3C2410_UFCON_TXTRIG0 (0<<6) |
| 109 | #define S3C2410_UFCON_RXTRIG8 (1<<4) | 134 | #define S3C2410_UFCON_RXTRIG8 (1<<4) |
| @@ -155,6 +180,7 @@ | |||
| 155 | #define S3C2440_UFSTAT_TXMASK (63<<8) | 180 | #define S3C2440_UFSTAT_TXMASK (63<<8) |
| 156 | #define S3C2440_UFSTAT_RXMASK (63) | 181 | #define S3C2440_UFSTAT_RXMASK (63) |
| 157 | 182 | ||
| 183 | #define S3C2410_UTRSTAT_TIMEOUT (1<<3) | ||
| 158 | #define S3C2410_UTRSTAT_TXE (1<<2) | 184 | #define S3C2410_UTRSTAT_TXE (1<<2) |
| 159 | #define S3C2410_UTRSTAT_TXFE (1<<1) | 185 | #define S3C2410_UTRSTAT_TXFE (1<<1) |
| 160 | #define S3C2410_UTRSTAT_RXDR (1<<0) | 186 | #define S3C2410_UTRSTAT_RXDR (1<<0) |
| @@ -179,8 +205,10 @@ | |||
| 179 | #define S3C64XX_UINTM 0x38 | 205 | #define S3C64XX_UINTM 0x38 |
| 180 | 206 | ||
| 181 | #define S3C64XX_UINTM_RXD (0) | 207 | #define S3C64XX_UINTM_RXD (0) |
| 208 | #define S3C64XX_UINTM_ERROR (1) | ||
| 182 | #define S3C64XX_UINTM_TXD (2) | 209 | #define S3C64XX_UINTM_TXD (2) |
| 183 | #define S3C64XX_UINTM_RXD_MSK (1 << S3C64XX_UINTM_RXD) | 210 | #define S3C64XX_UINTM_RXD_MSK (1 << S3C64XX_UINTM_RXD) |
| 211 | #define S3C64XX_UINTM_ERR_MSK (1 << S3C64XX_UINTM_ERROR) | ||
| 184 | #define S3C64XX_UINTM_TXD_MSK (1 << S3C64XX_UINTM_TXD) | 212 | #define S3C64XX_UINTM_TXD_MSK (1 << S3C64XX_UINTM_TXD) |
| 185 | 213 | ||
| 186 | /* Following are specific to S5PV210 */ | 214 | /* Following are specific to S5PV210 */ |
diff --git a/include/linux/tty.h b/include/linux/tty.h index 7d66ae508e5c..358a337af598 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h | |||
| @@ -14,6 +14,29 @@ | |||
| 14 | #include <linux/llist.h> | 14 | #include <linux/llist.h> |
| 15 | 15 | ||
| 16 | 16 | ||
| 17 | /* | ||
| 18 | * Lock subclasses for tty locks | ||
| 19 | * | ||
| 20 | * TTY_LOCK_NORMAL is for normal ttys and master ptys. | ||
| 21 | * TTY_LOCK_SLAVE is for slave ptys only. | ||
| 22 | * | ||
| 23 | * Lock subclasses are necessary for handling nested locking with pty pairs. | ||
| 24 | * tty locks which use nested locking: | ||
| 25 | * | ||
| 26 | * legacy_mutex - Nested tty locks are necessary for releasing pty pairs. | ||
| 27 | * The stable lock order is master pty first, then slave pty. | ||
| 28 | * termios_rwsem - The stable lock order is tty_buffer lock->termios_rwsem. | ||
| 29 | * Subclassing this lock enables the slave pty to hold its | ||
| 30 | * termios_rwsem when claiming the master tty_buffer lock. | ||
| 31 | * tty_buffer lock - slave ptys can claim nested buffer lock when handling | ||
| 32 | * signal chars. The stable lock order is slave pty, then | ||
| 33 | * master. | ||
| 34 | */ | ||
| 35 | |||
| 36 | enum { | ||
| 37 | TTY_LOCK_NORMAL = 0, | ||
| 38 | TTY_LOCK_SLAVE, | ||
| 39 | }; | ||
| 17 | 40 | ||
| 18 | /* | 41 | /* |
| 19 | * (Note: the *_driver.minor_start values 1, 64, 128, 192 are | 42 | * (Note: the *_driver.minor_start values 1, 64, 128, 192 are |
| @@ -443,6 +466,7 @@ extern void tty_flush_to_ldisc(struct tty_struct *tty); | |||
| 443 | extern void tty_buffer_free_all(struct tty_port *port); | 466 | extern void tty_buffer_free_all(struct tty_port *port); |
| 444 | extern void tty_buffer_flush(struct tty_struct *tty, struct tty_ldisc *ld); | 467 | extern void tty_buffer_flush(struct tty_struct *tty, struct tty_ldisc *ld); |
| 445 | extern void tty_buffer_init(struct tty_port *port); | 468 | extern void tty_buffer_init(struct tty_port *port); |
| 469 | extern void tty_buffer_set_lock_subclass(struct tty_port *port); | ||
| 446 | extern speed_t tty_termios_baud_rate(struct ktermios *termios); | 470 | extern speed_t tty_termios_baud_rate(struct ktermios *termios); |
| 447 | extern speed_t tty_termios_input_baud_rate(struct ktermios *termios); | 471 | extern speed_t tty_termios_input_baud_rate(struct ktermios *termios); |
| 448 | extern void tty_termios_encode_baud_rate(struct ktermios *termios, | 472 | extern void tty_termios_encode_baud_rate(struct ktermios *termios, |
| @@ -467,7 +491,6 @@ static inline speed_t tty_get_baud_rate(struct tty_struct *tty) | |||
| 467 | 491 | ||
| 468 | extern void tty_termios_copy_hw(struct ktermios *new, struct ktermios *old); | 492 | extern void tty_termios_copy_hw(struct ktermios *new, struct ktermios *old); |
| 469 | extern int tty_termios_hw_change(struct ktermios *a, struct ktermios *b); | 493 | extern int tty_termios_hw_change(struct ktermios *a, struct ktermios *b); |
| 470 | extern int tty_set_termios(struct tty_struct *tty, struct ktermios *kt); | ||
| 471 | 494 | ||
| 472 | extern struct tty_ldisc *tty_ldisc_ref(struct tty_struct *); | 495 | extern struct tty_ldisc *tty_ldisc_ref(struct tty_struct *); |
| 473 | extern void tty_ldisc_deref(struct tty_ldisc *); | 496 | extern void tty_ldisc_deref(struct tty_ldisc *); |
diff --git a/include/linux/vt_buffer.h b/include/linux/vt_buffer.h index 057db7d2f448..f38c10ba3ff5 100644 --- a/include/linux/vt_buffer.h +++ b/include/linux/vt_buffer.h | |||
| @@ -21,10 +21,6 @@ | |||
| 21 | #ifndef VT_BUF_HAVE_RW | 21 | #ifndef VT_BUF_HAVE_RW |
| 22 | #define scr_writew(val, addr) (*(addr) = (val)) | 22 | #define scr_writew(val, addr) (*(addr) = (val)) |
| 23 | #define scr_readw(addr) (*(addr)) | 23 | #define scr_readw(addr) (*(addr)) |
| 24 | #define scr_memcpyw(d, s, c) memcpy(d, s, c) | ||
| 25 | #define scr_memmovew(d, s, c) memmove(d, s, c) | ||
| 26 | #define VT_BUF_HAVE_MEMCPYW | ||
| 27 | #define VT_BUF_HAVE_MEMMOVEW | ||
| 28 | #endif | 24 | #endif |
| 29 | 25 | ||
| 30 | #ifndef VT_BUF_HAVE_MEMSETW | 26 | #ifndef VT_BUF_HAVE_MEMSETW |
diff --git a/include/uapi/linux/serial_core.h b/include/uapi/linux/serial_core.h index c17218094f18..b2122813f18a 100644 --- a/include/uapi/linux/serial_core.h +++ b/include/uapi/linux/serial_core.h | |||
| @@ -55,7 +55,8 @@ | |||
| 55 | #define PORT_ALTR_16550_F64 27 /* Altera 16550 UART with 64 FIFOs */ | 55 | #define PORT_ALTR_16550_F64 27 /* Altera 16550 UART with 64 FIFOs */ |
| 56 | #define PORT_ALTR_16550_F128 28 /* Altera 16550 UART with 128 FIFOs */ | 56 | #define PORT_ALTR_16550_F128 28 /* Altera 16550 UART with 128 FIFOs */ |
| 57 | #define PORT_RT2880 29 /* Ralink RT2880 internal UART */ | 57 | #define PORT_RT2880 29 /* Ralink RT2880 internal UART */ |
| 58 | #define PORT_MAX_8250 29 /* max port ID */ | 58 | #define PORT_16550A_FSL64 30 /* Freescale 16550 UART with 64 FIFOs */ |
| 59 | #define PORT_MAX_8250 30 /* max port ID */ | ||
| 59 | 60 | ||
| 60 | /* | 61 | /* |
| 61 | * ARM specific type numbers. These are not currently guaranteed | 62 | * ARM specific type numbers. These are not currently guaranteed |
| @@ -248,4 +249,13 @@ | |||
| 248 | /* MESON */ | 249 | /* MESON */ |
| 249 | #define PORT_MESON 109 | 250 | #define PORT_MESON 109 |
| 250 | 251 | ||
| 252 | /* Conexant Digicolor */ | ||
| 253 | #define PORT_DIGICOLOR 110 | ||
| 254 | |||
| 255 | /* SPRD SERIAL */ | ||
| 256 | #define PORT_SPRD 111 | ||
| 257 | |||
| 258 | /* Cris v10 / v32 SoC */ | ||
| 259 | #define PORT_CRIS 112 | ||
| 260 | |||
| 251 | #endif /* _UAPILINUX_SERIAL_CORE_H */ | 261 | #endif /* _UAPILINUX_SERIAL_CORE_H */ |
diff --git a/include/uapi/linux/serial_reg.h b/include/uapi/linux/serial_reg.h index 53af3b790129..00adb01fa5f3 100644 --- a/include/uapi/linux/serial_reg.h +++ b/include/uapi/linux/serial_reg.h | |||
| @@ -86,7 +86,8 @@ | |||
| 86 | #define UART_FCR6_T_TRIGGER_8 0x10 /* Mask for transmit trigger set at 8 */ | 86 | #define UART_FCR6_T_TRIGGER_8 0x10 /* Mask for transmit trigger set at 8 */ |
| 87 | #define UART_FCR6_T_TRIGGER_24 0x20 /* Mask for transmit trigger set at 24 */ | 87 | #define UART_FCR6_T_TRIGGER_24 0x20 /* Mask for transmit trigger set at 24 */ |
| 88 | #define UART_FCR6_T_TRIGGER_30 0x30 /* Mask for transmit trigger set at 30 */ | 88 | #define UART_FCR6_T_TRIGGER_30 0x30 /* Mask for transmit trigger set at 30 */ |
| 89 | #define UART_FCR7_64BYTE 0x20 /* Go into 64 byte mode (TI16C750) */ | 89 | #define UART_FCR7_64BYTE 0x20 /* Go into 64 byte mode (TI16C750 and |
| 90 | some Freescale UARTs) */ | ||
| 90 | 91 | ||
| 91 | #define UART_FCR_R_TRIG_SHIFT 6 | 92 | #define UART_FCR_R_TRIG_SHIFT 6 |
| 92 | #define UART_FCR_R_TRIG_BITS(x) \ | 93 | #define UART_FCR_R_TRIG_BITS(x) \ |
