From: vaibhav.hiremath@linaro.org (Vaibhav Hiremath)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH-v3 2/2] regulator: 88pm800: Add support for configuration of dual phase on BUCK1
Date: Tue, 25 Aug 2015 11:53:44 +0530 [thread overview]
Message-ID: <55DC09F0.6010109@linaro.org> (raw)
In-Reply-To: <55DBF3B9.4060602@samsung.com>
On Tuesday 25 August 2015 10:18 AM, Krzysztof Kozlowski wrote:
> On 24.08.2015 21:40, Vaibhav Hiremath wrote:
>> 88PM860 device supports dual phase mode on BUCK1 output.
>> In normal usecase, BUCK1A and BUCK1B operates independently with 3A
>> capacity. And they both can work as a dual phase providing 6A capacity.
>>
>> This patch updates the regulator driver to read the respective
>> DT property and enable dual-phase mode on BUCK1.
>> Note that if dual phase mode is enabled, then BUCK1B will not be
>> registered to the regulator framework and the current capacity of
>> BUCK1(A) would be set to 6A [3A of BUCK1A + 3A of BUCK1B].
>>
>> Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>
>> ---
>> drivers/regulator/88pm800.c | 40 ++++++++++++++++++++++++++++++++++++++++
>> include/linux/mfd/88pm80x.h | 3 +++
>> 2 files changed, 43 insertions(+)
>>
>> diff --git a/drivers/regulator/88pm800.c b/drivers/regulator/88pm800.c
>> index 365a154..7aca6d17 100644
>> --- a/drivers/regulator/88pm800.c
>> +++ b/drivers/regulator/88pm800.c
>> @@ -267,6 +267,37 @@ static struct pm800_regulator_info pm860_regulator_info[] = {
>> PM800_LDO(ldo20, LDO20, LDO_ENA1_3, 3, 10000, ldo_volt_table2),
>> };
>>
>> +static int pm800_regulator_init(struct platform_device *pdev,
>> + struct pm800_regulator_info *info)
>> +{
>> + struct pm800_regulators *pm800_data = platform_get_drvdata(pdev);
>> + struct pm80x_chip *chip = pm800_data->chip;
>> + int ret = 0;
>> +
>> + /* Currently only supported on 88pm860 device */
>> + if (chip->type != CHIP_PM860)
>> + return 0;
>> +
>> + if (of_property_read_bool(pdev->dev.of_node,
>> + "marvell,88pm860-buck1-dualphase-en")) {
>> + /* Update the constraint to [3A (BUCK1A) + 3A (BUCK1B)] */
>> + info[PM800_ID_BUCK1].max_ua = 6000000;
>> + /* Remove BUCK1B from the list, as we are in dual phase mode */
>> + memset(&info[PM800_ID_BUCK1B], 0, sizeof(*info));
>> + /* Enable dual phase mode */
>> + ret = regmap_update_bits(chip->subchip->regmap_power,
>> + PM860_BUCK1_MISC,
>> + BUCK1_DUAL_PHASE_SEL,
>> + BUCK1_DUAL_PHASE_SEL);
>> + if (ret) {
>> + dev_err(chip->dev, "failed to set dual-pase mode %d\n", ret);
>> + return ret;
>> + }
>> + }
>> +
>> + return ret;
>> +}
>> +
>> static int pm800_regulator_probe(struct platform_device *pdev)
>> {
>> struct pm80x_chip *chip = dev_get_drvdata(pdev->dev.parent);
>> @@ -311,11 +342,20 @@ static int pm800_regulator_probe(struct platform_device *pdev)
>> return -ENODEV;
>> }
>>
>> + ret = pm800_regulator_init(pdev, info);
>> + if (ret) {
>> + dev_err(&pdev->dev, "failed to init 88pm800 regulator device\n");
>> + return ret;
>> + }
>> +
>> config.dev = chip->dev;
>> config.regmap = pm800_data->map;
>> for (i = 0; i < PM800_ID_RG_MAX; i++) {
>> struct regulator_dev *regulator;
>>
>> + if (!info[i].desc.name)
>> + continue;
>
> How the driver was working without this on 88PM800? There is a gap in
> pm800_regulator_info - three regulators are not set.
>
I have 88PM860 based board, where the whole array will be filled up.
So it was missed I guess :)
But when I introduced logic for skipping BUCK1B, I hit this.
And here is the fix.
> The patch itself looks good
> Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
>
Thanks for your review.
Thanks,
Vaibhav
WARNING: multiple messages have this Message-ID (diff)
From: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>
To: Krzysztof Kozlowski <k.kozlowski@samsung.com>,
linux-arm-kernel@lists.infradead.org
Cc: robh+dt@kernel.org, devicetree@vger.kernel.org,
lee.jones@linaro.org, broonie@kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH-v3 2/2] regulator: 88pm800: Add support for configuration of dual phase on BUCK1
Date: Tue, 25 Aug 2015 11:53:44 +0530 [thread overview]
Message-ID: <55DC09F0.6010109@linaro.org> (raw)
In-Reply-To: <55DBF3B9.4060602@samsung.com>
On Tuesday 25 August 2015 10:18 AM, Krzysztof Kozlowski wrote:
> On 24.08.2015 21:40, Vaibhav Hiremath wrote:
>> 88PM860 device supports dual phase mode on BUCK1 output.
>> In normal usecase, BUCK1A and BUCK1B operates independently with 3A
>> capacity. And they both can work as a dual phase providing 6A capacity.
>>
>> This patch updates the regulator driver to read the respective
>> DT property and enable dual-phase mode on BUCK1.
>> Note that if dual phase mode is enabled, then BUCK1B will not be
>> registered to the regulator framework and the current capacity of
>> BUCK1(A) would be set to 6A [3A of BUCK1A + 3A of BUCK1B].
>>
>> Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>
>> ---
>> drivers/regulator/88pm800.c | 40 ++++++++++++++++++++++++++++++++++++++++
>> include/linux/mfd/88pm80x.h | 3 +++
>> 2 files changed, 43 insertions(+)
>>
>> diff --git a/drivers/regulator/88pm800.c b/drivers/regulator/88pm800.c
>> index 365a154..7aca6d17 100644
>> --- a/drivers/regulator/88pm800.c
>> +++ b/drivers/regulator/88pm800.c
>> @@ -267,6 +267,37 @@ static struct pm800_regulator_info pm860_regulator_info[] = {
>> PM800_LDO(ldo20, LDO20, LDO_ENA1_3, 3, 10000, ldo_volt_table2),
>> };
>>
>> +static int pm800_regulator_init(struct platform_device *pdev,
>> + struct pm800_regulator_info *info)
>> +{
>> + struct pm800_regulators *pm800_data = platform_get_drvdata(pdev);
>> + struct pm80x_chip *chip = pm800_data->chip;
>> + int ret = 0;
>> +
>> + /* Currently only supported on 88pm860 device */
>> + if (chip->type != CHIP_PM860)
>> + return 0;
>> +
>> + if (of_property_read_bool(pdev->dev.of_node,
>> + "marvell,88pm860-buck1-dualphase-en")) {
>> + /* Update the constraint to [3A (BUCK1A) + 3A (BUCK1B)] */
>> + info[PM800_ID_BUCK1].max_ua = 6000000;
>> + /* Remove BUCK1B from the list, as we are in dual phase mode */
>> + memset(&info[PM800_ID_BUCK1B], 0, sizeof(*info));
>> + /* Enable dual phase mode */
>> + ret = regmap_update_bits(chip->subchip->regmap_power,
>> + PM860_BUCK1_MISC,
>> + BUCK1_DUAL_PHASE_SEL,
>> + BUCK1_DUAL_PHASE_SEL);
>> + if (ret) {
>> + dev_err(chip->dev, "failed to set dual-pase mode %d\n", ret);
>> + return ret;
>> + }
>> + }
>> +
>> + return ret;
>> +}
>> +
>> static int pm800_regulator_probe(struct platform_device *pdev)
>> {
>> struct pm80x_chip *chip = dev_get_drvdata(pdev->dev.parent);
>> @@ -311,11 +342,20 @@ static int pm800_regulator_probe(struct platform_device *pdev)
>> return -ENODEV;
>> }
>>
>> + ret = pm800_regulator_init(pdev, info);
>> + if (ret) {
>> + dev_err(&pdev->dev, "failed to init 88pm800 regulator device\n");
>> + return ret;
>> + }
>> +
>> config.dev = chip->dev;
>> config.regmap = pm800_data->map;
>> for (i = 0; i < PM800_ID_RG_MAX; i++) {
>> struct regulator_dev *regulator;
>>
>> + if (!info[i].desc.name)
>> + continue;
>
> How the driver was working without this on 88PM800? There is a gap in
> pm800_regulator_info - three regulators are not set.
>
I have 88PM860 based board, where the whole array will be filled up.
So it was missed I guess :)
But when I introduced logic for skipping BUCK1B, I hit this.
And here is the fix.
> The patch itself looks good
> Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
>
Thanks for your review.
Thanks,
Vaibhav
next prev parent reply other threads:[~2015-08-25 6:23 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-24 12:40 [PATCH-v3 0/2] regulator: 88pm800: Add dual phase mode support on BUCK1 Vaibhav Hiremath
2015-08-24 12:40 ` Vaibhav Hiremath
2015-08-24 12:40 ` [PATCH-v3 1/2] mfd: devicetree: bindings: 88pm800: Add DT property for dual phase enable Vaibhav Hiremath
2015-08-24 12:40 ` Vaibhav Hiremath
2015-08-24 12:40 ` Vaibhav Hiremath
2015-08-24 13:02 ` Lee Jones
2015-08-24 13:02 ` Lee Jones
2015-08-24 13:02 ` Lee Jones
2015-08-24 14:54 ` Vaibhav Hiremath
2015-08-24 14:54 ` Vaibhav Hiremath
2015-08-27 18:45 ` Mark Brown
2015-08-27 18:45 ` Mark Brown
2015-08-27 18:45 ` Mark Brown
2015-08-24 12:40 ` [PATCH-v3 2/2] regulator: 88pm800: Add support for configuration of dual phase on BUCK1 Vaibhav Hiremath
2015-08-24 12:40 ` Vaibhav Hiremath
2015-08-25 4:48 ` Krzysztof Kozlowski
2015-08-25 4:48 ` Krzysztof Kozlowski
2015-08-25 6:23 ` Vaibhav Hiremath [this message]
2015-08-25 6:23 ` Vaibhav Hiremath
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=55DC09F0.6010109@linaro.org \
--to=vaibhav.hiremath@linaro.org \
--cc=linux-arm-kernel@lists.infradead.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.