mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-27 03:47:43 +00:00
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>
This commit is contained in:
parent
433e075c7f
commit
eb433dad48
@ -11,6 +11,9 @@ Required properties:
|
||||
using the standard binding for regulators found at
|
||||
Documentation/devicetree/bindings/regulator/regulator.txt.
|
||||
|
||||
Optional properties:
|
||||
- ti,pmic-shutdown-controller: Telling the PMIC to shutdown on PWR_EN toggle.
|
||||
|
||||
The valid names for regulators are:
|
||||
tps65217: dcdc1, dcdc2, dcdc3, ldo1, ldo2, ldo3 and ldo4
|
||||
|
||||
@ -20,6 +23,7 @@ Example:
|
||||
|
||||
tps: tps@24 {
|
||||
compatible = "ti,tps65217";
|
||||
ti,pmic-shutdown-controller;
|
||||
|
||||
regulators {
|
||||
dcdc1_reg: dcdc1 {
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user