lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Wed, 22 Apr 2020 22:20:33 +0300
From:   Andy Shevchenko <andy.shevchenko@...il.com>
To:     Sean Wang <sean.wang@...iatek.com>
Cc:     Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
        Jiri Slaby <jslaby@...e.com>,
        Andy Shevchenko <andriy.shevchenko@...ux.intel.com>,
        Mika Westerberg <mika.westerberg@...ux.intel.com>,
        Stefan Roese <sr@...x.de>, Arnd Bergmann <arnd@...db.de>,
        Matthias Brugger <matthias.bgg@...il.com>,
        tthayer <tthayer@...nsource.altera.com>,
        "moderated list:ARM/Mediatek SoC support" 
        <linux-mediatek@...ts.infradead.org>,
        "open list:SERIAL DRIVERS" <linux-serial@...r.kernel.org>,
        linux-arm Mailing List <linux-arm-kernel@...ts.infradead.org>,
        Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
        Steven Liu <steven.liu@...iatek.com>,
        Ryder Lee <ryder.lee@...iatek.com>
Subject: Re: [PATCH v3] tty: serial: don't do termios for BTIF

On Wed, Apr 22, 2020 at 9:05 PM <sean.wang@...iatek.com> wrote:
>
> From: Sean Wang <sean.wang@...iatek.com>
>
> Bluetooth Interface (BTIF) is designed dedicatedly for MediaTek SOC with
> BT in order to be instead of the UART interface between BT module and Host
> CPU, and not exported to user space to access.
>
> As the UART design, BTIF will be an APB slave and can transmit or receive
> data by MCU access, but doesn't provide termios function like baudrate and
> flow control setup.
>
> Even LCR on offset 0xC that is just a FAKELCR
> a. If FAKELCR[7] is equaled to 1, RBR(0x00), THR(0x00), IER(0x04)
>    will not be readable/writable.
>
> b. If FAKELCR is equaled to 0xBF, RBR(0x00), THR(0x00), IER(0x04),
>    IIR(0x08), and LSR(0x14) will not be readable/writable.
>
> So adding a new capability 'UART_CAP_NTIO' for the unusual unsupported
> case.
>
> Fixes: 1c16ae65e250 ("serial: 8250: of: Add new port type for MediaTek BTIF controller on MT7622/23 SoC")
> Cc: Steven Liu <steven.liu@...iatek.com>

> Suggested-by: Andy Shevchenko <andriy.shevchenko@...ux.intel.com>

I didn't suggest this change. I only commented on the name of the macro.

> Signed-off-by: Sean Wang <sean.wang@...iatek.com>
> Signed-off-by: Ryder Lee <ryder.lee@...iatek.com>
>
> --
> v1->v2:
> no change on termios->c_cflag and refine commit message
>
> v2->v3:
> change the naming from NMOD to NTIO as TIO is a well established prefix
> for termios IOCTLs.
> ---
>  drivers/tty/serial/8250/8250.h      | 1 +
>  drivers/tty/serial/8250/8250_port.c | 5 ++++-
>  2 files changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/tty/serial/8250/8250.h b/drivers/tty/serial/8250/8250.h
> index 33ad9d6de532..234d8db470c0 100644
> --- a/drivers/tty/serial/8250/8250.h
> +++ b/drivers/tty/serial/8250/8250.h
> @@ -82,6 +82,7 @@ struct serial8250_config {
>  #define UART_CAP_MINI  (1 << 17)       /* Mini UART on BCM283X family lacks:
>                                          * STOP PARITY EPAR SPAR WLEN5 WLEN6
>                                          */
> +#define UART_CAP_NTIO  (1 << 18)       /* UART doesn't do termios */
>
>  #define UART_BUG_QUOT  (1 << 0)        /* UART has buggy quot LSB */
>  #define UART_BUG_TXEN  (1 << 1)        /* UART has buggy TX IIR status */
> diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c
> index 0325f2e53b74..abc974b4113f 100644
> --- a/drivers/tty/serial/8250/8250_port.c
> +++ b/drivers/tty/serial/8250/8250_port.c
> @@ -286,7 +286,7 @@ static const struct serial8250_config uart_config[] = {
>                 .tx_loadsz      = 16,
>                 .fcr            = UART_FCR_ENABLE_FIFO |
>                                   UART_FCR_CLEAR_RCVR | UART_FCR_CLEAR_XMIT,
> -               .flags          = UART_CAP_FIFO,
> +               .flags          = UART_CAP_FIFO | UART_CAP_NTIO,
>         },
>         [PORT_NPCM] = {
>                 .name           = "Nuvoton 16550",
> @@ -2544,6 +2544,9 @@ serial8250_do_set_termios(struct uart_port *port, struct ktermios *termios,
>         unsigned long flags;
>         unsigned int baud, quot, frac = 0;
>
> +       if (up->capabilities & UART_CAP_NTIO)
> +               return;
> +
>         if (up->capabilities & UART_CAP_MINI) {
>                 termios->c_cflag &= ~(CSTOPB | PARENB | PARODD | CMSPAR);
>                 if ((termios->c_cflag & CSIZE) == CS5 ||
> --
> 2.25.1



-- 
With Best Regards,
Andy Shevchenko

Powered by blists - more mailing lists