make use of devm function in the mcb-pci driver
cover 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(-)
Signature · 1 line
2.6.2
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.
--- drivers/mcb/mcb-pci.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-)
drivers/mcb/mcb-pci.c +7 -12
@@ -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); }
Signature · 1 line
2.6.2
Johannes Thumshirn
AppliedRe: [PATCH 1/2] mcb: Replace ioremap and request_region with the devm version
Quoted 78 lines · Andreas Werner
Replaced ioremap with
devm_ioremapandrequest_mem_regionwithdevm_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(-)drivers/mcb/mcb-pci.c +7
-12@@ -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); }Signature · 1 line
2.6.2
Applied to mcb-for-v4.7,
Thanks
Signature · 6 lines
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
PATCH 2/2 mcb: Delete num_cells variable which is not required
In reply to Andreas WernerThe 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.
--- drivers/mcb/mcb-pci.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
drivers/mcb/mcb-pci.c +1 -3
@@ -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);
Signature · 1 line
2.6.2
Johannes Thumshirn
AppliedRe: [PATCH 2/2] mcb: Delete num_cells variable which is not required
Quoted 35 lines · Andreas Werner
The
num_cellsvariable is only used in thedev_dbgprint, 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(-)drivers/mcb/mcb-pci.c +1
-3@@ -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);Signature · 1 line
2.6.2
Applied to mcb-for-v4.7,
Thanks
Signature · 6 lines
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