hwrng: omap - Remove duplicated function call
[cascardo/linux.git] / drivers / char / hw_random / omap-rng.c
index d2903e7..5a2ab3b 100644 (file)
@@ -109,14 +109,15 @@ static int omap_rng_probe(struct platform_device *pdev)
        struct omap_rng_private_data *priv;
        int ret;
 
-       priv = kzalloc(sizeof(struct omap_rng_private_data), GFP_KERNEL);
+       priv = devm_kzalloc(&pdev->dev, sizeof(struct omap_rng_private_data),
+                           GFP_KERNEL);
        if (!priv) {
                dev_err(&pdev->dev, "could not allocate memory\n");
                return -ENOMEM;
        };
 
        omap_rng_ops.priv = (unsigned long)priv;
-       dev_set_drvdata(&pdev->dev, priv);
+       platform_set_drvdata(pdev, priv);
 
        priv->mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        priv->base = devm_ioremap_resource(&pdev->dev, priv->mem_res);
@@ -124,7 +125,6 @@ static int omap_rng_probe(struct platform_device *pdev)
                ret = PTR_ERR(priv->base);
                goto err_ioremap;
        }
-       dev_set_drvdata(&pdev->dev, priv);
 
        pm_runtime_enable(&pdev->dev);
        pm_runtime_get_sync(&pdev->dev);
@@ -144,14 +144,12 @@ err_register:
        priv->base = NULL;
        pm_runtime_disable(&pdev->dev);
 err_ioremap:
-       kfree(priv);
-
        return ret;
 }
 
 static int __exit omap_rng_remove(struct platform_device *pdev)
 {
-       struct omap_rng_private_data *priv = dev_get_drvdata(&pdev->dev);
+       struct omap_rng_private_data *priv = platform_get_drvdata(pdev);
 
        hwrng_unregister(&omap_rng_ops);
 
@@ -160,10 +158,6 @@ static int __exit omap_rng_remove(struct platform_device *pdev)
        pm_runtime_put_sync(&pdev->dev);
        pm_runtime_disable(&pdev->dev);
 
-       release_mem_region(priv->mem_res->start, resource_size(priv->mem_res));
-
-       kfree(priv);
-
        return 0;
 }
 
@@ -198,9 +192,6 @@ static SIMPLE_DEV_PM_OPS(omap_rng_pm, omap_rng_suspend, omap_rng_resume);
 
 #endif
 
-/* work with hotplug and coldplug */
-MODULE_ALIAS("platform:omap_rng");
-
 static struct platform_driver omap_rng_driver = {
        .driver = {
                .name           = "omap_rng",
@@ -211,18 +202,7 @@ static struct platform_driver omap_rng_driver = {
        .remove         = __exit_p(omap_rng_remove),
 };
 
-static int __init omap_rng_init(void)
-{
-       return platform_driver_register(&omap_rng_driver);
-}
-
-static void __exit omap_rng_exit(void)
-{
-       platform_driver_unregister(&omap_rng_driver);
-}
-
-module_init(omap_rng_init);
-module_exit(omap_rng_exit);
-
+module_platform_driver(omap_rng_driver);
+MODULE_ALIAS("platform:omap_rng");
 MODULE_AUTHOR("Deepak Saxena (and others)");
 MODULE_LICENSE("GPL");