On Wed, 29 Apr 2026, Jia Wang wrote: > Replace the magic CPR value for Renesas RZ/N1 with a composition using > DW_UART_CPR_* bit/field definitions and FIELD_PREP_CONST(). > > Introduce a helper macro to convert a FIFO size (bytes) into the CPR > FIFO_MODE field value, with BUILD_BUG_ON_ZERO() checks for alignment and > bounds. Use it to replace the literal FIFO_MODE values in the RZN1. > > Signed-off-by: Jia Wang > --- > drivers/tty/serial/8250/8250_dw.c | 10 +++++++++- > drivers/tty/serial/8250/8250_dwlib.h | 8 +++++++- > 2 files changed, 16 insertions(+), 2 deletions(-) > > diff --git a/drivers/tty/serial/8250/8250_dw.c b/drivers/tty/serial/8250/8250_dw.c > index 467755bf0092..480f82d89856 100644 > --- a/drivers/tty/serial/8250/8250_dw.c > +++ b/drivers/tty/serial/8250/8250_dw.c > @@ -937,7 +937,15 @@ static const struct dw8250_platform_data dw8250_armada_38x_data = { > > static const struct dw8250_platform_data dw8250_renesas_rzn1_data = { > .usr_reg = DW_UART_USR, > - .cpr_value = 0x00012f32, > + .cpr_value = FIELD_PREP_CONST(DW_UART_CPR_ABP_DATA_WIDTH, 2) | > + DW_UART_CPR_AFCE_MODE | > + DW_UART_CPR_THRE_MODE | > + DW_UART_CPR_ADDITIONAL_FEATURES | > + DW_UART_CPR_FIFO_ACCESS | > + DW_UART_CPR_FIFO_STAT | > + DW_UART_CPR_SHADOW | > + DW_UART_CPR_DMA_EXTRA | > + DW_UART_CPR_FIFO_MODE_FROM_SIZE(16), Thanks for doing this, it's just so much better than the original. :-) > .quirks = DW_UART_QUIRK_CPR_VALUE | DW_UART_QUIRK_IS_DMA_FC, > }; > > diff --git a/drivers/tty/serial/8250/8250_dwlib.h b/drivers/tty/serial/8250/8250_dwlib.h > index 2f26f9ecacbe..1fe52332e774 100644 > --- a/drivers/tty/serial/8250/8250_dwlib.h > +++ b/drivers/tty/serial/8250/8250_dwlib.h > @@ -6,6 +6,7 @@ > > #include > #include > +#include > #include > #include > > @@ -68,8 +69,13 @@ > #define DW_UART_CPR_DMA_EXTRA BIT(13) > #define DW_UART_CPR_FIFO_MODE GENMASK(23, 16) > > -/* Helper for FIFO size calculation */ > +/* Helpers for FIFO size calculation */ > #define DW_UART_CPR_FIFO_SIZE(a) (FIELD_GET(DW_UART_CPR_FIFO_MODE, (a)) * 16) > +#define DW_UART_CPR_FIFO_MODE_FROM_SIZE(size) \ > + (FIELD_PREP_CONST(DW_UART_CPR_FIFO_MODE, \ > + BUILD_BUG_ON_ZERO((size) > 2048) + \ > + BUILD_BUG_ON_ZERO((size) % 16) + \ > + ((size) / 16))) Reviewed-by: Ilpo Järvinen -- i.