diff options
author | Axel Lin <axel.lin@ingics.com> | 2015-06-29 23:41:58 -0400 |
---|---|---|
committer | Wolfram Sang <wsa@the-dreams.de> | 2015-07-09 16:17:31 -0400 |
commit | eb8173e3d7b94664ecd3acf34942c9c9d6f6cb73 (patch) | |
tree | 728bb767487a23b0a3fe059656f377930b3d84b4 | |
parent | 724948106ed236fc528c720ae12c79af7e2aea4e (diff) |
i2c: jz4780: Fix return value if probe fails
Current code returns 0 if fails to read clock-frequency DT property,
fix it. Also add checking return value of clk_prepare_enable and
propagate return value of devm_request_irq.
Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
-rw-r--r-- | drivers/i2c/busses/i2c-jz4780.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/i2c/busses/i2c-jz4780.c b/drivers/i2c/busses/i2c-jz4780.c index 19b2d689a5ef..f325663c27c5 100644 --- a/drivers/i2c/busses/i2c-jz4780.c +++ b/drivers/i2c/busses/i2c-jz4780.c | |||
@@ -764,12 +764,15 @@ static int jz4780_i2c_probe(struct platform_device *pdev) | |||
764 | if (IS_ERR(i2c->clk)) | 764 | if (IS_ERR(i2c->clk)) |
765 | return PTR_ERR(i2c->clk); | 765 | return PTR_ERR(i2c->clk); |
766 | 766 | ||
767 | clk_prepare_enable(i2c->clk); | 767 | ret = clk_prepare_enable(i2c->clk); |
768 | if (ret) | ||
769 | return ret; | ||
768 | 770 | ||
769 | if (of_property_read_u32(pdev->dev.of_node, "clock-frequency", | 771 | ret = of_property_read_u32(pdev->dev.of_node, "clock-frequency", |
770 | &clk_freq)) { | 772 | &clk_freq); |
773 | if (ret) { | ||
771 | dev_err(&pdev->dev, "clock-frequency not specified in DT"); | 774 | dev_err(&pdev->dev, "clock-frequency not specified in DT"); |
772 | return clk_freq; | 775 | goto err; |
773 | } | 776 | } |
774 | 777 | ||
775 | i2c->speed = clk_freq / 1000; | 778 | i2c->speed = clk_freq / 1000; |
@@ -790,10 +793,8 @@ static int jz4780_i2c_probe(struct platform_device *pdev) | |||
790 | i2c->irq = platform_get_irq(pdev, 0); | 793 | i2c->irq = platform_get_irq(pdev, 0); |
791 | ret = devm_request_irq(&pdev->dev, i2c->irq, jz4780_i2c_irq, 0, | 794 | ret = devm_request_irq(&pdev->dev, i2c->irq, jz4780_i2c_irq, 0, |
792 | dev_name(&pdev->dev), i2c); | 795 | dev_name(&pdev->dev), i2c); |
793 | if (ret) { | 796 | if (ret) |
794 | ret = -ENODEV; | ||
795 | goto err; | 797 | goto err; |
796 | } | ||
797 | 798 | ||
798 | ret = i2c_add_adapter(&i2c->adap); | 799 | ret = i2c_add_adapter(&i2c->adap); |
799 | if (ret < 0) { | 800 | if (ret < 0) { |