linux/drivers/regulator
Javier Martinez Canillas 2e0eaa1aa0 regulator: max77802: Add set suspend mode for BUCKs and simplify code
The max77802 PMIC has a special enable pin (PWRREQ) that can be used
by the Application Processor (AP) to power down and up voltage rails.

The max77802 PMIC regulators have 3 different enable control logics.
Some regulators support to be configured on different operational mode
during normal operation while others only support to be put in a Low
Power Mode while the system has entered in sleep mode. Some regulators
don't even support that configuration. The logics are the following:

Enable Control Logic1 by PWRREQ (BUCK 2-4, LDO2, LDO4-19, LDO22, LDO35)
-------------------------------
0: Output OFF
1: Output ON/OFF (Controlled by PWRREQ)
     PWRREQ = HIGH (1): Output ON in Normal Mode
     PWRREQ = LOW (0): Output OFF
2: Output On with Low Power Mode (Controlled by PWRREQ)
     PWRREQ = HIGH (1) : Output ON in Normal Mode
     PWRREQ = LOW (0): Output ON in Low Power Mode
3: Output ON in Normal Mode

Enable Control Logic2 by PWRREQ (LDO1, LDO20, LDO21)
-------------------------------
0: Output ON/OFF by ENx
1: Output ON in Low Power Mode
2: Output ON in Low Power Mode (Controlled by PWRREQ)
   PWRREQ = HIGH (1): Output ON in Normal Mode
   PWRREQ = LOW (0): Output ON in Low Power Mode
3: Output ON in Normal Mode

Enable Control Logic3 by PWRREQ (LDO3)
-------------------------------
0 or 3: Output ON in Normal Mode
1: Output ON in Low Power Mode
2: Output ON in Low Power Mode (Controlled by PWRREQ)
   PWRREQ = HIGH (1): Output ON in Normal Mode
   PWRREQ = LOW (0): Output ON in Low Power Mode

The driver only implemented .set_suspend_mode for the LDOs regulators
but some BUCKs also support to be put in Low Power Mode on system wide
suspend so they should be supported as well. Two different functions
were used for the logic 1 and 2 but this is not necessary.

Only normal and Low Power Mode are valid operational modes, OFF is not
an mode but is a regulator state that is handled by .set_suspend_enable
ad .set_suspend_disable. So the same .set_suspend_mode function can be
used by all the regulators that support Output On with Low Power Mode
by PWRREQ, making much simpler the code to set the suspend mode.

