linux/drivers/regulator
Krzysztof Kozlowski 18ac9c5e35 regulator: s2mps11: Fix invalid selector mask and voltages for buck9
commit 3b67262307 upstream.

The buck9 regulator of S2MPS11 PMIC had incorrect vsel_mask (0xff
instead of 0x1f) thus reading entire register as buck9's voltage. This
effectively caused regulator core to interpret values as higher voltages
than they were and then to set real voltage much lower than intended.

The buck9 provides power to other regulators, including LDO13
and LDO19 which supply the MMC2 (SD card). On Odroid XU3/XU4 the lower
voltage caused SD card detection errors on Odroid XU3/XU4:
	mmc1: card never left busy state
	mmc1: error -110 whilst initialising SD card

During driver probe the regulator core was checking whether initial
voltage matches the constraints. With incorrect vsel_mask of 0xff and
default value of 0x50, the core interpreted this as 5 V which is outside
of constraints (3-3.775 V). Then the regulator core was adjusting the
voltage to match the constraints. With incorrect vsel_mask this new
voltage mapped to a vere low voltage in the driver.

Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Reviewed-by: Javier Martinez Canillas <javier@osg.samsung.com>
Tested-by: Javier Martinez Canillas <javier@osg.samsung.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
[bwh: Backported to 3.16: s2mps11_buck9_ops was never combined with other
 macros here, so just change the n_voltages and vsel_mask fields]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
