| From 75c08f17ec87c2d742487bb87408d6feebc526bd Mon Sep 17 00:00:00 2001 |
| From: Tony Lindgren <tony@atomide.com> |
| Date: Fri, 18 Sep 2015 09:29:04 -0700 |
| Subject: mfd: twl6040: Fix deferred probe handling for clk32k |
| |
| From: Tony Lindgren <tony@atomide.com> |
| |
| commit 75c08f17ec87c2d742487bb87408d6feebc526bd upstream. |
| |
| Commit 68bab8662f49 ("mfd: twl6040: Optional clk32k clock handling") |
| added clock handling for the 32k clock from palmas-clk. However, that |
| patch did not consider a typical situation where twl6040 is built-in, |
| and palmas-clk is a loadable module like we have in omap2plus_defconfig. |
| |
| If palmas-clk is not loaded before twl6040 probes, we will get a |
| "clk32k is not handled" warning during booting. This means that any |
| drivers relying on this clock will mysteriously fail, including |
| omap5-uevm WLAN and audio. |
| |
| Note that for WLAN, we probably should also eventually get |
| the clk32kgaudio for MMC3 directly as that's shared between |
| audio and WLAN SDIO at least for omap5-uevm. It seems the |
| WLAN chip cannot get it as otherwise MMC3 won't get properly |
| probed. |
| |
| Fixes: 68bab8662f49 ("mfd: twl6040: Optional clk32k clock handling") |
| Signed-off-by: Tony Lindgren <tony@atomide.com> |
| Reviewed-by: Felipe Balbi <balbi@ti.com> |
| Signed-off-by: Lee Jones <lee.jones@linaro.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/mfd/twl6040.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| --- a/drivers/mfd/twl6040.c |
| +++ b/drivers/mfd/twl6040.c |
| @@ -647,6 +647,8 @@ static int twl6040_probe(struct i2c_clie |
| |
| twl6040->clk32k = devm_clk_get(&client->dev, "clk32k"); |
| if (IS_ERR(twl6040->clk32k)) { |
| + if (PTR_ERR(twl6040->clk32k) == -EPROBE_DEFER) |
| + return -EPROBE_DEFER; |
| dev_info(&client->dev, "clk32k is not handled\n"); |
| twl6040->clk32k = NULL; |
| } |