tpm_crb: encapsulate crb_wait_for_reg_32
Encapsulated crb_wait_for_reg32() so that state changes in other CRB registers than TPM_CRB_CTRL_REQ_x can be waited. Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> Reviewed-by: Jerry Snitselaar <jsnitsel@redhat.com> Tested-by: Gang Wei <gang.wei@intel.com>
This commit is contained in:
parent
13b1f4a571
commit
38eb24ebb0
|
@ -121,6 +121,25 @@ static int __maybe_unused crb_go_idle(struct device *dev, struct crb_priv *priv)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static bool crb_wait_for_reg_32(u32 __iomem *reg, u32 mask, u32 value,
|
||||
unsigned long timeout)
|
||||
{
|
||||
ktime_t start;
|
||||
ktime_t stop;
|
||||
|
||||
start = ktime_get();
|
||||
stop = ktime_add(start, ms_to_ktime(timeout));
|
||||
|
||||
do {
|
||||
if ((ioread32(reg) & mask) == value)
|
||||
return true;
|
||||
|
||||
usleep_range(50, 100);
|
||||
} while (ktime_before(ktime_get(), stop));
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* crb_cmd_ready - request tpm crb device to enter ready state
|
||||
*
|
||||
|
@ -138,24 +157,14 @@ static int __maybe_unused crb_go_idle(struct device *dev, struct crb_priv *priv)
|
|||
static int __maybe_unused crb_cmd_ready(struct device *dev,
|
||||
struct crb_priv *priv)
|
||||
{
|
||||
ktime_t stop, start;
|
||||
u32 req;
|
||||
|
||||
if (priv->flags & CRB_FL_ACPI_START)
|
||||
return 0;
|
||||
|
||||
iowrite32(CRB_CTRL_REQ_CMD_READY, &priv->regs_t->ctrl_req);
|
||||
|
||||
start = ktime_get();
|
||||
stop = ktime_add(start, ms_to_ktime(TPM2_TIMEOUT_C));
|
||||
do {
|
||||
req = ioread32(&priv->regs_t->ctrl_req);
|
||||
if (!(req & CRB_CTRL_REQ_CMD_READY))
|
||||
return 0;
|
||||
usleep_range(50, 100);
|
||||
} while (ktime_before(ktime_get(), stop));
|
||||
|
||||
if (ioread32(&priv->regs_t->ctrl_req) & CRB_CTRL_REQ_CMD_READY) {
|
||||
if (!crb_wait_for_reg_32(&priv->regs_t->ctrl_req,
|
||||
CRB_CTRL_REQ_CMD_READY /* mask */,
|
||||
0, /* value */
|
||||
TPM2_TIMEOUT_C)) {
|
||||
dev_warn(dev, "cmdReady timed out\n");
|
||||
return -ETIME;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue