aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorColin Foe-Parker <colin.foeparker@logicpd.com>2012-11-20 04:48:44 -0500
committerSamuel Ortiz <sameo@linux.intel.com>2012-11-21 10:07:55 -0500
commiteb433dad48b49f757255f2860db5c2bd61dcae0d (patch)
tree9cbe2fdd7ea582ff6f095dfe3a8fd0efb75ebd30
parent433e075c7f3b45c946c539ceeddc641c61adef5e (diff)
mfd: tps65217: Set PMIC to shutdown on PWR_EN toggle
Set tps65217 PMIC status to OFF if power enable toggle is supported. By setting this bit to 1 to enter PMIC to OFF state when PWR_EN pin is pulled low. Also adds a DT flag to specify that device pmic supports shutdown control or not. Signed-off-by: Colin Foe-Parker <colin.foeparker@logicpd.com> [anilkumar@ti.com: move the additions to tps65217 MFD driver] Signed-off-by: AnilKumar Ch <anilkumar@ti.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
-rw-r--r--Documentation/devicetree/bindings/regulator/tps65217.txt4
-rw-r--r--drivers/mfd/tps65217.c12
2 files changed, 16 insertions, 0 deletions
diff --git a/Documentation/devicetree/bindings/regulator/tps65217.txt b/Documentation/devicetree/bindings/regulator/tps65217.txt
index d316fb895daf..4f05d208c95c 100644
--- a/Documentation/devicetree/bindings/regulator/tps65217.txt
+++ b/Documentation/devicetree/bindings/regulator/tps65217.txt
@@ -11,6 +11,9 @@ Required properties:
11 using the standard binding for regulators found at 11 using the standard binding for regulators found at
12 Documentation/devicetree/bindings/regulator/regulator.txt. 12 Documentation/devicetree/bindings/regulator/regulator.txt.
13 13
14Optional properties:
15- ti,pmic-shutdown-controller: Telling the PMIC to shutdown on PWR_EN toggle.
16
14 The valid names for regulators are: 17 The valid names for regulators are:
15 tps65217: dcdc1, dcdc2, dcdc3, ldo1, ldo2, ldo3 and ldo4 18 tps65217: dcdc1, dcdc2, dcdc3, ldo1, ldo2, ldo3 and ldo4
16 19
@@ -20,6 +23,7 @@ Example:
20 23
21 tps: tps@24 { 24 tps: tps@24 {
22 compatible = "ti,tps65217"; 25 compatible = "ti,tps65217";
26 ti,pmic-shutdown-controller;
23 27
24 regulators { 28 regulators {
25 dcdc1_reg: dcdc1 { 29 dcdc1_reg: dcdc1 {
diff --git a/drivers/mfd/tps65217.c b/drivers/mfd/tps65217.c
index 3fb32e655254..c7f17d86db78 100644
--- a/drivers/mfd/tps65217.c
+++ b/drivers/mfd/tps65217.c
@@ -160,6 +160,7 @@ static int __devinit tps65217_probe(struct i2c_client *client,
160 unsigned int version; 160 unsigned int version;
161 unsigned int chip_id = ids->driver_data; 161 unsigned int chip_id = ids->driver_data;
162 const struct of_device_id *match; 162 const struct of_device_id *match;
163 bool status_off = false;
163 int ret; 164 int ret;
164 165
165 if (client->dev.of_node) { 166 if (client->dev.of_node) {
@@ -170,6 +171,8 @@ static int __devinit tps65217_probe(struct i2c_client *client,
170 return -EINVAL; 171 return -EINVAL;
171 } 172 }
172 chip_id = (unsigned int)match->data; 173 chip_id = (unsigned int)match->data;
174 status_off = of_property_read_bool(client->dev.of_node,
175 "ti,pmic-shutdown-controller");
173 } 176 }
174 177
175 if (!chip_id) { 178 if (!chip_id) {
@@ -207,6 +210,15 @@ static int __devinit tps65217_probe(struct i2c_client *client,
207 return ret; 210 return ret;
208 } 211 }
209 212
213 /* Set the PMIC to shutdown on PWR_EN toggle */
214 if (status_off) {
215 ret = tps65217_set_bits(tps, TPS65217_REG_STATUS,
216 TPS65217_STATUS_OFF, TPS65217_STATUS_OFF,
217 TPS65217_PROTECT_NONE);
218 if (ret)
219 dev_warn(tps->dev, "unable to set the status OFF\n");
220 }
221
210 dev_info(tps->dev, "TPS65217 ID %#x version 1.%d\n", 222 dev_info(tps->dev, "TPS65217 ID %#x version 1.%d\n",
211 (version & TPS65217_CHIPID_CHIP_MASK) >> 4, 223 (version & TPS65217_CHIPID_CHIP_MASK) >> 4,
212 version & TPS65217_CHIPID_REV_MASK); 224 version & TPS65217_CHIPID_REV_MASK);