i2c: tegra: Compile PM functions unconditionally

The I2C driver fails to probe if CONFIG_PM_SLEEP=n because runtime PM
doesn't depend on the PM sleep and in this case the runtime PM ops are
not included in the driver, resulting in I2C clock not being enabled.
It's much cleaner to simply allow compiler to remove the dead code
instead of messing with the #ifdefs.

This patch fixes such errors when CONFIG_PM_SLEEP=n:

  tegra-i2c 7000c400.i2c: timeout waiting for fifo flush
  tegra-i2c 7000c400.i2c: Failed to initialize i2c controller

Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Acked-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
This commit is contained in:
Dmitry Osipenko 2019-07-08 02:12:34 +03:00 committed by Wolfram Sang
parent 609488bc97
commit e5738bc46d
1 changed files with 5 additions and 11 deletions

View File

@ -636,7 +636,7 @@ static void tegra_dvc_init(struct tegra_i2c_dev *i2c_dev)
dvc_writel(i2c_dev, val, DVC_CTRL_REG1); dvc_writel(i2c_dev, val, DVC_CTRL_REG1);
} }
static int tegra_i2c_runtime_resume(struct device *dev) static int __maybe_unused tegra_i2c_runtime_resume(struct device *dev)
{ {
struct tegra_i2c_dev *i2c_dev = dev_get_drvdata(dev); struct tegra_i2c_dev *i2c_dev = dev_get_drvdata(dev);
int ret; int ret;
@ -665,7 +665,7 @@ static int tegra_i2c_runtime_resume(struct device *dev)
return 0; return 0;
} }
static int tegra_i2c_runtime_suspend(struct device *dev) static int __maybe_unused tegra_i2c_runtime_suspend(struct device *dev)
{ {
struct tegra_i2c_dev *i2c_dev = dev_get_drvdata(dev); struct tegra_i2c_dev *i2c_dev = dev_get_drvdata(dev);
@ -1711,8 +1711,7 @@ static int tegra_i2c_remove(struct platform_device *pdev)
return 0; return 0;
} }
#ifdef CONFIG_PM_SLEEP static int __maybe_unused tegra_i2c_suspend(struct device *dev)
static int tegra_i2c_suspend(struct device *dev)
{ {
struct tegra_i2c_dev *i2c_dev = dev_get_drvdata(dev); struct tegra_i2c_dev *i2c_dev = dev_get_drvdata(dev);
@ -1721,7 +1720,7 @@ static int tegra_i2c_suspend(struct device *dev)
return 0; return 0;
} }
static int tegra_i2c_resume(struct device *dev) static int __maybe_unused tegra_i2c_resume(struct device *dev)
{ {
struct tegra_i2c_dev *i2c_dev = dev_get_drvdata(dev); struct tegra_i2c_dev *i2c_dev = dev_get_drvdata(dev);
int err; int err;
@ -1741,18 +1740,13 @@ static const struct dev_pm_ops tegra_i2c_pm = {
NULL) NULL)
}; };
#define TEGRA_I2C_PM (&tegra_i2c_pm)
#else
#define TEGRA_I2C_PM NULL
#endif
static struct platform_driver tegra_i2c_driver = { static struct platform_driver tegra_i2c_driver = {
.probe = tegra_i2c_probe, .probe = tegra_i2c_probe,
.remove = tegra_i2c_remove, .remove = tegra_i2c_remove,
.driver = { .driver = {
.name = "tegra-i2c", .name = "tegra-i2c",
.of_match_table = tegra_i2c_of_match, .of_match_table = tegra_i2c_of_match,
.pm = TEGRA_I2C_PM, .pm = &tegra_i2c_pm,
}, },
}; };