|
@@ -903,12 +903,46 @@ error:
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
+#ifdef CONFIG_PM
|
|
|
+static int omap_dmm_resume(struct device *dev)
|
|
|
+{
|
|
|
+ struct tcm_area area;
|
|
|
+ int i;
|
|
|
+
|
|
|
+ if (!omap_dmm)
|
|
|
+ return -ENODEV;
|
|
|
+
|
|
|
+ area = (struct tcm_area) {
|
|
|
+ .is2d = true,
|
|
|
+ .tcm = NULL,
|
|
|
+ .p1.x = omap_dmm->container_width - 1,
|
|
|
+ .p1.y = omap_dmm->container_height - 1,
|
|
|
+ };
|
|
|
+
|
|
|
+ /* initialize all LUTs to dummy page entries */
|
|
|
+ for (i = 0; i < omap_dmm->num_lut; i++) {
|
|
|
+ area.tcm = omap_dmm->tcm[i];
|
|
|
+ if (fill(&area, NULL, 0, 0, true))
|
|
|
+ dev_err(dev, "refill failed");
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+static const struct dev_pm_ops omap_dmm_pm_ops = {
|
|
|
+ .resume = omap_dmm_resume,
|
|
|
+};
|
|
|
+#endif
|
|
|
+
|
|
|
struct platform_driver omap_dmm_driver = {
|
|
|
.probe = omap_dmm_probe,
|
|
|
.remove = omap_dmm_remove,
|
|
|
.driver = {
|
|
|
.owner = THIS_MODULE,
|
|
|
.name = DMM_DRIVER_NAME,
|
|
|
+#ifdef CONFIG_PM
|
|
|
+ .pm = &omap_dmm_pm_ops,
|
|
|
+#endif
|
|
|
},
|
|
|
};
|
|
|
|