mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Aaron Sierra <asierra@xes-inc.com>
To: Lee Jones <lee.jones@linaro.org>
Cc: linux-kernel <linux-kernel@vger.kernel.org>,
	Peter Tyser <ptyser@xes-inc.com>,
	Guenter Roeck <linux@roeck-us.net>,
	Jean Delvare <jdelvare@suse.com>,
	Samuel Ortiz <sameo@linux.intel.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Mika Westerberg <mika.westerberg@linux.intel.com>,
	Matt Fleming <matt.fleming@intel.com>
Subject: Re: [PATCH] mfd: lpc_ich: Separate device cells for clarity
Date: Mon, 21 Sep 2015 12:37:34 -0500 (CDT)	[thread overview]
Message-ID: <1554180696.72059.1442857054315.JavaMail.zimbra@xes-inc.com> (raw)
In-Reply-To: <20150919101606.GS3218@x1>

----- Original Message -----
> From: "Lee Jones" <lee.jones@linaro.org>
> Sent: Saturday, September 19, 2015 5:16:06 AM
> 
> On Thu, 03 Sep 2015, Aaron Sierra wrote:
> 
> > The lpc_ich_cells array gives the wrong impression about the
> > relationship between the watchdog and GPIO devices. They are
> > completely distinct devices, so this patch separates the
> > array into distinct mfd_cell structs per device.
> 
> What does this mean?  In what way are they distinct?

Lee,
This issue was discussed in late July regarding this patch Matt Fleming submitted:

    [PATCH 1/5] iTCO_wdt: Expose watchdog properties using platform data

You asked why there were multiple calls to mfd_add_devices() in the driver.
The reason that I provided was that the WDT cells can be registered even
if the GPIO cells cannot. And vice versa.

Having their cells stored in the same array added to the illusion that a
failure preparing/registering the cells of one should cause all cells to
be unregistered.

-Aaron

