WM8994 chip has built-in regulators, which might be used for chip operation. They are controlled by a separate wm8994-regulator driver, which should be loaded before this driver calls regulator_get(), because that driver also provides consumer-supply mapping for the them. If that driver is not yet loaded, regulator core substitute them with dummy regulator, what breaks chip operation, because the built-in regulators are never enabled. Fix this by adding a comment and a call to module_request() helper.
Signed-off-by: Marek Szyprowski m.szyprowski@samsung.com --- drivers/mfd/wm8994-core.c | 7 +++++++ 1 file changed, 7 insertions(+)
diff --git a/drivers/mfd/wm8994-core.c b/drivers/mfd/wm8994-core.c index 1e9fe7d92597..f15f12d8bccc 100644 --- a/drivers/mfd/wm8994-core.c +++ b/drivers/mfd/wm8994-core.c @@ -321,6 +321,13 @@ static int wm8994_device_init(struct wm8994 *wm8994, int irq) int ret, i, patch_regs = 0; int pulls = 0;
+ /* + * Request a driver for built-in regulators first, because they are + * default supplies for "AVDD1" and "DCVDD". Otherwise, getting them + * fails due to lack of consumer mapping defined by that driver. + */ + request_module("wm8994_regulator"); + if (dev_get_platdata(wm8994->dev)) { pdata = dev_get_platdata(wm8994->dev); wm8994->pdata = *pdata;