On 06/10/2016 02:34 AM, Simon Glass wrote: > Hi Marek, Hi,
> On 26 May 2016 at 12:39, Marek Vasut <[email protected]> wrote: >> Add function which allows fetching the default FCR register setting >> from platform data for DM , while retaining old behavior for non-DM >> by returning UART_FCRVAL. >> >> Signed-off-by: Marek Vasut <[email protected]> >> Cc: Tom Rini <[email protected]> >> Cc: Simon Glass <[email protected]> >> --- >> drivers/serial/ns16550.c | 20 +++++++++++++++++--- >> include/ns16550.h | 1 + >> 2 files changed, 18 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c >> index c6cb3eb..b39ce02 100644 >> --- a/drivers/serial/ns16550.c >> +++ b/drivers/serial/ns16550.c >> @@ -120,6 +120,13 @@ static int ns16550_readb(NS16550_t port, int offset) >> return serial_in_shift(addr + plat->reg_offset, plat->reg_shift); >> } >> >> +static u32 ns16550_getfcr(NS16550_t port) >> +{ >> + struct ns16550_platdata *plat = port->plat; >> + >> + return plat->fcr; >> +} >> + >> /* We can clean these up once everything is moved to driver model */ >> #define serial_out(value, addr) \ >> ns16550_writeb(com_port, \ >> @@ -127,6 +134,11 @@ static int ns16550_readb(NS16550_t port, int offset) >> #define serial_in(addr) \ >> ns16550_readb(com_port, \ >> (unsigned char *)addr - (unsigned char *)com_port) >> +#else >> +static u32 ns16550_getfcr(NS16550_t port) >> +{ >> + return UART_FCRVAL; >> +} >> #endif >> >> int ns16550_calc_divisor(NS16550_t port, int clock, int baudrate) >> @@ -170,7 +182,7 @@ void NS16550_init(NS16550_t com_port, int baud_divisor) >> serial_out(0x7, &com_port->mdr1); /* mode select reset >> TL16C750*/ >> #endif >> serial_out(UART_MCRVAL, &com_port->mcr); >> - serial_out(UART_FCRVAL, &com_port->fcr); >> + serial_out(ns16550_getfcr(com_port), &com_port->fcr); >> if (baud_divisor != -1) >> NS16550_setbrg(com_port, baud_divisor); >> #if defined(CONFIG_OMAP) || \ >> @@ -191,7 +203,7 @@ void NS16550_reinit(NS16550_t com_port, int baud_divisor) >> serial_out(CONFIG_SYS_NS16550_IER, &com_port->ier); >> NS16550_setbrg(com_port, 0); >> serial_out(UART_MCRVAL, &com_port->mcr); >> - serial_out(UART_FCRVAL, &com_port->fcr); >> + serial_out(ns16550_getfcr(com_port), &com_port->fcr); >> NS16550_setbrg(com_port, baud_divisor); >> } >> #endif /* CONFIG_NS16550_MIN_FUNCTIONS */ >> @@ -262,7 +274,7 @@ static inline void _debug_uart_init(void) >> CONFIG_BAUDRATE); >> serial_dout(&com_port->ier, CONFIG_SYS_NS16550_IER); >> serial_dout(&com_port->mcr, UART_MCRVAL); >> - serial_dout(&com_port->fcr, UART_FCRVAL); >> + serial_dout(&com_port->fcr, ns16550_getfcr(com_port)); > > The debug UART does not have platdata, so I don't think this will > work. Hrm, true. If you have DM_SERIAL enabled and debug uart enabled, this will likely fail. > For the debug UART perhaps you can use the default value. If > not, then I think the only option is a new debug UART Kconfig. I don't use the debug uart, so I don't need the Kconfig option. -- Best regards, Marek Vasut _______________________________________________ U-Boot mailing list [email protected] http://lists.denx.de/mailman/listinfo/u-boot

