Skip to content

Commit 56037ca

Browse files
committed
Merge tag 'regulator-fix-v5.3-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator
Pull regulator fixes from Mark Brown: "This is obviouly very late, containing three small and simple driver specific fixes. The main one is the TWL fix, this fixes issues with cpufreq on the PMICs used with BeagleBoard generation OMAP SoCs which had been broken due to changes in the generic OPP code exposing a bug in the regulator driver for these devices causing them to think that OPPs weren't supported on the system. Sorry about sending this so late, I hadn't registered that the TWL issue manifested in cpufreq" * tag 'regulator-fix-v5.3-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator: regulator: twl: voltage lists for vdd1/2 on twl4030 regulator: act8945a-regulator: fix ldo register addresses in set_mode hook regulator: slg51000: Fix a couple NULL vs IS_ERR() checks
2 parents f74c2bb + 3829100 commit 56037ca

File tree

3 files changed

+26
-9
lines changed

3 files changed

+26
-9
lines changed

drivers/regulator/act8945a-regulator.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -169,16 +169,16 @@ static int act8945a_set_mode(struct regulator_dev *rdev, unsigned int mode)
169169
reg = ACT8945A_DCDC3_CTRL;
170170
break;
171171
case ACT8945A_ID_LDO1:
172-
reg = ACT8945A_LDO1_SUS;
172+
reg = ACT8945A_LDO1_CTRL;
173173
break;
174174
case ACT8945A_ID_LDO2:
175-
reg = ACT8945A_LDO2_SUS;
175+
reg = ACT8945A_LDO2_CTRL;
176176
break;
177177
case ACT8945A_ID_LDO3:
178-
reg = ACT8945A_LDO3_SUS;
178+
reg = ACT8945A_LDO3_CTRL;
179179
break;
180180
case ACT8945A_ID_LDO4:
181-
reg = ACT8945A_LDO4_SUS;
181+
reg = ACT8945A_LDO4_CTRL;
182182
break;
183183
default:
184184
return -EINVAL;

drivers/regulator/slg51000-regulator.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ static int slg51000_of_parse_cb(struct device_node *np,
205205
ena_gpiod = devm_gpiod_get_from_of_node(chip->dev, np,
206206
"enable-gpios", 0,
207207
gflags, "gpio-en-ldo");
208-
if (ena_gpiod) {
208+
if (!IS_ERR(ena_gpiod)) {
209209
config->ena_gpiod = ena_gpiod;
210210
devm_gpiod_unhinge(chip->dev, config->ena_gpiod);
211211
}
@@ -459,7 +459,7 @@ static int slg51000_i2c_probe(struct i2c_client *client,
459459
GPIOD_OUT_HIGH
460460
| GPIOD_FLAGS_BIT_NONEXCLUSIVE,
461461
"slg51000-cs");
462-
if (cs_gpiod) {
462+
if (!IS_ERR(cs_gpiod)) {
463463
dev_info(dev, "Found chip selector property\n");
464464
chip->cs_gpiod = cs_gpiod;
465465
}

drivers/regulator/twl-regulator.c

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,17 @@ static const u16 VINTANA2_VSEL_table[] = {
359359
2500, 2750,
360360
};
361361

362+
/* 600mV to 1450mV in 12.5 mV steps */
363+
static const struct regulator_linear_range VDD1_ranges[] = {
364+
REGULATOR_LINEAR_RANGE(600000, 0, 68, 12500)
365+
};
366+
367+
/* 600mV to 1450mV in 12.5 mV steps, everything above = 1500mV */
368+
static const struct regulator_linear_range VDD2_ranges[] = {
369+
REGULATOR_LINEAR_RANGE(600000, 0, 68, 12500),
370+
REGULATOR_LINEAR_RANGE(1500000, 69, 69, 12500)
371+
};
372+
362373
static int twl4030ldo_list_voltage(struct regulator_dev *rdev, unsigned index)
363374
{
364375
struct twlreg_info *info = rdev_get_drvdata(rdev);
@@ -427,6 +438,8 @@ static int twl4030smps_get_voltage(struct regulator_dev *rdev)
427438
}
428439

429440
static const struct regulator_ops twl4030smps_ops = {
441+
.list_voltage = regulator_list_voltage_linear_range,
442+
430443
.set_voltage = twl4030smps_set_voltage,
431444
.get_voltage = twl4030smps_get_voltage,
432445
};
@@ -466,7 +479,8 @@ static const struct twlreg_info TWL4030_INFO_##label = { \
466479
}, \
467480
}
468481

469-
#define TWL4030_ADJUSTABLE_SMPS(label, offset, num, turnon_delay, remap_conf) \
482+
#define TWL4030_ADJUSTABLE_SMPS(label, offset, num, turnon_delay, remap_conf, \
483+
n_volt) \
470484
static const struct twlreg_info TWL4030_INFO_##label = { \
471485
.base = offset, \
472486
.id = num, \
@@ -479,6 +493,9 @@ static const struct twlreg_info TWL4030_INFO_##label = { \
479493
.owner = THIS_MODULE, \
480494
.enable_time = turnon_delay, \
481495
.of_map_mode = twl4030reg_map_mode, \
496+
.n_voltages = n_volt, \
497+
.n_linear_ranges = ARRAY_SIZE(label ## _ranges), \
498+
.linear_ranges = label ## _ranges, \
482499
}, \
483500
}
484501

@@ -518,8 +535,8 @@ TWL4030_ADJUSTABLE_LDO(VSIM, 0x37, 9, 100, 0x00);
518535
TWL4030_ADJUSTABLE_LDO(VDAC, 0x3b, 10, 100, 0x08);
519536
TWL4030_ADJUSTABLE_LDO(VINTANA2, 0x43, 12, 100, 0x08);
520537
TWL4030_ADJUSTABLE_LDO(VIO, 0x4b, 14, 1000, 0x08);
521-
TWL4030_ADJUSTABLE_SMPS(VDD1, 0x55, 15, 1000, 0x08);
522-
TWL4030_ADJUSTABLE_SMPS(VDD2, 0x63, 16, 1000, 0x08);
538+
TWL4030_ADJUSTABLE_SMPS(VDD1, 0x55, 15, 1000, 0x08, 68);
539+
TWL4030_ADJUSTABLE_SMPS(VDD2, 0x63, 16, 1000, 0x08, 69);
523540
/* VUSBCP is managed *only* by the USB subchip */
524541
TWL4030_FIXED_LDO(VINTANA1, 0x3f, 1500, 11, 100, 0x08);
525542
TWL4030_FIXED_LDO(VINTDIG, 0x47, 1500, 13, 100, 0x08);

0 commit comments

Comments
 (0)