1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _TPM_DEV_H 3 #define _TPM_DEV_H 4 5 #include <linux/poll.h> 6 #include "tpm.h" 7 8 struct file_priv { 9 struct tpm_chip *chip; 10 struct tpm_space *space; 11 12 struct mutex buffer_mutex; 13 struct timer_list user_read_timer; /* user needs to claim result */ 14 struct work_struct timeout_work; 15 struct work_struct async_work; 16 wait_queue_head_t async_wait; 17 ssize_t response_length; 18 bool response_read; 19 bool command_enqueued; 20 21 u8 data_buffer[TPM_BUFSIZE]; 22 }; 23 24 void tpm_common_open(struct file *file, struct tpm_chip *chip, 25 struct file_priv *priv, struct tpm_space *space); 26 ssize_t tpm_common_read(struct file *file, char __user *buf, 27 size_t size, loff_t *off); 28 ssize_t tpm_common_write(struct file *file, const char __user *buf, 29 size_t size, loff_t *off); 30 __poll_t tpm_common_poll(struct file *file, poll_table *wait); 31 32 void tpm_common_release(struct file *file, struct file_priv *priv); 33 #endif 34