* [PATCH v3 0/4] regulator: max77686/trats2: Disable some regulators in suspend
@ 2014-10-21 13:19 Krzysztof Kozlowski
2014-10-21 13:19 ` [PATCH v3 1/4] regulator: max77686: Replace hard-coded opmode values with defines Krzysztof Kozlowski
` (3 more replies)
0 siblings, 4 replies; 8+ messages in thread
From: Krzysztof Kozlowski @ 2014-10-21 13:19 UTC (permalink / raw)
To: linux-arm-kernel
Hi,
Changes since v2
================
1. Patch 1/4: Fully describe different values used for controlling
the regulators (low power modes, enable, disable). Remove "opmode"
from new defines. Suggested by Javier.
2. Patch 2/4: minor nits after changing patch 1.
3. Add Javier's reviewed-by to 2, 3 and 4 patch.
4. Patch 3/4 (changes in documentation) should be picked up by Lee
Jones but I'm resending it anyway.
Changes since v1
================
1. Add patch 1/4 and 3/4.
2. Patch 2/4: Extend existing set_suspend_disable (for bucks) with
LDO support. Implement set_suspend_enable. Suggested by Javier.
3. Patch 4/4: Add regulator suspend properties only to regulators
actually supporting this. Other regulators, not implementing
suspend enable/disable, will warn ("VCC_1.8V_IO: No configuration").
4. Patch 4/4: In suspend enable VHSIC_1.0V and VHSIC_1.8V regulators.
Suggested by Chanwoo Choi.
Description
===========
This patchset makes use of Javier Martinez Cainllas changes [1].
It allows disabling some of the regulators during suspend to RAM.
Javier's patchset is necessary only to test it.
[1] [PATCH v3 0/2] ARM: EXYNOS: Call regulator suspend prepare/finish
https://lkml.org/lkml/2014/10/20/545
Best regards,
Krzysztof
Krzysztof Kozlowski (4):
regulator: max77686: Replace hard-coded opmode values with defines
regulator: max77686: Implement suspend disable for some LDOs
mfd/regulator: dt-bindings: max77686: Document regulators off in
suspend
ARM: dts: exynos4412-trats: Add suspend configuration for max77686
regulators
Documentation/devicetree/bindings/mfd/max77686.txt | 6 ++
arch/arm/boot/dts/exynos4412-trats2.dts | 72 ++++++++++++---------
drivers/regulator/max77686.c | 73 ++++++++++++++++++----
3 files changed, 108 insertions(+), 43 deletions(-)
--
1.9.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v3 1/4] regulator: max77686: Replace hard-coded opmode values with defines
2014-10-21 13:19 [PATCH v3 0/4] regulator: max77686/trats2: Disable some regulators in suspend Krzysztof Kozlowski
@ 2014-10-21 13:19 ` Krzysztof Kozlowski
2014-10-21 13:33 ` Javier Martinez Canillas
2014-10-21 13:19 ` [PATCH v3 2/4] regulator: max77686: Implement suspend disable for some LDOs Krzysztof Kozlowski
` (2 subsequent siblings)
3 siblings, 1 reply; 8+ messages in thread
From: Krzysztof Kozlowski @ 2014-10-21 13:19 UTC (permalink / raw)
To: linux-arm-kernel
Add defines for regulator operating modes which should be more readable,
especially if one does not have Maxim 77686 datasheet.
The patch does not introduce any functional change.
Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Suggested-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
---
drivers/regulator/max77686.c | 34 +++++++++++++++++++++++++++-------
1 file changed, 27 insertions(+), 7 deletions(-)
diff --git a/drivers/regulator/max77686.c b/drivers/regulator/max77686.c
index ef1af2debbd2..3d0922051488 100644
--- a/drivers/regulator/max77686.c
+++ b/drivers/regulator/max77686.c
@@ -45,6 +45,25 @@
#define MAX77686_DVS_MINUV 600000
#define MAX77686_DVS_UVSTEP 12500
+/* Values used for configuring Buck[1234] */
+#define MAX77686_BUCK_OFF_PWRREQ 0x1
+#define MAX77686_BUCK_LOWPOWER 0x2
+#define MAX77686_BUCK_NORMAL 0x3
+
+/*
+ * Values used for configuring LDOn:
+ * - LDO1, 3-5, 9, 13, 17-26: forcing low power mode
+ */
+#define MAX77686_LDO_LOWPOWER 0x1
+/*
+ * In the same time for LDOn:
+ * - LDO2, 6-8, 10-12, 14-16: on/off controlled by PWRREQ
+ */
+#define MAX77686_LDO_OFF_PWRREQ 0x1
+/* Low power mode controlled by PWRREQ */
+#define MAX77686_LDO_LOWPOWER_PWRREQ 0x2
+#define MAX77686_LDO_NORMAL 0x3
+
#define MAX77686_OPMODE_SHIFT 6
#define MAX77686_OPMODE_BUCK234_SHIFT 4
#define MAX77686_OPMODE_MASK 0x3
@@ -76,9 +95,10 @@ static int max77686_buck_set_suspend_disable(struct regulator_dev *rdev)
int ret, id = rdev_get_id(rdev);
if (id == MAX77686_BUCK1)
- val = 0x1;
+ val = MAX77686_BUCK_OFF_PWRREQ;
else
- val = 0x1 << MAX77686_OPMODE_BUCK234_SHIFT;
+ val = MAX77686_BUCK_OFF_PWRREQ
+ << MAX77686_OPMODE_BUCK234_SHIFT;
ret = regmap_update_bits(rdev->regmap, rdev->desc->enable_reg,
rdev->desc->enable_mask, val);
@@ -103,10 +123,10 @@ static int max77686_set_suspend_mode(struct regulator_dev *rdev,
switch (mode) {
case REGULATOR_MODE_IDLE: /* ON in LP Mode */
- val = 0x2 << MAX77686_OPMODE_SHIFT;
+ val = MAX77686_LDO_LOWPOWER_PWRREQ << MAX77686_OPMODE_SHIFT;
break;
case REGULATOR_MODE_NORMAL: /* ON in Normal Mode */
- val = 0x3 << MAX77686_OPMODE_SHIFT;
+ val = MAX77686_LDO_NORMAL << MAX77686_OPMODE_SHIFT;
break;
default:
pr_warn("%s: regulator_suspend_mode : 0x%x not supported\n",
@@ -133,13 +153,13 @@ static int max77686_ldo_set_suspend_mode(struct regulator_dev *rdev,
switch (mode) {
case REGULATOR_MODE_STANDBY: /* switch off */
- val = 0x1 << MAX77686_OPMODE_SHIFT;
+ val = MAX77686_LDO_OFF_PWRREQ << MAX77686_OPMODE_SHIFT;
break;
case REGULATOR_MODE_IDLE: /* ON in LP Mode */
- val = 0x2 << MAX77686_OPMODE_SHIFT;
+ val = MAX77686_LDO_LOWPOWER_PWRREQ << MAX77686_OPMODE_SHIFT;
break;
case REGULATOR_MODE_NORMAL: /* ON in Normal Mode */
- val = 0x3 << MAX77686_OPMODE_SHIFT;
+ val = MAX77686_LDO_NORMAL << MAX77686_OPMODE_SHIFT;
break;
default:
pr_warn("%s: regulator_suspend_mode : 0x%x not supported\n",
--
1.9.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 2/4] regulator: max77686: Implement suspend disable for some LDOs
2014-10-21 13:19 [PATCH v3 0/4] regulator: max77686/trats2: Disable some regulators in suspend Krzysztof Kozlowski
2014-10-21 13:19 ` [PATCH v3 1/4] regulator: max77686: Replace hard-coded opmode values with defines Krzysztof Kozlowski
@ 2014-10-21 13:19 ` Krzysztof Kozlowski
2014-10-21 13:19 ` [PATCH v3 3/4] mfd/regulator: dt-bindings: max77686: Document regulators off in suspend Krzysztof Kozlowski
2014-10-21 13:19 ` [PATCH v3 4/4] ARM: dts: exynos4412-trats: Add suspend configuration for max77686 regulators Krzysztof Kozlowski
3 siblings, 0 replies; 8+ messages in thread
From: Krzysztof Kozlowski @ 2014-10-21 13:19 UTC (permalink / raw)
To: linux-arm-kernel
Some LDOs of Maxim 77686 PMIC support disabling during system suspend
(LDO{2,6,7,8,10,11,12,14,15,16}). This was already implemented as part
of set_suspend_mode function. In that case the mode was one of:
- disable,
- normal mode,
- low power mode.
However there are no bindings for setting the mode during suspend.
Add suspend disable for LDO regulators supporting this to the existing
max77686_buck_set_suspend_disable() function. This helps reducing
energy consumption during system sleep.
Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Reviewed-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
---
drivers/regulator/max77686.c | 43 +++++++++++++++++++++++++++++++++++--------
1 file changed, 35 insertions(+), 8 deletions(-)
diff --git a/drivers/regulator/max77686.c b/drivers/regulator/max77686.c
index 3d0922051488..81f4b69adc82 100644
--- a/drivers/regulator/max77686.c
+++ b/drivers/regulator/max77686.c
@@ -87,18 +87,31 @@ struct max77686_data {
unsigned int opmode[MAX77686_REGULATORS];
};
-/* Some BUCKS supports Normal[ON/OFF] mode during suspend */
-static int max77686_buck_set_suspend_disable(struct regulator_dev *rdev)
+/* Some BUCKs and LDOs supports Normal[ON/OFF] mode during suspend */
+static int max77686_set_suspend_disable(struct regulator_dev *rdev)
{
unsigned int val;
struct max77686_data *max77686 = rdev_get_drvdata(rdev);
int ret, id = rdev_get_id(rdev);
- if (id == MAX77686_BUCK1)
+ switch (id) {
+ case MAX77686_BUCK1:
val = MAX77686_BUCK_OFF_PWRREQ;
- else
- val = MAX77686_BUCK_OFF_PWRREQ
- << MAX77686_OPMODE_BUCK234_SHIFT;
+ break;
+ case MAX77686_BUCK2 ... MAX77686_BUCK4:
+ val = MAX77686_BUCK_OFF_PWRREQ << MAX77686_OPMODE_BUCK234_SHIFT;
+ break;
+ case MAX77686_LDO2:
+ case MAX77686_LDO6 ... MAX77686_LDO8:
+ case MAX77686_LDO10 ... MAX77686_LDO12:
+ case MAX77686_LDO14 ... MAX77686_LDO16:
+ val = MAX77686_LDO_OFF_PWRREQ << MAX77686_OPMODE_SHIFT;
+ break;
+ default:
+ pr_warn("%s: regulator_suspend_disable not supported\n",
+ rdev->desc->name);
+ return -EINVAL;
+ }
ret = regmap_update_bits(rdev->regmap, rdev->desc->enable_reg,
rdev->desc->enable_mask, val);
@@ -180,6 +193,16 @@ static int max77686_enable(struct regulator_dev *rdev)
{
struct max77686_data *max77686 = rdev_get_drvdata(rdev);
+ /*
+ * One enable function is used for LDO and bucks. Assuming
+ * the same values are used for enable registers.
+ */
+ BUILD_BUG_ON(MAX77686_LDO_OFF_PWRREQ != MAX77686_BUCK_OFF_PWRREQ);
+ BUILD_BUG_ON(MAX77686_LDO_NORMAL != MAX77686_BUCK_NORMAL);
+
+ if (max77686->opmode[rdev_get_id(rdev)] == MAX77686_LDO_OFF_PWRREQ)
+ max77686->opmode[rdev_get_id(rdev)] = MAX77686_LDO_NORMAL;
+
return regmap_update_bits(rdev->regmap, rdev->desc->enable_reg,
rdev->desc->enable_mask,
max77686->opmode[rdev_get_id(rdev)]);
@@ -232,6 +255,8 @@ static struct regulator_ops max77686_ldo_ops = {
.set_voltage_sel = regulator_set_voltage_sel_regmap,
.set_voltage_time_sel = regulator_set_voltage_time_sel,
.set_suspend_mode = max77686_ldo_set_suspend_mode,
+ .set_suspend_disable = max77686_set_suspend_disable,
+ .set_suspend_enable = max77686_enable,
};
static struct regulator_ops max77686_buck1_ops = {
@@ -243,7 +268,8 @@ static struct regulator_ops max77686_buck1_ops = {
.get_voltage_sel = regulator_get_voltage_sel_regmap,
.set_voltage_sel = regulator_set_voltage_sel_regmap,
.set_voltage_time_sel = regulator_set_voltage_time_sel,
- .set_suspend_disable = max77686_buck_set_suspend_disable,
+ .set_suspend_disable = max77686_set_suspend_disable,
+ .set_suspend_enable = max77686_enable,
};
static struct regulator_ops max77686_buck_dvs_ops = {
@@ -256,7 +282,8 @@ static struct regulator_ops max77686_buck_dvs_ops = {
.set_voltage_sel = regulator_set_voltage_sel_regmap,
.set_voltage_time_sel = regulator_set_voltage_time_sel,
.set_ramp_delay = max77686_set_ramp_delay,
- .set_suspend_disable = max77686_buck_set_suspend_disable,
+ .set_suspend_disable = max77686_set_suspend_disable,
+ .set_suspend_enable = max77686_enable,
};
#define regulator_desc_ldo(num) { \
--
1.9.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 3/4] mfd/regulator: dt-bindings: max77686: Document regulators off in suspend
2014-10-21 13:19 [PATCH v3 0/4] regulator: max77686/trats2: Disable some regulators in suspend Krzysztof Kozlowski
2014-10-21 13:19 ` [PATCH v3 1/4] regulator: max77686: Replace hard-coded opmode values with defines Krzysztof Kozlowski
2014-10-21 13:19 ` [PATCH v3 2/4] regulator: max77686: Implement suspend disable for some LDOs Krzysztof Kozlowski
@ 2014-10-21 13:19 ` Krzysztof Kozlowski
2014-10-21 13:40 ` Lee Jones
2014-10-21 13:19 ` [PATCH v3 4/4] ARM: dts: exynos4412-trats: Add suspend configuration for max77686 regulators Krzysztof Kozlowski
3 siblings, 1 reply; 8+ messages in thread
From: Krzysztof Kozlowski @ 2014-10-21 13:19 UTC (permalink / raw)
To: linux-arm-kernel
Add information which regulators can be disabled during system suspend.
Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Suggested-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
Reviewed-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
---
Documentation/devicetree/bindings/mfd/max77686.txt | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/Documentation/devicetree/bindings/mfd/max77686.txt b/Documentation/devicetree/bindings/mfd/max77686.txt
index 678f3cf0b8f0..75fdfaf41831 100644
--- a/Documentation/devicetree/bindings/mfd/max77686.txt
+++ b/Documentation/devicetree/bindings/mfd/max77686.txt
@@ -34,6 +34,11 @@ to get matched with their hardware counterparts as follow:
-BUCKn : for BUCKs, where n can lie in range 1 to 9.
example: BUCK1, BUCK5, BUCK9.
+ Regulators which can be turned off during system suspend:
+ -LDOn : 2, 6-8, 10-12, 14-16,
+ -BUCKn : 1-4.
+ Use standard regulator bindings for it ('regulator-off-in-suspend').
+
Example:
max77686 at 09 {
--
1.9.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 4/4] ARM: dts: exynos4412-trats: Add suspend configuration for max77686 regulators
2014-10-21 13:19 [PATCH v3 0/4] regulator: max77686/trats2: Disable some regulators in suspend Krzysztof Kozlowski
` (2 preceding siblings ...)
2014-10-21 13:19 ` [PATCH v3 3/4] mfd/regulator: dt-bindings: max77686: Document regulators off in suspend Krzysztof Kozlowski
@ 2014-10-21 13:19 ` Krzysztof Kozlowski
2014-10-22 2:57 ` Chanwoo Choi
3 siblings, 1 reply; 8+ messages in thread
From: Krzysztof Kozlowski @ 2014-10-21 13:19 UTC (permalink / raw)
To: linux-arm-kernel
Add suspend to RAM configuration for max77686 regulators. Some LDOs and
bucks are disabled. This reduces energy consumption during S2R,
approximately from 17 mA to 9 mA.
Additionally remove old and not supported bindings:
- regulator-mem-off
- regulator-mem-idle
- regulator-mem-on
The max77686 driver does not parse them and they are not documented
anywere.
Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Reviewed-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
---
arch/arm/boot/dts/exynos4412-trats2.dts | 72 +++++++++++++++++++--------------
1 file changed, 42 insertions(+), 30 deletions(-)
diff --git a/arch/arm/boot/dts/exynos4412-trats2.dts b/arch/arm/boot/dts/exynos4412-trats2.dts
index dd9ac66770f7..8067eb447829 100644
--- a/arch/arm/boot/dts/exynos4412-trats2.dts
+++ b/arch/arm/boot/dts/exynos4412-trats2.dts
@@ -225,7 +225,6 @@
regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <1000000>;
regulator-always-on;
- regulator-mem-on;
};
ldo2_reg: ldo2 {
@@ -234,7 +233,9 @@
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-always-on;
- regulator-mem-on;
+ regulator-state-mem {
+ regulator-on-in-suspend;
+ };
};
ldo3_reg: ldo3 {
@@ -243,7 +244,6 @@
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-always-on;
- regulator-mem-on;
};
ldo4_reg: ldo4 {
@@ -252,7 +252,6 @@
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <2800000>;
regulator-always-on;
- regulator-mem-on;
};
ldo5_reg: ldo5 {
@@ -261,7 +260,6 @@
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-always-on;
- regulator-mem-on;
};
ldo6_reg: ldo6 {
@@ -270,7 +268,9 @@
regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <1000000>;
regulator-always-on;
- regulator-mem-on;
+ regulator-state-mem {
+ regulator-on-in-suspend;
+ };
};
ldo7_reg: ldo7 {
@@ -279,7 +279,9 @@
regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <1000000>;
regulator-always-on;
- regulator-mem-on;
+ regulator-state-mem {
+ regulator-on-in-suspend;
+ };
};
ldo8_reg: ldo8 {
@@ -287,7 +289,9 @@
regulator-name = "VMIPI_1.0V";
regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <1000000>;
- regulator-mem-off;
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
};
ldo9_reg: ldo9 {
@@ -295,7 +299,6 @@
regulator-name = "CAM_ISP_MIPI_1.2V";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
- regulator-mem-idle;
};
ldo10_reg: ldo10 {
@@ -303,7 +306,9 @@
regulator-name = "VMIPI_1.8V";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
- regulator-mem-off;
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
};
ldo11_reg: ldo11 {
@@ -312,7 +317,9 @@
regulator-min-microvolt = <1950000>;
regulator-max-microvolt = <1950000>;
regulator-always-on;
- regulator-mem-off;
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
};
ldo12_reg: ldo12 {
@@ -320,7 +327,9 @@
regulator-name = "VUOTG_3.0V";
regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <3000000>;
- regulator-mem-off;
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
};
ldo13_reg: ldo13 {
@@ -328,7 +337,6 @@
regulator-name = "NFC_AVDD_1.8V";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
- regulator-mem-idle;
};
ldo14_reg: ldo14 {
@@ -337,7 +345,9 @@
regulator-min-microvolt = <1950000>;
regulator-max-microvolt = <1950000>;
regulator-always-on;
- regulator-mem-off;
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
};
ldo15_reg: ldo15 {
@@ -345,7 +355,9 @@
regulator-name = "VHSIC_1.0V";
regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <1000000>;
- regulator-mem-off;
+ regulator-state-mem {
+ regulator-on-in-suspend;
+ };
};
ldo16_reg: ldo16 {
@@ -353,7 +365,9 @@
regulator-name = "VHSIC_1.8V";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
- regulator-mem-off;
+ regulator-state-mem {
+ regulator-on-in-suspend;
+ };
};
ldo17_reg: ldo17 {
@@ -361,7 +375,6 @@
regulator-name = "CAM_SENSOR_CORE_1.2V";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
- regulator-mem-idle;
};
ldo18_reg: ldo18 {
@@ -369,7 +382,6 @@
regulator-name = "CAM_ISP_SEN_IO_1.8V";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
- regulator-mem-idle;
};
ldo19_reg: ldo19 {
@@ -377,7 +389,6 @@
regulator-name = "VT_CAM_1.8V";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
- regulator-mem-idle;
};
ldo20_reg: ldo20 {
@@ -385,7 +396,6 @@
regulator-name = "VDDQ_PRE_1.8V";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
- regulator-mem-idle;
};
ldo21_reg: ldo21 {
@@ -393,7 +403,6 @@
regulator-name = "VTF_2.8V";
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <2800000>;
- regulator-mem-idle;
};
ldo22_reg: ldo22 {
@@ -408,7 +417,6 @@
regulator-name = "TSP_AVDD_3.3V";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
- regulator-mem-idle;
};
ldo24_reg: ldo24 {
@@ -416,7 +424,6 @@
regulator-name = "TSP_VDD_1.8V";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
- regulator-mem-idle;
};
ldo25_reg: ldo25 {
@@ -424,7 +431,6 @@
regulator-name = "LCD_VCC_3.3V";
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <2800000>;
- regulator-mem-idle;
};
ldo26_reg: ldo26 {
@@ -432,7 +438,6 @@
regulator-name = "MOTOR_VCC_3.0V";
regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <3000000>;
- regulator-mem-idle;
};
buck1_reg: buck1 {
@@ -442,7 +447,9 @@
regulator-max-microvolt = <1100000>;
regulator-always-on;
regulator-boot-on;
- regulator-mem-off;
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
};
buck2_reg: buck2 {
@@ -452,7 +459,9 @@
regulator-max-microvolt = <1500000>;
regulator-always-on;
regulator-boot-on;
- regulator-mem-off;
+ regulator-state-mem {
+ regulator-on-in-suspend;
+ };
};
buck3_reg: buck3 {
@@ -462,7 +471,9 @@
regulator-max-microvolt = <1150000>;
regulator-always-on;
regulator-boot-on;
- regulator-mem-off;
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
};
buck4_reg: buck4 {
@@ -471,7 +482,9 @@
regulator-min-microvolt = <850000>;
regulator-max-microvolt = <1150000>;
regulator-boot-on;
- regulator-mem-off;
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
};
buck5_reg: buck5 {
@@ -510,7 +523,6 @@
regulator-name = "CAM_ISP_CORE_1.2V";
regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <1200000>;
- regulator-mem-off;
};
};
};
--
1.9.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 1/4] regulator: max77686: Replace hard-coded opmode values with defines
2014-10-21 13:19 ` [PATCH v3 1/4] regulator: max77686: Replace hard-coded opmode values with defines Krzysztof Kozlowski
@ 2014-10-21 13:33 ` Javier Martinez Canillas
0 siblings, 0 replies; 8+ messages in thread
From: Javier Martinez Canillas @ 2014-10-21 13:33 UTC (permalink / raw)
To: linux-arm-kernel
Hello Krzysztof,
On 10/21/2014 03:19 PM, Krzysztof Kozlowski wrote:
> Add defines for regulator operating modes which should be more readable,
> especially if one does not have Maxim 77686 datasheet.
>
> The patch does not introduce any functional change.
>
> Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
> Suggested-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
> ---
> drivers/regulator/max77686.c | 34 +++++++++++++++++++++++++++-------
> 1 file changed, 27 insertions(+), 7 deletions(-)
>
Reviewed-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
Best regards,
Javier
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v3 3/4] mfd/regulator: dt-bindings: max77686: Document regulators off in suspend
2014-10-21 13:19 ` [PATCH v3 3/4] mfd/regulator: dt-bindings: max77686: Document regulators off in suspend Krzysztof Kozlowski
@ 2014-10-21 13:40 ` Lee Jones
0 siblings, 0 replies; 8+ messages in thread
From: Lee Jones @ 2014-10-21 13:40 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, 21 Oct 2014, Krzysztof Kozlowski wrote:
> Add information which regulators can be disabled during system suspend.
>
> Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
> Suggested-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
> Reviewed-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
> ---
> Documentation/devicetree/bindings/mfd/max77686.txt | 6 ++++++
> 1 file changed, 6 insertions(+)
This has been applied already.
> diff --git a/Documentation/devicetree/bindings/mfd/max77686.txt b/Documentation/devicetree/bindings/mfd/max77686.txt
> index 678f3cf0b8f0..75fdfaf41831 100644
> --- a/Documentation/devicetree/bindings/mfd/max77686.txt
> +++ b/Documentation/devicetree/bindings/mfd/max77686.txt
> @@ -34,6 +34,11 @@ to get matched with their hardware counterparts as follow:
> -BUCKn : for BUCKs, where n can lie in range 1 to 9.
> example: BUCK1, BUCK5, BUCK9.
>
> + Regulators which can be turned off during system suspend:
> + -LDOn : 2, 6-8, 10-12, 14-16,
> + -BUCKn : 1-4.
> + Use standard regulator bindings for it ('regulator-off-in-suspend').
> +
> Example:
>
> max77686 at 09 {
--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org ? Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v3 4/4] ARM: dts: exynos4412-trats: Add suspend configuration for max77686 regulators
2014-10-21 13:19 ` [PATCH v3 4/4] ARM: dts: exynos4412-trats: Add suspend configuration for max77686 regulators Krzysztof Kozlowski
@ 2014-10-22 2:57 ` Chanwoo Choi
0 siblings, 0 replies; 8+ messages in thread
From: Chanwoo Choi @ 2014-10-22 2:57 UTC (permalink / raw)
To: linux-arm-kernel
Hi Krzysztof,
On 10/21/2014 10:19 PM, Krzysztof Kozlowski wrote:
> Add suspend to RAM configuration for max77686 regulators. Some LDOs and
> bucks are disabled. This reduces energy consumption during S2R,
> approximately from 17 mA to 9 mA.
>
> Additionally remove old and not supported bindings:
> - regulator-mem-off
> - regulator-mem-idle
> - regulator-mem-on
> The max77686 driver does not parse them and they are not documented
> anywere.
>
> Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
> Reviewed-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
> ---
> arch/arm/boot/dts/exynos4412-trats2.dts | 72 +++++++++++++++++++--------------
> 1 file changed, 42 insertions(+), 30 deletions(-)
Looks good to me.
Reviewed-by: Chanwoo Choi <cw00.choi@samsung.com>
Thanks,
Chanwoo Choi
>
> diff --git a/arch/arm/boot/dts/exynos4412-trats2.dts b/arch/arm/boot/dts/exynos4412-trats2.dts
> index dd9ac66770f7..8067eb447829 100644
> --- a/arch/arm/boot/dts/exynos4412-trats2.dts
> +++ b/arch/arm/boot/dts/exynos4412-trats2.dts
> @@ -225,7 +225,6 @@
> regulator-min-microvolt = <1000000>;
> regulator-max-microvolt = <1000000>;
> regulator-always-on;
> - regulator-mem-on;
> };
>
> ldo2_reg: ldo2 {
> @@ -234,7 +233,9 @@
> regulator-min-microvolt = <1200000>;
> regulator-max-microvolt = <1200000>;
> regulator-always-on;
> - regulator-mem-on;
> + regulator-state-mem {
> + regulator-on-in-suspend;
> + };
> };
>
> ldo3_reg: ldo3 {
> @@ -243,7 +244,6 @@
> regulator-min-microvolt = <1800000>;
> regulator-max-microvolt = <1800000>;
> regulator-always-on;
> - regulator-mem-on;
> };
>
> ldo4_reg: ldo4 {
> @@ -252,7 +252,6 @@
> regulator-min-microvolt = <2800000>;
> regulator-max-microvolt = <2800000>;
> regulator-always-on;
> - regulator-mem-on;
> };
>
> ldo5_reg: ldo5 {
> @@ -261,7 +260,6 @@
> regulator-min-microvolt = <1800000>;
> regulator-max-microvolt = <1800000>;
> regulator-always-on;
> - regulator-mem-on;
> };
>
> ldo6_reg: ldo6 {
> @@ -270,7 +268,9 @@
> regulator-min-microvolt = <1000000>;
> regulator-max-microvolt = <1000000>;
> regulator-always-on;
> - regulator-mem-on;
> + regulator-state-mem {
> + regulator-on-in-suspend;
> + };
> };
>
> ldo7_reg: ldo7 {
> @@ -279,7 +279,9 @@
> regulator-min-microvolt = <1000000>;
> regulator-max-microvolt = <1000000>;
> regulator-always-on;
> - regulator-mem-on;
> + regulator-state-mem {
> + regulator-on-in-suspend;
> + };
> };
>
> ldo8_reg: ldo8 {
> @@ -287,7 +289,9 @@
> regulator-name = "VMIPI_1.0V";
> regulator-min-microvolt = <1000000>;
> regulator-max-microvolt = <1000000>;
> - regulator-mem-off;
> + regulator-state-mem {
> + regulator-off-in-suspend;
> + };
> };
>
> ldo9_reg: ldo9 {
> @@ -295,7 +299,6 @@
> regulator-name = "CAM_ISP_MIPI_1.2V";
> regulator-min-microvolt = <1200000>;
> regulator-max-microvolt = <1200000>;
> - regulator-mem-idle;
> };
>
> ldo10_reg: ldo10 {
> @@ -303,7 +306,9 @@
> regulator-name = "VMIPI_1.8V";
> regulator-min-microvolt = <1800000>;
> regulator-max-microvolt = <1800000>;
> - regulator-mem-off;
> + regulator-state-mem {
> + regulator-off-in-suspend;
> + };
> };
>
> ldo11_reg: ldo11 {
> @@ -312,7 +317,9 @@
> regulator-min-microvolt = <1950000>;
> regulator-max-microvolt = <1950000>;
> regulator-always-on;
> - regulator-mem-off;
> + regulator-state-mem {
> + regulator-off-in-suspend;
> + };
> };
>
> ldo12_reg: ldo12 {
> @@ -320,7 +327,9 @@
> regulator-name = "VUOTG_3.0V";
> regulator-min-microvolt = <3000000>;
> regulator-max-microvolt = <3000000>;
> - regulator-mem-off;
> + regulator-state-mem {
> + regulator-off-in-suspend;
> + };
> };
>
> ldo13_reg: ldo13 {
> @@ -328,7 +337,6 @@
> regulator-name = "NFC_AVDD_1.8V";
> regulator-min-microvolt = <1800000>;
> regulator-max-microvolt = <1800000>;
> - regulator-mem-idle;
> };
>
> ldo14_reg: ldo14 {
> @@ -337,7 +345,9 @@
> regulator-min-microvolt = <1950000>;
> regulator-max-microvolt = <1950000>;
> regulator-always-on;
> - regulator-mem-off;
> + regulator-state-mem {
> + regulator-off-in-suspend;
> + };
> };
>
> ldo15_reg: ldo15 {
> @@ -345,7 +355,9 @@
> regulator-name = "VHSIC_1.0V";
> regulator-min-microvolt = <1000000>;
> regulator-max-microvolt = <1000000>;
> - regulator-mem-off;
> + regulator-state-mem {
> + regulator-on-in-suspend;
> + };
> };
>
> ldo16_reg: ldo16 {
> @@ -353,7 +365,9 @@
> regulator-name = "VHSIC_1.8V";
> regulator-min-microvolt = <1800000>;
> regulator-max-microvolt = <1800000>;
> - regulator-mem-off;
> + regulator-state-mem {
> + regulator-on-in-suspend;
> + };
> };
>
> ldo17_reg: ldo17 {
> @@ -361,7 +375,6 @@
> regulator-name = "CAM_SENSOR_CORE_1.2V";
> regulator-min-microvolt = <1200000>;
> regulator-max-microvolt = <1200000>;
> - regulator-mem-idle;
> };
>
> ldo18_reg: ldo18 {
> @@ -369,7 +382,6 @@
> regulator-name = "CAM_ISP_SEN_IO_1.8V";
> regulator-min-microvolt = <1800000>;
> regulator-max-microvolt = <1800000>;
> - regulator-mem-idle;
> };
>
> ldo19_reg: ldo19 {
> @@ -377,7 +389,6 @@
> regulator-name = "VT_CAM_1.8V";
> regulator-min-microvolt = <1800000>;
> regulator-max-microvolt = <1800000>;
> - regulator-mem-idle;
> };
>
> ldo20_reg: ldo20 {
> @@ -385,7 +396,6 @@
> regulator-name = "VDDQ_PRE_1.8V";
> regulator-min-microvolt = <1800000>;
> regulator-max-microvolt = <1800000>;
> - regulator-mem-idle;
> };
>
> ldo21_reg: ldo21 {
> @@ -393,7 +403,6 @@
> regulator-name = "VTF_2.8V";
> regulator-min-microvolt = <2800000>;
> regulator-max-microvolt = <2800000>;
> - regulator-mem-idle;
> };
>
> ldo22_reg: ldo22 {
> @@ -408,7 +417,6 @@
> regulator-name = "TSP_AVDD_3.3V";
> regulator-min-microvolt = <3300000>;
> regulator-max-microvolt = <3300000>;
> - regulator-mem-idle;
> };
>
> ldo24_reg: ldo24 {
> @@ -416,7 +424,6 @@
> regulator-name = "TSP_VDD_1.8V";
> regulator-min-microvolt = <1800000>;
> regulator-max-microvolt = <1800000>;
> - regulator-mem-idle;
> };
>
> ldo25_reg: ldo25 {
> @@ -424,7 +431,6 @@
> regulator-name = "LCD_VCC_3.3V";
> regulator-min-microvolt = <2800000>;
> regulator-max-microvolt = <2800000>;
> - regulator-mem-idle;
> };
>
> ldo26_reg: ldo26 {
> @@ -432,7 +438,6 @@
> regulator-name = "MOTOR_VCC_3.0V";
> regulator-min-microvolt = <3000000>;
> regulator-max-microvolt = <3000000>;
> - regulator-mem-idle;
> };
>
> buck1_reg: buck1 {
> @@ -442,7 +447,9 @@
> regulator-max-microvolt = <1100000>;
> regulator-always-on;
> regulator-boot-on;
> - regulator-mem-off;
> + regulator-state-mem {
> + regulator-off-in-suspend;
> + };
> };
>
> buck2_reg: buck2 {
> @@ -452,7 +459,9 @@
> regulator-max-microvolt = <1500000>;
> regulator-always-on;
> regulator-boot-on;
> - regulator-mem-off;
> + regulator-state-mem {
> + regulator-on-in-suspend;
> + };
> };
>
> buck3_reg: buck3 {
> @@ -462,7 +471,9 @@
> regulator-max-microvolt = <1150000>;
> regulator-always-on;
> regulator-boot-on;
> - regulator-mem-off;
> + regulator-state-mem {
> + regulator-off-in-suspend;
> + };
> };
>
> buck4_reg: buck4 {
> @@ -471,7 +482,9 @@
> regulator-min-microvolt = <850000>;
> regulator-max-microvolt = <1150000>;
> regulator-boot-on;
> - regulator-mem-off;
> + regulator-state-mem {
> + regulator-off-in-suspend;
> + };
> };
>
> buck5_reg: buck5 {
> @@ -510,7 +523,6 @@
> regulator-name = "CAM_ISP_CORE_1.2V";
> regulator-min-microvolt = <1000000>;
> regulator-max-microvolt = <1200000>;
> - regulator-mem-off;
> };
> };
> };
>
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2014-10-22 2:57 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-10-21 13:19 [PATCH v3 0/4] regulator: max77686/trats2: Disable some regulators in suspend Krzysztof Kozlowski
2014-10-21 13:19 ` [PATCH v3 1/4] regulator: max77686: Replace hard-coded opmode values with defines Krzysztof Kozlowski
2014-10-21 13:33 ` Javier Martinez Canillas
2014-10-21 13:19 ` [PATCH v3 2/4] regulator: max77686: Implement suspend disable for some LDOs Krzysztof Kozlowski
2014-10-21 13:19 ` [PATCH v3 3/4] mfd/regulator: dt-bindings: max77686: Document regulators off in suspend Krzysztof Kozlowski
2014-10-21 13:40 ` Lee Jones
2014-10-21 13:19 ` [PATCH v3 4/4] ARM: dts: exynos4412-trats: Add suspend configuration for max77686 regulators Krzysztof Kozlowski
2014-10-22 2:57 ` Chanwoo Choi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).