diff options
Diffstat (limited to 'drivers/mfd/tps65910.c')
| -rw-r--r-- | drivers/mfd/tps65910.c | 21 | 
1 files changed, 19 insertions, 2 deletions
| diff --git a/drivers/mfd/tps65910.c b/drivers/mfd/tps65910.c index 1e7ef2a2e35..0e0412b3bfb 100644 --- a/drivers/mfd/tps65910.c +++ b/drivers/mfd/tps65910.c @@ -363,8 +363,13 @@ static int tps65910_sleepinit(struct tps65910 *tps65910,  	dev = tps65910->dev; -	if (!pmic_pdata->en_dev_slp) -		return 0; +	/* set polarity of SLLEEPSIG requst ot enter OFF mode */ +	ret = tps65910_reg_set_bits(tps65910, TPS65910_DEVCTRL2, +				DEVCTRL2_SLEEPSIG_POL_MASK); +	if (ret < 0) { +		dev_err(dev, "set sleepsig_pol failed: %d\n", ret); +		goto err_sleep_init; +	}  	/*  	 * set polarity of SLLEEPSIG requst to enter OFF mode @@ -385,6 +390,18 @@ static int tps65910_sleepinit(struct tps65910 *tps65910,  		goto err_sleep_init;  	} +	ret = tps65910_reg_set_bits(tps65910, TPS65910_SLEEP_KEEP_RES_ON, +				SLEEP_KEEP_RES_ON_CLKOUT32K_KEEPON_MASK); +	if (ret < 0) { +		dev_err(dev, "set sleep_keep_res_on failed: %d\n", ret); +		goto err_sleep_init; +	} + +/* Return if there is no sleep keepon data. */ +/* This can't really happen... */ +/* if (pmic_pdata.slp_keepon) */ +/* return 0; */ +  	if (pmic_pdata->slp_keepon.therm_keepon) {  		ret = tps65910_reg_set_bits(tps65910,  				TPS65910_SLEEP_KEEP_RES_ON, |