i2c: imx: enable clk before write to registers
authorJingchang Lu <b35083@freescale.com>
Wed, 7 Aug 2013 09:05:37 +0000 (17:05 +0800)
committerWolfram Sang <wsa@the-dreams.de>
Thu, 15 Aug 2013 14:11:41 +0000 (16:11 +0200)
The module clk should be enabled before write to
its register in probe(), and the clk can be disabled
after.

Signed-off-by: Jingchang Lu <b35083@freescale.com>
Reviewed-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
drivers/i2c/busses/i2c-imx.c

index 9167d43..7adb351 100644 (file)
@@ -543,6 +543,11 @@ static int __init i2c_imx_probe(struct platform_device *pdev)
                return PTR_ERR(i2c_imx->clk);
        }
 
+       ret = clk_prepare_enable(i2c_imx->clk);
+       if (ret) {
+               dev_err(&pdev->dev, "can't enable I2C clock\n");
+               return ret;
+       }
        /* Request IRQ */
        ret = devm_request_irq(&pdev->dev, irq, i2c_imx_isr, 0,
                                pdev->name, i2c_imx);
@@ -580,6 +585,7 @@ static int __init i2c_imx_probe(struct platform_device *pdev)
 
        /* Set up platform driver data */
        platform_set_drvdata(pdev, i2c_imx);
+       clk_disable_unprepare(i2c_imx->clk);
 
        dev_dbg(&i2c_imx->adapter.dev, "claimed irq %d\n", irq);
        dev_dbg(&i2c_imx->adapter.dev, "device resources from 0x%x to 0x%x\n",