Message ID | 20210125182527.1225245-4-l.stach@pengutronix.de (mailing list archive) |
---|---|
State | Accepted |
Commit | c929ac9eb85acf9217eb812369bbd4cf65a772e0 |
Headers | show |
Series | exc3000 firmware update support | expand |
On Mon, Jan 25, 2021 at 07:25:25PM +0100, Lucas Stach wrote: > 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: Lucas Stach <l.stach@pengutronix.de> Applied, thank you.
diff --git a/drivers/input/touchscreen/exc3000.c b/drivers/input/touchscreen/exc3000.c index b008adc1031d..ae06290a4c45 100644 --- a/drivers/input/touchscreen/exc3000.c +++ b/drivers/input/touchscreen/exc3000.c @@ -260,6 +260,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;
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: Lucas Stach <l.stach@pengutronix.de> --- drivers/input/touchscreen/exc3000.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+)