[coreboot-gerrit] New patch to review for coreboot: drivers/i2c/tpm/cr50: Reduce max buffer size

Duncan Laurie (dlaurie@chromium.org) gerrit at coreboot.org
Tue Sep 20 04:53:04 CEST 2016


Duncan Laurie (dlaurie at chromium.org) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/16664

-gerrit

commit a68c3f8f3061c6c4b33d5428b179cb2eba5ab240
Author: Duncan Laurie <dlaurie at chromium.org>
Date:   Mon Sep 19 16:37:46 2016 -0700

    drivers/i2c/tpm/cr50: Reduce max buffer size
    
    Reduce the static buffer size from the generic default 1260
    down to 64 to match the max FIFO size for the cr50 hardware
    and reduce the footprint of the driver.
    
    BUG=chrome-os-partner:53336
    
    Change-Id: I6f9f71d501b60299edad4b16cc553a85391a1866
    Signed-off-by: Duncan Laurie <dlaurie at chromium.org>
---
 src/drivers/i2c/tpm/cr50.c | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/src/drivers/i2c/tpm/cr50.c b/src/drivers/i2c/tpm/cr50.c
index 419ac1e..1190262 100644
--- a/src/drivers/i2c/tpm/cr50.c
+++ b/src/drivers/i2c/tpm/cr50.c
@@ -41,19 +41,19 @@
 #include <timer.h>
 #include "tpm.h"
 
-#define CR50_MAX_BURSTCOUNT	63
 
 #define SLEEP_DURATION 60 /* in usec */
 #define SLEEP_DURATION_LONG 210 /* in usec */
 #define SLEEP_DURATION_SAFE 750 /* in usec */
 #define SLEEP_DURATION_PROBE_MS 1000 /* in msec */
 
+#define CR50_MAX_BUFSIZE	63
 #define CR50_DID_VID		0x00281ae0L
 
 struct tpm_inf_dev {
 	int bus;
 	unsigned int addr;
-	uint8_t buf[TPM_BUFSIZE + sizeof(uint8_t)];
+	uint8_t buf[CR50_MAX_BUFSIZE + sizeof(uint8_t)];
 };
 
 static struct tpm_inf_dev g_tpm_dev CAR_GLOBAL;
@@ -115,7 +115,7 @@ static int iic_tpm_write(uint8_t addr, uint8_t *buffer, size_t len)
 
 	if (tpm_dev->addr == 0)
 		return -1;
-	if (len > TPM_BUFSIZE)
+	if (len > CR50_MAX_BUFSIZE)
 		return -1;
 
 	/* Prepend the 'register address' to the buffer */
@@ -226,7 +226,7 @@ static int cr50_wait_burst_status(struct tpm_chip *chip, uint8_t mask,
 
 		/* Check if mask matches and burst is valid */
 		if ((*status & mask) == mask &&
-		    *burst > 0 && *burst <= CR50_MAX_BURSTCOUNT)
+		    *burst > 0 && *burst <= CR50_MAX_BUFSIZE)
 			return 0;
 
 		udelay(SLEEP_DURATION_SAFE);
@@ -310,9 +310,6 @@ static int cr50_tis_i2c_send(struct tpm_chip *chip, uint8_t *buf, size_t len)
 	uint8_t tpm_go[4] = { TPM_STS_GO };
 	struct stopwatch sw;
 
-	if (len > TPM_BUFSIZE)
-		return -1;
-
 	stopwatch_init_msecs_expire(&sw, 2000);
 
 	/* Wait until TPM is ready for a command */



More information about the coreboot-gerrit mailing list