diff options
| -rw-r--r-- | drivers/i2c/busses/i2c-omap.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c index b605ff3a1fa0..0541df90b9fb 100644 --- a/drivers/i2c/busses/i2c-omap.c +++ b/drivers/i2c/busses/i2c-omap.c | |||
| @@ -1137,12 +1137,40 @@ omap_i2c_remove(struct platform_device *pdev) | |||
| 1137 | return 0; | 1137 | return 0; |
| 1138 | } | 1138 | } |
| 1139 | 1139 | ||
| 1140 | #ifdef CONFIG_SUSPEND | ||
| 1141 | static int omap_i2c_suspend(struct device *dev) | ||
| 1142 | { | ||
| 1143 | if (!pm_runtime_suspended(dev)) | ||
| 1144 | if (dev->bus && dev->bus->pm && dev->bus->pm->runtime_suspend) | ||
| 1145 | dev->bus->pm->runtime_suspend(dev); | ||
| 1146 | |||
| 1147 | return 0; | ||
| 1148 | } | ||
| 1149 | |||
| 1150 | static int omap_i2c_resume(struct device *dev) | ||
| 1151 | { | ||
| 1152 | if (!pm_runtime_suspended(dev)) | ||
| 1153 | if (dev->bus && dev->bus->pm && dev->bus->pm->runtime_resume) | ||
| 1154 | dev->bus->pm->runtime_resume(dev); | ||
| 1155 | |||
| 1156 | return 0; | ||
| 1157 | } | ||
| 1158 | |||
| 1159 | static struct dev_pm_ops omap_i2c_pm_ops = { | ||
| 1160 | .suspend = omap_i2c_suspend, | ||
| 1161 | .resume = omap_i2c_resume, | ||
| 1162 | }; | ||
| 1163 | #else | ||
| 1164 | #define omap_i2c_pm_ops NULL | ||
| 1165 | #endif | ||
| 1166 | |||
| 1140 | static struct platform_driver omap_i2c_driver = { | 1167 | static struct platform_driver omap_i2c_driver = { |
| 1141 | .probe = omap_i2c_probe, | 1168 | .probe = omap_i2c_probe, |
| 1142 | .remove = omap_i2c_remove, | 1169 | .remove = omap_i2c_remove, |
| 1143 | .driver = { | 1170 | .driver = { |
| 1144 | .name = "omap_i2c", | 1171 | .name = "omap_i2c", |
| 1145 | .owner = THIS_MODULE, | 1172 | .owner = THIS_MODULE, |
| 1173 | .pm = &omap_i2c_pm_ops, | ||
| 1146 | }, | 1174 | }, |
| 1147 | }; | 1175 | }; |
| 1148 | 1176 | ||
