Skip to content

Commit

Permalink
tpm/tpm_crb: open code the crb_init into acpi_add
Browse files Browse the repository at this point in the history
This is preparation step for implementing tpm crb
runtime pm. We need to have tpm chip allocated
and populated before we access the runtime handlers.

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Tested-by: Jarkko Sakkinen <jarkko.sakkinn@linux.intel.com>
  • Loading branch information
Winkler, Tomas authored and Jarkko Sakkinen committed Sep 16, 2016
1 parent 9514ff1 commit 0c22db4
Showing 1 changed file with 10 additions and 16 deletions.
26 changes: 10 additions & 16 deletions drivers/char/tpm/tpm_crb.c
Original file line number Diff line number Diff line change
Expand Up @@ -265,21 +265,6 @@ static const struct tpm_class_ops tpm_crb = {
.req_complete_val = CRB_DRV_STS_COMPLETE,
};

static int crb_init(struct acpi_device *device, struct crb_priv *priv)
{
struct tpm_chip *chip;

chip = tpmm_chip_alloc(&device->dev, &tpm_crb);
if (IS_ERR(chip))
return PTR_ERR(chip);

dev_set_drvdata(&chip->dev, priv);
chip->acpi_dev_handle = device->handle;
chip->flags = TPM_CHIP_FLAG_TPM2;

return tpm_chip_register(chip);
}

static int crb_check_resource(struct acpi_resource *ares, void *data)
{
struct resource *io_res = data;
Expand Down Expand Up @@ -401,6 +386,7 @@ static int crb_acpi_add(struct acpi_device *device)
{
struct acpi_table_tpm2 *buf;
struct crb_priv *priv;
struct tpm_chip *chip;
struct device *dev = &device->dev;
acpi_status status;
u32 sm;
Expand Down Expand Up @@ -438,11 +424,19 @@ static int crb_acpi_add(struct acpi_device *device)
if (rc)
return rc;

chip = tpmm_chip_alloc(dev, &tpm_crb);
if (IS_ERR(chip))
return PTR_ERR(chip);

dev_set_drvdata(&chip->dev, priv);
chip->acpi_dev_handle = device->handle;
chip->flags = TPM_CHIP_FLAG_TPM2;

rc = crb_cmd_ready(dev, priv);
if (rc)
return rc;

rc = crb_init(device, priv);
rc = tpm_chip_register(chip);
if (rc)
crb_go_idle(dev, priv);

Expand Down

0 comments on commit 0c22db4

Please sign in to comment.