Re: [PATCH v2 1/1] serial: 8250_of: Drop quirk fot NPCM from 8250_port

From: Ilpo Järvinen
Date: Thu Feb 15 2024 - 11:40:34 EST


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@xxxxxxxxxxxxxxx>
> ---
> 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@xxxxxxxx>, 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.