memory: atmel-ebi: Add PM ops
authorBoris Brezillon <boris.brezillon@free-electrons.com>
Thu, 16 Mar 2017 08:30:34 +0000 (09:30 +0100)
committerLee Jones <lee.jones@linaro.org>
Thu, 27 Apr 2017 08:25:06 +0000 (09:25 +0100)
Add a ->resume() hook to make sure the EBI dev configs are correctly
restored when resuming the platform.

Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
drivers/memory/atmel-ebi.c

index 7d24a957e98c6d5b5f9e077b6478415ea8d1c832..35910f945bfad02823f7146c0746feb90aa2cda9 100644 (file)
@@ -507,6 +507,8 @@ static int atmel_ebi_probe(struct platform_device *pdev)
        if (!ebi)
                return -ENOMEM;
 
+       platform_set_drvdata(pdev, ebi);
+
        INIT_LIST_HEAD(&ebi->devs);
        ebi->caps = match->data;
        ebi->dev = dev;
@@ -579,10 +581,28 @@ static int atmel_ebi_probe(struct platform_device *pdev)
        return of_platform_populate(np, NULL, NULL, dev);
 }
 
+static int atmel_ebi_resume(struct device *dev)
+{
+       struct atmel_ebi *ebi = dev_get_drvdata(dev);
+       struct atmel_ebi_dev *ebid;
+
+       list_for_each_entry(ebid, &ebi->devs, node) {
+               int i;
+
+               for (i = 0; i < ebid->numcs; i++)
+                       ebid->ebi->caps->apply_config(ebid, &ebid->configs[i]);
+       }
+
+       return 0;
+}
+
+static SIMPLE_DEV_PM_OPS(atmel_ebi_pm_ops, NULL, atmel_ebi_resume);
+
 static struct platform_driver atmel_ebi_driver = {
        .driver = {
                .name = "atmel-ebi",
                .of_match_table = atmel_ebi_id_table,
+               .pm = &atmel_ebi_pm_ops,
        },
 };
 builtin_platform_driver_probe(atmel_ebi_driver, atmel_ebi_probe);