Linux Serial subsystem development
 help / color / mirror / Atom feed
From: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
To: James Hilliard <james.hilliard1@gmail.com>
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	 Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	 Jiri Slaby <jirislaby@kernel.org>, Rob Herring <robh@kernel.org>,
	 Krzysztof Kozlowski <krzk+dt@kernel.org>,
	 Conor Dooley <conor+dt@kernel.org>,
	Chen-Yu Tsai <wens@kernel.org>,
	 Jernej Skrabec <jernej.skrabec@gmail.com>,
	 Samuel Holland <samuel@sholland.org>,
	LKML <linux-kernel@vger.kernel.org>,
	 linux-serial <linux-serial@vger.kernel.org>,
	devicetree@vger.kernel.org,
	 linux-arm-kernel@lists.infradead.org,
	linux-sunxi@lists.linux.dev
Subject: Re: [PATCH v5 2/8] serial: 8250: share the RX trigger conversion helper
Date: Fri, 30 Oct 2026 11:24:17 +0200 (EET)	[thread overview]
Message-ID: <d8f88dfa-f372-f1c7-bdb3-131a26dbff46@linux.intel.com> (raw)
In-Reply-To: <20261029-submit-h616-uart-fifo-v1-v5-2-53b433aebbf8@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 3285 bytes --]

On Thu, 29 Oct 2026, James Hilliard wrote:

> Extract the receive-trigger threshold search into serial8250_bytes_to_fcr()
> so drivers with per-port threshold tables can use the same conversion as
> the generic 8250 implementation. Keep the implementation in 8250_port.c and
> export it for subdrivers.

To explain why we're doing this, the text could first mention that 
inability to define these thresholds per driver have been one of the main 
reasons why there has been the temptation to add new port types into 
uart_config[] (that would be better left as a legacy way of defining 
things).

> Include the unsupported-table check in the helper and preserve the existing
> nearest-lower selection and highest-encoding fallback.
> 
> Suggested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
> ---
>  drivers/tty/serial/8250/8250.h      |  2 ++
>  drivers/tty/serial/8250/8250_port.c | 21 +++++++++++++--------
>  2 files changed, 15 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/tty/serial/8250/8250.h b/drivers/tty/serial/8250/8250.h
> index 21ed9c41b751..1600f2e45d76 100644
> --- a/drivers/tty/serial/8250/8250.h
> +++ b/drivers/tty/serial/8250/8250.h
> @@ -73,6 +73,8 @@ struct serial8250_config {
>  	unsigned int	flags;
>  };
>  
> +int serial8250_bytes_to_fcr(const unsigned char *rxtrig_bytes, unsigned char bytes);
> +
>  enum uart_port_type {
>  	/* Internal 8250 only */
>  	UART_PORT_AIROHA		= 124,
> diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c
> index 36b2b0a2c05c..fc3987b5a70c 100644
> --- a/drivers/tty/serial/8250/8250_port.c
> +++ b/drivers/tty/serial/8250/8250_port.c
> @@ -3015,22 +3015,27 @@ static int fcr_get_rxtrig_bytes(struct uart_8250_port *up)
>  	return bytes ? bytes : -EOPNOTSUPP;
>  }
>  
> -static int bytes_to_fcr_rxtrig(struct uart_8250_port *up, unsigned char bytes)
> +int serial8250_bytes_to_fcr(const unsigned char *rxtrig_bytes, unsigned char bytes)
>  {
> -	const struct serial8250_config *conf_type = &uart_config[up->port.type];
> -	int i;
> -
> -	if (!conf_type->rxtrig_bytes[UART_FCR_R_TRIG_BITS(UART_FCR_R_TRIG_00)])
> +	if (!rxtrig_bytes[UART_FCR_R_TRIG_BITS(UART_FCR_R_TRIG_00)])
>  		return -EOPNOTSUPP;
>  
> -	for (i = 1; i < UART_FCR_R_TRIG_MAX_STATE; i++) {
> -		if (bytes < conf_type->rxtrig_bytes[i])
> +	for (unsigned int i = 1; i < UART_FCR_R_TRIG_MAX_STATE; i++) {
> +		if (bytes < rxtrig_bytes[i])
>  			/* Use the nearest lower value */
> -			return (--i) << UART_FCR_R_TRIG_SHIFT;
> +			return (i - 1) << UART_FCR_R_TRIG_SHIFT;
>  	}
>  
>  	return UART_FCR_R_TRIG_11;
>  }
> +EXPORT_SYMBOL_GPL(serial8250_bytes_to_fcr);

Put the export to namespace.

With that fixed,

Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>

> +static int bytes_to_fcr_rxtrig(struct uart_8250_port *up, unsigned char bytes)
> +{
> +	const struct serial8250_config *conf_type = &uart_config[up->port.type];
> +
> +	return serial8250_bytes_to_fcr(conf_type->rxtrig_bytes, bytes);
> +}
>  
>  static int do_get_rxtrig(struct tty_port *port)
>  {
> 
> 

-- 
 i.

  parent reply	other threads:[~2026-10-30  9:24 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-29 18:47 [PATCH v5 0/8] serial: 8250_dw: describe the Allwinner H616 and A523 UART configurations James Hilliard
2026-10-29 18:47 ` [PATCH v5 1/8] serial: 8250_dw: select port setup through platform data James Hilliard
2026-10-29 19:04   ` sashiko-bot
2026-10-30  9:28   ` Ilpo Järvinen
2026-10-29 18:47 ` [PATCH v5 2/8] serial: 8250: share the RX trigger conversion helper James Hilliard
2026-10-29 19:10   ` sashiko-bot
2026-10-30  9:24   ` Ilpo Järvinen [this message]
2026-10-29 18:47 ` [PATCH v5 3/8] dt-bindings: serial: snps-dw-apb-uart: add Allwinner H616 James Hilliard
2026-10-29 19:11   ` sashiko-bot
2026-10-29 18:47 ` [PATCH v5 4/8] serial: 8250_dw: configure the Allwinner H616 UART James Hilliard
2026-10-29 19:17   ` sashiko-bot
2026-10-30  9:51   ` Ilpo Järvinen
2026-10-30 17:02     ` James Hilliard
2026-10-29 18:47 ` [PATCH v5 5/8] arm64: dts: allwinner: h616: describe the UART integration James Hilliard
2026-10-29 19:20   ` sashiko-bot
2026-10-29 18:47 ` [PATCH v5 6/8] dt-bindings: serial: snps-dw-apb-uart: add Allwinner A523 James Hilliard
2026-10-29 19:22   ` sashiko-bot
2026-10-30 10:28   ` Krzysztof Kozlowski
2026-10-29 18:47 ` [PATCH v5 7/8] serial: 8250_dw: discover Allwinner A523 FIFO depths through FCC James Hilliard
2026-10-29 19:24   ` sashiko-bot
2026-10-30 10:00   ` Ilpo Järvinen
2026-10-30 10:15   ` Ilpo Järvinen
2026-10-30 16:32     ` James Hilliard
2026-10-29 18:47 ` [PATCH v5 8/8] arm64: dts: allwinner: a523: describe the UART integration James Hilliard
2026-10-29 19:27   ` sashiko-bot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d8f88dfa-f372-f1c7-bdb3-131a26dbff46@linux.intel.com \
    --to=ilpo.jarvinen@linux.intel.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=james.hilliard1@gmail.com \
    --cc=jernej.skrabec@gmail.com \
    --cc=jirislaby@kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=linux-sunxi@lists.linux.dev \
    --cc=robh@kernel.org \
    --cc=samuel@sholland.org \
    --cc=wens@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox