Skip to content

Commit 7c3d49b

Browse files
committed
Merge tag 'regulator-fix-v5.14-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator
Pull regulator fixes from Mark Brown: "A few driver specific fixes that came in since the merge window, plus a change to mark the regulator-fixed-domain DT binding as deprecated in order to try to to discourage any new users while a better solution is put in place" * tag 'regulator-fix-v5.14-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator: regulator: hi6421: Fix getting wrong drvdata regulator: mtk-dvfsrc: Fix wrong dev pointer for devm_regulator_register regulator: fixed: Mark regulator-fixed-domain as deprecated regulator: bd9576: Fix testing wrong flag in check_temp_flag_mismatch regulator: hi6421v600: Fix getting wrong drvdata that causes boot failure regulator: rt5033: Fix n_voltages settings for BUCK and LDO regulator: rtmv20: Fix wrong mask for strobe-polarity-high
2 parents b4e62aa + 1c73dae commit 7c3d49b

File tree

7 files changed

+30
-23
lines changed

7 files changed

+30
-23
lines changed

Documentation/devicetree/bindings/regulator/fixed-regulator.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,14 @@ properties:
5757
maxItems: 1
5858

5959
power-domains:
60+
deprecated: true
6061
description:
6162
Power domain to use for enable control. This binding is only
6263
available if the compatible is chosen to regulator-fixed-domain.
6364
maxItems: 1
6465

6566
required-opps:
67+
deprecated: true
6668
description:
6769
Performance state to use for enable control. This binding is only
6870
available if the compatible is chosen to regulator-fixed-domain. The

