From: Adrien Grassein <adrien.grassein@gmail.com>
To: unlisted-recipients:; (no To-header on input)
Cc: broonie@kernel.org, jagan@amarulasolutions.com,
lgirdwood@gmail.com, robh+dt@kernel.org,
linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
Adrien Grassein <adrien.grassein@gmail.com>
Subject: [PATCH v3 6/6] regulator: pf8x00: fix nxp,phase-shift
Date: Fri, 8 Jan 2021 23:50:06 +0100 [thread overview]
Message-ID: <20210108225006.153700-7-adrien.grassein@gmail.com> (raw)
In-Reply-To: <20210108225006.153700-1-adrien.grassein@gmail.com>
Fix the ternary condition which is a bad coding style
in the kernel
I also remove the defering configuration of the nxp,phase-shift.
The configuration is now done at parsing time. It save some memory
and it's better for comprehension.
I also use the OTP default configuration when the parameter is wrong
or not specified.
I think that it's better to use the default configuration from the chip
than an arbitrary value.
Signed-off-by: Adrien Grassein <adrien.grassein@gmail.com>
---
drivers/regulator/pf8x00-regulator.c | 45 +++++++++++++---------------
1 file changed, 20 insertions(+), 25 deletions(-)
diff --git a/drivers/regulator/pf8x00-regulator.c b/drivers/regulator/pf8x00-regulator.c
index 4b57f74e7326..9932a580619c 100644
--- a/drivers/regulator/pf8x00-regulator.c
+++ b/drivers/regulator/pf8x00-regulator.c
@@ -107,7 +107,6 @@ enum pf8x00_ldo_states {
#define PF8X00_SWXILIM_MASK GENMASK(4, 3)
#define PF8X00_SWXPHASE_MASK GENMASK(2, 0)
-#define PF8X00_SWXPHASE_DEFAULT 0
#define PF8X00_SWXPHASE_SHIFT 7
enum pf8x00_devid {
@@ -121,7 +120,6 @@ enum pf8x00_devid {
struct pf8x00_regulator {
struct regulator_desc desc;
- u8 phase_shift;
};
struct pf8x00_chip {
@@ -167,17 +165,13 @@ static const int pf8x00_vsnvs_voltages[] = {
0, 1800000, 3000000, 3300000,
};
-static struct pf8x00_regulator *desc_to_regulator(const struct regulator_desc *desc)
-{
- return container_of(desc, struct pf8x00_regulator, desc);
-}
-
static int pf8x00_of_parse_cb(struct device_node *np,
const struct regulator_desc *desc,
struct regulator_config *config)
{
- struct pf8x00_regulator *data = desc_to_regulator(desc);
struct pf8x00_chip *chip = config->driver_data;
+ unsigned char id = desc->id - PF8X00_LDO4;
+ unsigned char reg = PF8X00_SW_BASE(id) + SW_CONFIG2;
int phase;
int val;
int ret;
@@ -185,21 +179,30 @@ static int pf8x00_of_parse_cb(struct device_node *np,
ret = of_property_read_u32(np, "nxp,phase-shift", &val);
if (ret) {
dev_dbg(chip->dev,
- "unspecified phase-shift for BUCK%d, use 0 degrees\n",
- desc->id - PF8X00_LDO4);
- val = PF8X00_SWXPHASE_DEFAULT;
+ "unspecified phase-shift for BUCK%d, using OTP configuration\n",
+ id);
+ goto end;
}
- phase = val / 45;
- if ((phase * 45) != val) {
+ if (val < 0 || val > 315 || val % 45 != 0) {
dev_warn(config->dev,
- "invalid phase_shift %d for BUCK%d, use 0 degrees\n",
- (phase * 45), desc->id - PF8X00_LDO4);
- phase = PF8X00_SWXPHASE_SHIFT;
+ "invalid phase_shift %d for BUCK%d, using OTP configuration\n",
+ val, id);
+ goto end;
}
- data->phase_shift = (phase >= 1) ? phase - 1 : PF8X00_SWXPHASE_SHIFT;
+ phase = val / 45;
+
+ if (phase >= 1)
+ phase -= 1;
+ else
+ phase = PF8X00_SWXPHASE_SHIFT;
+
+ regmap_update_bits(chip->regmap, reg,
+ PF8X00_SWXPHASE_MASK,
+ phase);
+end:
return 0;
}
@@ -432,14 +435,6 @@ static int pf8x00_i2c_probe(struct i2c_client *client)
"failed to register %s regulator\n", data->desc.name);
return PTR_ERR(rdev);
}
-
- if ((id >= PF8X00_BUCK1) && (id <= PF8X00_BUCK7)) {
- u8 reg = PF8X00_SW_BASE(id) + SW_CONFIG2;
-
- regmap_update_bits(chip->regmap, reg,
- PF8X00_SWXPHASE_MASK,
- data->phase_shift);
- }
}
return 0;
--
2.25.1
prev parent reply other threads:[~2021-01-08 22:52 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-08 22:50 [PATCH v3 0/6] Fix issues on pf8x00 driver Adrien Grassein
2021-01-08 22:50 ` [PATCH v3 1/6] regulator: pf8x00: add a doc for the module Adrien Grassein
2021-01-08 22:50 ` [PATCH v3 2/6] regulator: dt-bindings: pf8x00: fix nxp,phase-shift doc Adrien Grassein
2021-01-13 15:28 ` Rob Herring
2021-01-08 22:50 ` [PATCH v3 3/6] regulator: dt-bindings: pf8x00: remove nxp,ilim-ma property Adrien Grassein
2021-01-11 17:20 ` Mark Brown
2021-01-11 17:27 ` Adrien Grassein
2021-01-11 17:32 ` Mark Brown
2021-01-08 22:50 ` [PATCH v3 4/6] regulator: " Adrien Grassein
2021-01-08 22:50 ` [PATCH v3 5/6] regulator: pf8x00: use linear range for buck 1-6 Adrien Grassein
2021-01-08 22:50 ` Adrien Grassein [this message]
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=20210108225006.153700-7-adrien.grassein@gmail.com \
--to=adrien.grassein@gmail.com \
--cc=broonie@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=jagan@amarulasolutions.com \
--cc=lgirdwood@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=robh+dt@kernel.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.