Skip to content

Commit

Permalink
tpm: Make chip->{status,cancel,req_canceled} opt
Browse files Browse the repository at this point in the history
tpm_ftpm_tee does not require chip->status, chip->cancel and
chip->req_canceled. Make them optional.

Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@opinsys.com>
Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
  • Loading branch information
Jarkko Sakkinen authored and Jarkko Sakkinen committed Mar 27, 2025
1 parent 372f97a commit 980a573
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 23 deletions.
30 changes: 27 additions & 3 deletions drivers/char/tpm/tpm-interface.c
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,30 @@ unsigned long tpm_calc_ordinal_duration(struct tpm_chip *chip, u32 ordinal)
}
EXPORT_SYMBOL_GPL(tpm_calc_ordinal_duration);

static void tpm_chip_cancel(struct tpm_chip *chip)
{
if (!chip->ops->cancel)
return;

chip->ops->cancel(chip);
}

static u8 tpm_chip_status(struct tpm_chip *chip)
{
if (!chip->ops->status)
return 0;

return chip->ops->status(chip);
}

static bool tpm_chip_req_canceled(struct tpm_chip *chip, u8 status)
{
if (!chip->ops->req_canceled)
return false;

return chip->ops->req_canceled(chip, status);
}

static ssize_t tpm_try_transmit(struct tpm_chip *chip, void *buf, size_t bufsiz)
{
struct tpm_header *header = buf;
Expand Down Expand Up @@ -104,12 +128,12 @@ static ssize_t tpm_try_transmit(struct tpm_chip *chip, void *buf, size_t bufsiz)

stop = jiffies + tpm_calc_ordinal_duration(chip, ordinal);
do {
u8 status = chip->ops->status(chip);
u8 status = tpm_chip_status(chip);
if ((status & chip->ops->req_complete_mask) ==
chip->ops->req_complete_val)
goto out_recv;

if (chip->ops->req_canceled(chip, status)) {
if (tpm_chip_req_canceled(chip, status)) {
dev_err(&chip->dev, "Operation Canceled\n");
return -ECANCELED;
}
Expand All @@ -118,7 +142,7 @@ static ssize_t tpm_try_transmit(struct tpm_chip *chip, void *buf, size_t bufsiz)
rmb();
} while (time_before(jiffies, stop));

chip->ops->cancel(chip);
tpm_chip_cancel(chip);
dev_err(&chip->dev, "Operation Timed out\n");
return -ETIME;

Expand Down
20 changes: 0 additions & 20 deletions drivers/char/tpm/tpm_ftpm_tee.c
Original file line number Diff line number Diff line change
Expand Up @@ -164,30 +164,10 @@ static int ftpm_tee_tpm_op_send(struct tpm_chip *chip, u8 *buf, size_t len)
return 0;
}

static void ftpm_tee_tpm_op_cancel(struct tpm_chip *chip)
{
/* not supported */
}

static u8 ftpm_tee_tpm_op_status(struct tpm_chip *chip)
{
return 0;
}

static bool ftpm_tee_tpm_req_canceled(struct tpm_chip *chip, u8 status)
{
return false;
}

static const struct tpm_class_ops ftpm_tee_tpm_ops = {
.flags = TPM_OPS_AUTO_STARTUP,
.recv = ftpm_tee_tpm_op_recv,
.send = ftpm_tee_tpm_op_send,
.cancel = ftpm_tee_tpm_op_cancel,
.status = ftpm_tee_tpm_op_status,
.req_complete_mask = 0,
.req_complete_val = 0,
.req_canceled = ftpm_tee_tpm_req_canceled,
};

/*
Expand Down

0 comments on commit 980a573

Please sign in to comment.