gpadc: system does not enter S3 after incoming call
authorHe Bo <bo.he@intel.com>
Thu, 6 Oct 2011 15:18:28 +0000 (16:18 +0100)
committermgross <mark.gross@intel.com>
Wed, 9 Nov 2011 21:17:19 +0000 (13:17 -0800)
intel_mid_gpadc driver causes deadlock in S3, fix it.

Change-Id: I9878f3dd97402bbf9b9ad53cfc12e9dda4c90122
Signed-off-by: He Bo <bo.he@intel.com>
drivers/hwmon/intel_mid_gpadc.c

index 888833b..5f429c9 100644 (file)
@@ -531,7 +531,7 @@ static int __devexit msic_gpadc_remove(struct platform_device *pdev)
 }
 
 #ifdef CONFIG_PM
-static int msic_gpadc_suspend(struct platform_device *pdev, pm_message_t state)
+static int msic_gpadc_suspend_noirq(struct device *dev)
 {
        struct gpadc_info *mgi = &gpadc_info;
 
@@ -542,7 +542,7 @@ static int msic_gpadc_suspend(struct platform_device *pdev, pm_message_t state)
                return -EBUSY;
 }
 
-static int msic_gpadc_resume(struct platform_device *pdev)
+static int msic_gpadc_resume_noirq(struct device *dev)
 {
        struct gpadc_info *mgi = &gpadc_info;
 
@@ -554,15 +554,19 @@ static int msic_gpadc_resume(struct platform_device *pdev)
 #define msic_gpadc_resume_noirq     NULL
 #endif
 
+static const struct dev_pm_ops msic_gpadc_driver_pm_ops = {
+       .suspend_noirq  = msic_gpadc_suspend_noirq,
+       .resume_noirq   = msic_gpadc_resume_noirq,
+};
+
 static struct platform_driver msic_gpadc_driver = {
        .driver = {
                   .name = "msic_adc",
                   .owner = THIS_MODULE,
+                  .pm = &msic_gpadc_driver_pm_ops,
                   },
        .probe = msic_gpadc_probe,
        .remove = __devexit_p(msic_gpadc_remove),
-       .suspend = msic_gpadc_suspend,
-       .resume = msic_gpadc_resume,
 };
 
 static int __init msic_gpadc_module_init(void)