Skip to content

Commit

Permalink
i2c: tegra: Remove NULL pointer check before clk_enable/disable/prepa…
Browse files Browse the repository at this point in the history
…re/unprepare

clk_enable, clk_disable, clk_prepare, and clk_unprepare APIs have
implementation for checking clk pointer not NULL and clock consumers
can safely call these APIs without NULL pointer check.

So, this patch cleans up Tegra i2c driver to remove explicit checks
before these APIs.

Reviewed-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: Sowjanya Komatineni <skomatineni@nvidia.com>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
  • Loading branch information
Sowjanya Komatineni authored and Wolfram Sang committed Jul 28, 2020
1 parent 9e29420 commit 7232f53
Showing 1 changed file with 23 additions and 41 deletions.
64 changes: 23 additions & 41 deletions drivers/i2c/busses/i2c-tegra.c
Original file line number Diff line number Diff line change
Expand Up @@ -655,21 +655,17 @@ static int __maybe_unused tegra_i2c_runtime_resume(struct device *dev)
if (ret)
return ret;

if (!i2c_dev->hw->has_single_clk_source) {
ret = clk_enable(i2c_dev->fast_clk);
if (ret < 0) {
dev_err(i2c_dev->dev,
"Enabling fast clk failed, err %d\n", ret);
return ret;
}
ret = clk_enable(i2c_dev->fast_clk);
if (ret < 0) {
dev_err(i2c_dev->dev,
"Enabling fast clk failed, err %d\n", ret);
return ret;
}

if (i2c_dev->slow_clk) {
ret = clk_enable(i2c_dev->slow_clk);
if (ret < 0) {
dev_err(dev, "failed to enable slow clock: %d\n", ret);
return ret;
}
ret = clk_enable(i2c_dev->slow_clk);
if (ret < 0) {
dev_err(dev, "failed to enable slow clock: %d\n", ret);
return ret;
}

ret = clk_enable(i2c_dev->div_clk);
Expand All @@ -688,12 +684,8 @@ static int __maybe_unused tegra_i2c_runtime_suspend(struct device *dev)
struct tegra_i2c_dev *i2c_dev = dev_get_drvdata(dev);

clk_disable(i2c_dev->div_clk);

if (i2c_dev->slow_clk)
clk_disable(i2c_dev->slow_clk);

if (!i2c_dev->hw->has_single_clk_source)
clk_disable(i2c_dev->fast_clk);
clk_disable(i2c_dev->slow_clk);
clk_disable(i2c_dev->fast_clk);

return pinctrl_pm_select_idle_state(i2c_dev->dev);
}
Expand Down Expand Up @@ -1716,20 +1708,16 @@ static int tegra_i2c_probe(struct platform_device *pdev)

platform_set_drvdata(pdev, i2c_dev);

if (!i2c_dev->hw->has_single_clk_source) {
ret = clk_prepare(i2c_dev->fast_clk);
if (ret < 0) {
dev_err(i2c_dev->dev, "Clock prepare failed %d\n", ret);
return ret;
}
ret = clk_prepare(i2c_dev->fast_clk);
if (ret < 0) {
dev_err(i2c_dev->dev, "Clock prepare failed %d\n", ret);
return ret;
}

if (i2c_dev->slow_clk) {
ret = clk_prepare(i2c_dev->slow_clk);
if (ret < 0) {
dev_err(dev, "failed to prepare slow clock: %d\n", ret);
goto unprepare_fast_clk;
}
ret = clk_prepare(i2c_dev->slow_clk);
if (ret < 0) {
dev_err(dev, "failed to prepare slow clock: %d\n", ret);
goto unprepare_fast_clk;
}

if (i2c_dev->bus_clk_rate > I2C_MAX_FAST_MODE_FREQ &&
Expand Down Expand Up @@ -1843,12 +1831,10 @@ static int tegra_i2c_probe(struct platform_device *pdev)
clk_unprepare(i2c_dev->div_clk);

unprepare_slow_clk:
if (i2c_dev->is_vi)
clk_unprepare(i2c_dev->slow_clk);
clk_unprepare(i2c_dev->slow_clk);

unprepare_fast_clk:
if (!i2c_dev->hw->has_single_clk_source)
clk_unprepare(i2c_dev->fast_clk);
clk_unprepare(i2c_dev->fast_clk);

return ret;
}
Expand All @@ -1867,12 +1853,8 @@ static int tegra_i2c_remove(struct platform_device *pdev)
tegra_i2c_runtime_suspend(&pdev->dev);

clk_unprepare(i2c_dev->div_clk);

if (i2c_dev->slow_clk)
clk_unprepare(i2c_dev->slow_clk);

if (!i2c_dev->hw->has_single_clk_source)
clk_unprepare(i2c_dev->fast_clk);
clk_unprepare(i2c_dev->slow_clk);
clk_unprepare(i2c_dev->fast_clk);

tegra_i2c_release_dma(i2c_dev);
return 0;
Expand Down

0 comments on commit 7232f53

Please sign in to comment.