First 16 bits in the flags field are user-visible except UPF_NO_TXEN_TEST. To keep it clean we introduce internal quirks and move UPF_NO_TXEN_TEST to them. Rename the constant to UPQ_NO_TXEN_TEST to distinguish with port flags. The quirks field will be extended later to hold the additional ones. Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> --- drivers/tty/serial/8250/8250_core.c | 6 +++--- drivers/tty/serial/8250/8250_pci.c | 2 +- drivers/tty/serial/8250/8250_port.c | 2 +- include/linux/serial_core.h | 9 ++++++--- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c index 240a361..5a75146 100644 --- a/drivers/tty/serial/8250/8250_core.c +++ b/drivers/tty/serial/8250/8250_core.c @@ -578,7 +578,7 @@ serial8250_register_ports(struct uart_driver *drv, struct device *dev) up->port.dev = dev; if (skip_txen_test) - up->port.flags |= UPF_NO_TXEN_TEST; + up->port.quirks |= UPQ_NO_TXEN_TEST; uart_add_one_port(drv, &up->port); } @@ -1006,7 +1006,7 @@ int serial8250_register_8250_port(struct uart_8250_port *up) uart->port.dev = up->port.dev; if (skip_txen_test) - uart->port.flags |= UPF_NO_TXEN_TEST; + uart->port.quirks |= UPQ_NO_TXEN_TEST; if (up->port.flags & UPF_FIXED_TYPE) uart->port.type = up->port.type; @@ -1090,7 +1090,7 @@ void serial8250_unregister_port(int line) if (serial8250_isa_devs) { uart->port.flags &= ~UPF_BOOT_AUTOCONF; if (skip_txen_test) - uart->port.flags |= UPF_NO_TXEN_TEST; + uart->port.quirks |= UPQ_NO_TXEN_TEST; uart->port.type = PORT_UNKNOWN; uart->port.dev = &serial8250_isa_devs->dev; uart->capabilities = 0; diff --git a/drivers/tty/serial/8250/8250_pci.c b/drivers/tty/serial/8250/8250_pci.c index b98c157..6a82059 100644 --- a/drivers/tty/serial/8250/8250_pci.c +++ b/drivers/tty/serial/8250/8250_pci.c @@ -1518,7 +1518,7 @@ static int skip_tx_en_setup(struct serial_private *priv, const struct pciserial_board *board, struct uart_8250_port *port, int idx) { - port->port.flags |= UPF_NO_TXEN_TEST; + port->port.quirks |= UPQ_NO_TXEN_TEST; dev_dbg(&priv->dev->dev, "serial8250: skipping TxEn test for device [%04x:%04x] subsystem [%04x:%04x]\n", priv->dev->vendor, priv->dev->device, diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c index b4b5cd4..cc03737 100644 --- a/drivers/tty/serial/8250/8250_port.c +++ b/drivers/tty/serial/8250/8250_port.c @@ -2274,7 +2274,7 @@ int serial8250_do_startup(struct uart_port *port) * test if we receive TX irq. This way, we'll never enable * UART_BUG_TXEN. */ - if (up->port.flags & UPF_NO_TXEN_TEST) + if (up->port.quirks & UPQ_NO_TXEN_TEST) goto dont_test_tx_en; /* diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h index 3442014..509f6c5 100644 --- a/include/linux/serial_core.h +++ b/include/linux/serial_core.h @@ -173,7 +173,6 @@ struct uart_port { * [for bit definitions in the UPF_CHANGE_MASK] * * Bits [0..UPF_LAST_USER] are userspace defined/visible/changeable - * except bit 15 (UPF_NO_TXEN_TEST) which is masked off. * The remaining bits are serial-core specific and not modifiable by * userspace. */ @@ -190,7 +189,6 @@ struct uart_port { #define UPF_SPD_SHI ((__force upf_t) ASYNC_SPD_SHI /* 12 */ ) #define UPF_LOW_LATENCY ((__force upf_t) ASYNC_LOW_LATENCY /* 13 */ ) #define UPF_BUGGY_UART ((__force upf_t) ASYNC_BUGGY_UART /* 14 */ ) -#define UPF_NO_TXEN_TEST ((__force upf_t) (1 << 15)) #define UPF_MAGIC_MULTIPLIER ((__force upf_t) ASYNC_MAGIC_MULTIPLIER /* 16 */ ) /* Port has hardware-assisted h/w flow control */ @@ -244,7 +242,12 @@ struct uart_port { unsigned char hub6; /* this should be in the 8250 driver */ unsigned char suspended; unsigned char irq_wake; - unsigned char unused[2]; + + unsigned char quirks; /* internal quirks */ + + /* quirks must be updated while holding port mutex */ +#define UPQ_NO_TXEN_TEST (1 << 0) + struct attribute_group *attr_group; /* port specific attributes */ const struct attribute_group **tty_groups; /* all attributes (serial core use only) */ struct serial_rs485 rs485; -- 2.9.3 -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html