lkml.org 
[lkml]   [2021]   [Sep]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 184/260] platform/chrome: cros_ec_proto: Send command again when timeout occurs
    Date
    From: Patryk Duda <pdk@semihalf.com>

    commit 3abc16af57c9939724df92fcbda296b25cc95168 upstream.

    Sometimes kernel is trying to probe Fingerprint MCU (FPMCU) when it
    hasn't initialized SPI yet. This can happen because FPMCU is restarted
    during system boot and kernel can send message in short window
    eg. between sysjump to RW and SPI initialization.

    Cc: <stable@vger.kernel.org> # 4.4+
    Signed-off-by: Patryk Duda <pdk@semihalf.com>
    Link: https://lore.kernel.org/r/20210518140758.29318-1-pdk@semihalf.com
    Signed-off-by: Benson Leung <bleung@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/platform/chrome/cros_ec_proto.c | 9 +++++++++
    1 file changed, 9 insertions(+)

    --- a/drivers/platform/chrome/cros_ec_proto.c
    +++ b/drivers/platform/chrome/cros_ec_proto.c
    @@ -213,6 +213,15 @@ static int cros_ec_host_command_proto_qu
    msg->insize = sizeof(struct ec_response_get_protocol_info);

    ret = send_command(ec_dev, msg);
    + /*
    + * Send command once again when timeout occurred.
    + * Fingerprint MCU (FPMCU) is restarted during system boot which
    + * introduces small window in which FPMCU won't respond for any
    + * messages sent by kernel. There is no need to wait before next
    + * attempt because we waited at least EC_MSG_DEADLINE_MS.
    + */
    + if (ret == -ETIMEDOUT)
    + ret = send_command(ec_dev, msg);

    if (ret < 0) {
    dev_dbg(ec_dev->dev,

    \
     
     \ /
      Last update: 2021-09-20 20:37    [W:4.236 / U:0.160 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site