Signed-off-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
Signed-off-by: Mark Brown <broonie@kernel.org>
2014-10-20 12:23:50 +01:00
..
88pm800.c regulator: 88pm800: remove duplicate PM800_BUCK3 define 2014-06-09 20:58:39 +01:00
88pm8607.c regulator: remove unnecessary of_node_get() to parent 2014-09-10 11:35:02 +01: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: Remove ab8500_regulator_debug_init/exit() 2014-06-22 11:51:47 +01:00
act8865-regulator.c regulator: act8865: fix build when OF is not enabled 2014-08-05 18:02:54 +01:00
ad5398.c regulator: ad5398: Convert to devm_regulator_register 2013-09-17 00:27:55 +01:00
anatop-regulator.c regulator: anatop: Make of_device_id array const 2014-05-07 20:55:41 +01:00
arizona-ldo1.c regulator: arizona-ldo1: remove bypass functionality 2014-07-04 18:51:45 +01:00
arizona-micsupp.c regulator: arizona-micsupp: Add missing #include 2014-05-08 18:16:51 +01:00
as3711-regulator.c regulator: as3711: Remove unused fields from as3711_regulator_info and as3711_regulator 2014-09-07 16:03:55 +01:00
as3722-regulator.c Merge remote-tracking branches 'regulator/topic/88pm800', 'regulator/topic/ab8500', 'regulator/topic/act8865', 'regulator/topic/as3722' and 'regulator/topic/bcm590xx' into regulator-next 2014-08-05 18:29:18 +01:00
axp20x-regulator.c regulator: axp20x: Use parent device as regulator configuration device 2014-09-22 18:18:59 -07:00
bcm590xx-regulator.c regulator: bcm590xx: Remove unused **info field from struct bcm590xx_reg 2014-09-07 16:06:57 +01:00
core.c Merge remote-tracking branches 'regulator/topic/tps65217', 'regulator/topic/tps65910' and 'regulator/topic/voltage-ev' into regulator-next 2014-09-30 13:50:31 +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: remove unnecessary of_node_get() to parent 2014-09-10 11:35:02 +01: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
da9211-regulator.c Merge remote-tracking branches 'regulator/topic/as3711', 'regulator/topic/axp20x', 'regulator/topic/bcm590xx' and 'regulator/topic/da9211' into regulator-next 2014-09-30 13:50:25 +01:00
da9211-regulator.h regulator: da9211: support DA9213 2014-08-16 16:46:22 -05: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
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
fan53555.c regulator: fan53555: Fix null pointer dereference 2014-09-18 11:01:10 -07:00
fixed-helper.c
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
hi6421-regulator.c regulator: hi6421: Fix misleading comment 2014-09-06 14:48:53 +01:00
internal.h regulator: of: Add stub OF match function for !OF case 2014-09-10 16:40:07 +01:00
isl6271a-regulator.c regulator: isl6271a-regulator: Use devm_regulator_register 2013-09-17 00:28:42 +01:00
isl9305.c regulator: isl9305: Convert to new style DT parsing 2014-09-10 12:18:56 +01:00
Kconfig Merge remote-tracking branches 'regulator/topic/rk808', 'regulator/topic/rn5t618' and 'regulator/topic/samsung' into regulator-next 2014-09-30 13:50:30 +01:00
lp872x.c regulator: lp872x: Don't set constraints within the regulator driver 2014-07-28 13:19:23 +01: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 regulator: lp8755: Use devm_regulator_register 2014-07-09 11:44:01 +02: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-09-26 09:22:50 +01:00
Makefile Merge remote-tracking branches 'regulator/topic/rk808', 'regulator/topic/rn5t618' and 'regulator/topic/samsung' into regulator-next 2014-09-30 13:50:30 +01:00
max1586.c regulator: max1586: of_get_max1586_platform_data() can be static 2014-09-01 12:56:20 +01: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: remove unnecessary of_node_get() to parent 2014-09-10 11:35:02 +01:00
max8925-regulator.c regulator: remove unnecessary of_node_get() to parent 2014-09-10 11:35:02 +01:00
max8952.c regulator: max8952: Convert to devm_gpio_request_one() 2014-06-27 12:51:05 +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: remove unnecessary of_node_get() to parent 2014-09-10 11:35:02 +01:00
max8998.c regulator: max8998: Remove unnecessary **rdev from struct max8998_data 2014-03-10 10:12:13 +00:00
max14577.c regulator/mfd: max14577: Export symbols for calculating charger current 2014-09-24 15:25:47 +01:00
max77686.c regulator: max77686: Remove regulator_dev array from state container 2014-03-10 09:29:01 +00:00
max77693.c mfd: max77693: Remove unnecessary wrapper functions 2014-06-17 15:16:10 +01:00
max77802.c regulator: max77802: Add set suspend mode for BUCKs and simplify code 2014-10-20 12:23:50 +01:00
mc13xxx-regulator-core.c regulator: mc13xxx: Remove unnecessary locks 2014-06-09 20:52:33 +01:00
mc13xxx.h regulator: mc13xxx: Remove unused field "hi_bit" 2014-06-09 20:50:35 +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 regulator: core: add const to regulator_ops and fix build error in mc13892 2014-08-19 10:36:07 -05:00
of_regulator.c regulator: of: Provide simplified DT parsing method 2014-09-10 12:00:53 +01:00
palmas-regulator.c regulator: remove unnecessary of_node_get() to parent 2014-09-10 11:35:02 +01:00
pbias-regulator.c regulator: pbias: remove unnecessary OOM messages 2014-06-02 15:14:51 +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
pwm-regulator.c regulator: pwm-regulator: get voltage and duty table from dts 2014-09-28 11:35:53 +01:00
qcom_rpm-regulator.c regulator: qcom_rpm: Fix FORCE_MODE_IS_2_BITS macro 2014-09-26 09:28:40 +01:00
rc5t583-regulator.c regulator: rc5t583: Remove redundant error message 2014-02-20 20:26:05 +09:00
rk808-regulator.c regulator: rk808: Add function for ramp delay for buck1/buck2 2014-09-16 11:27:53 -07:00
rn5t618-regulator.c regulator: rn5t618: add driver for Ricoh RN5T618 regulators 2014-08-30 14:10:04 +01:00
s2mpa01.c regulator: s2mpa01: Optimize the regulator description macro 2014-08-16 16:51:16 -05:00
s2mps11.c regulator: s2mps11: Optimize the regulator description macro 2014-08-16 16:51:16 -05:00
s5m8767.c regulator: s5m8767: Remove unused variable 2014-06-24 16:18:52 +01:00
sky81452-regulator.c regulator: sky81452: Adding Skyworks SKY81452 regulator driver 2014-08-16 16:52:01 -05: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: Use regulator_list_voltage_linear for dvm/ldo4/sw2 2014-06-06 11:16:08 +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 regulator: tps65023: Remove duplicate test for I2C_FUNC_SMBUS_BYTE_DATA functionality 2014-08-12 22:55:55 +01:00
tps65090-regulator.c regulator: tps65090: Set voltage for fixed regulators 2014-07-31 20:24:29 +01:00
tps65217-regulator.c regulator: tps65217: Use simplified DT parsing 2014-09-10 12:02:48 +01:00
tps65218-regulator.c regulator: tps65218: Add fixed_uV fields for dcdc5 and dcdc6 2014-07-10 14:11:36 +02:00
tps65910-regulator.c Merge remote-tracking branches 'regulator/topic/tps65217', 'regulator/topic/tps65910' and 'regulator/topic/voltage-ev' into regulator-next 2014-09-30 13:50:31 +01: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: Convert to use devm_kmemdup() 2014-06-27 12:50:35 +01: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