Skip to content

Commit

Permalink
tpm_tis: Only probe iTPMs
Browse files Browse the repository at this point in the history
Detect iTPMs through the vendor ID on the hardware interface and only
probe the device if the manufacturer is found to be Intel. This
obsoletes a previously added delay necessary for some TPMs but not iTPMs.

Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Signed-off-by: Rajiv Andrade <srajiv@linux.vnet.ibm.com>
  • Loading branch information
Stefan Berger authored and Rajiv Andrade committed Feb 14, 2012
1 parent 4040153 commit 4e401fb
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 3 deletions.
2 changes: 2 additions & 0 deletions drivers/char/tpm/tpm.h
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,8 @@ struct tpm_vendor_specific {
wait_queue_head_t int_queue;
};

#define TPM_VID_INTEL 0x8086

struct tpm_chip {
struct device *dev; /* Device stuff */

Expand Down
8 changes: 5 additions & 3 deletions drivers/char/tpm/tpm_tis.c
Original file line number Diff line number Diff line change
Expand Up @@ -368,6 +368,11 @@ static int probe_itpm(struct tpm_chip *chip)
};
size_t len = sizeof(cmd_getticks);
int rem_itpm = itpm;
u16 vendor = ioread16(chip->vendor.iobase + TPM_DID_VID(0));

/* probe only iTPMS */
if (vendor != TPM_VID_INTEL)
return 0;

itpm = 0;

Expand All @@ -390,9 +395,6 @@ static int probe_itpm(struct tpm_chip *chip)
out:
itpm = rem_itpm;
tpm_tis_ready(chip);
/* some TPMs need a break here otherwise they will not work
* correctly on the immediately subsequent command */
msleep(chip->vendor.timeout_b);
release_locality(chip, chip->vendor.locality, 0);

return rc;
Expand Down

0 comments on commit 4e401fb

Please sign in to comment.