Subject: Re: [PATCH v7 4/5] gpio: Replace deprecated PCI functions

From: Simon Horman <[email-masked]>
Date: Mon, 14 Oct 2024 13:13:24 +0100

On Mon, Oct 14, 2024 at 09:53:25AM +0200, Philipp Stanner wrote:
> pcim_iomap_regions() and pcim_iomap_table() have been deprecated by the
> PCI subsystem in commit e354bb84a4c1 ("PCI: Deprecate
> pcim_iomap_table(), pcim_iomap_regions_request_all()").
> 
> Replace those functions with calls to pcim_iomap_region().
> 
> Signed-off-by: Philipp Stanner <[email-masked]>
> Reviewed-by: Andy Shevchenko <[email-masked]>
> Acked-by: Bartosz Golaszewski <[email-masked]>
> ---
>  drivers/gpio/gpio-merrifield.c | 14 +++++++-------
>  1 file changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/gpio/gpio-merrifield.c b/drivers/gpio/gpio-merrifield.c
> index 421d7e3a6c66..274afcba31e6 100644
> --- a/drivers/gpio/gpio-merrifield.c
> +++ b/drivers/gpio/gpio-merrifield.c
> @@ -78,24 +78,24 @@ static int mrfld_gpio_probe(struct pci_dev *pdev, const struct pci_device_id *id
>  	if (retval)
>  		return retval;
>  
> -	retval = pcim_iomap_regions(pdev, BIT(1) | BIT(0), pci_name(pdev));
> -	if (retval)
> -		return dev_err_probe(dev, retval, "I/O memory mapping error\n");
> -
> -	base = pcim_iomap_table(pdev)[1];
> +	base = pcim_iomap_region(pdev, 1, pci_name(pdev));
> +	if (IS_ERR(base))
> +		return dev_err_probe(dev, PTR_ERR(base), "I/O memory mapping error\n");
>  
>  	irq_base = readl(base + 0 * sizeof(u32));
>  	gpio_base = readl(base + 1 * sizeof(u32));
>  
>  	/* Release the IO mapping, since we already get the info from BAR1 */
> -	pcim_iounmap_regions(pdev, BIT(1));
> +	pcim_iounmap_region(pdev, 1);
>  
>  	priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
>  	if (!priv)
>  		return -ENOMEM;
>  
>  	priv->dev = dev;
> -	priv->reg_base = pcim_iomap_table(pdev)[0];
> +	priv->reg_base = pcim_iomap_region(pdev, 0, pci_name(pdev));
> +	if (IS_ERR(priv->reg_base))
> +		return dev_err_probe(dev, PTR_ERR(base), "I/O memory mapping error\n");

Hi Philipp,

There seems to be a mismatch in the use of priv->reg_base and base above.
Should the above use PTR_ERR(priv->reg_base) instead of PTR_ERR(base)?

>  
>  	priv->pin_info.pin_ranges = mrfld_gpio_ranges;
>  	priv->pin_info.nranges = ARRAY_SIZE(mrfld_gpio_ranges);
> -- 
> 2.46.2
> 
>