summaryrefslogtreecommitdiff
path: root/drivers/i2c
diff options
context:
space:
mode:
authorSam Protsenko <semen.protsenko@linaro.org>2021-12-12 21:10:57 +0300
committerWolfram Sang <wsa@kernel.org>2021-12-17 00:21:27 +0300
commitac18935d2e5130744b9675f6fb72acb783f86d77 (patch)
tree1f8769a9705e7522223e42d0dcb5b9d962a07776 /drivers/i2c
parent2759181d9a131a2334211637eb56db3de2e7d84c (diff)
downloadlinux-ac18935d2e5130744b9675f6fb72acb783f86d77.tar.xz
i2c: exynos5: Fix getting the optional clock
"hsi2c_pclk" clock is optional and may not be present for some SoCs supported by this driver. Nevertheless, in case the clock is provided but some error happens during its getting, that error should be handled properly. Use devm_clk_get_optional() API for that. Also report possible errors using dev_err_probe() to handle properly -EPROBE_DEFER error (if clock provider is not ready by the time I2C probe function is executed). Fixes: 697ad2490c96 ("i2c: exynos5: Add bus clock support") Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> Reviewed-by: Chanho Park <chanho61.park@samsung.com> [wsa: fixed SHA1 of Fixes tag] Signed-off-by: Wolfram Sang <wsa@kernel.org>
Diffstat (limited to 'drivers/i2c')
-rw-r--r--drivers/i2c/busses/i2c-exynos5.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/i2c/busses/i2c-exynos5.c b/drivers/i2c/busses/i2c-exynos5.c
index 693903e80892..b812d1090c0f 100644
--- a/drivers/i2c/busses/i2c-exynos5.c
+++ b/drivers/i2c/busses/i2c-exynos5.c
@@ -814,9 +814,11 @@ static int exynos5_i2c_probe(struct platform_device *pdev)
return -ENOENT;
}
- i2c->pclk = devm_clk_get(&pdev->dev, "hsi2c_pclk");
- if (IS_ERR(i2c->pclk))
- i2c->pclk = NULL; /* pclk is optional */
+ i2c->pclk = devm_clk_get_optional(&pdev->dev, "hsi2c_pclk");
+ if (IS_ERR(i2c->pclk)) {
+ return dev_err_probe(&pdev->dev, PTR_ERR(i2c->pclk),
+ "cannot get pclk");
+ }
ret = clk_prepare_enable(i2c->pclk);
if (ret)