[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <835925e0-0df0-fed6-6b29-0cf4a9f811b0@linux.intel.com>
Date: Thu, 15 Feb 2024 18:40:15 +0200 (EET)
From: Ilpo Järvinen <ilpo.jarvinen@...ux.intel.com>
To: Andy Shevchenko <andriy.shevchenko@...ux.intel.com>
cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
LKML <linux-kernel@...r.kernel.org>,
linux-serial <linux-serial@...r.kernel.org>,
Jiri Slaby <jirislaby@...nel.org>
Subject: Re: [PATCH v2 1/1] serial: 8250_of: Drop quirk fot NPCM from
8250_port
On Thu, 15 Feb 2024, Andy Shevchenko wrote:
> We are not supposed to spread quirks in 8250_port module especially
> when we have a separate driver for the hardware in question.
>
> Move quirk from generic module to the driver that uses it.
>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@...ux.intel.com>
> ---
> v2: added missing bits.h, reworked error handling in a switch-case
> drivers/tty/serial/8250/8250_of.c | 44 +++++++++++++++++++++++++++--
> drivers/tty/serial/8250/8250_port.c | 24 ----------------
> 2 files changed, 42 insertions(+), 26 deletions(-)
>
> diff --git a/drivers/tty/serial/8250/8250_of.c b/drivers/tty/serial/8250/8250_of.c
> index 34f17a9785e7..9dcc17e33269 100644
> --- a/drivers/tty/serial/8250/8250_of.c
> +++ b/drivers/tty/serial/8250/8250_of.c
> @@ -4,7 +4,10 @@
> *
> * Copyright (C) 2006 Arnd Bergmann <arnd@...db.de>, IBM Corp.
> */
> +
> +#include <linux/bits.h>
> #include <linux/console.h>
> +#include <linux/math.h>
> #include <linux/module.h>
> #include <linux/slab.h>
> #include <linux/serial_core.h>
> @@ -25,6 +28,36 @@ struct of_serial_info {
> int line;
> };
>
> +/* Nuvoton NPCM timeout register */
> +#define UART_NPCM_TOR 7
> +#define UART_NPCM_TOIE BIT(7) /* Timeout Interrupt Enable */
> +
> +static int npcm_startup(struct uart_port *port)
> +{
> + /*
> + * Nuvoton calls the scratch register 'UART_TOR' (timeout
> + * register). Enable it, and set TIOC (timeout interrupt
> + * comparator) to be 0x20 for correct operation.
> + */
> + serial_port_out(port, UART_NPCM_TOR, UART_NPCM_TOIE | 0x20);
> +
> + return serial8250_do_startup(port);
I know this matches how it is currently done but I wonder if TOIE
should not be enabled until ->setup_irq() has been called.
--
i.
Powered by blists - more mailing lists