Messages in this thread | | | Date | Fri, 7 Jul 2023 19:07:38 +0200 | From | Martin Kaiser <> | Subject | Re: [PATCH] hwrng: timeriomem - Use devm_platform_get_and_ioremap_resource() |
| |
Hi,
Thus wrote Yangtao Li (frank.li@vivo.com):
> Convert platform_get_resource(), devm_ioremap_resource() to a single > call to devm_platform_get_and_ioremap_resource(), as this is exactly > what this function does.
> Signed-off-by: Yangtao Li <frank.li@vivo.com> > --- > drivers/char/hw_random/timeriomem-rng.c | 25 ++++++++++--------------- > 1 file changed, 10 insertions(+), 15 deletions(-)
> diff --git a/drivers/char/hw_random/timeriomem-rng.c b/drivers/char/hw_random/timeriomem-rng.c > index 26f322d19a88..3db9d868efb1 100644 > --- a/drivers/char/hw_random/timeriomem-rng.c > +++ b/drivers/char/hw_random/timeriomem-rng.c > @@ -113,16 +113,6 @@ static int timeriomem_rng_probe(struct platform_device *pdev) > return -EINVAL; > }
> - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > - if (!res) > - return -ENXIO; > - > - if (res->start % 4 != 0 || resource_size(res) < 4) { > - dev_err(&pdev->dev, > - "address must be at least four bytes wide and 32-bit aligned\n"); > - return -EINVAL; > - } > - > /* Allocate memory for the device structure (and zero it) */ > priv = devm_kzalloc(&pdev->dev, > sizeof(struct timeriomem_rng_private), GFP_KERNEL); > @@ -131,6 +121,16 @@ static int timeriomem_rng_probe(struct platform_device *pdev)
> platform_set_drvdata(pdev, priv);
> + priv->io_base = devm_platform_get_and_ioremap_resource(pdev, 0, &res); > + if (IS_ERR(priv->io_base)) > + return PTR_ERR(priv->io_base); > + > + if (res->start % 4 != 0 || resource_size(res) < 4) { > + dev_err(&pdev->dev, > + "address must be at least four bytes wide and 32-bit aligned\n"); > + return -EINVAL; > + } > + > if (pdev->dev.of_node) { > int i;
> @@ -158,11 +158,6 @@ static int timeriomem_rng_probe(struct platform_device *pdev) > priv->rng_ops.name = dev_name(&pdev->dev); > priv->rng_ops.read = timeriomem_rng_read;
> - priv->io_base = devm_ioremap_resource(&pdev->dev, res); > - if (IS_ERR(priv->io_base)) { > - return PTR_ERR(priv->io_base); > - } > - > /* Assume random data is already available. */ > priv->present = 1; > complete(&priv->completion); > -- > 2.39.0
Looks ok to me.
Reviewed-by: Martin Kaiser <martin@kaiser.cx>
I was wondering if we really have to check res->start and resource_size(res) that we read from the device tree. Other drivers don't check these settings and use devm_platform_ioremap_resource(pdev, 0).
Best regards, Martin
| |