diff mbox

[5/8] mtd: gpmi: use devm_ioremap_resource

Message ID 1384410351-2169-6-git-send-email-b32955@freescale.com
State Accepted
Commit 87a9d69892836fc9cf738fa8960a0c29cf8e3f16
Headers show

Commit Message

Huang Shijie Nov. 14, 2013, 6:25 a.m. UTC
Use the devm_ioremap_resource to simplify the code.

Signed-off-by: Huang Shijie <b32955@freescale.com>
---
 drivers/mtd/nand/gpmi-nand/gpmi-nand.c |   26 +++-----------------------
 1 files changed, 3 insertions(+), 23 deletions(-)

Comments

Ezequiel Garcia Nov. 14, 2013, 1:50 p.m. UTC | #1
On Thu, Nov 14, 2013 at 02:25:48PM +0800, Huang Shijie wrote:
> Use the devm_ioremap_resource to simplify the code.
> 
> Signed-off-by: Huang Shijie <b32955@freescale.com>
> ---
>  drivers/mtd/nand/gpmi-nand/gpmi-nand.c |   26 +++-----------------------
>  1 files changed, 3 insertions(+), 23 deletions(-)
> 
> diff --git a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
> index 36ef60a..1f99038 100644
> --- a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
> +++ b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
> @@ -486,16 +486,9 @@ static int acquire_register_block(struct gpmi_nand_data *this,
>  	void __iomem *p;
>  
>  	r = platform_get_resource_byname(pdev, IORESOURCE_MEM, res_name);
> -	if (!r) {
> -		pr_err("Can't get resource for %s\n", res_name);
> -		return -ENODEV;
> -	}
> -
> -	p = ioremap(r->start, resource_size(r));
> -	if (!p) {
> -		pr_err("Can't remap %s\n", res_name);
> -		return -ENOMEM;
> -	}
> +	p = devm_ioremap_resource(&pdev->dev, r);
> +	if (IS_ERR(p))
> +		return PTR_ERR(p);

Hm... devm_ioremap_resource() is not "pin-to-pin" replacement for the
combination of platform_get_resource + ioremap. Instead, you're adding
a request_memory() call.

So, this is an improvement, and it's fine to do so. I'm just warning
about a change in the driver's behavior.
Huang Shijie Nov. 15, 2013, 3:51 a.m. UTC | #2
On Thu, Nov 14, 2013 at 10:50:34AM -0300, Ezequiel Garcia wrote:
> So, this is an improvement, and it's fine to do so. I'm just warning
> about a change in the driver's behavior.
thanks, got it.


Huang Shijie
diff mbox

Patch

diff --git a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
index 36ef60a..1f99038 100644
--- a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
+++ b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
@@ -486,16 +486,9 @@  static int acquire_register_block(struct gpmi_nand_data *this,
 	void __iomem *p;
 
 	r = platform_get_resource_byname(pdev, IORESOURCE_MEM, res_name);
-	if (!r) {
-		pr_err("Can't get resource for %s\n", res_name);
-		return -ENODEV;
-	}
-
-	p = ioremap(r->start, resource_size(r));
-	if (!p) {
-		pr_err("Can't remap %s\n", res_name);
-		return -ENOMEM;
-	}
+	p = devm_ioremap_resource(&pdev->dev, r);
+	if (IS_ERR(p))
+		return PTR_ERR(p);
 
 	if (!strcmp(res_name, GPMI_NAND_GPMI_REGS_ADDR_RES_NAME))
 		res->gpmi_regs = p;
@@ -507,17 +500,6 @@  static int acquire_register_block(struct gpmi_nand_data *this,
 	return 0;
 }
 
-static void release_register_block(struct gpmi_nand_data *this)
-{
-	struct resources *res = &this->resources;
-	if (res->gpmi_regs)
-		iounmap(res->gpmi_regs);
-	if (res->bch_regs)
-		iounmap(res->bch_regs);
-	res->gpmi_regs = NULL;
-	res->bch_regs = NULL;
-}
-
 static int acquire_bch_irq(struct gpmi_nand_data *this, irq_handler_t irq_h)
 {
 	struct platform_device *pdev = this->pdev;
@@ -665,13 +647,11 @@  exit_clock:
 exit_dma_channels:
 	release_bch_irq(this);
 exit_regs:
-	release_register_block(this);
 	return ret;
 }
 
 static void release_resources(struct gpmi_nand_data *this)
 {
-	release_register_block(this);
 	release_bch_irq(this);
 	release_dma_channels(this);
 }