i2c: xiic: defer the probe if clock is not found
authorVenkatesh Yadav Abbarapu <venkatesh.abbarapu@xilinx.com>
Thu, 9 Jan 2020 11:37:59 +0000 (17:07 +0530)
committerWolfram Sang <wsa@the-dreams.de>
Wed, 15 Jan 2020 20:13:34 +0000 (21:13 +0100)
It's not always the case that clock is already available when i2c
driver get probed at the first time, e.g. the clock is provided by
clock wizard which may be probed after i2c driver. So let's defer
the probe when devm_clk_get() call fails and give it chance to
try later.

Signed-off-by: Venkatesh Yadav Abbarapu <venkatesh.abbarapu@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: Shubhrajyoti Datta <shubhrajyoti.datta@xilinx.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
drivers/i2c/busses/i2c-xiic.c

index 3a403202bd2889a8f0d7a017a68c4e10e1425b77..d719bf5f9d760db001829b9c4a3400143108bd33 100644 (file)
@@ -788,7 +788,8 @@ static int xiic_i2c_probe(struct platform_device *pdev)
 
        i2c->clk = devm_clk_get(&pdev->dev, NULL);
        if (IS_ERR(i2c->clk)) {
-               dev_err(&pdev->dev, "input clock not found.\n");
+               if (PTR_ERR(i2c->clk) != -EPROBE_DEFER)
+                       dev_err(&pdev->dev, "input clock not found.\n");
                return PTR_ERR(i2c->clk);
        }
        ret = clk_prepare_enable(i2c->clk);