From: Rhyland Klein <rklein-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
To: Mark Brown
<broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>
Cc: Liam Girdwood <lrg-l0cyMroinI0@public.gmane.org>,
Grant Likely
<grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org>,
Rob Herring <rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>,
Samuel Ortiz <sameo-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>,
"devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org"
<devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org>,
"linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: [PATCH 3/4] mfd: tps65910: Add device-tree support
Date: Wed, 18 Apr 2012 12:35:58 -0700 [thread overview]
Message-ID: <1334777758.32315.37.camel@rklein-linux> (raw)
In-Reply-To: <20120418090133.GC3021-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>
On Wed, 2012-04-18 at 02:01 -0700, Mark Brown wrote:
> * PGP Signed by an unknown key
>
> On Tue, Apr 17, 2012 at 06:00:28PM -0700, Rhyland Klein wrote:
> > Add device tree based initialization support for TI's tps65910 pmic.
>
> Actually, now I look at the larger patch this probably wants to be split
> up by driver and possibly split further within that.
>
> > + board_data = tps65910->board_data;
> > + if (board_data->use_dt_for_init_data && tps65910->dev->of_node)
> > + ret = tps65910_gpio_parse_dt(tps65910->dev, board_data);
> > +
>
> This is a really odd idiom - normally the pattern for device tree
> support is to just go and try to use the device tree data if it's there
> and there's no need for any flag to say if it should be used.
>
I agree its odd. My concern was that the idiom is that is pdata assigned
from board files should override dt data. At this point, we don't know
where the tps65910->board_data is coming from, dt or board files.
Arbitrarily using dt breaks that idiom. We could do a check like this if
you prefer:
if (!(dev_get_platdata(tps65910->dev) && tps65910->dev->of_node)
i.e. if doesn't have pdata supplied from board files, but does have dt
node.
> > + if (pdata->irq_base <= 0)
> > + pdata->irq_base = irq_alloc_descs(-1, 0, tps65910->irq_num, -1);
> > +
> > + if (pdata->irq_base <= 0) {
> > + dev_err(tps65910->dev, "Failed to allocate irq descs: %d\n",
> > + pdata->irq_base);
> > + return pdata->irq_base;
> > + }
> > +
> > + tps65910->irq_mask = 0xFFFFFF;
> > +
> > + mutex_init(&tps65910->irq_lock);
> > + tps65910->chip_irq = irq;
> > + tps65910->irq_base = pdata->irq_base;
>
> While this is needed for DT support it can be done separately and would
> probably be better split out into a separate patch.
>
ok.
> > + /* Pass of data to child devices */
> > + for (idx = 0; idx < ARRAY_SIZE(tps65910s); idx++) {
> > + tps65910s[idx].platform_data = pmic_plat_data;
> > + tps65910s[idx].pdata_size = sizeof(*pmic_plat_data);
> > + }
>
> Why is this needed - can't the DT parsing just be moved where it's used?
>
> > + for_each_child_of_node(regulators, child) {
> > + struct regulator_init_data *init_data;
> > +
> > + init_data = of_get_regulator_init_data(&pdev->dev, child);
> > + if (!init_data) {
> > + dev_err(&pdev->dev,
> > + "failed to parse DT for regulator %s\n",
> > + child->name);
> > + return -EINVAL;
> > + }
> > +
> > + for (idx = 0; idx < pmic->num_regulators; idx++) {
>
> Hrm, this iteration over a group of regulators to find the relevant
> node by name is going to be a fairly common pattern (there's already
> at least one driver doing this IIRC) - we should really factor it out
> into common code. Please consider doing this when you resubmit.
Ok.
>
> > + if (!strcasecmp(info[idx].name, child->name)) {
> > + if (all_data[idx]) {
> > + dev_err(&pdev->dev,
> > + "Duplicate Regulator Node %s\n",
>
> Please fix the capitalisation in the error message.
>
> > + /* Check to see if we iterated without finding its name */
> > + if (idx == pmic->num_regulators) {
> > + dev_err(&pdev->dev,
> > + "Unknown regulator node found [%s]\n",
> > + child->name);
> > + return -EINVAL;
> > + }
>
> It'd seem more robust to only print the warning and not return the
> error, that way we don't completely fail the device initialisation if
> there's data we don't understand.
>
> I'm also not seeing a change here that passes the DT node to
> regulator_register() - you should be doing that, it's needed so
> consumers can bind to the regulator.
> * Unknown Key
> * 0x6E30FDDD
Thanks,
rhyland
WARNING: multiple messages have this Message-ID (diff)
From: Rhyland Klein <rklein@nvidia.com>
To: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: Liam Girdwood <lrg@ti.com>,
Grant Likely <grant.likely@secretlab.ca>,
Rob Herring <rob.herring@calxeda.com>,
Samuel Ortiz <sameo@linux.intel.com>,
"devicetree-discuss@lists.ozlabs.org"
<devicetree-discuss@lists.ozlabs.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-tegra@vger.kernel.org" <linux-tegra@vger.kernel.org>
Subject: Re: [PATCH 3/4] mfd: tps65910: Add device-tree support
Date: Wed, 18 Apr 2012 12:35:58 -0700 [thread overview]
Message-ID: <1334777758.32315.37.camel@rklein-linux> (raw)
In-Reply-To: <20120418090133.GC3021@opensource.wolfsonmicro.com>
On Wed, 2012-04-18 at 02:01 -0700, Mark Brown wrote:
> * PGP Signed by an unknown key
>
> On Tue, Apr 17, 2012 at 06:00:28PM -0700, Rhyland Klein wrote:
> > Add device tree based initialization support for TI's tps65910 pmic.
>
> Actually, now I look at the larger patch this probably wants to be split
> up by driver and possibly split further within that.
>
> > + board_data = tps65910->board_data;
> > + if (board_data->use_dt_for_init_data && tps65910->dev->of_node)
> > + ret = tps65910_gpio_parse_dt(tps65910->dev, board_data);
> > +
>
> This is a really odd idiom - normally the pattern for device tree
> support is to just go and try to use the device tree data if it's there
> and there's no need for any flag to say if it should be used.
>
I agree its odd. My concern was that the idiom is that is pdata assigned
from board files should override dt data. At this point, we don't know
where the tps65910->board_data is coming from, dt or board files.
Arbitrarily using dt breaks that idiom. We could do a check like this if
you prefer:
if (!(dev_get_platdata(tps65910->dev) && tps65910->dev->of_node)
i.e. if doesn't have pdata supplied from board files, but does have dt
node.
> > + if (pdata->irq_base <= 0)
> > + pdata->irq_base = irq_alloc_descs(-1, 0, tps65910->irq_num, -1);
> > +
> > + if (pdata->irq_base <= 0) {
> > + dev_err(tps65910->dev, "Failed to allocate irq descs: %d\n",
> > + pdata->irq_base);
> > + return pdata->irq_base;
> > + }
> > +
> > + tps65910->irq_mask = 0xFFFFFF;
> > +
> > + mutex_init(&tps65910->irq_lock);
> > + tps65910->chip_irq = irq;
> > + tps65910->irq_base = pdata->irq_base;
>
> While this is needed for DT support it can be done separately and would
> probably be better split out into a separate patch.
>
ok.
> > + /* Pass of data to child devices */
> > + for (idx = 0; idx < ARRAY_SIZE(tps65910s); idx++) {
> > + tps65910s[idx].platform_data = pmic_plat_data;
> > + tps65910s[idx].pdata_size = sizeof(*pmic_plat_data);
> > + }
>
> Why is this needed - can't the DT parsing just be moved where it's used?
>
> > + for_each_child_of_node(regulators, child) {
> > + struct regulator_init_data *init_data;
> > +
> > + init_data = of_get_regulator_init_data(&pdev->dev, child);
> > + if (!init_data) {
> > + dev_err(&pdev->dev,
> > + "failed to parse DT for regulator %s\n",
> > + child->name);
> > + return -EINVAL;
> > + }
> > +
> > + for (idx = 0; idx < pmic->num_regulators; idx++) {
>
> Hrm, this iteration over a group of regulators to find the relevant
> node by name is going to be a fairly common pattern (there's already
> at least one driver doing this IIRC) - we should really factor it out
> into common code. Please consider doing this when you resubmit.
Ok.
>
> > + if (!strcasecmp(info[idx].name, child->name)) {
> > + if (all_data[idx]) {
> > + dev_err(&pdev->dev,
> > + "Duplicate Regulator Node %s\n",
>
> Please fix the capitalisation in the error message.
>
> > + /* Check to see if we iterated without finding its name */
> > + if (idx == pmic->num_regulators) {
> > + dev_err(&pdev->dev,
> > + "Unknown regulator node found [%s]\n",
> > + child->name);
> > + return -EINVAL;
> > + }
>
> It'd seem more robust to only print the warning and not return the
> error, that way we don't completely fail the device initialisation if
> there's data we don't understand.
>
> I'm also not seeing a change here that passes the DT node to
> regulator_register() - you should be doing that, it's needed so
> consumers can bind to the regulator.
> * Unknown Key
> * 0x6E30FDDD
Thanks,
rhyland
next prev parent reply other threads:[~2012-04-18 19:35 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-18 1:00 [PATCH 0/4] Update TPS65910 to boot using devicetree Rhyland Klein
2012-04-18 1:00 ` Rhyland Klein
2012-04-18 1:00 ` [PATCH 1/4] regulator: tps65910: update type for regmap Rhyland Klein
2012-04-18 1:00 ` Rhyland Klein
[not found] ` <1334710829-22777-2-git-send-email-rklein-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-04-18 9:25 ` Mark Brown
2012-04-18 9:25 ` Mark Brown
[not found] ` <20120418092547.GE3021-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>
2012-04-18 20:03 ` Rhyland Klein
2012-04-18 20:03 ` Rhyland Klein
2012-04-18 20:19 ` Rhyland Klein
2012-04-18 20:19 ` Rhyland Klein
2012-04-19 12:54 ` Mark Brown
2012-04-19 12:54 ` Mark Brown
2012-04-18 1:00 ` [PATCH 2/4] regulator: tps65910: Add device tree bindings Rhyland Klein
2012-04-18 1:00 ` Rhyland Klein
[not found] ` <1334710829-22777-3-git-send-email-rklein-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-04-18 8:35 ` Mark Brown
2012-04-18 8:35 ` Mark Brown
2012-04-18 1:00 ` [PATCH 3/4] mfd: tps65910: Add device-tree support Rhyland Klein
2012-04-18 1:00 ` Rhyland Klein
[not found] ` <1334710829-22777-4-git-send-email-rklein-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-04-18 9:01 ` Mark Brown
2012-04-18 9:01 ` Mark Brown
[not found] ` <20120418090133.GC3021-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>
2012-04-18 19:35 ` Rhyland Klein [this message]
2012-04-18 19:35 ` Rhyland Klein
2012-04-19 12:50 ` Mark Brown
[not found] ` <20120419125041.GH3046-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>
2012-04-19 15:35 ` Stephen Warren
2012-04-19 15:35 ` Stephen Warren
[not found] ` <4F9030D5.2050601-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-04-19 16:34 ` Mark Brown
2012-04-19 16:34 ` Mark Brown
[not found] ` <1334710829-22777-1-git-send-email-rklein-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-04-18 1:00 ` [PATCH 4/4] ARM: Tegra: Add support for TPS65910 PMIC Rhyland Klein
2012-04-18 1:00 ` Rhyland Klein
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=1334777758.32315.37.camel@rklein-linux \
--to=rklein-ddmlm1+adcrqt0dzr+alfa@public.gmane.org \
--cc=broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org \
--cc=devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \
--cc=grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=lrg-l0cyMroinI0@public.gmane.org \
--cc=rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org \
--cc=sameo-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.