Skip to content

Commit 3e75241

Browse files
WillLesterherbertx
authored andcommitted
hwrng: drivers - Use device-managed registration API
Use devm_hwrng_register to simplify the implementation. Manual unregistration and some remove functions can be removed now. Signed-off-by: Chuhong Yuan <[email protected]> Acked-by: Łukasz Stelmach <[email protected]> Acked-by: Ludovic Desroches <[email protected]> Signed-off-by: Herbert Xu <[email protected]>
1 parent dec0fb3 commit 3e75241

File tree

9 files changed

+9
-36
lines changed

9 files changed

+9
-36
lines changed

drivers/char/hw_random/atmel-rng.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ static int atmel_trng_probe(struct platform_device *pdev)
8686
trng->rng.name = pdev->name;
8787
trng->rng.read = atmel_trng_read;
8888

89-
ret = hwrng_register(&trng->rng);
89+
ret = devm_hwrng_register(&pdev->dev, &trng->rng);
9090
if (ret)
9191
goto err_register;
9292

@@ -103,7 +103,6 @@ static int atmel_trng_remove(struct platform_device *pdev)
103103
{
104104
struct atmel_trng *trng = platform_get_drvdata(pdev);
105105

106-
hwrng_unregister(&trng->rng);
107106

108107
atmel_trng_disable(trng);
109108
clk_disable_unprepare(trng->clk);

drivers/char/hw_random/cavium-rng-vf.c

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ static int cavium_rng_probe_vf(struct pci_dev *pdev,
6767

6868
pci_set_drvdata(pdev, rng);
6969

70-
ret = hwrng_register(&rng->ops);
70+
ret = devm_hwrng_register(&pdev->dev, &rng->ops);
7171
if (ret) {
7272
dev_err(&pdev->dev, "Error registering device as HWRNG.\n");
7373
return ret;
@@ -76,14 +76,6 @@ static int cavium_rng_probe_vf(struct pci_dev *pdev,
7676
return 0;
7777
}
7878

79-
/* Remove the VF */
80-
static void cavium_rng_remove_vf(struct pci_dev *pdev)
81-
{
82-
struct cavium_rng *rng;
83-
84-
rng = pci_get_drvdata(pdev);
85-
hwrng_unregister(&rng->ops);
86-
}
8779

8880
static const struct pci_device_id cavium_rng_vf_id_table[] = {
8981
{ PCI_DEVICE(PCI_VENDOR_ID_CAVIUM, 0xa033), 0, 0, 0},
@@ -95,7 +87,6 @@ static struct pci_driver cavium_rng_vf_driver = {
9587
.name = "cavium_rng_vf",
9688
.id_table = cavium_rng_vf_id_table,
9789
.probe = cavium_rng_probe_vf,
98-
.remove = cavium_rng_remove_vf,
9990
};
10091
module_pci_driver(cavium_rng_vf_driver);
10192

drivers/char/hw_random/exynos-trng.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ static int exynos_trng_probe(struct platform_device *pdev)
153153
goto err_clock;
154154
}
155155

156-
ret = hwrng_register(&trng->rng);
156+
ret = devm_hwrng_register(&pdev->dev, &trng->rng);
157157
if (ret) {
158158
dev_err(&pdev->dev, "Could not register hwrng device.\n");
159159
goto err_register;
@@ -179,7 +179,6 @@ static int exynos_trng_remove(struct platform_device *pdev)
179179
{
180180
struct exynos_trng_dev *trng = platform_get_drvdata(pdev);
181181

182-
hwrng_unregister(&trng->rng);
183182
clk_disable_unprepare(trng->clk);
184183

185184
pm_runtime_put_sync(&pdev->dev);

drivers/char/hw_random/n2-drv.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -768,7 +768,7 @@ static int n2rng_probe(struct platform_device *op)
768768
np->hwrng.data_read = n2rng_data_read;
769769
np->hwrng.priv = (unsigned long) np;
770770

771-
err = hwrng_register(&np->hwrng);
771+
err = devm_hwrng_register(&pdev->dev, &np->hwrng);
772772
if (err)
773773
goto out_hvapi_unregister;
774774

@@ -793,8 +793,6 @@ static int n2rng_remove(struct platform_device *op)
793793

794794
cancel_delayed_work_sync(&np->work);
795795

796-
hwrng_unregister(&np->hwrng);
797-
798796
sun4v_hvapi_unregister(HV_GRP_RNG);
799797

800798
return 0;

drivers/char/hw_random/nomadik-rng.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ static int nmk_rng_probe(struct amba_device *dev, const struct amba_id *id)
5757
if (!base)
5858
goto out_release;
5959
nmk_rng.priv = (unsigned long)base;
60-
ret = hwrng_register(&nmk_rng);
60+
ret = devm_hwrng_register(&dev->dev, &nmk_rng);
6161
if (ret)
6262
goto out_release;
6363
return 0;
@@ -71,7 +71,6 @@ static int nmk_rng_probe(struct amba_device *dev, const struct amba_id *id)
7171

7272
static int nmk_rng_remove(struct amba_device *dev)
7373
{
74-
hwrng_unregister(&nmk_rng);
7574
amba_release_regions(dev);
7675
clk_disable(rng_clk);
7776
return 0;

drivers/char/hw_random/omap-rng.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -500,7 +500,7 @@ static int omap_rng_probe(struct platform_device *pdev)
500500
if (ret)
501501
goto err_register;
502502

503-
ret = hwrng_register(&priv->rng);
503+
ret = devm_hwrng_register(&pdev->dev, &priv->rng);
504504
if (ret)
505505
goto err_register;
506506

@@ -525,7 +525,6 @@ static int omap_rng_remove(struct platform_device *pdev)
525525
{
526526
struct omap_rng_dev *priv = platform_get_drvdata(pdev);
527527

528-
hwrng_unregister(&priv->rng);
529528

530529
priv->pdata->cleanup(priv);
531530

drivers/char/hw_random/powernv-rng.c

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,18 +33,11 @@ static struct hwrng powernv_hwrng = {
3333
.read = powernv_rng_read,
3434
};
3535

36-
static int powernv_rng_remove(struct platform_device *pdev)
37-
{
38-
hwrng_unregister(&powernv_hwrng);
39-
40-
return 0;
41-
}
42-
4336
static int powernv_rng_probe(struct platform_device *pdev)
4437
{
4538
int rc;
4639

47-
rc = hwrng_register(&powernv_hwrng);
40+
rc = devm_hwrng_register(&pdev->dev, &powernv_hwrng);
4841
if (rc) {
4942
/* We only register one device, ignore any others */
5043
if (rc == -EEXIST)
@@ -70,7 +63,6 @@ static struct platform_driver powernv_rng_driver = {
7063
.of_match_table = powernv_rng_match,
7164
},
7265
.probe = powernv_rng_probe,
73-
.remove = powernv_rng_remove,
7466
};
7567
module_platform_driver(powernv_rng_driver);
7668

drivers/char/hw_random/st-rng.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ static int st_rng_probe(struct platform_device *pdev)
102102

103103
dev_set_drvdata(&pdev->dev, ddata);
104104

105-
ret = hwrng_register(&ddata->ops);
105+
ret = devm_hwrng_register(&pdev->dev, &ddata->ops);
106106
if (ret) {
107107
dev_err(&pdev->dev, "Failed to register HW RNG\n");
108108
clk_disable_unprepare(clk);
@@ -118,8 +118,6 @@ static int st_rng_remove(struct platform_device *pdev)
118118
{
119119
struct st_rng_data *ddata = dev_get_drvdata(&pdev->dev);
120120

121-
hwrng_unregister(&ddata->ops);
122-
123121
clk_disable_unprepare(ddata->clk);
124122

125123
return 0;

drivers/char/hw_random/xgene-rng.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,7 @@ static int xgene_rng_probe(struct platform_device *pdev)
361361

362362
xgene_rng_func.priv = (unsigned long) ctx;
363363

364-
rc = hwrng_register(&xgene_rng_func);
364+
rc = devm_hwrng_register(&pdev->dev, &xgene_rng_func);
365365
if (rc) {
366366
dev_err(&pdev->dev, "RNG registering failed error %d\n", rc);
367367
if (!IS_ERR(ctx->clk))
@@ -375,7 +375,6 @@ static int xgene_rng_probe(struct platform_device *pdev)
375375
rc);
376376
if (!IS_ERR(ctx->clk))
377377
clk_disable_unprepare(ctx->clk);
378-
hwrng_unregister(&xgene_rng_func);
379378
return rc;
380379
}
381380

@@ -392,7 +391,6 @@ static int xgene_rng_remove(struct platform_device *pdev)
392391
dev_err(&pdev->dev, "RNG init wakeup failed error %d\n", rc);
393392
if (!IS_ERR(ctx->clk))
394393
clk_disable_unprepare(ctx->clk);
395-
hwrng_unregister(&xgene_rng_func);
396394

397395
return rc;
398396
}

0 commit comments

Comments
 (0)