From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933819AbcIOGYz (ORCPT ); Thu, 15 Sep 2016 02:24:55 -0400 Received: from mga05.intel.com ([192.55.52.43]:38116 "EHLO mga05.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755583AbcIOGYy (ORCPT ); Thu, 15 Sep 2016 02:24:54 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.30,338,1470726000"; d="scan'208";a="8580097" Date: Thu, 15 Sep 2016 09:24:49 +0300 From: Jarkko Sakkinen To: Tomas Winkler Cc: tpmdd-devel@lists.sourceforge.net, Jason Gunthorpe , linux-kernel@vger.kernel.org Subject: Re: [PATCH v3 3/4] tpm/tpm_crb: open code the crb_init into acpi_add Message-ID: <20160915062449.GC12289@intel.com> References: <1473685461-6540-1-git-send-email-tomas.winkler@intel.com> <1473685461-6540-4-git-send-email-tomas.winkler@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1473685461-6540-4-git-send-email-tomas.winkler@intel.com> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 Use pm_runtime_put(). Tested-by: Jarkko Sakkinen > --- > 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 >