summaryrefslogtreecommitdiffstats
path: root/drivers/char
diff options
context:
space:
mode:
authorJarkko Sakkinen <jarkko.sakkinen@linux.intel.com>2016-09-27 11:01:43 +0200
committerJarkko Sakkinen <jarkko.sakkinen@linux.intel.com>2016-09-27 11:01:43 +0200
commitcfa188220363647c332028c094eb4cae86c918ad (patch)
treea8bdee0b5d05664038e6c71010778bf20ca43d20 /drivers/char
parentRevert "tpm/tpm_crb: open code the crb_init into acpi_add" (diff)
downloadlinux-cfa188220363647c332028c094eb4cae86c918ad.tar.xz
linux-cfa188220363647c332028c094eb4cae86c918ad.zip
Revert "tmp/tpm_crb: fix Intel PTT hw bug during idle state"
This reverts commit 9514ff1961c6f0f5983ba72d94f384bc13e0d4a1. Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Diffstat (limited to 'drivers/char')
-rw-r--r--drivers/char/tpm/tpm_crb.c47
1 files changed, 8 insertions, 39 deletions
diff --git a/drivers/char/tpm/tpm_crb.c b/drivers/char/tpm/tpm_crb.c
index 2d1669c0f6c0..466d12b7fd46 100644
--- a/drivers/char/tpm/tpm_crb.c
+++ b/drivers/char/tpm/tpm_crb.c
@@ -318,7 +318,6 @@ static int crb_map_io(struct acpi_device *device, struct crb_priv *priv,
struct list_head resources;
struct resource io_res;
struct device *dev = &device->dev;
- u32 pa_high, pa_low;
u64 cmd_pa;
u32 cmd_size;
u64 rsp_pa;
@@ -346,27 +345,12 @@ static int crb_map_io(struct acpi_device *device, struct crb_priv *priv,
if (IS_ERR(priv->cca))
return PTR_ERR(priv->cca);
- /*
- * PTT HW bug w/a: wake up the device to access
- * possibly not retained registers.
- */
- ret = crb_cmd_ready(dev, priv);
- if (ret)
- return ret;
-
- pa_high = ioread32(&priv->cca->cmd_pa_high);
- pa_low = ioread32(&priv->cca->cmd_pa_low);
- cmd_pa = ((u64)pa_high << 32) | pa_low;
+ cmd_pa = ((u64) ioread32(&priv->cca->cmd_pa_high) << 32) |
+ (u64) ioread32(&priv->cca->cmd_pa_low);
cmd_size = ioread32(&priv->cca->cmd_size);
-
- dev_dbg(dev, "cmd_hi = %X cmd_low = %X cmd_size %X\n",
- pa_high, pa_low, cmd_size);
-
priv->cmd = crb_map_res(dev, priv, &io_res, cmd_pa, cmd_size);
- if (IS_ERR(priv->cmd)) {
- ret = PTR_ERR(priv->cmd);
- goto out;
- }
+ if (IS_ERR(priv->cmd))
+ return PTR_ERR(priv->cmd);
memcpy_fromio(&rsp_pa, &priv->cca->rsp_pa, 8);
rsp_pa = le64_to_cpu(rsp_pa);
@@ -374,8 +358,7 @@ static int crb_map_io(struct acpi_device *device, struct crb_priv *priv,
if (cmd_pa != rsp_pa) {
priv->rsp = crb_map_res(dev, priv, &io_res, rsp_pa, rsp_size);
- ret = PTR_ERR_OR_ZERO(priv->rsp);
- goto out;
+ return PTR_ERR_OR_ZERO(priv->rsp);
}
/* According to the PTP specification, overlapping command and response
@@ -383,18 +366,12 @@ static int crb_map_io(struct acpi_device *device, struct crb_priv *priv,
*/
if (cmd_size != rsp_size) {
dev_err(dev, FW_BUG "overlapping command and response buffer sizes are not identical");
- ret = -EINVAL;
- goto out;
+ return -EINVAL;
}
-
priv->cmd_size = cmd_size;
priv->rsp = priv->cmd;
-
-out:
- crb_go_idle(dev, priv);
-
- return ret;
+ return 0;
}
static int crb_acpi_add(struct acpi_device *device)
@@ -438,15 +415,7 @@ static int crb_acpi_add(struct acpi_device *device)
if (rc)
return rc;
- rc = crb_cmd_ready(dev, priv);
- if (rc)
- return rc;
-
- rc = crb_init(device, priv);
- if (rc)
- crb_go_idle(dev, priv);
-
- return rc;
+ return crb_init(device, priv);
}
static int crb_acpi_remove(struct acpi_device *device)