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>
Acked-by: Samuel Ortiz <sameo@linux.intel.com>
This commit is contained in:
Mark Brown 2011-11-03 13:20:38 +00:00
parent 2fa3349467
commit 26c34c25e5
2 changed files with 14 additions and 3 deletions

View File

@ -373,6 +373,7 @@ static int wm8994_device_init(struct wm8994 *wm8994, int irq)
struct wm8994_pdata *pdata = wm8994->dev->platform_data; struct wm8994_pdata *pdata = wm8994->dev->platform_data;
const char *devname; const char *devname;
int ret, i; int ret, i;
int pulls = 0;
dev_set_drvdata(wm8994->dev, wm8994); dev_set_drvdata(wm8994->dev, wm8994);
@ -515,12 +516,16 @@ static int wm8994_device_init(struct wm8994 *wm8994, int irq)
} }
wm8994->ldo_ena_always_driven = pdata->ldo_ena_always_driven; 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_set_bits(wm8994, WM8994_PULL_CONTROL_2,
WM8994_LDO1ENA_PD | WM8994_LDO2ENA_PD, WM8994_LDO1ENA_PD | WM8994_LDO2ENA_PD |
0); WM8994_SPKMODE_PU | WM8994_CSNADDR_PD,
pulls);
/* In some system designs where the regulators are not in use, /* In some system designs where the regulators are not in use,
* we can achieve a small reduction in leakage currents by * we can achieve a small reduction in leakage currents by

View File

@ -174,6 +174,12 @@ struct wm8994_pdata {
* consumption will rise. * consumption will rise.
*/ */
bool ldo_ena_always_driven; bool ldo_ena_always_driven;
/*
* SPKMODE must be pulled internally by the device on this
* system.
*/
bool spkmode_pu;
}; };
#endif #endif