diff options
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 e14e252e347..b8f48647661 100644 --- a/drivers/mfd/tps65217.c +++ b/drivers/mfd/tps65217.c | |||
@@ -160,6 +160,7 @@ static int 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 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 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); |