Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934012AbcCPAoc (ORCPT ); Tue, 15 Mar 2016 20:44:32 -0400 Received: from e32.co.us.ibm.com ([32.97.110.150]:52227 "EHLO e32.co.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932337AbcCPAo3 (ORCPT ); Tue, 15 Mar 2016 20:44:29 -0400 X-IBM-Helo: d03dlp01.boulder.ibm.com X-IBM-MailFrom: stefanb@linux.vnet.ibm.com X-IBM-RcptTo: linux-kernel@vger.kernel.org Subject: Re: [tpmdd-devel] [PATCH] tpm_crb: drop struct resource res from struct crb_priv To: Jarkko Sakkinen , Peter Huewe References: <1458077800-22594-1-git-send-email-jarkko.sakkinen@linux.intel.com> Cc: tpmdd-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org From: Stefan Berger Message-ID: <56E8AC68.7040602@linux.vnet.ibm.com> Date: Tue, 15 Mar 2016 20:44:24 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 In-Reply-To: <1458077800-22594-1-git-send-email-jarkko.sakkinen@linux.intel.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 16031600-0005-0000-0000-00001DB10DBE Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3735 Lines: 113 On 03/15/2016 05:36 PM, Jarkko Sakkinen wrote: > The iomem resource is needed only temporarily so it is better to pass > it on instead of storing it permanently. Named the variable as io_res > so that the code better documents itself. > > Signed-off-by: Jarkko Sakkinen Reviewed-by: Stefan Berger > --- > drivers/char/tpm/tpm_crb.c | 29 ++++++++++++++++------------- > 1 file changed, 16 insertions(+), 13 deletions(-) > > diff --git a/drivers/char/tpm/tpm_crb.c b/drivers/char/tpm/tpm_crb.c > index a12b319..8e02c44 100644 > --- a/drivers/char/tpm/tpm_crb.c > +++ b/drivers/char/tpm/tpm_crb.c > @@ -77,7 +77,6 @@ enum crb_flags { > > struct crb_priv { > unsigned int flags; > - struct resource res; > void __iomem *iobase; > struct crb_control_area __iomem *cca; > u8 __iomem *cmd; > @@ -224,19 +223,19 @@ static int crb_init(struct acpi_device *device, struct crb_priv *priv) > > static int crb_check_resource(struct acpi_resource *ares, void *data) > { > - struct crb_priv *priv = data; > + struct resource *io_res = data; > struct resource res; > > if (acpi_dev_resource_memory(ares, &res)) { > - priv->res = res; > - priv->res.name = NULL; > + *io_res = res; > + io_res->name = NULL; > } > > return 1; > } > > static void __iomem *crb_map_res(struct device *dev, struct crb_priv *priv, > - u64 start, u32 size) > + struct resource *io_res, u64 start, u32 size) > { > struct resource new_res = { > .start = start, > @@ -248,50 +247,54 @@ static void __iomem *crb_map_res(struct device *dev, struct crb_priv *priv, > if (start != new_res.start) > return ERR_PTR(-EINVAL); > > - if (!resource_contains(&priv->res, &new_res)) > + if (!resource_contains(io_res, &new_res)) > return devm_ioremap_resource(dev, &new_res); > > - return priv->iobase + (new_res.start - priv->res.start); > + return priv->iobase + (new_res.start - io_res->start); > } > > static int crb_map_io(struct acpi_device *device, struct crb_priv *priv, > struct acpi_table_tpm2 *buf) > { > struct list_head resources; > + struct resource io_res; > struct device *dev = &device->dev; > u64 pa; > int ret; > > INIT_LIST_HEAD(&resources); > ret = acpi_dev_get_resources(device, &resources, crb_check_resource, > - priv); > + &io_res); > if (ret < 0) > return ret; > acpi_dev_free_resource_list(&resources); > > - if (resource_type(&priv->res) != IORESOURCE_MEM) { > + if (resource_type(&io_res) != IORESOURCE_MEM) { > dev_err(dev, > FW_BUG "TPM2 ACPI table does not define a memory resource\n"); > return -EINVAL; > } > > - priv->iobase = devm_ioremap_resource(dev, &priv->res); > + priv->iobase = devm_ioremap_resource(dev, &io_res); > if (IS_ERR(priv->iobase)) > return PTR_ERR(priv->iobase); > > - priv->cca = crb_map_res(dev, priv, buf->control_address, 0x1000); > + priv->cca = crb_map_res(dev, priv, &io_res, buf->control_address, > + 0x1000); > if (IS_ERR(priv->cca)) > return PTR_ERR(priv->cca); > > pa = ((u64) ioread32(&priv->cca->cmd_pa_high) << 32) | > (u64) ioread32(&priv->cca->cmd_pa_low); > - priv->cmd = crb_map_res(dev, priv, pa, ioread32(&priv->cca->cmd_size)); > + priv->cmd = crb_map_res(dev, priv, &io_res, pa, > + ioread32(&priv->cca->cmd_size)); > if (IS_ERR(priv->cmd)) > return PTR_ERR(priv->cmd); > > memcpy_fromio(&pa, &priv->cca->rsp_pa, 8); > pa = le64_to_cpu(pa); > - priv->rsp = crb_map_res(dev, priv, pa, ioread32(&priv->cca->rsp_size)); > + priv->rsp = crb_map_res(dev, priv, &io_res, pa, > + ioread32(&priv->cca->rsp_size)); > return PTR_ERR_OR_ZERO(priv->rsp); > } >