2016-04-20 13:18:02

by Andreas Werner

[permalink] [raw]
Subject: [PATCH 0/2] make use of devm function in the mcb-pci driver

The first patch replace the ioremap an request_mem_region function
with the corresponding devm function to have a more cleaner code
and a better error handling.

The sencoder patch just delete a unused variable.

Andreas Werner (2):
mcb: Replace ioremap and request_region with the devm version
mcb: Delete num_cells variable which is not required

drivers/mcb/mcb-pci.c | 23 ++++++++---------------
1 file changed, 8 insertions(+), 15 deletions(-)

--
2.6.2


2016-04-20 13:18:08

by Andreas Werner

[permalink] [raw]
Subject: [PATCH 1/2] mcb: Replace ioremap and request_region with the devm version

Replaced ioremap with devm_ioremap and request_mem_region with
devm_request_mem_region. This makes the code much more cleaner.

Signed-off-by: Andreas Werner <[email protected]>
---
drivers/mcb/mcb-pci.c | 19 +++++++------------
1 file changed, 7 insertions(+), 12 deletions(-)

diff --git a/drivers/mcb/mcb-pci.c b/drivers/mcb/mcb-pci.c
index 67d5e7d..99dd9db 100644
--- a/drivers/mcb/mcb-pci.c
+++ b/drivers/mcb/mcb-pci.c
@@ -55,19 +55,20 @@ static int mcb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
goto out_disable;
}

- res = request_mem_region(priv->mapbase, CHAM_HEADER_SIZE,
- KBUILD_MODNAME);
+ res = devm_request_mem_region(&pdev->dev, priv->mapbase,
+ CHAM_HEADER_SIZE,
+ KBUILD_MODNAME);
if (!res) {
dev_err(&pdev->dev, "Failed to request PCI memory\n");
ret = -EBUSY;
goto out_disable;
}

- priv->base = ioremap(priv->mapbase, CHAM_HEADER_SIZE);
+ priv->base = devm_ioremap(&pdev->dev, priv->mapbase, CHAM_HEADER_SIZE);
if (!priv->base) {
dev_err(&pdev->dev, "Cannot ioremap\n");
ret = -ENOMEM;
- goto out_release;
+ goto out_disable;
}

flags = pci_resource_flags(pdev, 0);
@@ -75,7 +76,7 @@ static int mcb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
ret = -ENOTSUPP;
dev_err(&pdev->dev,
"IO mapped PCI devices are not supported\n");
- goto out_iounmap;
+ goto out_disable;
}

pci_set_drvdata(pdev, priv);
@@ -83,7 +84,7 @@ static int mcb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
priv->bus = mcb_alloc_bus(&pdev->dev);
if (IS_ERR(priv->bus)) {
ret = PTR_ERR(priv->bus);
- goto out_iounmap;
+ goto out_disable;
}

priv->bus->get_irq = mcb_pci_get_irq;
@@ -101,10 +102,6 @@ static int mcb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)

out_mcb_bus:
mcb_release_bus(priv->bus);
-out_iounmap:
- iounmap(priv->base);
-out_release:
- pci_release_region(pdev, 0);
out_disable:
pci_disable_device(pdev);
return ret;
@@ -116,8 +113,6 @@ static void mcb_pci_remove(struct pci_dev *pdev)

mcb_release_bus(priv->bus);

- iounmap(priv->base);
- release_region(priv->mapbase, CHAM_HEADER_SIZE);
pci_disable_device(pdev);
}

--
2.6.2

2016-04-20 13:18:31

by Andreas Werner

[permalink] [raw]
Subject: [PATCH 2/2] mcb: Delete num_cells variable which is not required

The num_cells variable is only used in the dev_dbg print,
but we can directly use the ret variable which also includes the same
value.

Signed-off-by: Andreas Werner <[email protected]>
---
drivers/mcb/mcb-pci.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/mcb/mcb-pci.c b/drivers/mcb/mcb-pci.c
index 99dd9db..b15a034 100644
--- a/drivers/mcb/mcb-pci.c
+++ b/drivers/mcb/mcb-pci.c
@@ -35,7 +35,6 @@ static int mcb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
struct resource *res;
struct priv *priv;
int ret;
- int num_cells;
unsigned long flags;

priv = devm_kzalloc(&pdev->dev, sizeof(struct priv), GFP_KERNEL);
@@ -92,9 +91,8 @@ static int mcb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
ret = chameleon_parse_cells(priv->bus, priv->mapbase, priv->base);
if (ret < 0)
goto out_mcb_bus;
- num_cells = ret;

- dev_dbg(&pdev->dev, "Found %d cells\n", num_cells);
+ dev_dbg(&pdev->dev, "Found %d cells\n", ret);

mcb_bus_add_devices(priv->bus);

--
2.6.2

2016-04-20 15:03:03

by Johannes Thumshirn

[permalink] [raw]
Subject: Re: [PATCH 1/2] mcb: Replace ioremap and request_region with the devm version

