|
|
@@ -95,42 +95,20 @@ static struct hwrng pasemi_rng = {
|
|
|
.data_read = pasemi_rng_data_read,
|
|
|
};
|
|
|
|
|
|
-static int rng_probe(struct platform_device *ofdev)
|
|
|
+static int rng_probe(struct platform_device *pdev)
|
|
|
{
|
|
|
void __iomem *rng_regs;
|
|
|
- struct device_node *rng_np = ofdev->dev.of_node;
|
|
|
- struct resource res;
|
|
|
- int err = 0;
|
|
|
+ struct resource *res;
|
|
|
|
|
|
- err = of_address_to_resource(rng_np, 0, &res);
|
|
|
- if (err)
|
|
|
- return -ENODEV;
|
|
|
-
|
|
|
- rng_regs = ioremap(res.start, 0x100);
|
|
|
-
|
|
|
- if (!rng_regs)
|
|
|
- return -ENOMEM;
|
|
|
+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
|
|
+ rng_regs = devm_ioremap_resource(&pdev->dev, res);
|
|
|
+ if (IS_ERR(rng_regs))
|
|
|
+ return PTR_ERR(rng_regs);
|
|
|
|
|
|
pasemi_rng.priv = (unsigned long)rng_regs;
|
|
|
|
|
|
pr_info("Registering PA Semi RNG\n");
|
|
|
-
|
|
|
- err = hwrng_register(&pasemi_rng);
|
|
|
-
|
|
|
- if (err)
|
|
|
- iounmap(rng_regs);
|
|
|
-
|
|
|
- return err;
|
|
|
-}
|
|
|
-
|
|
|
-static int rng_remove(struct platform_device *dev)
|
|
|
-{
|
|
|
- void __iomem *rng_regs = (void __iomem *)pasemi_rng.priv;
|
|
|
-
|
|
|
- hwrng_unregister(&pasemi_rng);
|
|
|
- iounmap(rng_regs);
|
|
|
-
|
|
|
- return 0;
|
|
|
+ return devm_hwrng_register(&pdev->dev, &pasemi_rng);
|
|
|
}
|
|
|
|
|
|
static const struct of_device_id rng_match[] = {
|
|
|
@@ -146,7 +124,6 @@ static struct platform_driver rng_driver = {
|
|
|
.of_match_table = rng_match,
|
|
|
},
|
|
|
.probe = rng_probe,
|
|
|
- .remove = rng_remove,
|
|
|
};
|
|
|
|
|
|
module_platform_driver(rng_driver);
|