aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFabio Estevam <fabio.estevam@freescale.com>2014-10-04 08:17:27 -0400
committerWolfram Sang <wsa@the-dreams.de>2014-10-06 13:59:55 -0400
commita4ce47f108a6df129c9f4345c6dda0473cb68da5 (patch)
tree9f8bd23aae388b9a3f0b78014690a9448909a466
parenta445900c906092f3b49ee40a7365d0d54acc568e (diff)
i2c-imx: Disable the clock on probe failure
In the case of errors during probe, we should disable i2c_imx->clk. Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
-rw-r--r--drivers/i2c/busses/i2c-imx.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c
index ceff87cec18e..c48e46af670a 100644
--- a/drivers/i2c/busses/i2c-imx.c
+++ b/drivers/i2c/busses/i2c-imx.c
@@ -710,7 +710,7 @@ static int i2c_imx_probe(struct platform_device *pdev)
710 pdev->name, i2c_imx); 710 pdev->name, i2c_imx);
711 if (ret) { 711 if (ret) {
712 dev_err(&pdev->dev, "can't claim irq %d\n", irq); 712 dev_err(&pdev->dev, "can't claim irq %d\n", irq);
713 return ret; 713 goto clk_disable;
714 } 714 }
715 715
716 /* Init queue */ 716 /* Init queue */
@@ -735,7 +735,7 @@ static int i2c_imx_probe(struct platform_device *pdev)
735 ret = i2c_add_numbered_adapter(&i2c_imx->adapter); 735 ret = i2c_add_numbered_adapter(&i2c_imx->adapter);
736 if (ret < 0) { 736 if (ret < 0) {
737 dev_err(&pdev->dev, "registration failed\n"); 737 dev_err(&pdev->dev, "registration failed\n");
738 return ret; 738 goto clk_disable;
739 } 739 }
740 740
741 /* Set up platform driver data */ 741 /* Set up platform driver data */
@@ -749,6 +749,10 @@ static int i2c_imx_probe(struct platform_device *pdev)
749 dev_info(&i2c_imx->adapter.dev, "IMX I2C adapter registered\n"); 749 dev_info(&i2c_imx->adapter.dev, "IMX I2C adapter registered\n");
750 750
751 return 0; /* Return OK */ 751 return 0; /* Return OK */
752
753clk_disable:
754 clk_disable_unprepare(i2c_imx->clk);
755 return ret;
752} 756}
753 757
754static int i2c_imx_remove(struct platform_device *pdev) 758static int i2c_imx_remove(struct platform_device *pdev)