drivers/regulator/bd9576-regulator.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -294,9 +294,9 @@ static bool check_temp_flag_mismatch(struct regulator_dev *rdev, int severity,
294294
struct bd957x_regulator_data *r)
295295
{
296296
if ((severity == REGULATOR_SEVERITY_ERR &&
297-
r->ovd_notif != REGULATOR_EVENT_OVER_TEMP) ||
297+
r->temp_notif != REGULATOR_EVENT_OVER_TEMP) ||
298298
(severity == REGULATOR_SEVERITY_WARN &&
299-
r->ovd_notif != REGULATOR_EVENT_OVER_TEMP_WARN)) {
299+
r->temp_notif != REGULATOR_EVENT_OVER_TEMP_WARN)) {
300300
dev_warn(rdev_get_dev(rdev),
301301
"Can't support both thermal WARN and ERR\n");
302302
if (severity == REGULATOR_SEVERITY_WARN)

drivers/regulator/hi6421-regulator.c

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -366,9 +366,8 @@ static struct hi6421_regulator_info
366366

367367
static int hi6421_regulator_enable(struct regulator_dev *rdev)
368368
{
369-
struct hi6421_regulator_pdata *pdata;
369+
struct hi6421_regulator_pdata *pdata = rdev_get_drvdata(rdev);
370370

371-
pdata = dev_get_drvdata(rdev->dev.parent);
372371
/* hi6421 spec requires regulator enablement must be serialized:
373372
* - Because when BUCK, LDO switching from off to on, it will have
374373
* a huge instantaneous current; so you can not turn on two or
@@ -385,9 +384,10 @@ static int hi6421_regulator_enable(struct regulator_dev *rdev)
385384

386385
static unsigned int hi6421_regulator_ldo_get_mode(struct regulator_dev *rdev)
387386
{
388-
struct hi6421_regulator_info *info = rdev_get_drvdata(rdev);
387+
struct hi6421_regulator_info *info;
389388
unsigned int reg_val;
390389

390+
info = container_of(rdev->desc, struct hi6421_regulator_info, desc);
391391
regmap_read(rdev->regmap, rdev->desc->enable_reg, &reg_val);
392392
if (reg_val & info->mode_mask)
393393
return REGULATOR_MODE_IDLE;
@@ -397,9 +397,10 @@ static unsigned int hi6421_regulator_ldo_get_mode(struct regulator_dev *rdev)
397397

398398
static unsigned int hi6421_regulator_buck_get_mode(struct regulator_dev *rdev)
399399
{
400-
struct hi6421_regulator_info *info = rdev_get_drvdata(rdev);
400+
struct hi6421_regulator_info *info;
401401
unsigned int reg_val;
402402

403+
info = container_of(rdev->desc, struct hi6421_regulator_info, desc);
403404
regmap_read(rdev->regmap, rdev->desc->enable_reg, &reg_val);
404405
if (reg_val & info->mode_mask)
405406
return REGULATOR_MODE_STANDBY;
@@ -410,9 +411,10 @@ static unsigned int hi6421_regulator_buck_get_mode(struct regulator_dev *rdev)
410411
static int hi6421_regulator_ldo_set_mode(struct regulator_dev *rdev,
411412
unsigned int mode)
412413
{
413-
struct hi6421_regulator_info *info = rdev_get_drvdata(rdev);
414+
struct hi6421_regulator_info *info;
414415
unsigned int new_mode;
415416

417+
info = container_of(rdev->desc, struct hi6421_regulator_info, desc);
416418
switch (mode) {
417419
case REGULATOR_MODE_NORMAL:
418420
new_mode = 0;
@@ -434,9 +436,10 @@ static int hi6421_regulator_ldo_set_mode(struct regulator_dev *rdev,
434436
static int hi6421_regulator_buck_set_mode(struct regulator_dev *rdev,
435437
unsigned int mode)
436438
{
437-
struct hi6421_regulator_info *info = rdev_get_drvdata(rdev);
439+
struct hi6421_regulator_info *info;
438440
unsigned int new_mode;
439441

442+
info = container_of(rdev->desc, struct hi6421_regulator_info, desc);
440443
switch (mode) {
441444
case REGULATOR_MODE_NORMAL:
442445
new_mode = 0;
@@ -459,7 +462,9 @@ static unsigned int
459462
hi6421_regulator_ldo_get_optimum_mode(struct regulator_dev *rdev,
460463
int input_uV, int output_uV, int load_uA)
461464
{
462-
struct hi6421_regulator_info *info = rdev_get_drvdata(rdev);
465+
struct hi6421_regulator_info *info;
466+
467+
info = container_of(rdev->desc, struct hi6421_regulator_info, desc);
463468

464469
if (load_uA > info->eco_microamp)
465470
return REGULATOR_MODE_NORMAL;
@@ -543,14 +548,13 @@ static int hi6421_regulator_probe(struct platform_device *pdev)
543548
if (!pdata)
544549
return -ENOMEM;
545550
mutex_init(&pdata->lock);
546-
platform_set_drvdata(pdev, pdata);
547551

548552
for (i = 0; i < ARRAY_SIZE(hi6421_regulator_info); i++) {
549553
/* assign per-regulator data */
550554
info = &hi6421_regulator_info[i];
551555

552556
config.dev = pdev->dev.parent;
553-
config.driver_data = info;
557+
config.driver_data = pdata;
554558
config.regmap = pmic->regmap;
555559

556560
rdev = devm_regulator_register(&pdev->dev, &info->desc,

drivers/regulator/hi6421v600-regulator.c

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,9 @@ static const unsigned int ldo34_voltages[] = {
9898

9999
static int hi6421_spmi_regulator_enable(struct regulator_dev *rdev)
100100
{
101-
struct hi6421_spmi_reg_priv *priv;
101+
struct hi6421_spmi_reg_priv *priv = rdev_get_drvdata(rdev);
102102
int ret;
103103

104-
priv = dev_get_drvdata(rdev->dev.parent);
105104
/* cannot enable more than one regulator at one time */
106105
mutex_lock(&priv->enable_mutex);
107106

@@ -119,9 +118,10 @@ static int hi6421_spmi_regulator_enable(struct regulator_dev *rdev)
119118

120119
static unsigned int hi6421_spmi_regulator_get_mode(struct regulator_dev *rdev)
121120
{
122-
struct hi6421_spmi_reg_info *sreg = rdev_get_drvdata(rdev);
121+
struct hi6421_spmi_reg_info *sreg;
123122
unsigned int reg_val;
124123

124+
sreg = container_of(rdev->desc, struct hi6421_spmi_reg_info, desc);
125125
regmap_read(rdev->regmap, rdev->desc->enable_reg, &reg_val);
126126

127127
if (reg_val & sreg->eco_mode_mask)
@@ -133,9 +133,10 @@ static unsigned int hi6421_spmi_regulator_get_mode(struct regulator_dev *rdev)
133133
static int hi6421_spmi_regulator_set_mode(struct regulator_dev *rdev,
134134
unsigned int mode)
135135
{
136-
struct hi6421_spmi_reg_info *sreg = rdev_get_drvdata(rdev);
136+
struct hi6421_spmi_reg_info *sreg;
137137
unsigned int val;
138138

139+
sreg = container_of(rdev->desc, struct hi6421_spmi_reg_info, desc);
139140
switch (mode) {
140141
case REGULATOR_MODE_NORMAL:
141142
val = 0;
@@ -159,7 +160,9 @@ hi6421_spmi_regulator_get_optimum_mode(struct regulator_dev *rdev,
159160
int input_uV, int output_uV,
160161
int load_uA)
161162
{
162-
struct hi6421_spmi_reg_info *sreg = rdev_get_drvdata(rdev);
163+
struct hi6421_spmi_reg_info *sreg;
164+
165+
sreg = container_of(rdev->desc, struct hi6421_spmi_reg_info, desc);
163166

164167
if (!sreg->eco_uA || ((unsigned int)load_uA > sreg->eco_uA))
165168
return REGULATOR_MODE_NORMAL;
@@ -252,13 +255,12 @@ static int hi6421_spmi_regulator_probe(struct platform_device *pdev)
252255
return -ENOMEM;
253256

254257
mutex_init(&priv->enable_mutex);
255-
platform_set_drvdata(pdev, priv);
256258

257259
for (i = 0; i < ARRAY_SIZE(regulator_info); i++) {
258260
info = &regulator_info[i];
259261

260262
config.dev = pdev->dev.parent;
261-
config.driver_data = info;
263+
config.driver_data = priv;
262264
config.regmap = pmic->regmap;
263265

264266
rdev = devm_regulator_register(dev, &info->desc, &config);

drivers/regulator/mtk-dvfsrc-regulator.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,8 +179,7 @@ static int dvfsrc_vcore_regulator_probe(struct platform_device *pdev)
179179
for (i = 0; i < regulator_init_data->size; i++) {
180180
config.dev = dev->parent;
181181
config.driver_data = (mt_regulators + i);
182-
rdev = devm_regulator_register(dev->parent,
183-
&(mt_regulators + i)->desc,
182+
rdev = devm_regulator_register(dev, &(mt_regulators + i)->desc,
184183
&config);
185184
if (IS_ERR(rdev)) {
186185
dev_err(dev, "failed to register %s\n",

drivers/regulator/rtmv20-regulator.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
#define RTMV20_WIDTH2_MASK GENMASK(7, 0)
3838
#define RTMV20_LBPLVL_MASK GENMASK(3, 0)
3939
#define RTMV20_LBPEN_MASK BIT(7)
40-
#define RTMV20_STROBEPOL_MASK BIT(1)
40+
#define RTMV20_STROBEPOL_MASK BIT(0)
4141
#define RTMV20_VSYNPOL_MASK BIT(1)
4242
#define RTMV20_FSINEN_MASK BIT(7)
4343
#define RTMV20_ESEN_MASK BIT(6)

include/linux/mfd/rt5033-private.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,13 +200,13 @@ enum rt5033_reg {
200200
#define RT5033_REGULATOR_BUCK_VOLTAGE_MIN 1000000U
201201
#define RT5033_REGULATOR_BUCK_VOLTAGE_MAX 3000000U
202202
#define RT5033_REGULATOR_BUCK_VOLTAGE_STEP 100000U
203-
#define RT5033_REGULATOR_BUCK_VOLTAGE_STEP_NUM 32
203+
#define RT5033_REGULATOR_BUCK_VOLTAGE_STEP_NUM 21
204204

205205
/* RT5033 regulator LDO output voltage uV */
206206
#define RT5033_REGULATOR_LDO_VOLTAGE_MIN 1200000U
207207
#define RT5033_REGULATOR_LDO_VOLTAGE_MAX 3000000U
208208
#define RT5033_REGULATOR_LDO_VOLTAGE_STEP 100000U
209-
#define RT5033_REGULATOR_LDO_VOLTAGE_STEP_NUM 32
209+
#define RT5033_REGULATOR_LDO_VOLTAGE_STEP_NUM 19
210210

211211
/* RT5033 regulator SAFE LDO output voltage uV */
212212
#define RT5033_REGULATOR_SAFE_LDO_VOLTAGE 4900000U

0 commit comments

Comments
 (0)