From 17fa032671f7981628fe16b30399638842a4b1bb Mon Sep 17 00:00:00 2001 From: Heiko Schocher Date: Wed, 18 Jan 2017 08:05:49 +0100 Subject: serial, ns16550: bugfix: ns16550 fifo not enabled commit: 65f83802b7a5b "serial: 16550: Add getfcr accessor" breaks u-boot commandline working with long commands sending to the board. Since the above patch, you have to setup the fcr register. For board/archs which enable OF_PLATDATA, the new field fcr in struct ns16550_platdata is not filled with a default value ... This leads in not setting up the uarts fifo, which ends in problems, when you send long commands to u-boots commandline. Detected this issue with automated tbot tests on am335x based shc board. The error does not popup, if you type commands. You need to copy&paste a long command to u-boots commandshell (or send a long command with tbot) Possible boards/plattforms with problems: ./arch/arm/cpu/arm926ejs/lpc32xx/devices.c ./arch/arm/mach-tegra/board.c ./board/overo/overo.c ./board/quipos/cairo/cairo.c ./board/logicpd/omap3som/omap3logic.c ./board/logicpd/zoom1/zoom1.c ./board/timll/devkit8000/devkit8000.c ./board/lg/sniper/sniper.c ./board/ti/beagle/beagle.c ./drivers/serial/serial_rockchip.c Signed-off-by: Heiko Schocher Signed-off-by: Ladislav Michl Tested-by: Adam Ford Reviewed-by: Tom Rini --- board/isee/igep00x0/igep00x0.c | 3 ++- board/lg/sniper/sniper.c | 3 ++- board/logicpd/omap3som/omap3logic.c | 3 ++- board/logicpd/zoom1/zoom1.c | 3 ++- board/overo/overo.c | 3 ++- board/quipos/cairo/cairo.c | 3 ++- board/ti/beagle/beagle.c | 3 ++- board/timll/devkit8000/devkit8000.c | 3 ++- 8 files changed, 16 insertions(+), 8 deletions(-) (limited to 'board') diff --git a/board/isee/igep00x0/igep00x0.c b/board/isee/igep00x0/igep00x0.c index ae7959b..5a3498f 100644 --- a/board/isee/igep00x0/igep00x0.c +++ b/board/isee/igep00x0/igep00x0.c @@ -32,7 +32,8 @@ DECLARE_GLOBAL_DATA_PTR; static const struct ns16550_platdata igep_serial = { .base = OMAP34XX_UART3, .reg_shift = 2, - .clock = V_NS16550_CLK + .clock = V_NS16550_CLK, + .fcr = UART_FCR_DEFVAL, }; U_BOOT_DEVICE(igep_uart) = { diff --git a/board/lg/sniper/sniper.c b/board/lg/sniper/sniper.c index 0662449..b2b8f88 100644 --- a/board/lg/sniper/sniper.c +++ b/board/lg/sniper/sniper.c @@ -31,7 +31,8 @@ const omap3_sysinfo sysinfo = { static const struct ns16550_platdata serial_omap_platdata = { .base = OMAP34XX_UART3, .reg_shift = 2, - .clock = V_NS16550_CLK + .clock = V_NS16550_CLK, + .fcr = UART_FCR_DEFVAL, }; U_BOOT_DEVICE(sniper_serial) = { diff --git a/board/logicpd/omap3som/omap3logic.c b/board/logicpd/omap3som/omap3logic.c index 21b3fdc..b2fcc28 100644 --- a/board/logicpd/omap3som/omap3logic.c +++ b/board/logicpd/omap3som/omap3logic.c @@ -49,7 +49,8 @@ DECLARE_GLOBAL_DATA_PTR; static const struct ns16550_platdata omap3logic_serial = { .base = OMAP34XX_UART1, .reg_shift = 2, - .clock = V_NS16550_CLK + .clock = V_NS16550_CLK, + .fcr = UART_FCR_DEFVAL, }; U_BOOT_DEVICE(omap3logic_uart) = { diff --git a/board/logicpd/zoom1/zoom1.c b/board/logicpd/zoom1/zoom1.c index 2821ee2..0fad23a 100644 --- a/board/logicpd/zoom1/zoom1.c +++ b/board/logicpd/zoom1/zoom1.c @@ -47,7 +47,8 @@ static const u32 gpmc_lab_enet[] = { static const struct ns16550_platdata zoom1_serial = { .base = OMAP34XX_UART3, .reg_shift = 2, - .clock = V_NS16550_CLK + .clock = V_NS16550_CLK, + .fcr = UART_FCR_DEFVAL, }; U_BOOT_DEVICE(zoom1_uart) = { diff --git a/board/overo/overo.c b/board/overo/overo.c index 40f13e5..5e44726 100644 --- a/board/overo/overo.c +++ b/board/overo/overo.c @@ -70,7 +70,8 @@ static struct { static const struct ns16550_platdata overo_serial = { .base = OMAP34XX_UART3, .reg_shift = 2, - .clock = V_NS16550_CLK + .clock = V_NS16550_CLK, + .fcr = UART_FCR_DEFVAL, }; U_BOOT_DEVICE(overo_uart) = { diff --git a/board/quipos/cairo/cairo.c b/board/quipos/cairo/cairo.c index 77e4482..793aa90 100644 --- a/board/quipos/cairo/cairo.c +++ b/board/quipos/cairo/cairo.c @@ -93,7 +93,8 @@ void get_board_mem_timings(struct board_sdrc_timings *timings) static const struct ns16550_platdata cairo_serial = { .base = OMAP34XX_UART2, .reg_shift = 2, - .clock = V_NS16550_CLK + .clock = V_NS16550_CLK, + .fcr = UART_FCR_DEFVAL, }; U_BOOT_DEVICE(cairo_uart) = { diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c index cfdab3e..23c7933 100644 --- a/board/ti/beagle/beagle.c +++ b/board/ti/beagle/beagle.c @@ -75,7 +75,8 @@ static struct { static const struct ns16550_platdata beagle_serial = { .base = OMAP34XX_UART3, .reg_shift = 2, - .clock = V_NS16550_CLK + .clock = V_NS16550_CLK, + .fcr = UART_FCR_DEFVAL, }; U_BOOT_DEVICE(beagle_uart) = { diff --git a/board/timll/devkit8000/devkit8000.c b/board/timll/devkit8000/devkit8000.c index f785dbe..b2f060b 100644 --- a/board/timll/devkit8000/devkit8000.c +++ b/board/timll/devkit8000/devkit8000.c @@ -48,7 +48,8 @@ static u32 gpmc_net_config[GPMC_MAX_REG] = { static const struct ns16550_platdata devkit8000_serial = { .base = OMAP34XX_UART3, .reg_shift = 2, - .clock = V_NS16550_CLK + .clock = V_NS16550_CLK, + .fcr = UART_FCR_DEFVAL, }; U_BOOT_DEVICE(devkit8000_uart) = { -- cgit v1.1