* [patch] regulator: pv88090: logical vs bitwise AND typo
@ 2015-12-12 12:38 Dan Carpenter
2015-12-14 1:29 ` Opensource [James Seong-Won Ban]
0 siblings, 1 reply; 2+ messages in thread
From: Dan Carpenter @ 2015-12-12 12:38 UTC (permalink / raw)
To: Liam Girdwood, James Ban; +Cc: Mark Brown, linux-kernel, kernel-janitors
These were supposed to be bitwise AND instead of logical. Also kernel
style is for the operator to be on the first line and I removed some
extra parenthesis.
Fixes: c90456e36d9c ('regulator: pv88090: new regulator driver')
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
---
At the end we use these values for:
index = ((range << 1) | conf2);
So, in theory, "index" is a number between 0-3. The problem is that we
use it as an index into the pv88090_buck_vol[] array which has only 3
elements so it's potentially reading one step beyond then end. Possibly
the hardware spec says that range and conf2 can not both be set at the
same time. I don't know. James, can you take a look at this?
diff --git a/drivers/regulator/pv88090-regulator.c b/drivers/regulator/pv88090-regulator.c
index 3ec5f2b..29c16d9 100644
--- a/drivers/regulator/pv88090-regulator.c
+++ b/drivers/regulator/pv88090-regulator.c
@@ -392,17 +392,17 @@ static int pv88090_i2c_probe(struct i2c_client *i2c,
if (ret < 0)
return ret;
- conf2 = ((conf2 >> PV88090_BUCK_VDAC_RANGE_SHIFT)
- && PV88090_BUCK_VDAC_RANGE_MASK);
+ conf2 = (conf2 >> PV88090_BUCK_VDAC_RANGE_SHIFT) &
+ PV88090_BUCK_VDAC_RANGE_MASK;
ret = regmap_read(chip->regmap,
PV88090_REG_BUCK_FOLD_RANGE, &range);
if (ret < 0)
return ret;
- range = ((range
- >> (PV88080_BUCK_VRANGE_GAIN_SHIFT + i - 1))
- && PV88080_BUCK_VRANGE_GAIN_MASK);
+ range = (range >>
+ (PV88080_BUCK_VRANGE_GAIN_SHIFT + i - 1)) &
+ PV88080_BUCK_VRANGE_GAIN_MASK;
index = ((range << 1) | conf2);
pv88090_regulator_info[i].desc.min_uV
^ permalink raw reply related [flat|nested] 2+ messages in thread
* RE: [patch] regulator: pv88090: logical vs bitwise AND typo
2015-12-12 12:38 [patch] regulator: pv88090: logical vs bitwise AND typo Dan Carpenter
@ 2015-12-14 1:29 ` Opensource [James Seong-Won Ban]
0 siblings, 0 replies; 2+ messages in thread
From: Opensource [James Seong-Won Ban] @ 2015-12-14 1:29 UTC (permalink / raw)
To: Dan Carpenter, Liam Girdwood
Cc: Mark Brown, linux-kernel@vger.kernel.org,
kernel-janitors@vger.kernel.org
On Saturday, December 12, 2015 9:39 PM Dan Carpenter wrote:
> To: Liam Girdwood; Opensource [James Seong-Won Ban]
> Cc: Mark Brown; linux-kernel@vger.kernel.org; kernel-
> janitors@vger.kernel.org
> Subject: [patch] regulator: pv88090: logical vs bitwise AND typo
>
> These were supposed to be bitwise AND instead of logical. Also kernel style is
> for the operator to be on the first line and I removed some extra parenthesis.
>
> Fixes: c90456e36d9c ('regulator: pv88090: new regulator driver')
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> ---
> At the end we use these values for:
>
> index = ((range << 1) | conf2);
>
> So, in theory, "index" is a number between 0-3. The problem is that we use it
> as an index into the pv88090_buck_vol[] array which has only 3 elements so it's
> potentially reading one step beyond then end. Possibly the hardware spec says
> that range and conf2 can not both be set at the same time. I don't know.
> James, can you take a look at this?
Hi Dan,
Basically conf2 and range are defined in OTP and should not be changed by user.
As you pointed out, it is not feasible to set the register at active state because
the value can not be set at the same time.
Regards,
James
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2015-12-14 1:29 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-12-12 12:38 [patch] regulator: pv88090: logical vs bitwise AND typo Dan Carpenter
2015-12-14 1:29 ` Opensource [James Seong-Won Ban]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox