summaryrefslogtreecommitdiff
path: root/drivers/mfd
diff options
context:
space:
mode:
authorLaxman Dewangan <ldewangan@nvidia.com>2013-12-24 12:15:11 +0530
committerLaxman Dewangan <ldewangan@nvidia.com>2014-01-08 21:32:02 -0800
commit09cd706fecb9631a563b293d5fe6e19889eea95f (patch)
tree05ea0d6d179200a4d09aa98db8fc2b8fdd66d67e /drivers/mfd
parentac3459338d775ffdf682cabb129dfefee57a9d36 (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.c13
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));