* but works fine on Beagleboard (ARM OMAP).
*
*/
-#include <linux/debugfs.h>
#include <linux/init.h>
#include <linux/i2c.h>
#include <linux/module.h>
struct tpm_chip *chip;
bool powered_while_suspended;
struct work_struct init_work;
- u32 ignore_suspend_errors; /* debugfs_create_bool expects u32 */
- struct dentry *debugfs_entry;
};
static struct tpm_inf_dev tpm_dev;
tpm_dev.powered_while_suspended = true;
}
- tpm_dev.debugfs_entry = debugfs_create_bool("tpm_ignore_suspend_errors",
- 0644, NULL,
- &tpm_dev.ignore_suspend_errors);
return 0;
out_release:
*/
static int tpm_tis_i2c_suspend(struct device *dev)
{
- int ret;
-
if (tpm_dev.powered_while_suspended)
return 0;
- ret = tpm_pm_suspend(dev, dev->power.power_state);
- if (tpm_dev.ignore_suspend_errors) {
- if (ret) {
- struct tpm_chip *chip = dev_get_drvdata(dev);
- dev_warn(chip->dev, "Ignoring TPM suspend error: %d\n",
- ret);
- }
- return 0;
- } else {
- return ret;
- }
+ return tpm_pm_suspend(dev, dev->power.power_state);
}
#define TPM_TAG_RQU_COMMAND cpu_to_be16(193)
static void __exit cleanup_tis_i2c(void)
{
struct tpm_chip *chip = tpm_dev.chip;
-
- if (tpm_dev.debugfs_entry) {
- debugfs_remove(tpm_dev.debugfs_entry);
- tpm_dev.debugfs_entry = NULL;
- }
release_locality(chip, chip->vendor.locality, 1);
cancel_work_sync(&tpm_dev.init_work);