Re: [PATCH] hwrng: Use device-managed registration API
On Thu, Jul 25, 2019 at 04:01:55PM +0800, Chuhong Yuan wrote: > Use devm_hwrng_register to simplify the implementation. > Manual unregistration and some remove functions can be > removed now. > > Signed-off-by: Chuhong Yuan > --- > drivers/char/hw_random/atmel-rng.c | 3 +-- > drivers/char/hw_random/cavium-rng-vf.c | 11 +-- > drivers/char/hw_random/exynos-trng.c | 3 +-- > drivers/char/hw_random/n2-drv.c| 4 +--- > drivers/char/hw_random/nomadik-rng.c | 3 +-- > drivers/char/hw_random/omap-rng.c | 3 +-- > drivers/char/hw_random/powernv-rng.c | 10 +- > drivers/char/hw_random/st-rng.c| 4 +--- > drivers/char/hw_random/xgene-rng.c | 4 +--- > 9 files changed, 9 insertions(+), 36 deletions(-) Patch applied. Thanks. -- Email: Herbert Xu Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Re: [PATCH] hwrng: Use device-managed registration API
On Thu, Jul 25, 2019 at 04:01:55PM +0800, Chuhong Yuan wrote: > External E-Mail > > > Use devm_hwrng_register to simplify the implementation. > Manual unregistration and some remove functions can be > removed now. > > Signed-off-by: Chuhong Yuan > --- > drivers/char/hw_random/atmel-rng.c | 3 +-- Acked-by: Ludovic Desroches Thanks > drivers/char/hw_random/cavium-rng-vf.c | 11 +-- > drivers/char/hw_random/exynos-trng.c | 3 +-- > drivers/char/hw_random/n2-drv.c| 4 +--- > drivers/char/hw_random/nomadik-rng.c | 3 +-- > drivers/char/hw_random/omap-rng.c | 3 +-- > drivers/char/hw_random/powernv-rng.c | 10 +- > drivers/char/hw_random/st-rng.c| 4 +--- > drivers/char/hw_random/xgene-rng.c | 4 +--- > 9 files changed, 9 insertions(+), 36 deletions(-) > > diff --git a/drivers/char/hw_random/atmel-rng.c > b/drivers/char/hw_random/atmel-rng.c > index 433426242b87..e55705745d5e 100644 > --- a/drivers/char/hw_random/atmel-rng.c > +++ b/drivers/char/hw_random/atmel-rng.c > @@ -86,7 +86,7 @@ static int atmel_trng_probe(struct platform_device *pdev) > trng->rng.name = pdev->name; > trng->rng.read = atmel_trng_read; > > - ret = hwrng_register(>rng); > + ret = devm_hwrng_register(>dev, >rng); > if (ret) > goto err_register; > > @@ -103,7 +103,6 @@ static int atmel_trng_remove(struct platform_device *pdev) > { > struct atmel_trng *trng = platform_get_drvdata(pdev); > > - hwrng_unregister(>rng); > > atmel_trng_disable(trng); > clk_disable_unprepare(trng->clk); > diff --git a/drivers/char/hw_random/cavium-rng-vf.c > b/drivers/char/hw_random/cavium-rng-vf.c > index 2d1352b67168..3de4a6a443ef 100644 > --- a/drivers/char/hw_random/cavium-rng-vf.c > +++ b/drivers/char/hw_random/cavium-rng-vf.c > @@ -67,7 +67,7 @@ static int cavium_rng_probe_vf(struct pci_dev > *pdev, > > pci_set_drvdata(pdev, rng); > > - ret = hwrng_register(>ops); > + ret = devm_hwrng_register(>dev, >ops); > if (ret) { > dev_err(>dev, "Error registering device as HWRNG.\n"); > return ret; > @@ -76,14 +76,6 @@ static int cavium_rng_probe_vf(struct pci_dev > *pdev, > return 0; > } > > -/* Remove the VF */ > -static void cavium_rng_remove_vf(struct pci_dev *pdev) > -{ > - struct cavium_rng *rng; > - > - rng = pci_get_drvdata(pdev); > - hwrng_unregister(>ops); > -} > > static const struct pci_device_id cavium_rng_vf_id_table[] = { > { PCI_DEVICE(PCI_VENDOR_ID_CAVIUM, 0xa033), 0, 0, 0}, > @@ -95,7 +87,6 @@ static struct pci_driver cavium_rng_vf_driver = { > .name = "cavium_rng_vf", > .id_table = cavium_rng_vf_id_table, > .probe = cavium_rng_probe_vf, > - .remove = cavium_rng_remove_vf, > }; > module_pci_driver(cavium_rng_vf_driver); > > diff --git a/drivers/char/hw_random/exynos-trng.c > b/drivers/char/hw_random/exynos-trng.c > index 94235761955c..b4b52ab23b6b 100644 > --- a/drivers/char/hw_random/exynos-trng.c > +++ b/drivers/char/hw_random/exynos-trng.c > @@ -153,7 +153,7 @@ static int exynos_trng_probe(struct platform_device *pdev) > goto err_clock; > } > > - ret = hwrng_register(>rng); > + ret = devm_hwrng_register(>dev, >rng); > if (ret) { > dev_err(>dev, "Could not register hwrng device.\n"); > goto err_register; > @@ -179,7 +179,6 @@ static int exynos_trng_remove(struct platform_device > *pdev) > { > struct exynos_trng_dev *trng = platform_get_drvdata(pdev); > > - hwrng_unregister(>rng); > clk_disable_unprepare(trng->clk); > > pm_runtime_put_sync(>dev); > diff --git a/drivers/char/hw_random/n2-drv.c b/drivers/char/hw_random/n2-drv.c > index d4cab105796f..2d256b3470db 100644 > --- a/drivers/char/hw_random/n2-drv.c > +++ b/drivers/char/hw_random/n2-drv.c > @@ -768,7 +768,7 @@ static int n2rng_probe(struct platform_device *op) > np->hwrng.data_read = n2rng_data_read; > np->hwrng.priv = (unsigned long) np; > > - err = hwrng_register(>hwrng); > + err = devm_hwrng_register(>dev, >hwrng); > if (err) > goto out_hvapi_unregister; > > @@ -793,8 +793,6 @@ static int n2rng_remove(struct platform_device *op) > > cancel_delayed_work_sync(>work); > > - hwrng_unregister(>hwrng); > - > sun4v_hvapi_unregister(HV_GRP_RNG); > > return 0; > diff --git a/drivers/char/hw_random/nomadik-rng.c > b/drivers/char/hw_random/nomadik-rng.c > index fc0f6b0cb80d..74ed29f42e4f 100644 > --- a/drivers/char/hw_random/nomadik-rng.c > +++ b/drivers/char/hw_random/nomadik-rng.c > @@ -57,7 +57,7 @@ static int nmk_rng_probe(struct amba_device *dev, const > struct amba_id *id) > if (!base) > goto out_release; > nmk_rng.priv = (unsigned long)base; > - ret = hwrng_register(_rng); > + ret =
Re: [PATCH] hwrng: Use device-managed registration API
It was <2019-07-25 czw 10:01>, when Chuhong Yuan wrote: > Use devm_hwrng_register to simplify the implementation. > Manual unregistration and some remove functions can be > removed now. > > Signed-off-by: Chuhong Yuan > --- > drivers/char/hw_random/atmel-rng.c | 3 +-- > drivers/char/hw_random/cavium-rng-vf.c | 11 +-- > drivers/char/hw_random/exynos-trng.c | 3 +-- > drivers/char/hw_random/n2-drv.c| 4 +--- > drivers/char/hw_random/nomadik-rng.c | 3 +-- > drivers/char/hw_random/omap-rng.c | 3 +-- > drivers/char/hw_random/powernv-rng.c | 10 +- > drivers/char/hw_random/st-rng.c| 4 +--- > drivers/char/hw_random/xgene-rng.c | 4 +--- > 9 files changed, 9 insertions(+), 36 deletions(-) > Acked-by: Łukasz Stelmach > diff --git a/drivers/char/hw_random/atmel-rng.c > b/drivers/char/hw_random/atmel-rng.c > index 433426242b87..e55705745d5e 100644 > --- a/drivers/char/hw_random/atmel-rng.c > +++ b/drivers/char/hw_random/atmel-rng.c > @@ -86,7 +86,7 @@ static int atmel_trng_probe(struct platform_device *pdev) > trng->rng.name = pdev->name; > trng->rng.read = atmel_trng_read; > > - ret = hwrng_register(>rng); > + ret = devm_hwrng_register(>dev, >rng); > if (ret) > goto err_register; > > @@ -103,7 +103,6 @@ static int atmel_trng_remove(struct platform_device *pdev) > { > struct atmel_trng *trng = platform_get_drvdata(pdev); > > - hwrng_unregister(>rng); > > atmel_trng_disable(trng); > clk_disable_unprepare(trng->clk); > diff --git a/drivers/char/hw_random/cavium-rng-vf.c > b/drivers/char/hw_random/cavium-rng-vf.c > index 2d1352b67168..3de4a6a443ef 100644 > --- a/drivers/char/hw_random/cavium-rng-vf.c > +++ b/drivers/char/hw_random/cavium-rng-vf.c > @@ -67,7 +67,7 @@ static int cavium_rng_probe_vf(struct pci_dev > *pdev, > > pci_set_drvdata(pdev, rng); > > - ret = hwrng_register(>ops); > + ret = devm_hwrng_register(>dev, >ops); > if (ret) { > dev_err(>dev, "Error registering device as HWRNG.\n"); > return ret; > @@ -76,14 +76,6 @@ static int cavium_rng_probe_vf(struct pci_dev > *pdev, > return 0; > } > > -/* Remove the VF */ > -static void cavium_rng_remove_vf(struct pci_dev *pdev) > -{ > - struct cavium_rng *rng; > - > - rng = pci_get_drvdata(pdev); > - hwrng_unregister(>ops); > -} > > static const struct pci_device_id cavium_rng_vf_id_table[] = { > { PCI_DEVICE(PCI_VENDOR_ID_CAVIUM, 0xa033), 0, 0, 0}, > @@ -95,7 +87,6 @@ static struct pci_driver cavium_rng_vf_driver = { > .name = "cavium_rng_vf", > .id_table = cavium_rng_vf_id_table, > .probe = cavium_rng_probe_vf, > - .remove = cavium_rng_remove_vf, > }; > module_pci_driver(cavium_rng_vf_driver); > > diff --git a/drivers/char/hw_random/exynos-trng.c > b/drivers/char/hw_random/exynos-trng.c > index 94235761955c..b4b52ab23b6b 100644 > --- a/drivers/char/hw_random/exynos-trng.c > +++ b/drivers/char/hw_random/exynos-trng.c > @@ -153,7 +153,7 @@ static int exynos_trng_probe(struct platform_device *pdev) > goto err_clock; > } > > - ret = hwrng_register(>rng); > + ret = devm_hwrng_register(>dev, >rng); > if (ret) { > dev_err(>dev, "Could not register hwrng device.\n"); > goto err_register; > @@ -179,7 +179,6 @@ static int exynos_trng_remove(struct platform_device > *pdev) > { > struct exynos_trng_dev *trng = platform_get_drvdata(pdev); > > - hwrng_unregister(>rng); > clk_disable_unprepare(trng->clk); > > pm_runtime_put_sync(>dev); > diff --git a/drivers/char/hw_random/n2-drv.c b/drivers/char/hw_random/n2-drv.c > index d4cab105796f..2d256b3470db 100644 > --- a/drivers/char/hw_random/n2-drv.c > +++ b/drivers/char/hw_random/n2-drv.c > @@ -768,7 +768,7 @@ static int n2rng_probe(struct platform_device *op) > np->hwrng.data_read = n2rng_data_read; > np->hwrng.priv = (unsigned long) np; > > - err = hwrng_register(>hwrng); > + err = devm_hwrng_register(>dev, >hwrng); > if (err) > goto out_hvapi_unregister; > > @@ -793,8 +793,6 @@ static int n2rng_remove(struct platform_device *op) > > cancel_delayed_work_sync(>work); > > - hwrng_unregister(>hwrng); > - > sun4v_hvapi_unregister(HV_GRP_RNG); > > return 0; > diff --git a/drivers/char/hw_random/nomadik-rng.c > b/drivers/char/hw_random/nomadik-rng.c > index fc0f6b0cb80d..74ed29f42e4f 100644 > --- a/drivers/char/hw_random/nomadik-rng.c > +++ b/drivers/char/hw_random/nomadik-rng.c > @@ -57,7 +57,7 @@ static int nmk_rng_probe(struct amba_device *dev, const > struct amba_id *id) > if (!base) > goto out_release; > nmk_rng.priv = (unsigned long)base; > - ret = hwrng_register(_rng); > + ret = devm_hwrng_register(>dev, _rng); > if
[PATCH] hwrng: 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 --- drivers/char/hw_random/atmel-rng.c | 3 +-- drivers/char/hw_random/cavium-rng-vf.c | 11 +-- drivers/char/hw_random/exynos-trng.c | 3 +-- drivers/char/hw_random/n2-drv.c| 4 +--- drivers/char/hw_random/nomadik-rng.c | 3 +-- drivers/char/hw_random/omap-rng.c | 3 +-- drivers/char/hw_random/powernv-rng.c | 10 +- drivers/char/hw_random/st-rng.c| 4 +--- drivers/char/hw_random/xgene-rng.c | 4 +--- 9 files changed, 9 insertions(+), 36 deletions(-) diff --git a/drivers/char/hw_random/atmel-rng.c b/drivers/char/hw_random/atmel-rng.c index 433426242b87..e55705745d5e 100644 --- a/drivers/char/hw_random/atmel-rng.c +++ b/drivers/char/hw_random/atmel-rng.c @@ -86,7 +86,7 @@ static int atmel_trng_probe(struct platform_device *pdev) trng->rng.name = pdev->name; trng->rng.read = atmel_trng_read; - ret = hwrng_register(>rng); + ret = devm_hwrng_register(>dev, >rng); if (ret) goto err_register; @@ -103,7 +103,6 @@ static int atmel_trng_remove(struct platform_device *pdev) { struct atmel_trng *trng = platform_get_drvdata(pdev); - hwrng_unregister(>rng); atmel_trng_disable(trng); clk_disable_unprepare(trng->clk); diff --git a/drivers/char/hw_random/cavium-rng-vf.c b/drivers/char/hw_random/cavium-rng-vf.c index 2d1352b67168..3de4a6a443ef 100644 --- a/drivers/char/hw_random/cavium-rng-vf.c +++ b/drivers/char/hw_random/cavium-rng-vf.c @@ -67,7 +67,7 @@ static int cavium_rng_probe_vf(struct pci_dev *pdev, pci_set_drvdata(pdev, rng); - ret = hwrng_register(>ops); + ret = devm_hwrng_register(>dev, >ops); if (ret) { dev_err(>dev, "Error registering device as HWRNG.\n"); return ret; @@ -76,14 +76,6 @@ static int cavium_rng_probe_vf(structpci_dev *pdev, return 0; } -/* Remove the VF */ -static void cavium_rng_remove_vf(struct pci_dev *pdev) -{ - struct cavium_rng *rng; - - rng = pci_get_drvdata(pdev); - hwrng_unregister(>ops); -} static const struct pci_device_id cavium_rng_vf_id_table[] = { { PCI_DEVICE(PCI_VENDOR_ID_CAVIUM, 0xa033), 0, 0, 0}, @@ -95,7 +87,6 @@ static struct pci_driver cavium_rng_vf_driver = { .name = "cavium_rng_vf", .id_table = cavium_rng_vf_id_table, .probe = cavium_rng_probe_vf, - .remove = cavium_rng_remove_vf, }; module_pci_driver(cavium_rng_vf_driver); diff --git a/drivers/char/hw_random/exynos-trng.c b/drivers/char/hw_random/exynos-trng.c index 94235761955c..b4b52ab23b6b 100644 --- a/drivers/char/hw_random/exynos-trng.c +++ b/drivers/char/hw_random/exynos-trng.c @@ -153,7 +153,7 @@ static int exynos_trng_probe(struct platform_device *pdev) goto err_clock; } - ret = hwrng_register(>rng); + ret = devm_hwrng_register(>dev, >rng); if (ret) { dev_err(>dev, "Could not register hwrng device.\n"); goto err_register; @@ -179,7 +179,6 @@ static int exynos_trng_remove(struct platform_device *pdev) { struct exynos_trng_dev *trng = platform_get_drvdata(pdev); - hwrng_unregister(>rng); clk_disable_unprepare(trng->clk); pm_runtime_put_sync(>dev); diff --git a/drivers/char/hw_random/n2-drv.c b/drivers/char/hw_random/n2-drv.c index d4cab105796f..2d256b3470db 100644 --- a/drivers/char/hw_random/n2-drv.c +++ b/drivers/char/hw_random/n2-drv.c @@ -768,7 +768,7 @@ static int n2rng_probe(struct platform_device *op) np->hwrng.data_read = n2rng_data_read; np->hwrng.priv = (unsigned long) np; - err = hwrng_register(>hwrng); + err = devm_hwrng_register(>dev, >hwrng); if (err) goto out_hvapi_unregister; @@ -793,8 +793,6 @@ static int n2rng_remove(struct platform_device *op) cancel_delayed_work_sync(>work); - hwrng_unregister(>hwrng); - sun4v_hvapi_unregister(HV_GRP_RNG); return 0; diff --git a/drivers/char/hw_random/nomadik-rng.c b/drivers/char/hw_random/nomadik-rng.c index fc0f6b0cb80d..74ed29f42e4f 100644 --- a/drivers/char/hw_random/nomadik-rng.c +++ b/drivers/char/hw_random/nomadik-rng.c @@ -57,7 +57,7 @@ static int nmk_rng_probe(struct amba_device *dev, const struct amba_id *id) if (!base) goto out_release; nmk_rng.priv = (unsigned long)base; - ret = hwrng_register(_rng); + ret = devm_hwrng_register(>dev, _rng); if (ret) goto out_release; return 0; @@ -71,7 +71,6 @@ static int nmk_rng_probe(struct amba_device *dev, const struct amba_id *id) static int nmk_rng_remove(struct amba_device *dev) { - hwrng_unregister(_rng);