]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
i2c: tegra-vi: Get regulator on driver probe
authorLaxman Dewangan <ldewangan@nvidia.com>
Fri, 29 May 2015 11:05:43 +0000 (16:35 +0530)
committerLaxman Dewangan <ldewangan@nvidia.com>
Tue, 2 Jun 2015 06:29:46 +0000 (23:29 -0700)
Get all required regulator on driver probe instead of runtime PM
callback.

bug 200111241

Change-Id: I3b08658cb04cafdb8b66a9213e522898f3d1ce2d
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Reviewed-by: Ian Chang <ianc@nvidia.com>
(cherry picked from commit ccf241d241302d9ab92678c795f6ef4e0e7b1cf7)
Reviewed-on: http://git-master/r/750849

drivers/i2c/busses/i2c-tegra-vi.c

index 36c6752c23f026c2e4e14bc937a3071597074922..8d310dd647d99a6f02fa33b59a4c17dad8504c07 100644 (file)
@@ -520,16 +520,6 @@ static inline int tegra_vi_i2c_power_enable(struct tegra_vi_i2c_dev *i2c_dev)
        int ret;
        int partition_id;
 
-       /* get regulator */
-       if (!i2c_dev->reg)
-               i2c_dev->reg = devm_regulator_get(i2c_dev->dev, "avdd_dsi_csi");
-
-       if (IS_ERR(i2c_dev->reg)) {
-               dev_err(i2c_dev->dev, "could not get regulator: %ld",
-                       PTR_ERR(i2c_dev->reg));
-               return PTR_ERR(i2c_dev->reg);
-       }
-
        ret = regulator_enable(i2c_dev->reg);
        if (ret)
                return ret;
@@ -1444,6 +1434,7 @@ static int tegra_vi_i2c_probe(struct platform_device *pdev)
        }
 
        i2c_dev->chipdata = chip_data;
+       i2c_dev->dev = &pdev->dev;
 
        div_clk = devm_clk_get(&pdev->dev, "vii2c");
        if (IS_ERR(div_clk)) {
@@ -1510,6 +1501,14 @@ skip_pinctrl:
                }
        }
 
+       /* get regulator */
+       i2c_dev->reg = devm_regulator_get(&pdev->dev, "avdd_dsi_csi");
+       if (IS_ERR(i2c_dev->reg)) {
+               dev_err(&pdev->dev, "could not get regulator: %ld",
+                       PTR_ERR(i2c_dev->reg));
+               return PTR_ERR(i2c_dev->reg);
+       }
+
        i2c_dev->base = base;
        i2c_dev->div_clk = div_clk;
        i2c_dev->slow_clk = slow_clk;