Commit 980a5736 authored by Jarkko Sakkinen's avatar Jarkko Sakkinen
Browse files

tpm: Make chip->{status,cancel,req_canceled} opt



tpm_ftpm_tee does not require chip->status, chip->cancel and
chip->req_canceled. Make them optional.

Reviewed-by: default avatarStefano Garzarella <sgarzare@redhat.com>
Signed-off-by: default avatarJarkko Sakkinen <jarkko.sakkinen@opinsys.com>
Signed-off-by: default avatarJarkko Sakkinen <jarkko@kernel.org>
parent 372f97a2
Loading
Loading
Loading
Loading
+27 −3
Original line number Diff line number Diff line
@@ -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;
@@ -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;
		}
@@ -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;

+0 −20
Original line number Diff line number Diff line
@@ -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,
};

/*