> > A side effect of removing the array, is that the lpc_cells enum
> > is no longer needed.
> > 
> > Signed-off-by: Aaron Sierra <asierra@xes-inc.com>
> > ---
> >  drivers/mfd/lpc_ich.c | 42 ++++++++++++++++++------------------------
> >  1 file changed, 18 insertions(+), 24 deletions(-)
> > 
> > diff --git a/drivers/mfd/lpc_ich.c b/drivers/mfd/lpc_ich.c
> > index 8de3439..7a01d430 100644
> > --- a/drivers/mfd/lpc_ich.c
> > +++ b/drivers/mfd/lpc_ich.c
> > @@ -131,24 +131,18 @@ static struct resource gpio_ich_res[] = {
> >  	},
> >  };
> >  
> > -enum lpc_cells {
> > -	LPC_WDT = 0,
> > -	LPC_GPIO,
> > +static struct mfd_cell lpc_ich_wdt_cell = {
> > +	.name = "iTCO_wdt",
> > +	.num_resources = ARRAY_SIZE(wdt_ich_res),
> > +	.resources = wdt_ich_res,
> > +	.ignore_resource_conflicts = true,
> >  };
> >  
> > -static struct mfd_cell lpc_ich_cells[] = {
> > -	[LPC_WDT] = {
> > -		.name = "iTCO_wdt",
> > -		.num_resources = ARRAY_SIZE(wdt_ich_res),
> > -		.resources = wdt_ich_res,
> > -		.ignore_resource_conflicts = true,
> > -	},
> > -	[LPC_GPIO] = {
> > -		.name = "gpio_ich",
> > -		.num_resources = ARRAY_SIZE(gpio_ich_res),
> > -		.resources = gpio_ich_res,
> > -		.ignore_resource_conflicts = true,
> > -	},
> > +static struct mfd_cell lpc_ich_gpio_cell = {
> > +	.name = "gpio_ich",
> > +	.num_resources = ARRAY_SIZE(gpio_ich_res),
> > +	.resources = gpio_ich_res,
> > +	.ignore_resource_conflicts = true,
> >  };
> >  
> >  /* chipset related info */
> > @@ -881,7 +875,7 @@ static int lpc_ich_init_gpio(struct pci_dev *dev)
> >  	base_addr = base_addr_cfg & 0x0000ff80;
> >  	if (!base_addr) {
> >  		dev_notice(&dev->dev, "I/O space for ACPI uninitialized\n");
> > -		lpc_ich_cells[LPC_GPIO].num_resources--;
> > +		lpc_ich_gpio_cell.num_resources--;
> >  		goto gpe0_done;
> >  	}
> >  
> > @@ -895,7 +889,7 @@ static int lpc_ich_init_gpio(struct pci_dev *dev)
> >  		 * the platform_device subsystem doesn't see this resource
> >  		 * or it will register an invalid region.
> >  		 */
> > -		lpc_ich_cells[LPC_GPIO].num_resources--;
> > +		lpc_ich_gpio_cell.num_resources--;
> >  		acpi_conflict = true;
> >  	} else {
> >  		lpc_ich_enable_acpi_space(dev);
> > @@ -933,14 +927,14 @@ gpe0_done:
> >  	lpc_chipset_info[priv->chipset].use_gpio = ret;
> >  	lpc_ich_enable_gpio_space(dev);
> >  
> > -	lpc_ich_finalize_cell(dev, &lpc_ich_cells[LPC_GPIO]);
> > +	lpc_ich_finalize_cell(dev, &lpc_ich_gpio_cell);
> >  	ret = mfd_add_devices(&dev->dev, PLATFORM_DEVID_AUTO,
> > -			      &lpc_ich_cells[LPC_GPIO], 1, NULL, 0, NULL);
> > +			      &lpc_ich_gpio_cell, 1, NULL, 0, NULL);
> >  
> >  gpio_done:
> >  	if (acpi_conflict)
> >  		pr_warn("Resource conflict(s) found affecting %s\n",
> > -				lpc_ich_cells[LPC_GPIO].name);
> > +				lpc_ich_gpio_cell.name);
> >  	return ret;
> >  }
> >  
> > @@ -984,7 +978,7 @@ static int lpc_ich_init_wdt(struct pci_dev *dev)
> >  	 */
> >  	if (lpc_chipset_info[priv->chipset].iTCO_version == 1) {
> >  		/* Don't register iomem for TCO ver 1 */
> > -		lpc_ich_cells[LPC_WDT].num_resources--;
> > +		lpc_ich_wdt_cell.num_resources--;
> >  	} else if (lpc_chipset_info[priv->chipset].iTCO_version == 2) {
> >  		pci_read_config_dword(dev, RCBABASE, &base_addr_cfg);
> >  		base_addr = base_addr_cfg & 0xffffc000;
> > @@ -1007,9 +1001,9 @@ static int lpc_ich_init_wdt(struct pci_dev *dev)
> >  		res->end = base_addr + ACPIBASE_PMC_END;
> >  	}
> >  
> > -	lpc_ich_finalize_cell(dev, &lpc_ich_cells[LPC_WDT]);
> > +	lpc_ich_finalize_cell(dev, &lpc_ich_wdt_cell);
> >  	ret = mfd_add_devices(&dev->dev, PLATFORM_DEVID_AUTO,
> > -			      &lpc_ich_cells[LPC_WDT], 1, NULL, 0, NULL);
> > +			      &lpc_ich_wdt_cell, 1, NULL, 0, NULL);
> >  
> >  wdt_done:
> >  	return ret;

  reply	other threads:[~2015-09-21 17:40 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <665163563.75615.1441306612262.JavaMail.zimbra@xes-inc.com>
2015-09-03 19:14 ` Aaron Sierra
2015-09-17 16:17   ` Andy Shevchenko
2015-09-19 10:13     ` Lee Jones
2015-09-22 11:36       ` Andy Shevchenko
2015-09-19 10:16   ` Lee Jones
2015-09-21 17:37     ` Aaron Sierra [this message]
2015-09-21 23:13   ` Lee Jones
2015-09-22 22:41   ` Lee Jones
2015-09-23  0:04   ` [PATCH v2] " Aaron Sierra
2015-09-23  0:31     ` Lee Jones
2015-09-23 14:13       ` Aaron Sierra

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1554180696.72059.1442857054315.JavaMail.zimbra@xes-inc.com \
    --to=asierra@xes-inc.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=jdelvare@suse.com \
    --cc=lee.jones@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=matt.fleming@intel.com \
    --cc=mika.westerberg@linux.intel.com \
    --cc=ptyser@xes-inc.com \
    --cc=sameo@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome