aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/char/tpm/tpm.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/char/tpm/tpm.c b/drivers/char/tpm/tpm.c
index 0a475c7fe5ce..533ae359cb28 100644
--- a/drivers/char/tpm/tpm.c
+++ b/drivers/char/tpm/tpm.c
@@ -534,6 +534,7 @@ void tpm_get_timeouts(struct tpm_chip *chip)
534 struct duration_t *duration_cap; 534 struct duration_t *duration_cap;
535 ssize_t rc; 535 ssize_t rc;
536 u32 timeout; 536 u32 timeout;
537 unsigned int scale = 1;
537 538
538 tpm_cmd.header.in = tpm_getcap_header; 539 tpm_cmd.header.in = tpm_getcap_header;
539 tpm_cmd.params.getcap_in.cap = TPM_CAP_PROP; 540 tpm_cmd.params.getcap_in.cap = TPM_CAP_PROP;
@@ -553,17 +554,21 @@ void tpm_get_timeouts(struct tpm_chip *chip)
553 timeout_cap = &tpm_cmd.params.getcap_out.cap.timeout; 554 timeout_cap = &tpm_cmd.params.getcap_out.cap.timeout;
554 /* Don't overwrite default if value is 0 */ 555 /* Don't overwrite default if value is 0 */
555 timeout = be32_to_cpu(timeout_cap->a); 556 timeout = be32_to_cpu(timeout_cap->a);
557 if (timeout && timeout < 1000) {
558 /* timeouts in msec rather usec */
559 scale = 1000;
560 }
556 if (timeout) 561 if (timeout)
557 chip->vendor.timeout_a = usecs_to_jiffies(timeout); 562 chip->vendor.timeout_a = usecs_to_jiffies(timeout * scale);
558 timeout = be32_to_cpu(timeout_cap->b); 563 timeout = be32_to_cpu(timeout_cap->b);
559 if (timeout) 564 if (timeout)
560 chip->vendor.timeout_b = usecs_to_jiffies(timeout); 565 chip->vendor.timeout_b = usecs_to_jiffies(timeout * scale);
561 timeout = be32_to_cpu(timeout_cap->c); 566 timeout = be32_to_cpu(timeout_cap->c);
562 if (timeout) 567 if (timeout)
563 chip->vendor.timeout_c = usecs_to_jiffies(timeout); 568 chip->vendor.timeout_c = usecs_to_jiffies(timeout * scale);
564 timeout = be32_to_cpu(timeout_cap->d); 569 timeout = be32_to_cpu(timeout_cap->d);
565 if (timeout) 570 if (timeout)
566 chip->vendor.timeout_d = usecs_to_jiffies(timeout); 571 chip->vendor.timeout_d = usecs_to_jiffies(timeout * scale);
567 572
568duration: 573duration:
569 tpm_cmd.header.in = tpm_getcap_header; 574 tpm_cmd.header.in = tpm_getcap_header;