diff options
-rw-r--r-- | drivers/char/tpm/tpm.c | 15 | ||||
-rw-r--r-- | drivers/char/tpm/tpm.h | 3 | ||||
-rw-r--r-- | drivers/char/tpm/tpm_tis.c | 4 |
3 files changed, 21 insertions, 1 deletions
diff --git a/drivers/char/tpm/tpm.c b/drivers/char/tpm/tpm.c index 277cf22609c..27abfd93714 100644 --- a/drivers/char/tpm/tpm.c +++ b/drivers/char/tpm/tpm.c | |||
@@ -597,6 +597,7 @@ duration: | |||
597 | chip->vendor.duration[TPM_SHORT] = HZ; | 597 | chip->vendor.duration[TPM_SHORT] = HZ; |
598 | chip->vendor.duration[TPM_MEDIUM] *= 1000; | 598 | chip->vendor.duration[TPM_MEDIUM] *= 1000; |
599 | chip->vendor.duration[TPM_LONG] *= 1000; | 599 | chip->vendor.duration[TPM_LONG] *= 1000; |
600 | chip->vendor.duration_adjusted = true; | ||
600 | dev_info(chip->dev, "Adjusting TPM timeout parameters."); | 601 | dev_info(chip->dev, "Adjusting TPM timeout parameters."); |
601 | } | 602 | } |
602 | } | 603 | } |
@@ -944,6 +945,20 @@ ssize_t tpm_show_caps_1_2(struct device * dev, | |||
944 | } | 945 | } |
945 | EXPORT_SYMBOL_GPL(tpm_show_caps_1_2); | 946 | EXPORT_SYMBOL_GPL(tpm_show_caps_1_2); |
946 | 947 | ||
948 | ssize_t tpm_show_durations(struct device *dev, struct device_attribute *attr, | ||
949 | char *buf) | ||
950 | { | ||
951 | struct tpm_chip *chip = dev_get_drvdata(dev); | ||
952 | |||
953 | return sprintf(buf, "%d %d %d [%s]\n", | ||
954 | jiffies_to_usecs(chip->vendor.duration[TPM_SHORT]), | ||
955 | jiffies_to_usecs(chip->vendor.duration[TPM_MEDIUM]), | ||
956 | jiffies_to_usecs(chip->vendor.duration[TPM_LONG]), | ||
957 | chip->vendor.duration_adjusted | ||
958 | ? "adjusted" : "original"); | ||
959 | } | ||
960 | EXPORT_SYMBOL_GPL(tpm_show_durations); | ||
961 | |||
947 | ssize_t tpm_store_cancel(struct device *dev, struct device_attribute *attr, | 962 | ssize_t tpm_store_cancel(struct device *dev, struct device_attribute *attr, |
948 | const char *buf, size_t count) | 963 | const char *buf, size_t count) |
949 | { | 964 | { |
diff --git a/drivers/char/tpm/tpm.h b/drivers/char/tpm/tpm.h index 72ddb031b69..6fc797611cc 100644 --- a/drivers/char/tpm/tpm.h +++ b/drivers/char/tpm/tpm.h | |||
@@ -56,6 +56,8 @@ extern ssize_t tpm_show_owned(struct device *, struct device_attribute *attr, | |||
56 | char *); | 56 | char *); |
57 | extern ssize_t tpm_show_temp_deactivated(struct device *, | 57 | extern ssize_t tpm_show_temp_deactivated(struct device *, |
58 | struct device_attribute *attr, char *); | 58 | struct device_attribute *attr, char *); |
59 | extern ssize_t tpm_show_durations(struct device *, | ||
60 | struct device_attribute *attr, char *); | ||
59 | 61 | ||
60 | struct tpm_chip; | 62 | struct tpm_chip; |
61 | 63 | ||
@@ -82,6 +84,7 @@ struct tpm_vendor_specific { | |||
82 | int locality; | 84 | int locality; |
83 | unsigned long timeout_a, timeout_b, timeout_c, timeout_d; /* jiffies */ | 85 | unsigned long timeout_a, timeout_b, timeout_c, timeout_d; /* jiffies */ |
84 | unsigned long duration[3]; /* jiffies */ | 86 | unsigned long duration[3]; /* jiffies */ |
87 | bool duration_adjusted; | ||
85 | 88 | ||
86 | wait_queue_head_t read_queue; | 89 | wait_queue_head_t read_queue; |
87 | wait_queue_head_t int_queue; | 90 | wait_queue_head_t int_queue; |
diff --git a/drivers/char/tpm/tpm_tis.c b/drivers/char/tpm/tpm_tis.c index dd21df55689..e15b30d4954 100644 --- a/drivers/char/tpm/tpm_tis.c +++ b/drivers/char/tpm/tpm_tis.c | |||
@@ -376,6 +376,7 @@ static DEVICE_ATTR(temp_deactivated, S_IRUGO, tpm_show_temp_deactivated, | |||
376 | NULL); | 376 | NULL); |
377 | static DEVICE_ATTR(caps, S_IRUGO, tpm_show_caps_1_2, NULL); | 377 | static DEVICE_ATTR(caps, S_IRUGO, tpm_show_caps_1_2, NULL); |
378 | static DEVICE_ATTR(cancel, S_IWUSR | S_IWGRP, NULL, tpm_store_cancel); | 378 | static DEVICE_ATTR(cancel, S_IWUSR | S_IWGRP, NULL, tpm_store_cancel); |
379 | static DEVICE_ATTR(durations, S_IRUGO, tpm_show_durations, NULL); | ||
379 | 380 | ||
380 | static struct attribute *tis_attrs[] = { | 381 | static struct attribute *tis_attrs[] = { |
381 | &dev_attr_pubek.attr, | 382 | &dev_attr_pubek.attr, |
@@ -385,7 +386,8 @@ static struct attribute *tis_attrs[] = { | |||
385 | &dev_attr_owned.attr, | 386 | &dev_attr_owned.attr, |
386 | &dev_attr_temp_deactivated.attr, | 387 | &dev_attr_temp_deactivated.attr, |
387 | &dev_attr_caps.attr, | 388 | &dev_attr_caps.attr, |
388 | &dev_attr_cancel.attr, NULL, | 389 | &dev_attr_cancel.attr, |
390 | &dev_attr_durations.attr, NULL, | ||
389 | }; | 391 | }; |
390 | 392 | ||
391 | static struct attribute_group tis_attr_grp = { | 393 | static struct attribute_group tis_attr_grp = { |