From f95a25ca27786a1e23a7a2c40fbcad21a365d3d5 Mon Sep 17 00:00:00 2001 From: AceLan Kao Date: Wed, 8 Jan 2020 15:59:45 +0800 Subject: [PATCH] UBUNTU: SAUCE: platform/x86: dell-uart-backlight: add retry for get scalar status BugLink: https://bugs.launchpad.net/bugs/1858761 Found on new platforms that UART require more than 1 second to respond commands in the first 10 seconds after booted. dell_uart_get_scalar_status() is the first command we send to scalar and this command should be more reliable than other commands, and make sure we got correct response from scalar. So, add retry and increase the read timeout to 2 seconds. Signed-off-by: AceLan Kao Acked-by: Stefan Bader Acked-by: Connor Kuehl Signed-off-by: Seth Forshee --- drivers/platform/x86/dell/dell-uart-backlight.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/platform/x86/dell/dell-uart-backlight.c b/drivers/platform/x86/dell/dell-uart-backlight.c index 81acc90e8328..e4f5bced851a 100644 --- a/drivers/platform/x86/dell/dell-uart-backlight.c +++ b/drivers/platform/x86/dell/dell-uart-backlight.c @@ -318,7 +318,7 @@ static int dell_uart_get_scalar_status(struct dell_uart_backlight *dell_pdata) struct dell_uart_bl_cmd *bl_cmd = &uart_cmd[DELL_UART_GET_SCALAR]; struct uart_8250_port *uart = serial8250_get_port(dell_pdata->line); int rx_len; - int status = 0; + int status = 0, retry = 20; dell_uart_dump_cmd(__func__, "tx: ", bl_cmd->cmd, bl_cmd->tx_len); @@ -328,7 +328,11 @@ static int dell_uart_get_scalar_status(struct dell_uart_backlight *dell_pdata) } dell_uart_write(uart, bl_cmd->cmd, bl_cmd->tx_len); - rx_len = dell_uart_read(uart, bl_cmd->ret, bl_cmd->rx_len); + do { + rx_len = dell_uart_read(uart, bl_cmd->ret, bl_cmd->rx_len); + if (rx_len == 0) + msleep(100); + } while (rx_len == 0 && --retry); mutex_unlock(&dell_pdata->brightness_mutex);