Re: [PATCH v2] drivers: gpio: sprd: use devm_platform_ioremap_resource()

From: Baolin Wang
Date: Tue Mar 12 2019 - 04:49:22 EST


On Tue, 12 Mar 2019 at 16:08, Enrico Weigelt, metux IT consult
<info@xxxxxxxxx> wrote:
>
> Use the new helper that wraps the calls to platform_get_resource()
> and devm_ioremap_resource() together.
>
> Signed-off-by: Enrico Weigelt, metux IT consult <info@xxxxxxxxx>
> ---
> drivers/gpio/gpio-eic-sprd.c | 9 ++-------
> 1 file changed, 2 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpio/gpio-eic-sprd.c b/drivers/gpio/gpio-eic-sprd.c
> index f0223ce..462cdf4 100644
> --- a/drivers/gpio/gpio-eic-sprd.c
> +++ b/drivers/gpio/gpio-eic-sprd.c
> @@ -567,7 +567,6 @@ static int sprd_eic_probe(struct platform_device *pdev)
> const struct sprd_eic_variant_data *pdata;
> struct gpio_irq_chip *irq;
> struct sprd_eic *sprd_eic;
> - struct resource *res;
> int ret, i;
>
> pdata = of_device_get_match_data(&pdev->dev);
> @@ -596,13 +595,9 @@ static int sprd_eic_probe(struct platform_device *pdev)
> * have one bank EIC, thus base[1] and base[2] can be
> * optional.
> */
> - res = platform_get_resource(pdev, IORESOURCE_MEM, i);
> - if (!res)
> - continue;
> -
> - sprd_eic->base[i] = devm_ioremap_resource(&pdev->dev, res);
> + sprd_eic->base[i] = devm_platform_ioremap_resource(pdev, i);
> if (IS_ERR(sprd_eic->base[i]))
> - return PTR_ERR(sprd_eic->base[i]);
> + continue;
> }

I still do not think the new API is suitable for this case. Since we
can have optional multiple IO resources, so the original code will not
return errors if we did not get the IO resources, but we must cast
errors if we failed to do ioremap. But you ignore the errors of
ioremap, which is not good.

--
Baolin Wang
Best Regards