mtd: fsmc_nand: add pm callbacks to support hibernation
authorShiraz Hashim <shiraz.hashim@st.com>
Wed, 14 Mar 2012 06:17:13 +0000 (11:47 +0530)
committerDavid Woodhouse <David.Woodhouse@intel.com>
Mon, 26 Mar 2012 23:59:14 +0000 (00:59 +0100)
Signed-off-by: Shiraz Hashim <shiraz.hashim@st.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
drivers/mtd/nand/fsmc_nand.c

index 91f5b34..a509960 100644 (file)
@@ -382,7 +382,7 @@ static void fsmc_cmd_ctrl(struct mtd_info *mtd, int cmd, unsigned int ctrl)
  * This routine initializes timing parameters related to NAND memory access in
  * FSMC registers
  */
-static void __init fsmc_nand_setup(struct fsmc_regs *regs, uint32_t bank,
+static void fsmc_nand_setup(struct fsmc_regs *regs, uint32_t bank,
                                   uint32_t busw)
 {
        uint32_t value = FSMC_DEVTYPE_NAND | FSMC_ENABLE | FSMC_WAITON;
@@ -976,15 +976,15 @@ static int fsmc_nand_suspend(struct device *dev)
 static int fsmc_nand_resume(struct device *dev)
 {
        struct fsmc_nand_data *host = dev_get_drvdata(dev);
-       if (host)
+       if (host) {
                clk_enable(host->clk);
+               fsmc_nand_setup(host->regs_va, host->bank,
+                               host->nand.options & NAND_BUSWIDTH_16);
+       }
        return 0;
 }
 
-static const struct dev_pm_ops fsmc_nand_pm_ops = {
-       .suspend = fsmc_nand_suspend,
-       .resume = fsmc_nand_resume,
-};
+static SIMPLE_DEV_PM_OPS(fsmc_nand_pm_ops, fsmc_nand_suspend, fsmc_nand_resume);
 #endif
 
 static struct platform_driver fsmc_nand_driver = {