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:
parent
2fa3349467
commit
26c34c25e5
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue