upgrade to linux 2.6.10-1.12_FC2
[linux-2.6.git] / arch / arm / common / sa1111.c
index acc7d1a..9525e80 100644 (file)
@@ -797,6 +797,8 @@ struct sa1111_save_data {
        unsigned int    wakeen1;
 };
 
+#ifdef CONFIG_PM
+
 static int sa1111_suspend(struct device *dev, u32 state, u32 level)
 {
        struct sa1111 *sachip = dev_get_drvdata(dev);
@@ -808,11 +810,10 @@ static int sa1111_suspend(struct device *dev, u32 state, u32 level)
        if (level != SUSPEND_DISABLE)
                return 0;
 
-       dev->saved_state = kmalloc(sizeof(struct sa1111_save_data), GFP_KERNEL);
-       if (!dev->saved_state)
+       save = kmalloc(sizeof(struct sa1111_save_data), GFP_KERNEL);
+       if (!save)
                return -ENOMEM;
-
-       save = (struct sa1111_save_data *)dev->saved_state;
+       dev->power.saved_state = save;
 
        spin_lock_irqsave(&sachip->lock, flags);
 
@@ -870,7 +871,7 @@ static int sa1111_resume(struct device *dev, u32 level)
        if (level != RESUME_ENABLE)
                return 0;
 
-       save = (struct sa1111_save_data *)dev->saved_state;
+       save = (struct sa1111_save_data *)dev->power.saved_state;
        if (!save)
                return 0;
 
@@ -915,12 +916,18 @@ static int sa1111_resume(struct device *dev, u32 level)
 
        spin_unlock_irqrestore(&sachip->lock, flags);
 
-       dev->saved_state = NULL;
+       dev->power.saved_state = NULL;
        kfree(save);
 
        return 0;
 }
 
+#else  /* !CONFIG_PM */
+#define sa1111_resume  NULL
+#define sa1111_suspend NULL
+#endif /* !CONFIG_PM */
+
+
 static int sa1111_probe(struct device *dev)
 {
        struct platform_device *pdev = to_platform_device(dev);
@@ -943,8 +950,10 @@ static int sa1111_remove(struct device *dev)
                __sa1111_remove(sachip);
                dev_set_drvdata(dev, NULL);
 
-               kfree(dev->saved_state);
-               dev->saved_state = NULL;
+#ifdef CONFIG_PM
+               kfree(dev->power.saved_state);
+               dev->power.saved_state = NULL;
+#endif
        }
 
        return 0;