Re: [PATCH v3] tty: serial: don't do termios for BTIF

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Apr 22, 2020 at 9:05 PM <sean.wang@xxxxxxxxxxxx> wrote:
>
> From: Sean Wang <sean.wang@xxxxxxxxxxxx>
>
> 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@xxxxxxxxxxxx>

> Suggested-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>

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

> Signed-off-by: Sean Wang <sean.wang@xxxxxxxxxxxx>
> Signed-off-by: Ryder Lee <ryder.lee@xxxxxxxxxxxx>
>
> --
> 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



[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux PPP]     [Linux FS]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Linmodem]     [Device Mapper]     [Linux Kernel for ARM]

  Powered by Linux