linux/drivers/regulator
Stephen Boyd ab953b9db3
regulator: qcom_spmi: Include offset when translating voltages
This driver converts voltages from a non-linear range in hardware
to a linear range in software and vice versa. During the
conversion, we exclude certain voltages that are invalid to use
because the software interface is more flexible than reality.

For example, the FTSMPS2P5 regulators have a voltage range from
80000uV to 1355000uV that software could support, but we only
want to use the range of 350000uV to 1355000uV. If we don't
account for the hw selectors between 80000uV and 350000uV we'll
pick a hw selector of 0 to mean 350000uV when it really means
80000uV. This can cause us to program voltages into the hardware
that are significantly lower than what we're expecting.

And when we read it back from the hardware we'll have the same
problem, voltages that are in the invalid band will end up being
calculated as some software selector that represents a larger
voltage than what is programmed and the user will be confused.

Fix all this by properly offsetting the software selector and hw
selector when converting from one number space to another.

Fixes: 1b5b196892 ("regulator: qcom_spmi: Only use selector based regulator ops")
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
2017-11-02 16:11:28 +00:00
..
88pm800.c regulator: 88pm800: constify regulator_ops structures 2017-01-31 20:32:26 +00:00
88pm8607.c regulator: 88pm8607: constify regulator_ops structure 2017-01-31 20:32:53 +00:00
aat2870-regulator.c regulator: aat2870-regulator: constify regulator_ops structure 2017-01-31 20:35:49 +00:00
ab3100.c
ab8500-ext.c ARM: ux500: move ab8500_regulator_plat_data into driver 2016-07-12 11:23:50 +02:00
ab8500.c
act8865-regulator.c regulator: act8865: Fix missing of_node_put() in act8865_pdata_from_dt() 2016-07-14 17:22:22 +01:00
act8945a-regulator.c regulator: act8945a-regulator: constify regulator_ops structure 2017-01-31 20:36:10 +00:00
ad5398.c regulator: ad5398: constify regulator_ops structure 2017-01-31 20:38:27 +00:00
anatop-regulator.c Merge remote-tracking branches 'regulator/topic/anatop', 'regulator/topic/arizona', 'regulator/topic/bd9571mvw-m' and 'regulator/topic/const' into regulator-next 2017-04-30 22:17:25 +09:00
arizona-ldo1.c regulator: arizona-ldo1: Factor out generic initialization 2017-04-25 16:36:57 +01:00
arizona-micsupp.c regulator: arizona-micsupp: Factor out generic initialization 2017-04-25 16:36:31 +01:00
as3711-regulator.c regulator: as3711-regulator: constify regulator_ops structure 2017-01-31 20:43:36 +00:00
as3722-regulator.c regulator: as3722: Constify regulator ops 2016-04-11 15:15:36 +01:00
axp20x-regulator.c regulator: axp20x: add NULL check on devm_kzalloc() return value 2017-07-07 13:48:33 +01:00
bcm590xx-regulator.c regulator: bcm590xx-regulator: constify regulator_ops structure 2017-01-31 20:44:14 +00:00
bd9571mwv-regulator.c regulator: bd9571mwv: Statize local symbols 2017-06-06 20:04:32 +01:00
core.c Merge remote-tracking branches 'regulator/topic/cpcap', 'regulator/topic/da9063', 'regulator/topic/dt', 'regulator/topic/fan53555' and 'regulator/topic/ltc3589' into regulator-next 2017-09-04 17:45:42 +01:00
cpcap-regulator.c regulator: cpcap: Add OF mode mapping 2017-07-17 12:12:58 +01:00
da903x.c regulator: da9*: constify regulator_ops structures 2015-12-22 23:59:57 +00:00
da9052-regulator.c regulator: da9053/52: Fix incorrectly stated minimum and maximum voltage limits 2016-07-20 17:00:34 +01:00
da9055-regulator.c regulator: da9*: constify regulator_ops structures 2015-12-22 23:59:57 +00:00
da9062-regulator.c regulator: da9061: BUCK and LDO regulator driver 2017-06-07 19:47:24 +01:00
da9063-regulator.c regulator: da9063: Return an error code on probe failure 2017-08-30 16:05:46 +01:00
da9210-regulator.c regulator: da9210: addition of device tree support 2016-07-15 11:45:26 +01:00
da9210-regulator.h
da9211-regulator.c regulator: da9211: add descriptions for da9212/da9214 2016-06-29 17:24:55 +01:00
da9211-regulator.h regulator: da9211: add descriptions for da9212/da9214 2016-06-29 17:24:55 +01:00
db8500-prcmu.c
dbx500-prcmu.c regulator: dbx500: remove unused functions in dbx500-prcmu.c 2016-09-26 09:40:22 -07:00
dbx500-prcmu.h
devres.c regulator: core: optimize devm_regulator_bulk_get() 2017-02-04 11:37:25 +01:00
dummy.c
dummy.h
fan53555.c regulator: fan53555: fix I2C device ids 2017-08-21 16:57:53 +01:00
fixed-helper.c
fixed.c regulator: fixed: Revert support for ACPI interface 2017-01-25 21:05:37 +00:00
gpio-regulator.c regulator: gpio: properly check return value of of_get_named_gpio 2016-11-11 15:38:08 +00:00
helpers.c regulator: helpers: Add regmap set_pull_down helper 2017-04-06 19:29:37 +01:00
hi655x-regulator.c Merge remote-tracking branches 'regulator/topic/helpers', 'regulator/topic/hi655x', 'regulator/topic/lm363x', 'regulator/topic/ltc3589' and 'regulator/topic/ltc3676' into regulator-next 2017-04-30 22:17:31 +09:00
hi6421-regulator.c regulator: hi6421: Describe consumed platform device 2017-06-07 20:25:49 +01:00
hi6421v530-regulator.c regulator: hi6421v530: Describe consumed platform device 2017-06-14 18:27:20 +01:00
internal.h regulator: Mark supply_name const and duplicate it as such 2017-03-17 13:12:22 +00:00
isl6271a-regulator.c regulator: drivers: Drop owner assignment from i2c_driver 2015-07-14 18:53:01 +01:00
isl9305.c Merge remote-tracking branches 'regulator/topic/mt6311', 'regulator/topic/ocp', 'regulator/topic/owner', 'regulator/topic/pfuze100' and 'regulator/topic/pwm' into regulator-next 2015-08-30 14:39:48 +01:00
Kconfig - New Drivers 2017-09-07 13:51:13 -07:00
lm363x-regulator.c regulator: lm363x: Use generic DT property name for external control pins 2017-03-07 14:59:22 +01:00
lp872x.c regulator: lp872x: Add enable GPIO pin support 2016-02-05 18:57:09 +00:00
lp873x-regulator.c regulator: lp873x: Add support for populating input supply 2016-11-11 15:36:38 +00:00
lp3971.c regulator: lp3971: Silence uninitialized variable warning 2016-04-14 14:46:05 +01:00
lp3972.c regulator: lp3972: Silence uninitialized variable warning 2016-04-14 14:46:19 +01:00
lp8755.c regulator: lp8755: fix spelling mistake "acceess" -> "access" 2017-05-19 17:56:37 +01:00
lp8788-buck.c regulator: lp8788: constify regulator_ops structures 2015-12-23 00:01:23 +00:00
lp8788-ldo.c regulator: lp8788: constify regulator_ops structures 2015-12-23 00:01:23 +00:00
lp87565-regulator.c regulator: lp87565: Fix the initial voltage range 2017-06-20 13:38:35 +01:00
ltc3589.c regulator: ltc3589: constify i2c_device_id 2017-08-21 18:10:42 +01:00
ltc3676.c regulator: ltc3676: Add OF device ID table 2017-02-21 10:30:56 -08:00
Makefile Merge remote-tracking branches 'regulator/topic/rc5t619' and 'regulator/topic/stm32-vref' into regulator-next 2017-09-04 17:45:50 +01:00
max1586.c regulator: Convert to using %pOF instead of full_name 2017-07-19 11:56:01 +01:00
max8649.c
max8660.c regulator: max8660: Constify regulator_ops 2017-03-13 16:46:24 +00:00
max8907-regulator.c regulator: max8907-regulator: constify regulator_ops structure 2017-01-31 20:54:26 +00:00
max8925-regulator.c regulator: max8925-regulator: constify regulator_ops structure 2017-01-31 20:54:41 +00:00
max8952.c regulator: max8952: constify regulator_ops structure 2017-01-31 20:56:09 +00:00
max8973-regulator.c thermal: Enhance thermal_zone_device_update for events 2016-09-27 14:35:21 +08:00
max8997-regulator.c regulator: max8997/8966: fix charger cv voltage set bug 2017-05-14 18:39:31 +09:00
max8998.c
max14577-regulator.c regulator: max14577-regulator: constify regulator_ops structure 2017-01-31 20:48:53 +00:00
max77620-regulator.c regulator: max77620-regulator: constify regulator_ops structure 2017-01-31 20:52:52 +00:00
max77686-regulator.c regulator: max77686-regulator: constify regulator_ops structure 2017-01-31 20:53:30 +00:00
max77693-regulator.c Merge remote-tracking branches 'regulator/topic/anatop', 'regulator/topic/arizona', 'regulator/topic/bd9571mvw-m' and 'regulator/topic/const' into regulator-next 2017-04-30 22:17:25 +09:00
max77802-regulator.c regulator: max77802-regulator: constify regulator_ops structure 2017-01-31 20:54:06 +00:00
mc13xxx-regulator-core.c
mc13xxx.h
mc13783-regulator.c
mc13892-regulator.c
mt6311-regulator.c regulator: mt6311: Use REGCACHE_RBTREE 2015-12-18 12:14:27 +00:00
mt6311-regulator.h regulator: mt6311: Add support for mt6311 regulator 2015-07-24 12:30:49 +01:00
mt6323-regulator.c regulator: mt6323: Constify struct regulator_ops 2016-07-19 18:31:59 +01:00
mt6380-regulator.c regulator: mt6380: Add support for MT6380 2017-08-15 12:50:48 +01:00
mt6397-regulator.c regulator: mt6397: Add buck change mode regulator interface for mt6397 2016-05-30 16:29:43 +01:00
of_regulator.c Power management updates for v4.14-rc1 2017-09-05 12:19:08 -07:00
palmas-regulator.c Merge remote-tracking branches 'regulator/topic/settle', 'regulator/topic/tps65910' and 'regulator/topic/tps65917' into regulator-next 2017-07-03 16:52:21 +01:00
pbias-regulator.c regulator: pbias-regulator: constify regulator_ops structure 2017-01-31 20:57:16 +00:00
pcap-regulator.c regulator: pcap-regulator: constify regulator_ops structure 2017-01-31 20:57:31 +00:00
pcf50633-regulator.c regulator: pcf50633-regulator: constify regulator_ops structure 2017-01-31 20:58:15 +00:00
pfuze100-regulator.c Merge remote-tracking branches 'regulator/topic/notifier', 'regulator/topic/pfuze100', 'regulator/topic/settle', 'regulator/topic/tps65132' and 'regulator/topic/twl6030' into regulator-next 2017-04-30 22:17:36 +09:00
pv88060-regulator.c regulator: pv88060-regulator: constify regulator_ops structure 2017-01-31 20:58:46 +00:00
pv88060-regulator.h regulator: pv88060: new regulator driver 2015-11-20 18:06:15 +00:00
pv88080-regulator.c regulator: pv88080-regulator: constify regulator_ops structure 2017-01-31 20:59:01 +00:00
pv88080-regulator.h regulator: pv88080: Update regulator for PV88080 BB silicon support 2016-09-26 08:59:08 -07:00
pv88090-regulator.c regulator: pv88090: Exception handling for out of bounds 2017-08-30 16:12:17 +01:00
pv88090-regulator.h regulator: pv88090: Exception handling for out of bounds 2017-08-30 16:12:17 +01:00
pwm-regulator.c regulator: pwm-regulator: Remove unneeded gpiod NULL check 2017-07-24 16:26:35 +01:00
qcom_rpm-regulator.c regulator: qcom_rpm-regulator: add NULL check on of_match_device() return value 2017-07-07 13:42:03 +01:00
qcom_smd-regulator.c regulator: qcom_smd: add NULL check on of_match_device() return value 2017-07-07 13:42:07 +01:00
qcom_spmi-regulator.c regulator: qcom_spmi: Include offset when translating voltages 2017-11-02 16:11:28 +00:00
rc5t583-regulator.c regulator: rc5t583-regulator: constify regulator_ops structure 2017-01-31 20:59:37 +00:00
rk808-regulator.c regulator: rk808: Add regulator driver for RK805 2017-08-21 08:54:12 +01:00
rn5t618-regulator.c regulator: rn5t618: add RC5T619 PMIC support 2017-08-27 15:28:31 +01:00
rt5033-regulator.c
s2mpa01.c Merge remote-tracking branches 'regulator/topic/anatop', 'regulator/topic/arizona', 'regulator/topic/bd9571mvw-m' and 'regulator/topic/const' into regulator-next 2017-04-30 22:17:25 +09:00
s2mps11.c regulator: s2mps11: Constify regulator_ops 2017-03-13 16:46:31 +00:00
s5m8767.c regulator: Convert to using %pOF instead of full_name 2017-07-19 11:56:01 +01:00
sky81452-regulator.c
stm32-vrefbuf.c regulator: Add support for stm32-vrefbuf 2017-08-30 18:28:35 +01:00
stw481x-vmmc.c regulator: stw481x-vmmc: fix ages old enable error 2016-11-13 09:22:37 +00:00
ti-abb-regulator.c
tps6105x-regulator.c regulator: tps6105x: Convert to use regmap helper functions 2015-11-18 13:19:47 +00:00
tps6507x-regulator.c regulator: tps6507x: Drop pointless static qualifier for *reg_data variable 2016-10-24 17:49:14 +01:00
tps6524x-regulator.c regulator: tps6524x: Fix broken use of spi_dev_get() 2016-04-20 17:37:59 +01:00
tps6586x-regulator.c regulator: tps6586x: silence pointer-to-int-cast 2015-07-23 15:58:33 +01:00
tps51632-regulator.c regulator: tps51632: Fix setting ramp delay 2016-05-31 16:38:01 +01:00
tps62360-regulator.c regulator: drivers: Drop owner assignment from i2c_driver 2015-07-14 18:53:01 +01:00
tps65023-regulator.c regulator: tps65023: Fix inverted core enable logic. 2017-04-18 18:55:05 +01:00
tps65086-regulator.c regulator: tps65086: Fix DT node referencing in of_parse_cb 2017-02-13 18:04:28 +00:00
tps65090-regulator.c
tps65132-regulator.c regulator: tps65132: fix platform_no_drv_owner.cocci warnings 2017-04-14 17:59:32 +01:00
tps65217-regulator.c regulator: tps65217: Allow DCDC1 and DCDC3 up to 3.3V 2017-01-23 17:48:55 +00:00
tps65218-regulator.c regulator: tps65218: Remove all the compatibles 2016-10-26 10:30:39 +01:00
tps65910-regulator.c regulator: tps65910: check TPS65910_NUM_REGS at build time 2017-06-13 18:46:48 +01:00
tps65912-regulator.c regulator: tps65912: Add regulator driver for the TPS65912 PMIC 2016-02-11 16:31:06 +00:00
tps80031-regulator.c
twl6030-regulator.c mfd: twl: Move header file out of I2C realm 2017-09-04 14:41:02 +01:00
twl-regulator.c mfd: twl: Move header file out of I2C realm 2017-09-04 14:41:02 +01:00
userspace-consumer.c
vctrl-regulator.c regulator: vctrl: Fix out of bounds array access for vctrl->vtable 2017-04-14 18:01:03 +01:00
vexpress-regulator.c regulator: vexpress: rename vexpress regulator implementation 2016-02-15 21:01:52 +00:00
virtual.c
wm831x-dcdc.c Merge remote-tracking branch 'regulator/topic/wm831x' into regulator-next 2016-01-12 18:26:12 +00:00
wm831x-isink.c regulator: wm8*: constify regulator_ops structures 2015-12-23 00:00:00 +00:00
wm831x-ldo.c Merge remote-tracking branch 'regulator/topic/wm831x' into regulator-next 2016-01-12 18:26:12 +00:00
wm8350-regulator.c regulator: wm8*: constify regulator_ops structures 2015-12-23 00:00:00 +00:00
wm8400-regulator.c regulator: wm8*: constify regulator_ops structures 2015-12-23 00:00:00 +00:00
wm8994-regulator.c regulator: wm8*: constify regulator_ops structures 2015-12-23 00:00:00 +00:00