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:
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user