]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/commitdiff
UBUNTU: SAUCE: tpm: add sleep only for retry in i2c_nuvoton_write_status()
authorNayna Jain <nayna@linux.vnet.ibm.com>
Fri, 10 Mar 2017 14:44:59 +0000 (09:44 -0500)
committerTim Gardner <tim.gardner@canonical.com>
Fri, 17 Mar 2017 14:12:26 +0000 (08:12 -0600)
BugLink: http://bugs.launchpad.net/bugs/1667567
Currently, there is an unnecessary 1 msec delay added in
i2c_nuvoton_write_status() for the successful case. This
function is called multiple times during send() and recv(),
which implies adding multiple extra delays for every TPM
operation.

This patch calls usleep_range() only if retry is to be done.

Signed-off-by: Nayna Jain <nayna@linux.vnet.ibm.com>
Cc: stable@vger.kernel.org (linux-4.8)
Reviewed-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
drivers/char/tpm/tpm_i2c_nuvoton.c

index da2508a6bc0ca1d6c3464a395aeaae5cca9e74c7..f46f55726dceb171146b644e33285389a709b4ea 100644 (file)
@@ -123,7 +123,8 @@ static s32 i2c_nuvoton_write_status(struct i2c_client *client, u8 data)
        /* this causes the current command to be aborted */
        for (i = 0, status = -1; i < TPM_I2C_RETRY_COUNT && status < 0; i++) {
                status = i2c_nuvoton_write_buf(client, TPM_STS, 1, &data);
-               usleep_range(TPM_I2C_BUS_DELAY, TPM_I2C_BUS_DELAY + 300);
+               if (status < 0)
+                       usleep_range(TPM_I2C_BUS_DELAY, TPM_I2C_BUS_DELAY + 300);
        }
        return status;
 }