@@ -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+
118128static 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