From: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
To: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Cc: Lee Jones <lee.jones@linaro.org>,
Samuel Ortiz <sameo@linux.intel.com>,
Mark Brown <broonie@kernel.org>,
Mike Turquette <mturquette@linaro.org>,
Liam Girdwood <lgirdwood@gmail.com>,
Alessandro Zummo <a.zummo@towertech.it>,
Kukjin Kim <kgene.kim@samsung.com>,
Doug Anderson <dianders@chromium.org>,
Olof Johansson <olof@lixom.net>,
Sjoerd Simons <sjoerd.simons@collabora.co.uk>,
Daniel Stone <daniels@collabora.com>,
Tomeu Vizoso <tomeu.vizoso@collabora.com>,
linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
linux-samsung-soc@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4 10/14] regulator: Add driver for Maxim 77802 PMIC regulators
Date: Thu, 26 Jun 2014 13:26:47 +0200 [thread overview]
Message-ID: <53AC0377.40104@collabora.co.uk> (raw)
In-Reply-To: <1403777337.27156.19.camel@AMDC1943>
Hello Krzysztof,
Thanks a lot for your feedback.
On 06/26/2014 12:08 PM, Krzysztof Kozlowski wrote:
> On śro, 2014-06-25 at 21:03 +0200, Javier Martinez Canillas wrote:
>> The MAX77802 PMIC has 10 high-efficiency Buck and 32 Low-dropout
>> (LDO) regulators. This patch adds support for all these regulators
>> found on the MAX77802 PMIC and is based on a driver added by Simon
>> Glass to the Chrome OS kernel 3.8 tree.
>>
>> Signed-off-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
>> ---
>>
>> Changes since v3:
>> - Set the supply_name for regulators to lookup their parent supply node.
>> Suggested by Mark Brown.
>> - Change Exyno5 for Exynos5420/Exynos5800 in regulator driver Kconfig.
>> Suggested by Doug Anderson.
>>
>> Changes since v2:
>> - Use dev_warn() instead pr_warn(). Suggested by Mark Brown.
>> - Add a generic function to regmap core to copy registers instead of
>> having a driver-specific function. Suggested by Mark Brown.
>> - Remove unnecessary probe debug log. Suggested by Mark Brown.
>> - Set struct regulator_config dev field to MFD instead of the platform dev.
>> Suggested by Mark Brown.
>> - Read the regulators operational mode from the hardware registers instead
>> of setting to normal as default on probe. Suggested by Mark Brown.
>> - Remove unnecessary cross-subsystem dependencies. Suggested by Lee Jones.
>>
>> Changes since v1:
>> - Remove unneeded check if num_regulators != MAX77802_MAX_REGULATORS.
>> - Fix .set_suspend_mode handler comment and split regulators ops for
>> regulators that behave differently. Suggested by Mark Brown.
>> - Use module_platform_driver() instead of having init/exit functions.
>> Suggested by Mark Brown.
>> - Use the new descriptor-based GPIO interface instead of the deprecated
>> integer based GPIO one. Suggested by Mark Brown.
>> - Look for "regulators" child node instead of "voltage-regulators" to be
>> consistent with other PMIC drivers. Suggested by Mark Brown.
>
> (...)
>
>> +
>> +#ifdef CONFIG_OF
>> +static int max77802_pmic_dt_parse_pdata(struct platform_device *pdev,
>> + struct max77802_platform_data *pdata)
>> +{
>> + struct max77802_dev *iodev = dev_get_drvdata(pdev->dev.parent);
>> + struct device_node *pmic_np, *regulators_np;
>> + struct max77802_regulator_data *rdata;
>> + struct of_regulator_match rmatch;
>> + unsigned int i;
>> +
>> + pmic_np = iodev->dev->of_node;
>> + regulators_np = of_get_child_by_name(pmic_np, "regulators");
>> + if (!regulators_np) {
>> + dev_err(&pdev->dev, "could not find regulators sub-node\n");
>> + return -EINVAL;
>> + }
>> +
>> + pdata->num_regulators = ARRAY_SIZE(regulators);
>> + rdata = devm_kzalloc(&pdev->dev, sizeof(*rdata) *
>> + pdata->num_regulators, GFP_KERNEL);
>> + if (!rdata) {
>> + of_node_put(regulators_np);
>> + return -ENOMEM;
>> + }
>> +
>> + for (i = 0; i < pdata->num_regulators; i++) {
>> + rmatch.name = regulators[i].name;
>> + rmatch.init_data = NULL;
>> + rmatch.of_node = NULL;
>> + if (of_regulator_match(&pdev->dev, regulators_np, &rmatch,
>> + 1) != 1) {
>> + dev_warn(&pdev->dev, "No matching regulator for '%s'\n",
>> + rmatch.name);
>> + continue;
>> + }
>> + rdata[i].initdata = rmatch.init_data;
>> + rdata[i].of_node = rmatch.of_node;
>> + rdata[i].id = regulators[i].id;
>> + }
>
> I think instead of matching one by one you can alternatively match
> everything at once:
>
> static struct of_regulator_match regulator_matches[] = {
> { .name = "LDO1", },
> ....
> };
>
> if (of_regulator_match(&pdev->dev, regulators_np, regulator_matches,
> ARRAY_SIZE(regulator_matches)) {
>
> The code would be smaller although you would have to create an array
> with names of regulators. I'll leave it up to you since I don't have
> preference for it.
>
It's true that the code will be smaller and even more efficient by passing an
array of struct of_regulator_match instad but as you said I'll have to add
yet-another-table with duplicates information that is already present in the
struct regulator_desc regulators[] array.
That's why I prefer the code as it right now since I think that there are just
too many data structures in this driver. But I don't mind to use the other
approach though if you think that it's better.
> Best regards,
> Krzysztof
>
>
>
>
Best regards,
Javier
WARNING: multiple messages have this Message-ID (diff)
From: javier.martinez@collabora.co.uk (Javier Martinez Canillas)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 10/14] regulator: Add driver for Maxim 77802 PMIC regulators
Date: Thu, 26 Jun 2014 13:26:47 +0200 [thread overview]
Message-ID: <53AC0377.40104@collabora.co.uk> (raw)
In-Reply-To: <1403777337.27156.19.camel@AMDC1943>
Hello Krzysztof,
Thanks a lot for your feedback.
On 06/26/2014 12:08 PM, Krzysztof Kozlowski wrote:
> On ?ro, 2014-06-25 at 21:03 +0200, Javier Martinez Canillas wrote:
>> The MAX77802 PMIC has 10 high-efficiency Buck and 32 Low-dropout
>> (LDO) regulators. This patch adds support for all these regulators
>> found on the MAX77802 PMIC and is based on a driver added by Simon
>> Glass to the Chrome OS kernel 3.8 tree.
>>
>> Signed-off-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
>> ---
>>
>> Changes since v3:
>> - Set the supply_name for regulators to lookup their parent supply node.
>> Suggested by Mark Brown.
>> - Change Exyno5 for Exynos5420/Exynos5800 in regulator driver Kconfig.
>> Suggested by Doug Anderson.
>>
>> Changes since v2:
>> - Use dev_warn() instead pr_warn(). Suggested by Mark Brown.
>> - Add a generic function to regmap core to copy registers instead of
>> having a driver-specific function. Suggested by Mark Brown.
>> - Remove unnecessary probe debug log. Suggested by Mark Brown.
>> - Set struct regulator_config dev field to MFD instead of the platform dev.
>> Suggested by Mark Brown.
>> - Read the regulators operational mode from the hardware registers instead
>> of setting to normal as default on probe. Suggested by Mark Brown.
>> - Remove unnecessary cross-subsystem dependencies. Suggested by Lee Jones.
>>
>> Changes since v1:
>> - Remove unneeded check if num_regulators != MAX77802_MAX_REGULATORS.
>> - Fix .set_suspend_mode handler comment and split regulators ops for
>> regulators that behave differently. Suggested by Mark Brown.
>> - Use module_platform_driver() instead of having init/exit functions.
>> Suggested by Mark Brown.
>> - Use the new descriptor-based GPIO interface instead of the deprecated
>> integer based GPIO one. Suggested by Mark Brown.
>> - Look for "regulators" child node instead of "voltage-regulators" to be
>> consistent with other PMIC drivers. Suggested by Mark Brown.
>
> (...)
>
>> +
>> +#ifdef CONFIG_OF
>> +static int max77802_pmic_dt_parse_pdata(struct platform_device *pdev,
>> + struct max77802_platform_data *pdata)
>> +{
>> + struct max77802_dev *iodev = dev_get_drvdata(pdev->dev.parent);
>> + struct device_node *pmic_np, *regulators_np;
>> + struct max77802_regulator_data *rdata;
>> + struct of_regulator_match rmatch;
>> + unsigned int i;
>> +
>> + pmic_np = iodev->dev->of_node;
>> + regulators_np = of_get_child_by_name(pmic_np, "regulators");
>> + if (!regulators_np) {
>> + dev_err(&pdev->dev, "could not find regulators sub-node\n");
>> + return -EINVAL;
>> + }
>> +
>> + pdata->num_regulators = ARRAY_SIZE(regulators);
>> + rdata = devm_kzalloc(&pdev->dev, sizeof(*rdata) *
>> + pdata->num_regulators, GFP_KERNEL);
>> + if (!rdata) {
>> + of_node_put(regulators_np);
>> + return -ENOMEM;
>> + }
>> +
>> + for (i = 0; i < pdata->num_regulators; i++) {
>> + rmatch.name = regulators[i].name;
>> + rmatch.init_data = NULL;
>> + rmatch.of_node = NULL;
>> + if (of_regulator_match(&pdev->dev, regulators_np, &rmatch,
>> + 1) != 1) {
>> + dev_warn(&pdev->dev, "No matching regulator for '%s'\n",
>> + rmatch.name);
>> + continue;
>> + }
>> + rdata[i].initdata = rmatch.init_data;
>> + rdata[i].of_node = rmatch.of_node;
>> + rdata[i].id = regulators[i].id;
>> + }
>
> I think instead of matching one by one you can alternatively match
> everything at once:
>
> static struct of_regulator_match regulator_matches[] = {
> { .name = "LDO1", },
> ....
> };
>
> if (of_regulator_match(&pdev->dev, regulators_np, regulator_matches,
> ARRAY_SIZE(regulator_matches)) {
>
> The code would be smaller although you would have to create an array
> with names of regulators. I'll leave it up to you since I don't have
> preference for it.
>
It's true that the code will be smaller and even more efficient by passing an
array of struct of_regulator_match instad but as you said I'll have to add
yet-another-table with duplicates information that is already present in the
struct regulator_desc regulators[] array.
That's why I prefer the code as it right now since I think that there are just
too many data structures in this driver. But I don't mind to use the other
approach though if you think that it's better.
> Best regards,
> Krzysztof
>
>
>
>
Best regards,
Javier
next prev parent reply other threads:[~2014-06-26 11:26 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-25 19:03 [PATCH v4 00/14] Add Maxim 77802 PMIC support Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-25 19:03 ` [PATCH v4 01/14] mfd: max77686: Convert to use regmap_irq Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-25 19:03 ` [PATCH v4 02/14] mfd: max77686: Allow the max77686 rtc to wakeup the system Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-26 9:03 ` Krzysztof Kozlowski
2014-06-26 9:03 ` Krzysztof Kozlowski
2014-06-25 19:03 ` [PATCH v4 03/14] clk: max77686: Add DT include for MAX77686 PMIC clock Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-25 19:03 ` [PATCH v4 04/14] clk: max77686: Improve Maxim 77686 PMIC clocks binding Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-25 19:54 ` Doug Anderson
2014-06-25 19:54 ` Doug Anderson
2014-06-25 19:03 ` [PATCH v4 05/14] clk: Add generic driver for Maxim PMIC clocks Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-26 9:00 ` Krzysztof Kozlowski
2014-06-26 9:00 ` Krzysztof Kozlowski
2014-06-26 11:51 ` Yadwinder Singh Brar
2014-06-26 11:51 ` Yadwinder Singh Brar
2014-06-26 12:31 ` Javier Martinez Canillas
2014-06-26 12:31 ` Javier Martinez Canillas
2014-06-25 19:03 ` [PATCH v4 06/14] clk: max77686: Convert to the generic max clock driver Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-25 19:03 ` [PATCH v4 07/14] mfd: Add driver for Maxim 77802 Power Management IC Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-26 9:31 ` Krzysztof Kozlowski
2014-06-26 9:31 ` Krzysztof Kozlowski
2014-06-26 11:13 ` Javier Martinez Canillas
2014-06-26 11:13 ` Javier Martinez Canillas
2014-06-26 16:12 ` Doug Anderson
2014-06-26 16:12 ` Doug Anderson
[not found] ` <CAD=FV=U5sBQ4VDG65D4rTnfruo5XzQH_EMs4SMpO4BjY1UHA5Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-06-26 16:18 ` Javier Martinez Canillas
2014-06-26 16:18 ` Javier Martinez Canillas
2014-06-26 16:18 ` Javier Martinez Canillas
2014-06-26 16:29 ` Doug Anderson
2014-06-26 16:29 ` Doug Anderson
2014-06-26 16:36 ` Javier Martinez Canillas
2014-06-26 16:36 ` Javier Martinez Canillas
2014-06-25 19:03 ` [PATCH v4 08/14] mfd: max77802: Add DT binding documentation Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-25 19:03 ` [PATCH v4 09/14] regmap: Add regmap_reg_copy function Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-25 19:03 ` [PATCH v4 10/14] regulator: Add driver for Maxim 77802 PMIC regulators Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-26 10:08 ` Krzysztof Kozlowski
2014-06-26 10:08 ` Krzysztof Kozlowski
2014-06-26 11:26 ` Javier Martinez Canillas [this message]
2014-06-26 11:26 ` Javier Martinez Canillas
2014-06-25 19:03 ` [PATCH v4 11/14] clk: Add driver for Maxim 77802 PMIC clocks Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
[not found] ` <1403723019-6212-12-git-send-email-javier.martinez-ZGY8ohtN/8pPYcu2f3hruQ@public.gmane.org>
2014-06-26 10:40 ` Krzysztof Kozlowski
2014-06-26 10:40 ` Krzysztof Kozlowski
2014-06-26 10:40 ` Krzysztof Kozlowski
2014-06-25 19:03 ` [PATCH v4 12/14] clk: max77802: Add DT binding documentation Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-25 19:03 ` [PATCH v4 13/14] rtc: Add driver for Maxim 77802 PMIC Real-Time-Clock Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-25 19:03 ` [PATCH v4 14/14] ARM: dts: Add max77802 to exynos5420-peach-pit and exynos5800-peach-pi Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-26 13:32 ` [PATCH v4 00/14] Add Maxim 77802 PMIC support Naveen Krishna Ch
2014-06-26 13:32 ` Naveen Krishna Ch
[not found] ` <CAHfPSqB9620OiHxd_w3ReS6gg7PzYK1eN11rH6Z6boai0x=2og-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-06-26 13:56 ` Javier Martinez Canillas
2014-06-26 13:56 ` Javier Martinez Canillas
2014-06-26 13:56 ` Javier Martinez Canillas
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=53AC0377.40104@collabora.co.uk \
--to=javier.martinez@collabora.co.uk \
--cc=a.zummo@towertech.it \
--cc=broonie@kernel.org \
--cc=daniels@collabora.com \
--cc=devicetree@vger.kernel.org \
--cc=dianders@chromium.org \
--cc=k.kozlowski@samsung.com \
--cc=kgene.kim@samsung.com \
--cc=lee.jones@linaro.org \
--cc=lgirdwood@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=mturquette@linaro.org \
--cc=olof@lixom.net \
--cc=sameo@linux.intel.com \
--cc=sjoerd.simons@collabora.co.uk \
--cc=tomeu.vizoso@collabora.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 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.