Skip to contentSkip to conversation

regulator: pv88090: logical vs bitwise AND typo

PATCH In review Dan Carpenter 2 participants 2 messages Dec 12, 2015 – Dec 14, 2015

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 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')

---
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?

drivers/regulator/pv88090-regulator.c +5 -5
index 3ec5f2b..29c16d9 100644
@@ -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
#1 lore raw
Quoted 13 lines · Dan Carpenter

To: Liam Girdwood; Opensource [James Seong-Won Ban]
Cc: Mark Brown; [email protected]; kernel- [email protected]
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')

---
At the end we use these values for:

Quoted 7 lines
	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