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

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'regulator-v4.19-rc5' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator

Mark writes:
"regulator: Fixes for 4.19

A collection of fairly minor bug fixes here, a couple of driver
specific ones plus two core fixes. There's one fix for the new
suspend state code which fixes some confusion with constant values
that are supposed to indicate noop operation and another fixing a
race condition with the creation of sysfs files on new regulators."

* tag 'regulator-v4.19-rc5' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator:
regulator: fix crash caused by null driver data
regulator: Fix 'do-nothing' value for regulators without suspend state
regulator: da9063: fix DT probing with constraints
regulator: bd71837: Disable voltage monitoring for LDO3/4

+54 -10
+19
drivers/regulator/bd71837-regulator.c
··· 569 569 BD71837_REG_REGLOCK); 570 570 } 571 571 572 + /* 573 + * There is a HW quirk in BD71837. The shutdown sequence timings for 574 + * bucks/LDOs which are controlled via register interface are changed. 575 + * At PMIC poweroff the voltage for BUCK6/7 is cut immediately at the 576 + * beginning of shut-down sequence. As bucks 6 and 7 are parent 577 + * supplies for LDO5 and LDO6 - this causes LDO5/6 voltage 578 + * monitoring to errorneously detect under voltage and force PMIC to 579 + * emergency state instead of poweroff. In order to avoid this we 580 + * disable voltage monitoring for LDO5 and LDO6 581 + */ 582 + err = regmap_update_bits(pmic->mfd->regmap, BD718XX_REG_MVRFLTMASK2, 583 + BD718XX_LDO5_VRMON80 | BD718XX_LDO6_VRMON80, 584 + BD718XX_LDO5_VRMON80 | BD718XX_LDO6_VRMON80); 585 + if (err) { 586 + dev_err(&pmic->pdev->dev, 587 + "Failed to disable voltage monitoring\n"); 588 + goto err; 589 + } 590 + 572 591 for (i = 0; i < ARRAY_SIZE(pmic_regulator_inits); i++) { 573 592 574 593 struct regulator_desc *desc;
+2 -2
drivers/regulator/core.c
··· 3161 3161 if (!rstate->changeable) 3162 3162 return -EPERM; 3163 3163 3164 - rstate->enabled = en; 3164 + rstate->enabled = (en) ? ENABLE_IN_SUSPEND : DISABLE_IN_SUSPEND; 3165 3165 3166 3166 return 0; 3167 3167 } ··· 4395 4395 !rdev->desc->fixed_uV) 4396 4396 rdev->is_switch = true; 4397 4397 4398 + dev_set_drvdata(&rdev->dev, rdev); 4398 4399 ret = device_register(&rdev->dev); 4399 4400 if (ret != 0) { 4400 4401 put_device(&rdev->dev); 4401 4402 goto unset_supplies; 4402 4403 } 4403 4404 4404 - dev_set_drvdata(&rdev->dev, rdev); 4405 4405 rdev_init_debugfs(rdev); 4406 4406 4407 4407 /* try to resolve regulators supply since a new one was registered */
-2
drivers/regulator/of_regulator.c
··· 213 213 else if (of_property_read_bool(suspend_np, 214 214 "regulator-off-in-suspend")) 215 215 suspend_state->enabled = DISABLE_IN_SUSPEND; 216 - else 217 - suspend_state->enabled = DO_NOTHING_IN_SUSPEND; 218 216 219 217 if (!of_property_read_u32(np, "regulator-suspend-min-microvolt", 220 218 &pval))
+30 -3
include/linux/mfd/rohm-bd718x7.h
··· 78 78 BD71837_REG_TRANS_COND0 = 0x1F, 79 79 BD71837_REG_TRANS_COND1 = 0x20, 80 80 BD71837_REG_VRFAULTEN = 0x21, 81 - BD71837_REG_MVRFLTMASK0 = 0x22, 82 - BD71837_REG_MVRFLTMASK1 = 0x23, 83 - BD71837_REG_MVRFLTMASK2 = 0x24, 81 + BD718XX_REG_MVRFLTMASK0 = 0x22, 82 + BD718XX_REG_MVRFLTMASK1 = 0x23, 83 + BD718XX_REG_MVRFLTMASK2 = 0x24, 84 84 BD71837_REG_RCVCFG = 0x25, 85 85 BD71837_REG_RCVNUM = 0x26, 86 86 BD71837_REG_PWRONCONFIG0 = 0x27, ··· 158 158 /* BD71837_REG_BUCK8_VOLT bits */ 159 159 #define BUCK8_MASK 0x3F 160 160 #define BUCK8_DEFAULT 0x1E 161 + 162 + /* BD718XX Voltage monitoring masks */ 163 + #define BD718XX_BUCK1_VRMON80 0x1 164 + #define BD718XX_BUCK1_VRMON130 0x2 165 + #define BD718XX_BUCK2_VRMON80 0x4 166 + #define BD718XX_BUCK2_VRMON130 0x8 167 + #define BD718XX_1ST_NODVS_BUCK_VRMON80 0x1 168 + #define BD718XX_1ST_NODVS_BUCK_VRMON130 0x2 169 + #define BD718XX_2ND_NODVS_BUCK_VRMON80 0x4 170 + #define BD718XX_2ND_NODVS_BUCK_VRMON130 0x8 171 + #define BD718XX_3RD_NODVS_BUCK_VRMON80 0x10 172 + #define BD718XX_3RD_NODVS_BUCK_VRMON130 0x20 173 + #define BD718XX_4TH_NODVS_BUCK_VRMON80 0x40 174 + #define BD718XX_4TH_NODVS_BUCK_VRMON130 0x80 175 + #define BD718XX_LDO1_VRMON80 0x1 176 + #define BD718XX_LDO2_VRMON80 0x2 177 + #define BD718XX_LDO3_VRMON80 0x4 178 + #define BD718XX_LDO4_VRMON80 0x8 179 + #define BD718XX_LDO5_VRMON80 0x10 180 + #define BD718XX_LDO6_VRMON80 0x20 181 + 182 + /* BD71837 specific voltage monitoring masks */ 183 + #define BD71837_BUCK3_VRMON80 0x10 184 + #define BD71837_BUCK3_VRMON130 0x20 185 + #define BD71837_BUCK4_VRMON80 0x40 186 + #define BD71837_BUCK4_VRMON130 0x80 187 + #define BD71837_LDO7_VRMON80 0x40 161 188 162 189 /* BD71837_REG_IRQ bits */ 163 190 #define IRQ_SWRST 0x40
+3 -3
include/linux/regulator/machine.h
··· 48 48 * DISABLE_IN_SUSPEND - turn off regulator in suspend states 49 49 * ENABLE_IN_SUSPEND - keep regulator on in suspend states 50 50 */ 51 - #define DO_NOTHING_IN_SUSPEND (-1) 52 - #define DISABLE_IN_SUSPEND 0 53 - #define ENABLE_IN_SUSPEND 1 51 + #define DO_NOTHING_IN_SUSPEND 0 52 + #define DISABLE_IN_SUSPEND 1 53 + #define ENABLE_IN_SUSPEND 2 54 54 55 55 /* Regulator active discharge flags */ 56 56 enum regulator_active_discharge {