History 2016-06-15 21:29:21 +01:00
..
88pm800.c regulator: 88pm800: Remove redundant error message 2014-02-20 01:34:38 +09:00
88pm8607.c regulator: 88pm8607: fix indent code style 2014-02-27 13:39:29 +09:00
aat2870-regulator.c regulator: aat2870: Use regulator_map_voltage_ascend 2014-03-26 16:52:39 +00:00
ab3100.c regulator: ab3100: cast fix 2014-01-23 19:52:09 +00:00
ab8500-ext.c regulator: ab8500-ext: use devm_regulator_register() 2013-09-30 18:10:52 +01:00
ab8500.c regulator: ab8500: use devm_regulator_register() 2013-12-09 17:38:40 +00:00
act8865-regulator.c regulator: act8865: Remove unnecessary *rdev[] from struct act8865 2014-03-10 10:30:21 +00:00
ad5398.c regulator: ad5398: Convert to devm_regulator_register 2013-09-17 00:27:55 +01:00
anatop-regulator.c regulator: anatop: Set default voltage selector for vddpu 2015-01-05 13:33:40 +00:00
arizona-ldo1.c regulator: arizona-ldo1: remove bypass functionality 2014-09-17 09:21:55 -07:00
arizona-micsupp.c regulator: arizona-micsupp: Add missing #include 2014-05-08 18:16:51 +01:00
as3711-regulator.c regulator: as3711: Remove redundant error message 2014-02-20 01:38:41 +09:00
as3722-regulator.c regulator: as3722: Make 0 a valid selector 2014-06-03 16:51:19 +01:00
axp20x-regulator.c regulator: axp20x: Use regulator_map_voltage_ascend for LDO4 2014-06-01 13:42:42 +01:00
bcm590xx-regulator.c regulator: bcm590xx: fix vbus name 2014-06-22 12:00:14 +01:00
core.c regulator: core: fix constraints output buffer 2015-07-15 10:00:25 +01:00
da903x.c Merge remote-tracking branch 'regulator/topic/linear' into regulator-next 2013-10-24 11:11:37 +01:00
da9052-regulator.c regulator: da9052: Add ramp speed information for the DVC regulators 2014-02-19 22:04:38 +09:00
da9055-regulator.c Merge remote-tracking branches 'regulator/topic/bcm590xx', 'regulator/topic/da9052', 'regulator/topic/da9055', 'regulator/topic/da9063', 'regulator/topic/da9210', 'regulator/topic/db8500' and 'regulator/topic/dbx500' into regulator-next 2014-03-26 16:57:51 +00:00
da9063-regulator.c Merge remote-tracking branches 'regulator/topic/bcm590xx', 'regulator/topic/da9052', 'regulator/topic/da9055', 'regulator/topic/da9063', 'regulator/topic/da9210', 'regulator/topic/db8500' and 'regulator/topic/dbx500' into regulator-next 2014-03-26 16:57:51 +00:00
da9210-regulator.c regulator: da9210: Remove redundant error message 2014-02-20 19:58:46 +09:00
da9210-regulator.h regulator: da9210: New driver 2013-08-06 17:46:15 +01:00
db8500-prcmu.c regulator: db8500-prcmu: Set 1.8V as a fixed voltage for vsmps2 2014-03-21 17:46:40 +00:00
dbx500-prcmu.c regulator: dbx500: use seq_puts() instead of seq_printf() 2014-03-19 10:19:49 +00:00
dbx500-prcmu.h regulator: dbx500-prcmu: Remove operating_point from struct dbx500_regulator_info 2013-04-02 23:05:28 +01:00
devres.c regulator: Constify the pointer to alias name array 2014-05-23 18:55:23 +01:00
dummy.c regulator: dummy: Should be always-on 2014-02-26 08:49:52 +09:00
dummy.h regulator: fix build when CONFIG_REGULATOR_DUMMY=n 2010-10-28 22:40:32 +01:00
fan53555.c regulator: fan53555: Remove redundant error message 2014-02-20 20:20:39 +09:00
fixed-helper.c regulator: extend the fixed dummy voltage regulator to accept voltage 2012-06-19 23:22:30 +01:00
fixed.c regulator: fixed: use of_property_read_{bool|u32}() 2014-05-26 16:19:36 +01:00
gpio-regulator.c regulator: gpio-regulator: fix forgotten gpios-states reading 2014-02-14 14:58:57 +00:00
helpers.c regulator: helpers: Modify helpers enabling multi-bit control 2014-03-06 17:30:10 +08:00
internal.h regulator: core: Split devres code out into a separate file 2013-09-17 00:28:45 +01:00
isl6271a-regulator.c regulator: isl6271a-regulator: Use devm_regulator_register 2013-09-17 00:28:42 +01:00
Kconfig regulator: Updates for v3.16 2014-06-03 11:44:48 -07:00
lp872x.c regulator: lp872x: Do not hardcode return values 2014-02-20 01:26:02 +09:00
lp3971.c regulator: lp3971: Do not hardcode return value 2014-02-20 01:28:12 +09:00
lp3972.c regulator: lp3972: Convert to devm_regulator_register 2013-11-24 14:02:18 +00:00
lp8755.c Merge remote-tracking branch 'regulator/topic/max8660' into regulator-next 2013-09-01 13:50:16 +01:00
lp8788-buck.c regulator: lp8788-buck: use devm_regulator_register() 2013-09-30 18:10:59 +01:00
lp8788-ldo.c regulator: lp8788-ldo: use devm_regulator_register() 2013-09-30 18:10:59 +01:00
ltc3589.c regulator: ltc3589: fix broken voltage transitions 2014-10-30 09:40:12 -07:00
Makefile Merge remote-tracking branches 'regulator/topic/fixed', 'regulator/topic/id-const', 'regulator/topic/ltc3589', 'regulator/topic/max8649' and 'regulator/topic/of' into regulator-next 2014-06-02 17:08:05 +01:00
max1586.c regulator: max1586: Don't allocate memory for regulator_dev pointers 2014-03-10 10:24:28 +00:00
max8649.c regulator: max8649: remove unnecessary OOM messages 2014-06-02 15:12:16 +01:00
max8660.c regulator: max8660: Fix brace alignment 2014-03-19 12:47:06 +00:00
max8907-regulator.c regulator: max8907: Remove regulator_dev array from state container 2014-03-10 09:34:59 +00:00
max8925-regulator.c regulator: max8925: Silence checkpatch warning 2014-03-18 12:40:19 +00:00
max8952.c regulator: max8952: Make of_device_id array const 2014-05-07 20:56:47 +01:00
max8973-regulator.c regulator: max8973: Remove unused field from 'struct max8973_chip' 2014-03-10 09:36:42 +00:00
max8997.c regulator: max8997: Remove unnecessary **rdev from struct max8997_data 2014-03-10 10:11:15 +00:00
max8998.c regulator: max8998: Remove unnecessary **rdev from struct max8998_data 2014-03-10 10:12:13 +00:00
max14577.c regulator: max14577: Add support for MAX77836 regulators 2014-04-23 14:09:45 +01:00
max77686.c regulator: max77686: Remove regulator_dev array from state container 2014-03-10 09:29:01 +00:00
max77693.c regulator: max77693: Fix use of uninitialized regulator config 2014-11-14 15:19:55 +00:00
mc13xxx-regulator-core.c regulator: mc13xxx: Fix probing with DT 2014-03-03 10:58:23 +09:00
mc13xxx.h regulator: mc13xxx: Add warning of incorrect names of regulators 2013-04-28 02:10:00 +01:00
mc13783-regulator.c Merge remote-tracking branch 'regulator/topic/mc13783' into regulator-next 2013-10-24 11:11:38 +01:00
mc13892-regulator.c Merge remote-tracking branches 'regulator/topic/db8500', 'regulator/topic/gpio', 'regulator/topic/lp3971', 'regulator/topic/lp3972', 'regulator/topic/max14577', 'regulator/topic/max77693', 'regulator/topic/mc13892', 'regulator/topic/pcf50633' and 'regulator/topic/pfuze100' into regulator-linus 2014-01-23 12:01:27 +00:00
of_regulator.c regulator: use of_property_read_{bool|u32}() 2014-06-01 11:56:23 +01:00
palmas-regulator.c Merge remote-tracking branches 'regulator/fix/bcm590xx', 'regulator/fix/palmas' and 'regulator/fix/tps65218' into regulator-linus 2014-06-28 14:01:04 +01:00
pbias-regulator.c regulator: pbias: Fix broken pbias disable functionality 2015-09-28 10:21:40 +01:00
pcap-regulator.c regulator: pcap: use devm_regulator_register() 2013-09-30 18:11:00 +01:00
pcf50633-regulator.c mfd: pcf50633: Correct device name for pcf50633 regulator 2013-12-02 17:58:58 +00:00
pfuze100-regulator.c regulator: pfuze100: Support enable/disable for fixed regulator 2014-05-27 12:25:57 +01:00
rc5t583-regulator.c regulator: rc5t583: Remove redundant error message 2014-02-20 20:26:05 +09:00
s2mpa01.c Merge remote-tracking branches 'regulator/topic/palmas', 'regulator/topic/pbias', 'regulator/topic/pfuze100', 'regulator/topic/s2mpa01' and 'regulator/topic/s2mps11' into regulator-next 2014-06-02 17:08:08 +01:00
s2mps11.c regulator: s2mps11: Fix invalid selector mask and voltages for buck9 2016-06-15 21:29:21 +01:00
s5m8767.c regulator: s5m8767: fix get_register() error handling 2016-05-01 00:05:48 +02:00
st-pwm.c regulator: st-pwm: Make of_device_id array const 2014-05-07 20:56:09 +01:00
stw481x-vmmc.c regulator: stw481x-vmmc: use devm_regulator_register() 2013-12-09 17:26:29 +00:00
ti-abb-regulator.c regulator: ti-abb: Remove redundant error message 2014-02-19 22:06:52 +09:00
tps6105x-regulator.c Merge remote-tracking branch 'regulator/topic/tps6105x' into regulator-next 2013-10-24 11:11:41 +01:00
tps6507x-regulator.c regulator: tps6507x: Remove redundant error message 2014-02-20 20:53:09 +09:00
tps6524x-regulator.c regulator: tps6524x: Remove redundant error message 2014-02-20 20:54:59 +09:00
tps6586x-regulator.c regulator: tps6586x: Remove unused to_tps6586x_dev() function 2014-05-27 12:04:39 +01:00
tps51632-regulator.c regulator: tps51632: Remove redundant error message 2014-02-20 20:50:01 +09:00
tps62360-regulator.c regulator: tps62360: Remove redundant error message 2014-02-20 20:51:08 +09:00
tps65023-regulator.c Merge remote-tracking branch 'regulator/topic/tps65023' into regulator-next 2013-10-24 11:11:42 +01:00
tps65090-regulator.c regulator: tps65090: Fix tps65090 crash on Tegra Dalmore 2014-05-02 09:33:30 -07:00
tps65217-regulator.c regulator: tps65217: Use regulator_map_voltage_ascend for LDO1 2014-04-18 17:21:00 +01:00
tps65218-regulator.c regulator: tps65218: fix DCDC4 linear voltage range 2014-09-17 09:21:55 -07:00
tps65910-regulator.c regulator: tps65910: Remove redundant error message 2014-02-20 21:01:27 +09:00
tps65912-regulator.c Merge remote-tracking branch 'regulator/topic/linear' into regulator-next 2013-10-24 11:11:37 +01:00
tps80031-regulator.c regulator: tps80031: remove unnecessary parentheses 2014-03-05 12:33:18 +08:00
twl-regulator.c regulator: twl: Fix checkpatch issue 2014-01-08 17:16:07 +00:00
userspace-consumer.c regulator: use dev_get_platdata() 2013-07-30 12:24:20 +01:00
vexpress.c regulator: Updates for v3.16 2014-06-03 11:44:48 -07:00
virtual.c drivers/regulator/virtual: avoid world-writable sysfs files. 2014-05-14 10:53:55 +09:30
wm831x-dcdc.c regulator: wm831x-dcdc: Remove redundant error message 2014-02-20 21:03:14 +09:00
wm831x-isink.c regulator: wm831x-isink: Remove redundant error message 2014-02-20 21:03:16 +09:00
wm831x-ldo.c regulator: wm831x-ldo: Remove redundant error message 2014-02-20 21:03:17 +09:00
wm8350-regulator.c regulator: wm8350: Do not hardcode return value 2014-02-19 13:24:12 +09:00
wm8400-regulator.c Merge remote-tracking branch 'regulator/topic/linear' into regulator-next 2013-10-24 11:11:37 +01:00
wm8994-regulator.c regulator: wm8994: Remove redundant error message 2014-02-20 21:05:39 +09:00