|
@@ -158,9 +158,42 @@ err_out:
|
|
|
return err;
|
|
|
}
|
|
|
|
|
|
+#ifdef CONFIG_PM
|
|
|
+static int physmap_flash_suspend(struct platform_device *dev, pm_message_t state)
|
|
|
+{
|
|
|
+ struct physmap_flash_info *info = platform_get_drvdata(dev);
|
|
|
+ int ret = 0;
|
|
|
+
|
|
|
+ if (info)
|
|
|
+ ret = info->mtd->suspend(info->mtd);
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
+static int physmap_flash_resume(struct platform_device *dev)
|
|
|
+{
|
|
|
+ struct physmap_flash_info *info = platform_get_drvdata(dev);
|
|
|
+ if (info)
|
|
|
+ info->mtd->resume(info->mtd);
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+static void physmap_flash_shutdown(struct platform_device *dev)
|
|
|
+{
|
|
|
+ struct physmap_flash_info *info = platform_get_drvdata(dev);
|
|
|
+ if (info && info->mtd->suspend(info->mtd) == 0)
|
|
|
+ info->mtd->resume(info->mtd);
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
static struct platform_driver physmap_flash_driver = {
|
|
|
.probe = physmap_flash_probe,
|
|
|
.remove = physmap_flash_remove,
|
|
|
+#ifdef CONFIG_PM
|
|
|
+ .suspend = physmap_flash_suspend,
|
|
|
+ .resume = physmap_flash_resume,
|
|
|
+ .shutdown = physmap_flash_shutdown,
|
|
|
+#endif
|
|
|
.driver = {
|
|
|
.name = "physmap-flash",
|
|
|
},
|