On Thu, Apr 30, 2015 at 03:20:38PM -0300, Fabio Estevam wrote:
On Thu, Apr 30, 2015 at 2:45 PM, Sebastian Hesselbarth
<sebastian.hesselbarth@xxxxxxxxx> wrote:
@@ -1328,8 +1321,17 @@ static int si5351_i2c_probe(struct i2c_client *client,
i2c_set_clientdata(client, drvdata);
drvdata->client = client;
drvdata->variant = variant;
- drvdata->pxtal = pdata->clk_xtal;
- drvdata->pclkin = pdata->clk_clkin;
+ drvdata->pxtal = devm_clk_get(&client->dev, "xtal");
+ drvdata->pclkin = devm_clk_get(&client->dev, "clkin");
+
+ if (PTR_ERR(drvdata->pxtal) == -EPROBE_DEFER ||
+ PTR_ERR(drvdata->pclkin) == -EPROBE_DEFER)
+ return -EPROBE_DEFER;
+
+ if (IS_ERR(drvdata->pxtal) && IS_ERR(drvdata->pclkin)) {
Don't you want || instead?
I doubt it. He is checking if both are not available.
The driver could work with only one of them.
If you use || then you assume to need both.