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

Simon Glass sjg at chromium.org
Tue Aug 11 16:48:06 CEST 2015


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 at 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
-- 
2.5.0.rc2.392.g76e840b



More information about the U-Boot mailing list