Re: [PATCH] hwrng: Use device-managed registration API

2019-08-01 Thread Herbert Xu
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

2019-07-31 Thread Ludovic Desroches
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

2019-07-25 Thread Łukasz Stelmach
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

2019-07-25 Thread Chuhong Yuan
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);