diff options
author | Juha Tukkinen <jtukkinen@nvidia.com> | 2013-10-31 02:32:49 -0700 |
---|---|---|
committer | Juha Tukkinen <jtukkinen@nvidia.com> | 2013-10-31 02:38:53 -0700 |
commit | e3abba167565027a70fc2c7bdf690e2f4555ccf2 (patch) | |
tree | c4f42f3036b93ad818b92b5ed026969493f9e54d /drivers/i2c | |
parent | af196c1cda0718be9e073d71c7c1c797191fdf80 (diff) |
Revert "i2c: tegra: handle Tegra pm notifier events"
This reverts commit 9b5639a6da0b5dc842fbaa6bd213b0d801cd2a70.
Change-Id: Ibfa871d9bc8d98d5663f69d1f75d4b0bac2b8d4a
Reviewed-on: http://git-master/r/310026
Tested-by: Arto Merilainen <amerilainen@nvidia.com>
Reviewed-by: Juha Tukkinen <jtukkinen@nvidia.com>
Diffstat (limited to 'drivers/i2c')
-rw-r--r-- | drivers/i2c/busses/i2c-tegra.c | 61 |
1 files changed, 12 insertions, 49 deletions
diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c index 848fcf603e58..855bde2fac21 100644 --- a/drivers/i2c/busses/i2c-tegra.c +++ b/drivers/i2c/busses/i2c-tegra.c @@ -39,7 +39,6 @@ #include <linux/clk/tegra.h> #include <linux/spinlock.h> #include <linux/clk/tegra.h> -#include <linux/tegra-pm.h> #include <asm/unaligned.h> @@ -231,7 +230,6 @@ struct tegra_i2c_dev { const struct i2c_algorithm *bit_algo; bool bit_banging_xfer_after_shutdown; bool is_shutdown; - struct notifier_block pm_nb; }; static void dvc_writel(struct tegra_i2c_dev *i2c_dev, u32 val, unsigned long reg) @@ -1265,22 +1263,6 @@ static const struct i2c_algorithm tegra_i2c_algo = { .functionality = tegra_i2c_func, }; -static int __tegra_i2c_suspend_noirq(struct tegra_i2c_dev *i2c_dev); -static int __tegra_i2c_resume_noirq(struct tegra_i2c_dev *i2c_dev); - -static int tegra_i2c_pm_notifier(struct notifier_block *nb, - unsigned long event, void *data) -{ - struct tegra_i2c_dev *i2c_dev = container_of(nb, struct tegra_i2c_dev, pm_nb); - - if (event == TEGRA_PM_SUSPEND) - __tegra_i2c_suspend_noirq(i2c_dev); - else if (event == TEGRA_PM_RESUME) - __tegra_i2c_resume_noirq(i2c_dev); - - return NOTIFY_OK; -} - static struct tegra_i2c_platform_data *parse_i2c_tegra_dt( struct platform_device *pdev) { @@ -1578,10 +1560,6 @@ static int tegra_i2c_probe(struct platform_device *pdev) return ret; } - i2c_dev->pm_nb.notifier_call = tegra_i2c_pm_notifier; - - tegra_register_pm_notifier(&i2c_dev->pm_nb); - of_i2c_register_devices(&i2c_dev->adapter); pm_runtime_enable(&i2c_dev->adapter.dev); tegra_i2c_gpio_init(i2c_dev); @@ -1592,8 +1570,6 @@ static int tegra_i2c_probe(struct platform_device *pdev) static int tegra_i2c_remove(struct platform_device *pdev) { struct tegra_i2c_dev *i2c_dev = platform_get_drvdata(pdev); - - tegra_unregister_pm_notifier(&i2c_dev->pm_nb); i2c_del_adapter(&i2c_dev->adapter); pm_runtime_disable(&i2c_dev->adapter.dev); @@ -1612,15 +1588,6 @@ static void tegra_i2c_shutdown(struct platform_device *pdev) } #ifdef CONFIG_PM_SLEEP -static int __tegra_i2c_suspend_noirq(struct tegra_i2c_dev *i2c_dev) -{ - i2c_dev->is_suspended = true; - if (i2c_dev->is_clkon_always) - tegra_i2c_clock_disable(i2c_dev); - - return 0; -} - static int tegra_i2c_suspend_noirq(struct device *dev) { struct platform_device *pdev = to_platform_device(dev); @@ -1628,39 +1595,35 @@ static int tegra_i2c_suspend_noirq(struct device *dev) i2c_lock_adapter(&i2c_dev->adapter); - __tegra_i2c_suspend_noirq(i2c_dev); + i2c_dev->is_suspended = true; + if (i2c_dev->is_clkon_always) + tegra_i2c_clock_disable(i2c_dev); i2c_unlock_adapter(&i2c_dev->adapter); return 0; } - -static int __tegra_i2c_resume_noirq(struct tegra_i2c_dev *i2c_dev) +static int tegra_i2c_resume_noirq(struct device *dev) { + struct platform_device *pdev = to_platform_device(dev); + struct tegra_i2c_dev *i2c_dev = platform_get_drvdata(pdev); int ret; + i2c_lock_adapter(&i2c_dev->adapter); + if (i2c_dev->is_clkon_always) tegra_i2c_clock_enable(i2c_dev); ret = tegra_i2c_init(i2c_dev); - if (ret) + + if (ret) { + i2c_unlock_adapter(&i2c_dev->adapter); return ret; + } i2c_dev->is_suspended = false; - return 0; -} - -static int tegra_i2c_resume_noirq(struct device *dev) -{ - struct platform_device *pdev = to_platform_device(dev); - struct tegra_i2c_dev *i2c_dev = platform_get_drvdata(pdev); - - i2c_lock_adapter(&i2c_dev->adapter); - - __tegra_i2c_resume_noirq(i2c_dev); - i2c_unlock_adapter(&i2c_dev->adapter); return 0; |