On Wed, Apr 20, 2016 at 03:17:55PM +0200, Andreas Werner wrote:
> Replaced ioremap with devm_ioremap and request_mem_region with
> devm_request_mem_region. This makes the code much more cleaner.
>
> Signed-off-by: Andreas Werner <[email protected]>
> ---
> drivers/mcb/mcb-pci.c | 19 +++++++------------
> 1 file changed, 7 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/mcb/mcb-pci.c b/drivers/mcb/mcb-pci.c
> index 67d5e7d..99dd9db 100644
> --- a/drivers/mcb/mcb-pci.c
> +++ b/drivers/mcb/mcb-pci.c
> @@ -55,19 +55,20 @@ static int mcb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
> goto out_disable;
> }
>
> - res = request_mem_region(priv->mapbase, CHAM_HEADER_SIZE,
> - KBUILD_MODNAME);
> + res = devm_request_mem_region(&pdev->dev, priv->mapbase,
> + CHAM_HEADER_SIZE,
> + KBUILD_MODNAME);
> if (!res) {
> dev_err(&pdev->dev, "Failed to request PCI memory\n");
> ret = -EBUSY;
> goto out_disable;
> }
>
> - priv->base = ioremap(priv->mapbase, CHAM_HEADER_SIZE);
> + priv->base = devm_ioremap(&pdev->dev, priv->mapbase, CHAM_HEADER_SIZE);
> if (!priv->base) {
> dev_err(&pdev->dev, "Cannot ioremap\n");
> ret = -ENOMEM;
> - goto out_release;
> + goto out_disable;
> }
>
> flags = pci_resource_flags(pdev, 0);
> @@ -75,7 +76,7 @@ static int mcb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
> ret = -ENOTSUPP;
> dev_err(&pdev->dev,
> "IO mapped PCI devices are not supported\n");
> - goto out_iounmap;
> + goto out_disable;
> }
>
> pci_set_drvdata(pdev, priv);
> @@ -83,7 +84,7 @@ static int mcb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
> priv->bus = mcb_alloc_bus(&pdev->dev);
> if (IS_ERR(priv->bus)) {
> ret = PTR_ERR(priv->bus);
> - goto out_iounmap;
> + goto out_disable;
> }
>
> priv->bus->get_irq = mcb_pci_get_irq;
> @@ -101,10 +102,6 @@ static int mcb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
>
> out_mcb_bus:
> mcb_release_bus(priv->bus);
> -out_iounmap:
> - iounmap(priv->base);
> -out_release:
> - pci_release_region(pdev, 0);
> out_disable:
> pci_disable_device(pdev);
> return ret;
> @@ -116,8 +113,6 @@ static void mcb_pci_remove(struct pci_dev *pdev)
>
> mcb_release_bus(priv->bus);
>
> - iounmap(priv->base);
> - release_region(priv->mapbase, CHAM_HEADER_SIZE);
> pci_disable_device(pdev);
> }
>
> --
> 2.6.2
>

Applied to mcb-for-v4.7,
Thanks

--
Johannes Thumshirn Storage
[email protected] +49 911 74053 689
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 N?rnberg
GF: Felix Imend?rffer, Jane Smithard, Graham Norton
HRB 21284 (AG N?rnberg)
Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850

2016-04-20 15:03:24

by Johannes Thumshirn

[permalink] [raw]
Subject: Re: [PATCH 2/2] mcb: Delete num_cells variable which is not required

On Wed, Apr 20, 2016 at 03:18:15PM +0200, Andreas Werner wrote:
> The num_cells variable is only used in the dev_dbg print,
> but we can directly use the ret variable which also includes the same
> value.
>
> Signed-off-by: Andreas Werner <[email protected]>
> ---
> drivers/mcb/mcb-pci.c | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/drivers/mcb/mcb-pci.c b/drivers/mcb/mcb-pci.c
> index 99dd9db..b15a034 100644
> --- a/drivers/mcb/mcb-pci.c
> +++ b/drivers/mcb/mcb-pci.c
> @@ -35,7 +35,6 @@ static int mcb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
> struct resource *res;
> struct priv *priv;
> int ret;
> - int num_cells;
> unsigned long flags;
>
> priv = devm_kzalloc(&pdev->dev, sizeof(struct priv), GFP_KERNEL);
> @@ -92,9 +91,8 @@ static int mcb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
> ret = chameleon_parse_cells(priv->bus, priv->mapbase, priv->base);
> if (ret < 0)
> goto out_mcb_bus;
> - num_cells = ret;
>
> - dev_dbg(&pdev->dev, "Found %d cells\n", num_cells);
> + dev_dbg(&pdev->dev, "Found %d cells\n", ret);
>
> mcb_bus_add_devices(priv->bus);
>
> --
> 2.6.2
>

Applied to mcb-for-v4.7,
Thanks
--
Johannes Thumshirn Storage
[email protected] +49 911 74053 689
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 N?rnberg
GF: Felix Imend?rffer, Jane Smithard, Graham Norton
HRB 21284 (AG N?rnberg)
Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850