[PATCH] pwm: Replace deprecated PCI functions

Philipp Stanner posted 1 patch 2 weeks, 5 days ago
There is a newer version of this series
drivers/pwm/pwm-dwc.c      | 14 +++++---------
drivers/pwm/pwm-lpss-pci.c |  9 +++++----
2 files changed, 10 insertions(+), 13 deletions(-)
[PATCH] pwm: Replace deprecated PCI functions
Posted by Philipp Stanner 2 weeks, 5 days ago
pcim_iomap_table() and pcim_request_regions() have been deprecated in
commit e354bb84a4c1 ("PCI: Deprecate pcim_iomap_table(),
pcim_iomap_regions_request_all()") and commit d140f80f60358 ("PCI:
Deprecate pcim_iomap_regions() in favor of pcim_iomap_region()").

Replace these functions with pcim_iomap_region().

Additionally, pass the actual driver names to pcim_iomap_region()
instead of the previous pci_name(), since the 'name' parameter should
always reflect which driver owns a region.

Signed-off-by: Philipp Stanner <pstanner@redhat.com>
---
 drivers/pwm/pwm-dwc.c      | 14 +++++---------
 drivers/pwm/pwm-lpss-pci.c |  9 +++++----
 2 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/drivers/pwm/pwm-dwc.c b/drivers/pwm/pwm-dwc.c
index fb3eadf6fbc4..9101a89447d6 100644
--- a/drivers/pwm/pwm-dwc.c
+++ b/drivers/pwm/pwm-dwc.c
@@ -66,20 +66,16 @@ static int dwc_pwm_probe(struct pci_dev *pci, const struct pci_device_id *id)
 
 	pci_set_master(pci);
 
-	ret = pcim_iomap_regions(pci, BIT(0), pci_name(pci));
-	if (ret)
-		return dev_err_probe(dev, ret, "Failed to iomap PCI BAR\n");
-
 	info = (const struct dwc_pwm_info *)id->driver_data;
 	ddata = devm_kzalloc(dev, struct_size(ddata, chips, info->nr), GFP_KERNEL);
 	if (!ddata)
 		return -ENOMEM;
 
-	/*
-	 * No need to check for pcim_iomap_table() failure,
-	 * pcim_iomap_regions() already does it for us.
-	 */
-	ddata->io_base = pcim_iomap_table(pci)[0];
+	ddata->io_base = pcim_iomap_region(pci, 0, "pwm-dwc");
+	ret = PTR_ERR_OR_ZERO(ddata->io_base);
+	if (ret)
+		return dev_err_probe(dev, ret, "Failed to iomap PCI BAR\n");
+
 	ddata->info = info;
 
 	for (idx = 0; idx < ddata->info->nr; idx++) {
diff --git a/drivers/pwm/pwm-lpss-pci.c b/drivers/pwm/pwm-lpss-pci.c
index f7ece2809e6b..823f570afb80 100644
--- a/drivers/pwm/pwm-lpss-pci.c
+++ b/drivers/pwm/pwm-lpss-pci.c
@@ -18,6 +18,7 @@ static int pwm_lpss_probe_pci(struct pci_dev *pdev,
 			      const struct pci_device_id *id)
 {
 	const struct pwm_lpss_boardinfo *info;
+	void __iomem *io_base;
 	struct pwm_chip *chip;
 	int err;
 
@@ -25,12 +26,12 @@ static int pwm_lpss_probe_pci(struct pci_dev *pdev,
 	if (err < 0)
 		return err;
 
-	err = pcim_iomap_regions(pdev, BIT(0), pci_name(pdev));
-	if (err)
-		return err;
+	io_base = pcim_iomap_region(pdev, 0, "pwm-lpss");
+	if (IS_ERR(io_base))
+		return PTR_ERR(io_base);
 
 	info = (struct pwm_lpss_boardinfo *)id->driver_data;
-	chip = devm_pwm_lpss_probe(&pdev->dev, pcim_iomap_table(pdev)[0], info);
+	chip = devm_pwm_lpss_probe(&pdev->dev, io_base, info);
 	if (IS_ERR(chip))
 		return PTR_ERR(chip);
 
-- 
2.47.0
Re: [PATCH] pwm: Replace deprecated PCI functions
Posted by Uwe Kleine-König 2 weeks, 4 days ago
Hello,

[adding Bjorn and linux-pci to Cc:]

On Tue, Nov 05, 2024 at 10:26:42AM +0100, Philipp Stanner wrote:
> diff --git a/drivers/pwm/pwm-dwc.c b/drivers/pwm/pwm-dwc.c
> index fb3eadf6fbc4..9101a89447d6 100644
> --- a/drivers/pwm/pwm-dwc.c
> +++ b/drivers/pwm/pwm-dwc.c
> @@ -66,20 +66,16 @@ static int dwc_pwm_probe(struct pci_dev *pci, const struct pci_device_id *id)
>  
>  	pci_set_master(pci);
>  
> -	ret = pcim_iomap_regions(pci, BIT(0), pci_name(pci));
> -	if (ret)
> -		return dev_err_probe(dev, ret, "Failed to iomap PCI BAR\n");
> -
>  	info = (const struct dwc_pwm_info *)id->driver_data;
>  	ddata = devm_kzalloc(dev, struct_size(ddata, chips, info->nr), GFP_KERNEL);
>  	if (!ddata)
>  		return -ENOMEM;
>  
> -	/*
> -	 * No need to check for pcim_iomap_table() failure,
> -	 * pcim_iomap_regions() already does it for us.
> -	 */
> -	ddata->io_base = pcim_iomap_table(pci)[0];
> +	ddata->io_base = pcim_iomap_region(pci, 0, "pwm-dwc");
> +	ret = PTR_ERR_OR_ZERO(ddata->io_base);
> +	if (ret)
> +		return dev_err_probe(dev, ret, "Failed to iomap PCI BAR\n");

I'd say the following is more natural:

	ddata->io_base = pcim_iomap_region(pci, 0, "pwm-dwc");
	if (IS_ERR(ddata->io_base))
		return dev_err_probe(dev, PTR_ERR(ddata->io_base), "Failed to iomap PCI BAR\n");

(maybe with a local variable for ddata->io_base?)

> +
>  	ddata->info = info;
>  
>  	for (idx = 0; idx < ddata->info->nr; idx++) {
> diff --git a/drivers/pwm/pwm-lpss-pci.c b/drivers/pwm/pwm-lpss-pci.c
> index f7ece2809e6b..823f570afb80 100644
> --- a/drivers/pwm/pwm-lpss-pci.c
> +++ b/drivers/pwm/pwm-lpss-pci.c
> [...]
> @@ -25,12 +26,12 @@ static int pwm_lpss_probe_pci(struct pci_dev *pdev,
>  	if (err < 0)
>  		return err;
>  
> -	err = pcim_iomap_regions(pdev, BIT(0), pci_name(pdev));
> -	if (err)
> -		return err;
> +	io_base = pcim_iomap_region(pdev, 0, "pwm-lpss");
> +	if (IS_ERR(io_base))
> +		return PTR_ERR(io_base);
>  
>  	info = (struct pwm_lpss_boardinfo *)id->driver_data;
> -	chip = devm_pwm_lpss_probe(&pdev->dev, pcim_iomap_table(pdev)[0], info);
> +	chip = devm_pwm_lpss_probe(&pdev->dev, io_base, info);
>  	if (IS_ERR(chip))
>  		return PTR_ERR(chip);

I remember I didn't like it when pcim_iomap_table(pdev)[0] was
introduced. Glad it can go away.

Best regards
Uwe