[U-Boot] [PATCH 14/25] tpm: tpm_tis_i2c: Tidy up delays

christophe.ricard
2015-08-11T21:44:17Z

Hi Simon,

Acked-by: Christophe Ricard <christophe-h.ricard@st.com>

Best Regards
Christophe

On 11/08/2015 16:48, Simon Glass wrote:
> Use a _US suffix for microseconds and a _MS suffic for milliseconds. Move
> all timeouts and delays into one place. Use mdelay() instead of udelay()
> where appropriate.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
> drivers/tpm/tpm_tis_i2c.c | 43 ++++++++++++++++++++++---------------------
> drivers/tpm/tpm_tis_i2c.h | 16 ++++++----------
> 2 files changed, 28 insertions(+), 31 deletions(-)
>
> diff --git a/drivers/tpm/tpm_tis_i2c.c b/drivers/tpm/tpm_tis_i2c.c
> index f3d615c..f1ad596 100644
> --- a/drivers/tpm/tpm_tis_i2c.c
> +++ b/drivers/tpm/tpm_tis_i2c.c
> @@ -68,7 +68,7 @@ static int tpm_tis_i2c_read(u8 addr, u8 *buffer, size_t len)
> rc = dm_i2c_write(g_chip.dev, 0, (uchar *)&addrbuf, 1);
> if (rc == 0)
> break; /* Success, break to skip sleep */
> - udelay(SLEEP_DURATION);
> + udelay(SLEEP_DURATION_US);
> }
> if (rc)
> return -rc;
> @@ -78,7 +78,7 @@ static int tpm_tis_i2c_read(u8 addr, u8 *buffer, size_t len)
> * retrieving the data
> */
> for (count = 0; count < MAX_COUNT; count++) {
> - udelay(SLEEP_DURATION);
> + udelay(SLEEP_DURATION_US);
> rc = dm_i2c_read(g_chip.dev, 0, buffer, len);
> if (rc == 0)
> break; /* success, break to skip sleep */
> @@ -95,12 +95,12 @@ static int tpm_tis_i2c_read(u8 addr, u8 *buffer, size_t len)
> rc = dm_i2c_read(g_chip.dev, addr, buffer, len);
> if (rc == 0)
> break; /* break here to skip sleep */
> - udelay(SLEEP_DURATION);
> + udelay(SLEEP_DURATION_US);
> }
> }
>
> /* Take care of 'guard time' */
> - udelay(SLEEP_DURATION);
> + udelay(SLEEP_DURATION_US);
> if (rc)
> return -rc;
>
> @@ -108,7 +108,7 @@ static int tpm_tis_i2c_read(u8 addr, u8 *buffer, size_t len)
> }
>
> static int tpm_tis_i2c_write_generic(u8 addr, u8 *buffer, size_t len,
> - unsigned int sleep_time, u8 max_count)
> + unsigned int sleep_time_us, u8 max_count)
> {
> int rc = 0;
> int count;
> @@ -117,11 +117,11 @@ static int tpm_tis_i2c_write_generic(u8 addr, u8 *buffer, size_t len,
> rc = dm_i2c_write(g_chip.dev, addr, buffer, len);
> if (rc == 0)
> break; /* Success, break to skip sleep */
> - udelay(sleep_time);
> + udelay(sleep_time_us);
> }
>
> /* take care of 'guard time' */
> - udelay(sleep_time);
> + udelay(sleep_time_us);
> if (rc)
> return -rc;
>
> @@ -146,8 +146,8 @@ static int tpm_tis_i2c_write_generic(u8 addr, u8 *buffer, size_t len,
> */
> static int tpm_tis_i2c_write(u8 addr, u8 *buffer, size_t len)
> {
> - return tpm_tis_i2c_write_generic(addr, buffer, len, SLEEP_DURATION,
> - MAX_COUNT);
> + return tpm_tis_i2c_write_generic(addr, buffer, len, SLEEP_DURATION_US,
> + MAX_COUNT);
> }
>
> /*
> @@ -156,8 +156,9 @@ static int tpm_tis_i2c_write(u8 addr, u8 *buffer, size_t len)
> */
> static int tpm_tis_i2c_write_long(u8 addr, u8 *buffer, size_t len)
> {
> - return tpm_tis_i2c_write_generic(addr, buffer, len, SLEEP_DURATION_LONG,
> - MAX_COUNT_LONG);
> + return tpm_tis_i2c_write_generic(addr, buffer, len,
> + SLEEP_DURATION_LONG_US,
> + MAX_COUNT_LONG);
> }
>
> static int tpm_tis_i2c_check_locality(struct tpm_chip *chip, int loc)
> @@ -212,7 +213,7 @@ static int tpm_tis_i2c_request_locality(struct tpm_chip *chip, int loc)
> do {
> if (tpm_tis_i2c_check_locality(chip, loc) >= 0)
> return loc;
> - udelay(TPM_TIMEOUT * 1000);
> + mdelay(TPM_TIMEOUT_MS);
> } while (get_timer(start) < stop);
>
> return -1;
> @@ -262,7 +263,7 @@ static ssize_t tpm_tis_i2c_get_burstcount(struct tpm_chip *chip)
>
> if (burstcnt)
> return burstcnt;
> - udelay(TPM_TIMEOUT * 1000);
> + mdelay(TPM_TIMEOUT_MS);
> } while (get_timer(start) < stop);
>
> return -EBUSY;
> @@ -281,7 +282,7 @@ static int tpm_tis_i2c_wait_for_stat(struct tpm_chip *chip, u8 mask,
> start = get_timer(0);
> stop = timeout;
> do {
> - udelay(TPM_TIMEOUT * 1000);
> + mdelay(TPM_TIMEOUT_MS);
> *status = tpm_tis_i2c_status(chip);
> if ((*status & mask) == mask)
> return 0;
> @@ -363,7 +364,7 @@ out:
> * The TPM needs some time to clean up here,
> * so we sleep rather than keeping the bus busy
> */
> - udelay(2000);
> + mdelay(2);
> tpm_tis_i2c_release_locality(chip, chip->locality, 0);
>
> return size;
> @@ -446,7 +447,7 @@ out_err:
> * The TPM needs some time to clean up here,
> * so we sleep rather than keeping the bus busy
> */
> - udelay(2000);
> + mdelay(2);
> tpm_tis_i2c_release_locality(chip, chip->locality, 0);
>
> return rc;
> @@ -480,10 +481,10 @@ static int tpm_tis_i2c_init(struct udevice *dev)
> chip->irq = 0;
>
> /* Default timeouts - these could move to the device tree */
> - chip->timeout_a = TIS_SHORT_TIMEOUT;
> - chip->timeout_b = TIS_LONG_TIMEOUT;
> - chip->timeout_c = TIS_SHORT_TIMEOUT;
> - chip->timeout_d = TIS_SHORT_TIMEOUT;
> + chip->timeout_a = TIS_SHORT_TIMEOUT_MS;
> + chip->timeout_b = TIS_LONG_TIMEOUT_MS;
> + chip->timeout_c = TIS_SHORT_TIMEOUT_MS;
> + chip->timeout_d = TIS_SHORT_TIMEOUT_MS;
> chip->req_complete_mask = TPM_STS_DATA_AVAIL | TPM_STS_VALID;
> chip->req_complete_val = TPM_STS_DATA_AVAIL | TPM_STS_VALID;
> chip->req_canceled = TPM_STS_COMMAND_READY;
> @@ -593,7 +594,7 @@ static ssize_t tpm_tis_i2c_transmit(const unsigned char *buf, size_t bufsiz)
> rc = -ECANCELED;
> goto out;
> }
> - udelay(TPM_TIMEOUT * 1000);
> + mdelay(TPM_TIMEOUT_MS);
> } while (get_timer(start) < stop);
>
> tpm_tis_i2c_ready(chip);
> diff --git a/drivers/tpm/tpm_tis_i2c.h b/drivers/tpm/tpm_tis_i2c.h
> index db99200..ecdaf0c 100644
> --- a/drivers/tpm/tpm_tis_i2c.h
> +++ b/drivers/tpm/tpm_tis_i2c.h
> @@ -23,7 +23,11 @@
> #include <linux/types.h>
>
> enum tpm_timeout {
> - TPM_TIMEOUT = 5, /* msecs */
> + TPM_TIMEOUT_MS = 5,
> + TIS_SHORT_TIMEOUT_MS = 750,
> + TIS_LONG_TIMEOUT_MS = 2000,
> + SLEEP_DURATION_US = 60,
> + SLEEP_DURATION_LONG_US = 210,
> };
>
> /* Size of external transmit buffer (used in tpm_transmit)*/
> @@ -125,9 +129,6 @@ struct tpm_cmd_t {
> */
> #define MAX_COUNT_LONG 50
>
> -#define SLEEP_DURATION 60 /* in usec */
> -#define SLEEP_DURATION_LONG 210 /* in usec */
> -
> #define TPM_HEADER_SIZE 10
>
> enum tis_access {
> @@ -145,11 +146,6 @@ enum tis_status {
> TPM_STS_DATA_EXPECT = 0x08,
> };
>
> -enum tis_defaults {
> - TIS_SHORT_TIMEOUT = 750, /* ms */
> - TIS_LONG_TIMEOUT = 2000, /* ms */
> -};
> -
> /* expected value for DIDVID register */
> #define TPM_TIS_I2C_DID_VID_9635 0x000b15d1L
> #define TPM_TIS_I2C_DID_VID_9645 0x001a15d1L
> @@ -169,7 +165,7 @@ enum tpm_duration {
> /* Extended error numbers from linux (see errno.h) */
> #define ECANCELED 125 /* Operation Canceled */
>
> -/* Timer frequency. Corresponds to msec timer resolution*/
> +/* Timer frequency. Corresponds to msec timer resolution */
> #define HZ 1000
>
> #define TPM_MAX_ORDINAL 243