debug lockups: Improve lockup detection, fix generic arch fallback
[pandora-kernel.git] / drivers / char / tpm / tpm_nsc.c
index ab18c1e..70efba2 100644 (file)
@@ -273,12 +273,23 @@ static void tpm_nsc_remove(struct device *dev)
        }
 }
 
-static struct device_driver nsc_drv = {
-       .name = "tpm_nsc",
-       .bus = &platform_bus_type,
-       .owner = THIS_MODULE,
-       .suspend = tpm_pm_suspend,
-       .resume = tpm_pm_resume,
+static int tpm_nsc_suspend(struct platform_device *dev, pm_message_t msg)
+{
+       return tpm_pm_suspend(&dev->dev, msg);
+}
+
+static int tpm_nsc_resume(struct platform_device *dev)
+{
+       return tpm_pm_resume(&dev->dev);
+}
+
+static struct platform_driver nsc_drv = {
+       .suspend         = tpm_nsc_suspend,
+       .resume          = tpm_nsc_resume,
+       .driver          = {
+               .name    = "tpm_nsc",
+               .owner   = THIS_MODULE,
+       },
 };
 
 static int __init init_nsc(void)
@@ -297,7 +308,7 @@ static int __init init_nsc(void)
                        return -ENODEV;
        }
 
-       err = driver_register(&nsc_drv);
+       err = platform_driver_register(&nsc_drv);
        if (err)
                return err;
 
@@ -308,17 +319,15 @@ static int __init init_nsc(void)
        /* enable the DPM module */
        tpm_write_index(nscAddrBase, NSC_LDC_INDEX, 0x01);
 
-       pdev = kzalloc(sizeof(struct platform_device), GFP_KERNEL);
+       pdev = platform_device_alloc("tpm_nscl0", -1);
        if (!pdev) {
                rc = -ENOMEM;
                goto err_unreg_drv;
        }
 
-       pdev->name = "tpm_nscl0";
-       pdev->id = -1;
        pdev->num_resources = 0;
+       pdev->dev.driver = &nsc_drv.driver;
        pdev->dev.release = tpm_nsc_remove;
-       pdev->dev.driver = &nsc_drv;
 
        if ((rc = platform_device_register(pdev)) < 0)
                goto err_free_dev;
@@ -377,7 +386,7 @@ err_unreg_dev:
 err_free_dev:
        kfree(pdev);
 err_unreg_drv:
-       driver_unregister(&nsc_drv);
+       platform_driver_unregister(&nsc_drv);
        return rc;
 }
 
@@ -390,7 +399,7 @@ static void __exit cleanup_nsc(void)
                pdev = NULL;
        }
 
-       driver_unregister(&nsc_drv);
+       platform_driver_unregister(&nsc_drv);
 }
 
 module_init(init_nsc);