From mboxrd@z Thu Jan 1 00:00:00 1970 From: christophe.ricard Date: Tue, 11 Aug 2015 23:44:17 +0200 Subject: [U-Boot] [PATCH 14/25] tpm: tpm_tis_i2c: Tidy up delays In-Reply-To: <1439304497-10081-15-git-send-email-sjg@chromium.org> References: <1439304497-10081-1-git-send-email-sjg@chromium.org> <1439304497-10081-15-git-send-email-sjg@chromium.org> Message-ID: <55CA6CB1.3060109@gmail.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Simon, Acked-by: Christophe Ricard 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 > --- > > 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 > > 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