diff options
author | Colin Foe-Parker <colin.foeparker@logicpd.com> | 2012-11-20 15:18:44 +0530 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2012-11-21 16:07:55 +0100 |
commit | eb433dad48b49f757255f2860db5c2bd61dcae0d (patch) | |
tree | 9cbe2fdd7ea582ff6f095dfe3a8fd0efb75ebd30 /drivers/mfd/tps65217.c | |
parent | 433e075c7f3b45c946c539ceeddc641c61adef5e (diff) | |
download | linux-stable-eb433dad48b49f757255f2860db5c2bd61dcae0d.tar.gz linux-stable-eb433dad48b49f757255f2860db5c2bd61dcae0d.tar.bz2 linux-stable-eb433dad48b49f757255f2860db5c2bd61dcae0d.zip |
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>
Diffstat (limited to 'drivers/mfd/tps65217.c')
-rw-r--r-- | drivers/mfd/tps65217.c | 12 |
1 files changed, 12 insertions, 0 deletions
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, unsigned int version; unsigned int chip_id = ids->driver_data; const struct of_device_id *match; + bool status_off = false; int ret; if (client->dev.of_node) { @@ -170,6 +171,8 @@ static int __devinit tps65217_probe(struct i2c_client *client, return -EINVAL; } chip_id = (unsigned int)match->data; + status_off = of_property_read_bool(client->dev.of_node, + "ti,pmic-shutdown-controller"); } if (!chip_id) { @@ -207,6 +210,15 @@ static int __devinit tps65217_probe(struct i2c_client *client, return ret; } + /* Set the PMIC to shutdown on PWR_EN toggle */ + if (status_off) { + ret = tps65217_set_bits(tps, TPS65217_REG_STATUS, + TPS65217_STATUS_OFF, TPS65217_STATUS_OFF, + TPS65217_PROTECT_NONE); + if (ret) + dev_warn(tps->dev, "unable to set the status OFF\n"); + } + dev_info(tps->dev, "TPS65217 ID %#x version 1.%d\n", (version & TPS65217_CHIPID_CHIP_MASK) >> 4, version & TPS65217_CHIPID_REV_MASK); |