Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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

+30 -23
+2
Documentation/devicetree/bindings/regulator/fixed-regulator.yaml
··· 57 57 maxItems: 1 58 58 59 59 power-domains: 60 + deprecated: true 60 61 description: 61 62 Power domain to use for enable control. This binding is only 62 63 available if the compatible is chosen to regulator-fixed-domain. 63 64 maxItems: 1 64 65 65 66 required-opps: 67 + deprecated: true 66 68 description: 67 69 Performance state to use for enable control. This binding is only 68 70 available if the compatible is chosen to regulator-fixed-domain. The
+2 -2
drivers/regulator/bd9576-regulator.c
··· 294 294 struct bd957x_regulator_data *r) 295 295 { 296 296 if ((severity == REGULATOR_SEVERITY_ERR && 297 - r->ovd_notif != REGULATOR_EVENT_OVER_TEMP) || 297 + r->temp_notif != REGULATOR_EVENT_OVER_TEMP) || 298 298 (severity == REGULATOR_SEVERITY_WARN && 299 - r->ovd_notif != REGULATOR_EVENT_OVER_TEMP_WARN)) { 299 + r->temp_notif != REGULATOR_EVENT_OVER_TEMP_WARN)) { 300 300 dev_warn(rdev_get_dev(rdev), 301 301 "Can't support both thermal WARN and ERR\n"); 302 302 if (severity == REGULATOR_SEVERITY_WARN)
+13 -9
drivers/regulator/hi6421-regulator.c
··· 366 366 367 367 static int hi6421_regulator_enable(struct regulator_dev *rdev) 368 368 { 369 - struct hi6421_regulator_pdata *pdata; 369 + struct hi6421_regulator_pdata *pdata = rdev_get_drvdata(rdev); 370 370 371 - pdata = dev_get_drvdata(rdev->dev.parent); 372 371 /* hi6421 spec requires regulator enablement must be serialized: 373 372 * - Because when BUCK, LDO switching from off to on, it will have 374 373 * a huge instantaneous current; so you can not turn on two or ··· 384 385 385 386 static unsigned int hi6421_regulator_ldo_get_mode(struct regulator_dev *rdev) 386 387 { 387 - struct hi6421_regulator_info *info = rdev_get_drvdata(rdev); 388 + struct hi6421_regulator_info *info; 388 389 unsigned int reg_val; 389 390 391 + info = container_of(rdev->desc, struct hi6421_regulator_info, desc); 390 392 regmap_read(rdev->regmap, rdev->desc->enable_reg, &reg_val); 391 393 if (reg_val & info->mode_mask) 392 394 return REGULATOR_MODE_IDLE; ··· 397 397 398 398 static unsigned int hi6421_regulator_buck_get_mode(struct regulator_dev *rdev) 399 399 { 400 - struct hi6421_regulator_info *info = rdev_get_drvdata(rdev); 400 + struct hi6421_regulator_info *info; 401 401 unsigned int reg_val; 402 402 403 + info = container_of(rdev->desc, struct hi6421_regulator_info, desc); 403 404 regmap_read(rdev->regmap, rdev->desc->enable_reg, &reg_val); 404 405 if (reg_val & info->mode_mask) 405 406 return REGULATOR_MODE_STANDBY; ··· 411 410 static int hi6421_regulator_ldo_set_mode(struct regulator_dev *rdev, 412 411 unsigned int mode) 413 412 { 414 - struct hi6421_regulator_info *info = rdev_get_drvdata(rdev); 413 + struct hi6421_regulator_info *info; 415 414 unsigned int new_mode; 416 415 416 + info = container_of(rdev->desc, struct hi6421_regulator_info, desc); 417 417 switch (mode) { 418 418 case REGULATOR_MODE_NORMAL: 419 419 new_mode = 0; ··· 436 434 static int hi6421_regulator_buck_set_mode(struct regulator_dev *rdev, 437 435 unsigned int mode) 438 436 { 439 - struct hi6421_regulator_info *info = rdev_get_drvdata(rdev); 437 + struct hi6421_regulator_info *info; 440 438 unsigned int new_mode; 441 439 440 + info = container_of(rdev->desc, struct hi6421_regulator_info, desc); 442 441 switch (mode) { 443 442 case REGULATOR_MODE_NORMAL: 444 443 new_mode = 0; ··· 462 459 hi6421_regulator_ldo_get_optimum_mode(struct regulator_dev *rdev, 463 460 int input_uV, int output_uV, int load_uA) 464 461 { 465 - struct hi6421_regulator_info *info = rdev_get_drvdata(rdev); 462 + struct hi6421_regulator_info *info; 463 + 464 + info = container_of(rdev->desc, struct hi6421_regulator_info, desc); 466 465 467 466 if (load_uA > info->eco_microamp) 468 467 return REGULATOR_MODE_NORMAL; ··· 548 543 if (!pdata) 549 544 return -ENOMEM; 550 545 mutex_init(&pdata->lock); 551 - platform_set_drvdata(pdev, pdata); 552 546 553 547 for (i = 0; i < ARRAY_SIZE(hi6421_regulator_info); i++) { 554 548 /* assign per-regulator data */ 555 549 info = &hi6421_regulator_info[i]; 556 550 557 551 config.dev = pdev->dev.parent; 558 - config.driver_data = info; 552 + config.driver_data = pdata; 559 553 config.regmap = pmic->regmap; 560 554 561 555 rdev = devm_regulator_register(&pdev->dev, &info->desc,
+9 -7
drivers/regulator/hi6421v600-regulator.c
··· 98 98 99 99 static int hi6421_spmi_regulator_enable(struct regulator_dev *rdev) 100 100 { 101 - struct hi6421_spmi_reg_priv *priv; 101 + struct hi6421_spmi_reg_priv *priv = rdev_get_drvdata(rdev); 102 102 int ret; 103 103 104 - priv = dev_get_drvdata(rdev->dev.parent); 105 104 /* cannot enable more than one regulator at one time */ 106 105 mutex_lock(&priv->enable_mutex); 107 106 ··· 118 119 119 120 static unsigned int hi6421_spmi_regulator_get_mode(struct regulator_dev *rdev) 120 121 { 121 - struct hi6421_spmi_reg_info *sreg = rdev_get_drvdata(rdev); 122 + struct hi6421_spmi_reg_info *sreg; 122 123 unsigned int reg_val; 123 124 125 + sreg = container_of(rdev->desc, struct hi6421_spmi_reg_info, desc); 124 126 regmap_read(rdev->regmap, rdev->desc->enable_reg, &reg_val); 125 127 126 128 if (reg_val & sreg->eco_mode_mask) ··· 133 133 static int hi6421_spmi_regulator_set_mode(struct regulator_dev *rdev, 134 134 unsigned int mode) 135 135 { 136 - struct hi6421_spmi_reg_info *sreg = rdev_get_drvdata(rdev); 136 + struct hi6421_spmi_reg_info *sreg; 137 137 unsigned int val; 138 138 139 + sreg = container_of(rdev->desc, struct hi6421_spmi_reg_info, desc); 139 140 switch (mode) { 140 141 case REGULATOR_MODE_NORMAL: 141 142 val = 0; ··· 160 159 int input_uV, int output_uV, 161 160 int load_uA) 162 161 { 163 - struct hi6421_spmi_reg_info *sreg = rdev_get_drvdata(rdev); 162 + struct hi6421_spmi_reg_info *sreg; 163 + 164 + sreg = container_of(rdev->desc, struct hi6421_spmi_reg_info, desc); 164 165 165 166 if (!sreg->eco_uA || ((unsigned int)load_uA > sreg->eco_uA)) 166 167 return REGULATOR_MODE_NORMAL; ··· 255 252 return -ENOMEM; 256 253 257 254 mutex_init(&priv->enable_mutex); 258 - platform_set_drvdata(pdev, priv); 259 255 260 256 for (i = 0; i < ARRAY_SIZE(regulator_info); i++) { 261 257 info = &regulator_info[i]; 262 258 263 259 config.dev = pdev->dev.parent; 264 - config.driver_data = info; 260 + config.driver_data = priv; 265 261 config.regmap = pmic->regmap; 266 262 267 263 rdev = devm_regulator_register(dev, &info->desc, &config);
+1 -2
drivers/regulator/mtk-dvfsrc-regulator.c
··· 179 179 for (i = 0; i < regulator_init_data->size; i++) { 180 180 config.dev = dev->parent; 181 181 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, 184 183 &config); 185 184 if (IS_ERR(rdev)) { 186 185 dev_err(dev, "failed to register %s\n",
+1 -1
drivers/regulator/rtmv20-regulator.c
··· 37 37 #define RTMV20_WIDTH2_MASK GENMASK(7, 0) 38 38 #define RTMV20_LBPLVL_MASK GENMASK(3, 0) 39 39 #define RTMV20_LBPEN_MASK BIT(7) 40 - #define RTMV20_STROBEPOL_MASK BIT(1) 40 + #define RTMV20_STROBEPOL_MASK BIT(0) 41 41 #define RTMV20_VSYNPOL_MASK BIT(1) 42 42 #define RTMV20_FSINEN_MASK BIT(7) 43 43 #define RTMV20_ESEN_MASK BIT(6)
+2 -2
include/linux/mfd/rt5033-private.h
··· 200 200 #define RT5033_REGULATOR_BUCK_VOLTAGE_MIN 1000000U 201 201 #define RT5033_REGULATOR_BUCK_VOLTAGE_MAX 3000000U 202 202 #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 204 204 205 205 /* RT5033 regulator LDO output voltage uV */ 206 206 #define RT5033_REGULATOR_LDO_VOLTAGE_MIN 1200000U 207 207 #define RT5033_REGULATOR_LDO_VOLTAGE_MAX 3000000U 208 208 #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 210 210 211 211 /* RT5033 regulator SAFE LDO output voltage uV */ 212 212 #define RT5033_REGULATOR_SAFE_LDO_VOLTAGE 4900000U