Re: [PATCH v3 3/4] serial: 8250_dw: configure the Allwinner H616 UART

From: Andy Shevchenko

Date: Tue Oct 27 2026 - 03:27:04 EST


On Tue, Oct 27, 2026 at 09:21:57AM +0200, Andy Shevchenko wrote:
> On Sat, Oct 24, 2026 at 02:22:25PM -0600, James Hilliard wrote:

...

> > +static int dw8250_sunxi_set_rxtrig(struct uart_port *p, unsigned char bytes)
> > +{
> > + struct uart_8250_port *up = up_to_u8250p(p);
> > + unsigned int i;
> > + int ret;
> > +
> > + /* Use the nearest lower threshold, as the generic 8250 implementation does. */
> > + for (i = 1; i < UART_FCR_R_TRIG_MAX_STATE; i++)
> > + if (bytes < dw8250_sunxi_rxtrig_bytes(p, i))
> > + break;
>
> Can we provide an array of the possible values and deduplicate this loop?
>
> drivers/tty/serial/8250/8250.h:
>
> static inline int serial8250_bytes_to_fcr(unsigned char *rxtrig_bytes, unsigned char bytes)
> {
> 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 UART_FCR_R_TRIG_11;
> }
>
> drivers/tty/serial/8250/8250_port.c:
>
> 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];

> if (!conf_type->rxtrig_bytes[UART_FCR_R_TRIG_BITS(UART_FCR_R_TRIG_00)])
> return -EOPNOTSUPP;

Even this probably should be moved above as well.

> return serial8250_bytes_to_fcr(conf_type->rxtrig_bytes, bytes);
> }

> (this split should be done in a separate preparatory change).

--
With Best Regards,
Andy Shevchenko