@@ -115,6 +115,16 @@ struct tpm2_crb_pluton {
115
115
u64 reply_addr ;
116
116
};
117
117
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
+
118
128
static bool crb_wait_for_reg_32 (u32 __iomem * reg , u32 mask , u32 value ,
119
129
unsigned long timeout )
120
130
{
@@ -173,9 +183,7 @@ static int __crb_go_idle(struct device *dev, struct crb_priv *priv)
173
183
{
174
184
int rc ;
175
185
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 ))
179
187
return 0 ;
180
188
181
189
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)
222
230
{
223
231
int rc ;
224
232
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 ))
228
234
return 0 ;
229
235
230
236
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)
423
429
* report only ACPI start but in practice seems to require both
424
430
* CRB start, hence invoking CRB start method if hid == MSFT0101.
425
431
*/
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" ))
429
435
iowrite32 (CRB_START_INVOKE , & priv -> regs_t -> ctrl_start );
430
436
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 )
433
439
rc = crb_do_acpi_start (chip );
434
440
435
441
if (priv -> sm == ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC ) {
@@ -449,8 +455,8 @@ static void crb_cancel(struct tpm_chip *chip)
449
455
450
456
iowrite32 (CRB_CANCEL_INVOKE , & priv -> regs_t -> ctrl_cancel );
451
457
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 ) &&
454
460
crb_do_acpi_start (chip ))
455
461
dev_err (& chip -> dev , "ACPI Start failed\n" );
456
462
}
@@ -609,8 +615,8 @@ static int crb_map_io(struct acpi_device *device, struct crb_priv *priv,
609
615
* the control area, as one nice sane region except for some older
610
616
* stuff that puts the control area outside the ACPI IO region.
611
617
*/
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 ) {
614
620
if (iores &&
615
621
buf -> control_address == iores -> start +
616
622
sizeof (* priv -> regs_h ))
0 commit comments