diff options
author | Laxman Dewangan <ldewangan@nvidia.com> | 2013-12-24 12:15:11 +0530 |
---|---|---|
committer | Laxman Dewangan <ldewangan@nvidia.com> | 2014-01-08 21:32:02 -0800 |
commit | 09cd706fecb9631a563b293d5fe6e19889eea95f (patch) | |
tree | 05ea0d6d179200a4d09aa98db8fc2b8fdd66d67e /drivers/mfd | |
parent | ac3459338d775ffdf682cabb129dfefee57a9d36 (diff) |
mfd: as3722: disable auto power on when AC OK
On ams AS3722, power on when AC OK is enabled by default.
Making this option as disable by default and enable only
when platform need this explicitly.
Change-Id: I103d62ab9170c96b00ce8b58235afb8d24ba5e63
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Reviewed-on: http://git-master/r/349290
Reviewed-by: Bibek Basu <bbasu@nvidia.com>
Tested-by: Bibek Basu <bbasu@nvidia.com>
Diffstat (limited to 'drivers/mfd')
-rw-r--r-- | drivers/mfd/as3722.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/mfd/as3722.c b/drivers/mfd/as3722.c index 46329ebb6dc0..9dc4554292ae 100644 --- a/drivers/mfd/as3722.c +++ b/drivers/mfd/as3722.c @@ -368,6 +368,8 @@ static int as3722_i2c_of_probe(struct i2c_client *i2c, "ams,enable-internal-int-pullup"); as3722->en_intern_i2c_pullup = of_property_read_bool(np, "ams,enable-internal-i2c-pullup"); + as3722->en_ac_ok_pwr_on = of_property_read_bool(np, + "ams,enable-ac-ok-power-on"); as3722->irq_flags = irqd_get_trigger_type(irq_data); as3722->irq_base = -1; of_property_read_u32(np, "ams,major-rev", &as3722->major_rev); @@ -388,6 +390,7 @@ static int as3722_i2c_non_of_probe(struct i2c_client *i2c, as3722->irq_base = pdata->irq_base; as3722->en_intern_i2c_pullup = pdata->use_internal_i2c_pullup; as3722->en_intern_int_pullup = pdata->use_internal_int_pullup; + as3722->en_ac_ok_pwr_on = pdata->enable_ac_ok_power_on; as3722->major_rev = pdata->major_rev; as3722->minor_rev = pdata->minor_rev; return 0; @@ -399,6 +402,7 @@ static int as3722_i2c_probe(struct i2c_client *i2c, struct as3722 *as3722; unsigned long irq_flags; int ret; + u8 val = 0; as3722 = devm_kzalloc(&i2c->dev, sizeof(struct as3722), GFP_KERNEL); if (!as3722) @@ -439,6 +443,15 @@ static int as3722_i2c_probe(struct i2c_client *i2c, if (ret < 0) goto scrub; + if (as3722->en_ac_ok_pwr_on) + val = AS3722_CTRL_SEQ1_AC_OK_PWR_ON; + ret = as3722_update_bits(as3722, AS3722_CTRL_SEQU1_REG, + AS3722_CTRL_SEQ1_AC_OK_PWR_ON, val); + if (ret < 0) { + dev_err(as3722->dev, "CTRL_SEQ1 update failed: %d\n", ret); + goto scrub; + } + ret = mfd_add_devices(&i2c->dev, -1, as3722_devs, ARRAY_SIZE(as3722_devs), NULL, 0, regmap_irq_get_domain(as3722->irq_data)); |