Skip to content

Commit e0ad11e

Browse files
stuyod01jarkkojs
authored andcommitted
tpm_crb: Clean-up and refactor check for idle support
Refactor TPM idle check to tpm_crb_has_idle(), and reduce paraentheses usage in start method checks [jarkko: Fine-tuned the commit message.] Reviewed-by: Jarkko Sakkinen <[email protected]> Signed-off-by: Stuart Yoder <[email protected]> Signed-off-by: Jarkko Sakkinen <[email protected]>
1 parent eb93f07 commit e0ad11e

File tree

1 file changed

+21
-15
lines changed

1 file changed

+21
-15
lines changed

drivers/char/tpm/tpm_crb.c

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,16 @@ struct tpm2_crb_pluton {
115115
u64 reply_addr;
116116
};
117117

118+
/*
119+
* Returns true if the start method supports idle.
120+
*/
121+
static inline bool tpm_crb_has_idle(u32 start_method)
122+
{
123+
return !(start_method == ACPI_TPM2_START_METHOD ||
124+
start_method == ACPI_TPM2_COMMAND_BUFFER_WITH_START_METHOD ||
125+
start_method == ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC);
126+
}
127+
118128
static bool crb_wait_for_reg_32(u32 __iomem *reg, u32 mask, u32 value,
119129
unsigned long timeout)
120130
{
@@ -173,9 +183,7 @@ static int __crb_go_idle(struct device *dev, struct crb_priv *priv)
173183
{
174184
int rc;
175185

176-
if ((priv->sm == ACPI_TPM2_START_METHOD) ||
177-
(priv->sm == ACPI_TPM2_COMMAND_BUFFER_WITH_START_METHOD) ||
178-
(priv->sm == ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC))
186+
if (!tpm_crb_has_idle(priv->sm))
179187
return 0;
180188

181189
iowrite32(CRB_CTRL_REQ_GO_IDLE, &priv->regs_t->ctrl_req);
@@ -222,9 +230,7 @@ static int __crb_cmd_ready(struct device *dev, struct crb_priv *priv)
222230
{
223231
int rc;
224232

225-
if ((priv->sm == ACPI_TPM2_START_METHOD) ||
226-
(priv->sm == ACPI_TPM2_COMMAND_BUFFER_WITH_START_METHOD) ||
227-
(priv->sm == ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC))
233+
if (!tpm_crb_has_idle(priv->sm))
228234
return 0;
229235

230236
iowrite32(CRB_CTRL_REQ_CMD_READY, &priv->regs_t->ctrl_req);
@@ -423,13 +429,13 @@ static int crb_send(struct tpm_chip *chip, u8 *buf, size_t len)
423429
* report only ACPI start but in practice seems to require both
424430
* CRB start, hence invoking CRB start method if hid == MSFT0101.
425431
*/
426-
if ((priv->sm == ACPI_TPM2_COMMAND_BUFFER) ||
427-
(priv->sm == ACPI_TPM2_MEMORY_MAPPED) ||
428-
(!strcmp(priv->hid, "MSFT0101")))
432+
if (priv->sm == ACPI_TPM2_COMMAND_BUFFER ||
433+
priv->sm == ACPI_TPM2_MEMORY_MAPPED ||
434+
!strcmp(priv->hid, "MSFT0101"))
429435
iowrite32(CRB_START_INVOKE, &priv->regs_t->ctrl_start);
430436

431-
if ((priv->sm == ACPI_TPM2_START_METHOD) ||
432-
(priv->sm == ACPI_TPM2_COMMAND_BUFFER_WITH_START_METHOD))
437+
if (priv->sm == ACPI_TPM2_START_METHOD ||
438+
priv->sm == ACPI_TPM2_COMMAND_BUFFER_WITH_START_METHOD)
433439
rc = crb_do_acpi_start(chip);
434440

435441
if (priv->sm == ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC) {
@@ -449,8 +455,8 @@ static void crb_cancel(struct tpm_chip *chip)
449455

450456
iowrite32(CRB_CANCEL_INVOKE, &priv->regs_t->ctrl_cancel);
451457

452-
if (((priv->sm == ACPI_TPM2_START_METHOD) ||
453-
(priv->sm == ACPI_TPM2_COMMAND_BUFFER_WITH_START_METHOD)) &&
458+
if ((priv->sm == ACPI_TPM2_START_METHOD ||
459+
priv->sm == ACPI_TPM2_COMMAND_BUFFER_WITH_START_METHOD) &&
454460
crb_do_acpi_start(chip))
455461
dev_err(&chip->dev, "ACPI Start failed\n");
456462
}
@@ -609,8 +615,8 @@ static int crb_map_io(struct acpi_device *device, struct crb_priv *priv,
609615
* the control area, as one nice sane region except for some older
610616
* stuff that puts the control area outside the ACPI IO region.
611617
*/
612-
if ((priv->sm == ACPI_TPM2_COMMAND_BUFFER) ||
613-
(priv->sm == ACPI_TPM2_MEMORY_MAPPED)) {
618+
if (priv->sm == ACPI_TPM2_COMMAND_BUFFER ||
619+
priv->sm == ACPI_TPM2_MEMORY_MAPPED) {
614620
if (iores &&
615621
buf->control_address == iores->start +
616622
sizeof(*priv->regs_h))

0 commit comments

Comments
 (0)