
Hi Simon,
I almost agree with this one. Except that here tis_init, tis_open... are already merged into tpm_tis_i2c...
Best Regards Christophe On 11/08/2015 16:48, Simon Glass wrote:
There are too many structures storing the same sort of information. Move the fields from struct tpm into struct tpm_chip and remove the former struct.
Signed-off-by: Simon Glass sjg@chromium.org
drivers/tpm/tpm_tis_i2c.c | 24 +++++++++--------------- drivers/tpm/tpm_tis_i2c.h | 1 + 2 files changed, 10 insertions(+), 15 deletions(-)
diff --git a/drivers/tpm/tpm_tis_i2c.c b/drivers/tpm/tpm_tis_i2c.c index 70d21ca..07150ec 100644 --- a/drivers/tpm/tpm_tis_i2c.c +++ b/drivers/tpm/tpm_tis_i2c.c @@ -375,12 +375,6 @@ static const u8 tpm_ordinal_duration[TPM_MAX_ORDINAL] = { TPM_MEDIUM, };
-/* TPM configuration */ -struct tpm {
- struct udevice *dev;
- char inited;
-} tpm;
static struct tpm_chip g_chip;
/*
@@ -976,7 +970,7 @@ static void tpm_close(void)
- @param dev Returns a configuration of TPM device
- @return 0 if ok, -1 on error
*/ -static int tpm_decode_config(struct tpm *dev) +static int tpm_decode_config(struct tpm_chip *chip) { const void *blob = gd->fdt_blob; struct udevice *bus; @@ -1021,7 +1015,7 @@ static int tpm_decode_config(struct tpm *dev) * TODO(sjg@chromium.org): Older TPMs will need to use the older method * in iic_tpm_read() so the offset length needs to be 0 here. */
- ret = i2c_get_chip(bus, chip_addr, 1, &dev->dev);
- ret = i2c_get_chip(bus, chip_addr, 1, &chip->dev); if (ret) { debug("Cannot find device for node '%s: ret=%d'\n", fdt_get_name(blob, node, NULL), ret);
@@ -1033,15 +1027,15 @@ static int tpm_decode_config(struct tpm *dev)
int tis_init(void) {
- if (tpm.inited)
- if (g_chip.inited) return 0;
- if (tpm_decode_config(&tpm))
if (tpm_decode_config(&g_chip)) return -1;
debug("%s: done\n", __func__);
- tpm.inited = 1;
g_chip.inited = 1;
return 0; }
@@ -1050,17 +1044,17 @@ int tis_open(void) { int rc;
- if (!tpm.inited)
- if (!g_chip.inited) return -1;
- rc = tpm_open_dev(tpm.dev);
rc = tpm_open_dev(g_chip.dev);
return rc; }
int tis_close(void) {
- if (!tpm.inited)
if (!g_chip.inited) return -1;
tpm_close();
@@ -1074,7 +1068,7 @@ int tis_sendrecv(const uint8_t *sendbuf, size_t sbuf_size, int len; uint8_t buf[4096];
- if (!tpm.inited)
if (!g_chip.inited) return -1;
if (sizeof(buf) < sbuf_size)
diff --git a/drivers/tpm/tpm_tis_i2c.h b/drivers/tpm/tpm_tis_i2c.h index 0fec464..161e63b 100644 --- a/drivers/tpm/tpm_tis_i2c.h +++ b/drivers/tpm/tpm_tis_i2c.h @@ -43,6 +43,7 @@ enum i2c_chip_type { };
struct tpm_chip {
- bool inited; int is_open; u8 req_complete_mask; u8 req_complete_val;