Re: [U-Boot] [PATCH v2] tpm: tpm_tis_lpc: Add support for AT97SC3204

2016-10-25 Thread Simon Glass
On 17 October 2016 at 16:17, Simon Glass  wrote:
> On 17 October 2016 at 08:24, George McCollister
>  wrote:
>> The Atmel AT97SC3204 is also TIS compliant.
>> Modify the tpm_tis_lpc driver to check for the vid/did used by the
>> Atmel AT97SC3204 and report an appropriate description.
>>
>> Signed-off-by: George McCollister 
>> ---
>>
>> Changes in v2:
>> - Reorganized didvid check to make it more consistent with the original
>>   code
>> - Return -ENODEV instead of -ENOENT when didvid doesn't match the
>>   expected value for the device
>>
>>  drivers/tpm/tpm_tis_lpc.c | 37 -
>>  1 file changed, 28 insertions(+), 9 deletions(-)
>
> Reviewed-by: Simon Glass 

Applied to u-boot-dm/next, thanks!
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v2] tpm: tpm_tis_lpc: Add support for AT97SC3204

2016-10-17 Thread Simon Glass
On 17 October 2016 at 08:24, George McCollister
 wrote:
> The Atmel AT97SC3204 is also TIS compliant.
> Modify the tpm_tis_lpc driver to check for the vid/did used by the
> Atmel AT97SC3204 and report an appropriate description.
>
> Signed-off-by: George McCollister 
> ---
>
> Changes in v2:
> - Reorganized didvid check to make it more consistent with the original
>   code
> - Return -ENODEV instead of -ENOENT when didvid doesn't match the
>   expected value for the device
>
>  drivers/tpm/tpm_tis_lpc.c | 37 -
>  1 file changed, 28 insertions(+), 9 deletions(-)

Reviewed-by: Simon Glass 
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH v2] tpm: tpm_tis_lpc: Add support for AT97SC3204

2016-10-17 Thread George McCollister
The Atmel AT97SC3204 is also TIS compliant.
Modify the tpm_tis_lpc driver to check for the vid/did used by the
Atmel AT97SC3204 and report an appropriate description.

Signed-off-by: George McCollister 
---

Changes in v2:
- Reorganized didvid check to make it more consistent with the original
  code
- Return -ENODEV instead of -ENOENT when didvid doesn't match the
  expected value for the device

 drivers/tpm/tpm_tis_lpc.c | 37 -
 1 file changed, 28 insertions(+), 9 deletions(-)

diff --git a/drivers/tpm/tpm_tis_lpc.c b/drivers/tpm/tpm_tis_lpc.c
index b4efbb5..d2b3783 100644
--- a/drivers/tpm/tpm_tis_lpc.c
+++ b/drivers/tpm/tpm_tis_lpc.c
@@ -21,6 +21,21 @@
 
 #define PREFIX "lpc_tpm: "
 
+enum i2c_chip_type {
+   SLB9635,
+   AT97SC3204,
+};
+
+static const char * const chip_name[] = {
+   [SLB9635] = "Infineon SLB9635 TT 1.2",
+   [AT97SC3204] = "Atmel AT97SC3204",
+};
+
+static const u32 chip_didvid[] = {
+   [SLB9635] = 0xb15d1,
+   [AT97SC3204] = 0x32041114,
+};
+
 struct tpm_locality {
u32 access;
u8 padding0[4];
@@ -146,9 +161,9 @@ static int tis_wait_reg(struct tpm_tis_lpc_priv *priv, u32 
*reg, u8 mask,
 static int tpm_tis_lpc_probe(struct udevice *dev)
 {
struct tpm_tis_lpc_priv *priv = dev_get_priv(dev);
-   u32 vid, did;
fdt_addr_t addr;
u32 didvid;
+   ulong chip_type = dev_get_driver_data(dev);
 
addr = dev_get_addr(dev);
if (addr == FDT_ADDR_T_NONE)
@@ -156,14 +171,15 @@ static int tpm_tis_lpc_probe(struct udevice *dev)
priv->regs = map_sysmem(addr, 0);
didvid = tpm_read_word(priv, >regs[0].did_vid);
 
-   vid = didvid & 0x;
-   did = (didvid >> 16) & 0x;
-   if (vid != 0x15d1 || did != 0xb) {
+   if (didvid != chip_didvid[chip_type]) {
+   u32 vid, did;
+   vid = didvid & 0x;
+   did = (didvid >> 16) & 0x;
debug("Invalid vendor/device ID %04x/%04x\n", vid, did);
-   return -ENOSYS;
+   return -ENODEV;
}
 
-   debug("Found TPM %s by %s\n", "SLB9635 TT 1.2", "Infineon");
+   debug("Found TPM: %s\n", chip_name[chip_type]);
 
return 0;
 }
@@ -421,11 +437,13 @@ static int tpm_tis_lpc_close(struct udevice *dev)
 
 static int tpm_tis_get_desc(struct udevice *dev, char *buf, int size)
 {
+   ulong chip_type = dev_get_driver_data(dev);
+
if (size < 50)
return -ENOSPC;
 
-   return snprintf(buf, size, "1.2 TPM (vendor %s, chip %s)",
-   "Infineon", "SLB9635 TT 1.2");
+   return snprintf(buf, size, "1.2 TPM (%s)",
+   chip_name[chip_type]);
 }
 
 
@@ -438,7 +456,8 @@ static const struct tpm_ops tpm_tis_lpc_ops = {
 };
 
 static const struct udevice_id tpm_tis_lpc_ids[] = {
-   { .compatible = "infineon,slb9635lpc" },
+   { .compatible = "infineon,slb9635lpc", .data = SLB9635 },
+   { .compatible = "atmel,at97sc3204", .data = AT97SC3204 },
{ }
 };
 
-- 
2.9.3

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot