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 <acelan.kao@canonical.com>
Acked-by: Stefan Bader <stefan.bader@canonical.com>
Acked-by: Connor Kuehl <connor.kuehl@canonical.com>
Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
This commit is contained in:
AceLan Kao
2020-01-08 15:59:45 +08:00
committed by Paolo Pisati
parent 9fc2bcb6f5
commit f95a25ca27
@@ -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);