From: John Watts <contact@jookia.org>
To: Andre Przywara <andre.przywara@arm.com>
Cc: Chen-Yu Tsai <wens@csie.org>, Lee Jones <lee@kernel.org>,
Liam Girdwood <lgirdwood@gmail.com>,
Mark Brown <broonie@kernel.org>, Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
Conor Dooley <conor+dt@kernel.org>,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-sunxi@lists.linux.dev,
Jernej Skrabec <jernej.skrabec@gmail.com>,
Samuel Holland <samuel@sholland.org>,
Ryan Walklin <ryan@testtoast.com>,
Chris Morgan <macroalpha82@gmail.com>
Subject: Re: [PATCH 1/4] regulator: axp20x: AXP717: fix LDO supply rails and off-by-ones
Date: Sun, 14 Apr 2024 18:00:09 +1000 [thread overview]
Message-ID: <ZhuNCUnJri4hBOxx@titan> (raw)
In-Reply-To: <20240329235033.25309-2-andre.przywara@arm.com>
On Fri, Mar 29, 2024 at 11:50:30PM +0000, Andre Przywara wrote:
> The X-Powers AXP717 PMIC has separate input supply pins for each group
> of LDOs, so they are not all using the same DCDC1 input, as described
> currently.
>
> Replace the "supply" member of each LDO description with the respective
> group supply name, so that the supply dependencies can be correctly
> described in the devicetree.
> Also fix two off-by-ones in the regulator macros, after some double
> checking the numbers against the datasheet.
>
> Fixes: d2ac3df75c3a ("regulator: axp20x: add support for the AXP717")
> Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Hi,
> ---
> drivers/regulator/axp20x-regulator.c | 28 ++++++++++++++--------------
> 1 file changed, 14 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/regulator/axp20x-regulator.c b/drivers/regulator/axp20x-regulator.c
> index 34fcdd82b2eaa..3907606b091f6 100644
> --- a/drivers/regulator/axp20x-regulator.c
> +++ b/drivers/regulator/axp20x-regulator.c
> @@ -140,7 +140,7 @@
>
> #define AXP717_DCDC1_NUM_VOLTAGES 88
> #define AXP717_DCDC2_NUM_VOLTAGES 107
> -#define AXP717_DCDC3_NUM_VOLTAGES 104
> +#define AXP717_DCDC3_NUM_VOLTAGES 103
> #define AXP717_DCDC_V_OUT_MASK GENMASK(6, 0)
> #define AXP717_LDO_V_OUT_MASK GENMASK(4, 0)
>
> @@ -766,7 +766,7 @@ static const struct linear_range axp717_dcdc1_ranges[] = {
> static const struct linear_range axp717_dcdc2_ranges[] = {
> REGULATOR_LINEAR_RANGE(500000, 0, 70, 10000),
> REGULATOR_LINEAR_RANGE(1220000, 71, 87, 20000),
> - REGULATOR_LINEAR_RANGE(1600000, 88, 107, 100000),
> + REGULATOR_LINEAR_RANGE(1600000, 88, 106, 100000),
> };
I'm not entirely sure these are correct after reading the datasheet.
From what I can tell REGULATOR_LINEAR_RANGE is inclusive, so for DCDC1
we have these ranges (we agree DCDC1 is correct, it is not affected by
this patch):
#define AXP717_DCDC1_NUM_VOLTAGES 88
static const struct linear_range axp717_dcdc1_ranges[] = {
REGULATOR_LINEAR_RANGE(500000, 0, 70, 10000),
REGULATOR_LINEAR_RANGE(1220000, 71, 87, 20000),
};
The datasheet says this for the register:
0.5~1.2V,10mV/step,71steps
1.22~1.54V,20mV/step,17steps
0000000: 0.50V
0000001: 0.51V
...
1000110: 1.20V
1000111: 1.22V
1001000: 1.24V
...
1010111: 1.54V
1011000~1111111: Reserve
Converting to decimal:
0: 0.50V (range 1 start)
1: 0.51V
...
70: 1.20V (range 1 end)
71: 1.22V (range 2 start)
72: 1.24V
...
87: 1.54V (range 2 end)
88 onwards: reserved
The maximum voltages are the last value plus one (to include voltage zero).
For DCDC2 after applying this patch we get:
#define AXP717_DCDC2_NUM_VOLTAGES 107
static const struct linear_range axp717_dcdc2_ranges[] = {
REGULATOR_LINEAR_RANGE(500000, 0, 70, 10000),
REGULATOR_LINEAR_RANGE(1220000, 71, 87, 20000),
REGULATOR_LINEAR_RANGE(1600000, 88, 106, 100000),
};
The datasheet marks the maximum value as 1101011: 3.40V, so 106 (the old
value for range) seems correct, but the NUM_VOLTAGES seems like it
should be bumped up to 108. I think you fixed the wrong thing here.
#define AXP717_DCDC3_NUM_VOLTAGES 103
static const struct linear_range axp717_dcdc2_ranges[] = {
REGULATOR_LINEAR_RANGE(500000, 0, 70, 10000),
REGULATOR_LINEAR_RANGE(1220000, 71, 87, 20000),
REGULATOR_LINEAR_RANGE(1600000, 88, 106, 100000),
};
The datasheet marks the maximum value as 1101011: 3.40V, so 106 (the old
value for range) seems correct, but the NUM_VOLTAGES seems like it
should be bumped up to 108. I think you fixed the wrong thing here.
For DCDC3 after applying this patch we get:
#define AXP717_DCDC3_NUM_VOLTAGES 103
static const struct linear_range axp717_dcdc3_ranges[] = {
REGULATOR_LINEAR_RANGE(500000, 0, 70, 10000),
REGULATOR_LINEAR_RANGE(1220000, 71, 102, 20000),
};
The datasheet marks the maximum value as 1100110: 1.84V, which is 102.
So this patch to correct the AXP717_DCDC3_NUM_VOLTAGES is correct here.
John.
>
> static const struct linear_range axp717_dcdc3_ranges[] = {
> @@ -790,40 +790,40 @@ static const struct regulator_desc axp717_regulators[] = {
> AXP_DESC(AXP717, DCDC4, "dcdc4", "vin4", 1000, 3700, 100,
> AXP717_DCDC4_CONTROL, AXP717_DCDC_V_OUT_MASK,
> AXP717_DCDC_OUTPUT_CONTROL, BIT(3)),
> - AXP_DESC(AXP717, ALDO1, "aldo1", "vin1", 500, 3500, 100,
> + AXP_DESC(AXP717, ALDO1, "aldo1", "aldoin", 500, 3500, 100,
> AXP717_ALDO1_CONTROL, AXP717_LDO_V_OUT_MASK,
> AXP717_LDO0_OUTPUT_CONTROL, BIT(0)),
> - AXP_DESC(AXP717, ALDO2, "aldo2", "vin1", 500, 3500, 100,
> + AXP_DESC(AXP717, ALDO2, "aldo2", "aldoin", 500, 3500, 100,
> AXP717_ALDO2_CONTROL, AXP717_LDO_V_OUT_MASK,
> AXP717_LDO0_OUTPUT_CONTROL, BIT(1)),
> - AXP_DESC(AXP717, ALDO3, "aldo3", "vin1", 500, 3500, 100,
> + AXP_DESC(AXP717, ALDO3, "aldo3", "aldoin", 500, 3500, 100,
> AXP717_ALDO3_CONTROL, AXP717_LDO_V_OUT_MASK,
> AXP717_LDO0_OUTPUT_CONTROL, BIT(2)),
> - AXP_DESC(AXP717, ALDO4, "aldo4", "vin1", 500, 3500, 100,
> + AXP_DESC(AXP717, ALDO4, "aldo4", "aldoin", 500, 3500, 100,
> AXP717_ALDO4_CONTROL, AXP717_LDO_V_OUT_MASK,
> AXP717_LDO0_OUTPUT_CONTROL, BIT(3)),
> - AXP_DESC(AXP717, BLDO1, "bldo1", "vin1", 500, 3500, 100,
> + AXP_DESC(AXP717, BLDO1, "bldo1", "bldoin", 500, 3500, 100,
> AXP717_BLDO1_CONTROL, AXP717_LDO_V_OUT_MASK,
> AXP717_LDO0_OUTPUT_CONTROL, BIT(4)),
> - AXP_DESC(AXP717, BLDO2, "bldo2", "vin1", 500, 3500, 100,
> + AXP_DESC(AXP717, BLDO2, "bldo2", "bldoin", 500, 3500, 100,
> AXP717_BLDO2_CONTROL, AXP717_LDO_V_OUT_MASK,
> AXP717_LDO0_OUTPUT_CONTROL, BIT(5)),
> - AXP_DESC(AXP717, BLDO3, "bldo3", "vin1", 500, 3500, 100,
> + AXP_DESC(AXP717, BLDO3, "bldo3", "bldoin", 500, 3500, 100,
> AXP717_BLDO3_CONTROL, AXP717_LDO_V_OUT_MASK,
> AXP717_LDO0_OUTPUT_CONTROL, BIT(6)),
> - AXP_DESC(AXP717, BLDO4, "bldo4", "vin1", 500, 3500, 100,
> + AXP_DESC(AXP717, BLDO4, "bldo4", "bldoin", 500, 3500, 100,
> AXP717_BLDO4_CONTROL, AXP717_LDO_V_OUT_MASK,
> AXP717_LDO0_OUTPUT_CONTROL, BIT(7)),
> - AXP_DESC(AXP717, CLDO1, "cldo1", "vin1", 500, 3500, 100,
> + AXP_DESC(AXP717, CLDO1, "cldo1", "cldoin", 500, 3500, 100,
> AXP717_CLDO1_CONTROL, AXP717_LDO_V_OUT_MASK,
> AXP717_LDO1_OUTPUT_CONTROL, BIT(0)),
> - AXP_DESC(AXP717, CLDO2, "cldo2", "vin1", 500, 3500, 100,
> + AXP_DESC(AXP717, CLDO2, "cldo2", "cldoin", 500, 3500, 100,
> AXP717_CLDO2_CONTROL, AXP717_LDO_V_OUT_MASK,
> AXP717_LDO1_OUTPUT_CONTROL, BIT(1)),
> - AXP_DESC(AXP717, CLDO3, "cldo3", "vin1", 500, 3500, 100,
> + AXP_DESC(AXP717, CLDO3, "cldo3", "cldoin", 500, 3500, 100,
> AXP717_CLDO3_CONTROL, AXP717_LDO_V_OUT_MASK,
> AXP717_LDO1_OUTPUT_CONTROL, BIT(2)),
> - AXP_DESC(AXP717, CLDO4, "cldo4", "vin1", 500, 3500, 100,
> + AXP_DESC(AXP717, CLDO4, "cldo4", "cldoin", 500, 3500, 100,
> AXP717_CLDO4_CONTROL, AXP717_LDO_V_OUT_MASK,
> AXP717_LDO1_OUTPUT_CONTROL, BIT(3)),
> AXP_DESC(AXP717, CPUSLDO, "cpusldo", "vin1", 500, 1400, 50,
> --
> 2.35.8
>
next prev parent reply other threads:[~2024-04-14 8:00 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-29 23:50 [PATCH 0/4] regulator: Fix AXP717 PMIC support Andre Przywara
2024-03-29 23:50 ` [PATCH 1/4] regulator: axp20x: AXP717: fix LDO supply rails and off-by-ones Andre Przywara
2024-04-14 8:00 ` John Watts [this message]
2024-04-16 11:23 ` Andre Przywara
2024-04-16 13:30 ` John Watts
2024-03-29 23:50 ` [PATCH 2/4] dt-bindings: mfd: x-powers,axp152: add boost regulator Andre Przywara
2024-03-30 9:30 ` Krzysztof Kozlowski
2024-03-30 21:40 ` Andre Przywara
2024-03-30 21:40 ` Andre Przywara
2024-03-29 23:50 ` [PATCH 3/4] mfd: axp20x: AXP717: Add support for " Andre Przywara
2024-04-14 7:47 ` John Watts
2024-03-29 23:50 ` [PATCH 4/4] regulator: axp20x: AXP717: Add " Andre Przywara
2024-04-14 7:47 ` John Watts
2024-04-11 11:22 ` [PATCH 0/4] regulator: Fix AXP717 PMIC support Lee Jones
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=ZhuNCUnJri4hBOxx@titan \
--to=contact@jookia.org \
--cc=andre.przywara@arm.com \
--cc=broonie@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=jernej.skrabec@gmail.com \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=lee@kernel.org \
--cc=lgirdwood@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sunxi@lists.linux.dev \
--cc=macroalpha82@gmail.com \
--cc=robh@kernel.org \
--cc=ryan@testtoast.com \
--cc=samuel@sholland.org \
--cc=wens@csie.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).