Merge tag 'mfd-3.8-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6
[platform/adaptation/renesas_rcar/renesas_kernel.git] / drivers / mfd / tps65217.c
index e14e252..b8f4864 100644 (file)
@@ -160,6 +160,7 @@ static int 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 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 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);