Commit c929ac9e authored by Lucas Stach's avatar Lucas Stach Committed by Dmitry Torokhov

Input: exc3000 - fix firmware version query for device in bootloader

If the device is stuck in bootloader (maybe due to blank or corrupted
application firmware) it won't answer a query for the firmware version.
Fall back to returning the bootloader version in that case.
Signed-off-by: default avatarLucas Stach <l.stach@pengutronix.de>
Link: https://lore.kernel.org/r/20210125182527.1225245-4-l.stach@pengutronix.deSigned-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
parent 102feb1d
......@@ -263,6 +263,20 @@ static ssize_t fw_version_show(struct device *dev,
u8 response[EXC3000_LEN_FRAME];
int ret;
/* query bootloader info */
ret = exc3000_vendor_data_request(data,
(u8[]){0x39, 0x02}, 2, response, 1);
if (ret < 0)
return ret;
/*
* If the bootloader version is non-zero then the device is in
* bootloader mode and won't answer a query for the application FW
* version, so we just use the bootloader version info.
*/
if (response[2] || response[3])
return sprintf(buf, "%d.%d\n", response[2], response[3]);
ret = exc3000_vendor_data_request(data, (u8[]){'D'}, 1, response, 1);
if (ret < 0)
return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment