#include <linux/init.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/pnp.h>
#include <linux/slab.h>
#include <linux/interrupt.h>
#include <linux/wait.h>
#include <linux/acpi.h>
#include <linux/freezer.h>
#include <linux/dmi.h>
#include "tpm.h"
#include "tpm_tis_core.h"
#define TPM_TIS_MAX_UNHANDLED_IRQS …
static void tpm_tis_clkrun_enable(struct tpm_chip *chip, bool value);
static bool wait_for_tpm_stat_cond(struct tpm_chip *chip, u8 mask,
bool check_cancel, bool *canceled)
{ … }
static u8 tpm_tis_filter_sts_mask(u8 int_mask, u8 sts_mask)
{ … }
static int wait_for_tpm_stat(struct tpm_chip *chip, u8 mask,
unsigned long timeout, wait_queue_head_t *queue,
bool check_cancel)
{ … }
static int wait_startup(struct tpm_chip *chip, int l)
{ … }
static bool check_locality(struct tpm_chip *chip, int l)
{ … }
static int __tpm_tis_relinquish_locality(struct tpm_tis_data *priv, int l)
{ … }
static int tpm_tis_relinquish_locality(struct tpm_chip *chip, int l)
{ … }
static int __tpm_tis_request_locality(struct tpm_chip *chip, int l)
{ … }
static int tpm_tis_request_locality(struct tpm_chip *chip, int l)
{ … }
static u8 tpm_tis_status(struct tpm_chip *chip)
{ … }
static void tpm_tis_ready(struct tpm_chip *chip)
{ … }
static int get_burstcount(struct tpm_chip *chip)
{ … }
static int recv_data(struct tpm_chip *chip, u8 *buf, size_t count)
{ … }
static int tpm_tis_try_recv(struct tpm_chip *chip, u8 *buf, size_t count)
{ … }
static int tpm_tis_recv(struct tpm_chip *chip, u8 *buf, size_t count)
{ … }
static int tpm_tis_send_data(struct tpm_chip *chip, const u8 *buf, size_t len)
{ … }
static void __tpm_tis_disable_interrupts(struct tpm_chip *chip)
{ … }
static void tpm_tis_disable_interrupts(struct tpm_chip *chip)
{ … }
static int tpm_tis_send_main(struct tpm_chip *chip, const u8 *buf, size_t len)
{ … }
static int tpm_tis_send(struct tpm_chip *chip, u8 *buf, size_t len)
{ … }
struct tis_vendor_durations_override { … };
static const struct tis_vendor_durations_override vendor_dur_overrides[] = …;
static void tpm_tis_update_durations(struct tpm_chip *chip,
unsigned long *duration_cap)
{ … }
struct tis_vendor_timeout_override { … };
static const struct tis_vendor_timeout_override vendor_timeout_overrides[] = …;
static void tpm_tis_update_timeouts(struct tpm_chip *chip,
unsigned long *timeout_cap)
{ … }
static int probe_itpm(struct tpm_chip *chip)
{ … }
static bool tpm_tis_req_canceled(struct tpm_chip *chip, u8 status)
{ … }
static irqreturn_t tpm_tis_revert_interrupts(struct tpm_chip *chip)
{ … }
static irqreturn_t tpm_tis_update_unhandled_irqs(struct tpm_chip *chip)
{ … }
static irqreturn_t tis_int_handler(int dummy, void *dev_id)
{ … }
static void tpm_tis_gen_interrupt(struct tpm_chip *chip)
{ … }
static void tpm_tis_free_irq_func(struct work_struct *work)
{ … }
static int tpm_tis_probe_irq_single(struct tpm_chip *chip, u32 intmask,
int flags, int irq)
{ … }
static void tpm_tis_probe_irq(struct tpm_chip *chip, u32 intmask)
{ … }
void tpm_tis_remove(struct tpm_chip *chip)
{ … }
EXPORT_SYMBOL_GPL(…);
static void tpm_tis_clkrun_enable(struct tpm_chip *chip, bool value)
{ … }
static const struct tpm_class_ops tpm_tis = …;
int tpm_tis_core_init(struct device *dev, struct tpm_tis_data *priv, int irq,
const struct tpm_tis_phy_ops *phy_ops,
acpi_handle acpi_dev_handle)
{ … }
EXPORT_SYMBOL_GPL(…);
#ifdef CONFIG_PM_SLEEP
static void tpm_tis_reenable_interrupts(struct tpm_chip *chip)
{ … }
int tpm_tis_resume(struct device *dev)
{ … }
EXPORT_SYMBOL_GPL(…);
#endif
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_VERSION(…) …;
MODULE_LICENSE(…) …;