mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-04 09:59:32 +00:00
mfd: Disable more pulls on WM8994
Disable more pulls by default on WM8994 for a small current saving. Since some designs do leave SPKMODE floating provide platform data to allow that to be left enabled. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
This commit is contained in:
parent
73de16db43
commit
289aabdaf9
2 changed files with 14 additions and 3 deletions
|
@ -374,6 +374,7 @@ static int wm8994_device_init(struct wm8994 *wm8994, int irq)
|
|||
struct wm8994_pdata *pdata = wm8994->dev->platform_data;
|
||||
const char *devname;
|
||||
int ret, i;
|
||||
int pulls = 0;
|
||||
|
||||
dev_set_drvdata(wm8994->dev, wm8994);
|
||||
|
||||
|
@ -516,12 +517,16 @@ static int wm8994_device_init(struct wm8994 *wm8994, int irq)
|
|||
}
|
||||
|
||||
wm8994->ldo_ena_always_driven = pdata->ldo_ena_always_driven;
|
||||
|
||||
if (pdata->spkmode_pu)
|
||||
pulls |= WM8994_SPKMODE_PU;
|
||||
}
|
||||
|
||||
/* Disable LDO pulldowns while the device is active */
|
||||
/* Disable unneeded pulls */
|
||||
wm8994_set_bits(wm8994, WM8994_PULL_CONTROL_2,
|
||||
WM8994_LDO1ENA_PD | WM8994_LDO2ENA_PD,
|
||||
0);
|
||||
WM8994_LDO1ENA_PD | WM8994_LDO2ENA_PD |
|
||||
WM8994_SPKMODE_PU | WM8994_CSNADDR_PD,
|
||||
pulls);
|
||||
|
||||
/* In some system designs where the regulators are not in use,
|
||||
* we can achieve a small reduction in leakage currents by
|
||||
|
|
|
@ -174,6 +174,12 @@ struct wm8994_pdata {
|
|||
* consumption will rise.
|
||||
*/
|
||||
bool ldo_ena_always_driven;
|
||||
|
||||
/*
|
||||
* SPKMODE must be pulled internally by the device on this
|
||||
* system.
|
||||
*/
|
||||
bool spkmode_pu;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue