On Mon, Sep 12, 2016 at 04:04:20PM +0300, Tomas Winkler wrote:
> 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.wink...@intel.com>

Use pm_runtime_put().

Tested-by: Jarkko Sakkinen <jarkko.sakk...@linux.intel.com>

> ---
> V2: new in the series
> V3: resend
>  drivers/char/tpm/tpm_crb.c | 26 ++++++++++----------------
>  1 file changed, 10 insertions(+), 16 deletions(-)
> 
> diff --git a/drivers/char/tpm/tpm_crb.c b/drivers/char/tpm/tpm_crb.c
> index e945177cf2c8..b0c0e2c9022b 100644
> --- a/drivers/char/tpm/tpm_crb.c
> +++ b/drivers/char/tpm/tpm_crb.c
> @@ -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;
> @@ -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;
> @@ -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);
>  
> -- 
> 2.7.4
> 

Reply via email to