tpm: Pull everything related to /dev/tpmX into tpm-dev.c
[cascardo/linux.git] / drivers / char / tpm / tpm_i2c_stm_st33.c
index a0d6ceb..e519e68 100644 (file)
@@ -410,6 +410,8 @@ static int recv_data(struct tpm_chip *chip, u8 *buf, size_t count)
                             &chip->vendor.read_queue)
               == 0) {
                burstcnt = get_burstcount(chip);
+               if (burstcnt < 0)
+                       return burstcnt;
                len = min_t(int, burstcnt, count - size);
                I2C_READ_DATA(client, TPM_DATA_FIFO, buf + size, len);
                size += len;
@@ -451,7 +453,8 @@ static irqreturn_t tpm_ioserirq_handler(int irq, void *dev_id)
 static int tpm_stm_i2c_send(struct tpm_chip *chip, unsigned char *buf,
                            size_t len)
 {
-       u32 status, burstcnt = 0, i, size;
+       u32 status, i, size;
+       int burstcnt = 0;
        int ret;
        u8 data;
        struct i2c_client *client;
@@ -482,6 +485,8 @@ static int tpm_stm_i2c_send(struct tpm_chip *chip, unsigned char *buf,
 
        for (i = 0; i < len - 1;) {
                burstcnt = get_burstcount(chip);
+               if (burstcnt < 0)
+                       return burstcnt;
                size = min_t(int, len - i - 1, burstcnt);
                ret = I2C_WRITE_DATA(client, TPM_DATA_FIFO, buf, size);
                if (ret < 0)
@@ -569,15 +574,6 @@ static bool tpm_st33_i2c_req_canceled(struct tpm_chip *chip, u8 status)
        return (status == TPM_STS_COMMAND_READY);
 }
 
-static const struct file_operations tpm_st33_i2c_fops = {
-       .owner = THIS_MODULE,
-       .llseek = no_llseek,
-       .read = tpm_read,
-       .write = tpm_write,
-       .open = tpm_open,
-       .release = tpm_release,
-};
-
 static DEVICE_ATTR(pubek, S_IRUGO, tpm_show_pubek, NULL);
 static DEVICE_ATTR(pcrs, S_IRUGO, tpm_show_pcrs, NULL);
 static DEVICE_ATTR(enabled, S_IRUGO, tpm_show_enabled, NULL);
@@ -611,7 +607,6 @@ static struct tpm_vendor_specific st_i2c_tpm = {
        .req_complete_val = TPM_STS_DATA_AVAIL | TPM_STS_VALID,
        .req_canceled = tpm_st33_i2c_req_canceled,
        .attr_group = &stm_tpm_attr_grp,
-       .miscdev = {.fops = &tpm_st33_i2c_fops,},
 };
 
 static int interrupts;