[PATCH 1/2] mtd: denali_dt: Use devm_ioremap_resource()

Brian Norris computersforpeace at gmail.com
Sat Feb 22 21:19:43 EST 2014


Hi Dinh,

Do you have any comment on this patch?

Jingoo,

On Wed, Feb 12, 2014 at 11:29:42AM +0900, Jingoo Han wrote:
> Use devm_ioremap_resource() in order to make the code
> simpler, and remove redundant return value check of
> platform_get_resource_byname() because the value is
> checked by devm_ioremap_resource().
> 
> Signed-off-by: Jingoo Han <jg1.han at samsung.com>
> ---
>  drivers/mtd/nand/denali_dt.c |   39 ++++++++-------------------------------
>  1 file changed, 8 insertions(+), 31 deletions(-)
> 
> diff --git a/drivers/mtd/nand/denali_dt.c b/drivers/mtd/nand/denali_dt.c
> index babb02c..35cb17f 100644
> --- a/drivers/mtd/nand/denali_dt.c
> +++ b/drivers/mtd/nand/denali_dt.c
> @@ -30,24 +30,6 @@ struct denali_dt {
>  	struct clk		*clk;
>  };
>  
> -static void __iomem *request_and_map(struct device *dev,
> -				     const struct resource *res)
> -{
> -	void __iomem *ptr;
> -
> -	if (!devm_request_mem_region(dev, res->start, resource_size(res),
> -				     "denali-dt")) {
> -		dev_err(dev, "unable to request %s\n", res->name);
> -		return NULL;
> -	}
> -
> -	ptr = devm_ioremap_nocache(dev, res->start, resource_size(res));

Your code here is not a direct replacement; Dinh originally used the
_nocache variant of ioremap, but you are replacing it with the standard
one. There is no difference between the two on several ARCH's, but I
can't guarantee that your patch is safe without confirmation/testing. So
I will not take this without an Ack or Tested-by from someone
knowledgeable about denali.

> -	if (!ptr)
> -		dev_err(dev, "ioremap_nocache of %s failed!", res->name);
> -
> -	return ptr;
> -}
> -
>  static const struct of_device_id denali_nand_dt_ids[] = {
>  		{ .compatible = "denali,denali-nand-dt" },
>  		{ /* sentinel */ }
> @@ -78,13 +60,6 @@ static int denali_dt_probe(struct platform_device *ofdev)
>  		return -ENOMEM;
>  	denali = &dt->denali;
>  
> -	denali_reg = platform_get_resource_byname(ofdev, IORESOURCE_MEM, "denali_reg");
> -	nand_data = platform_get_resource_byname(ofdev, IORESOURCE_MEM, "nand_data");
> -	if (!denali_reg || !nand_data) {
> -		dev_err(&ofdev->dev, "resources not completely defined\n");
> -		return -EINVAL;
> -	}
> -
>  	denali->platform = DT;
>  	denali->dev = &ofdev->dev;
>  	denali->irq = platform_get_irq(ofdev, 0);
> @@ -93,13 +68,15 @@ static int denali_dt_probe(struct platform_device *ofdev)
>  		return denali->irq;
>  	}
>  
> -	denali->flash_reg = request_and_map(&ofdev->dev, denali_reg);
> -	if (!denali->flash_reg)
> -		return -ENOMEM;
> +	denali_reg = platform_get_resource_byname(ofdev, IORESOURCE_MEM, "denali_reg");
> +	denali->flash_reg = devm_ioremap_resource(&ofdev->dev, denali_reg);
> +	if (IS_ERR(denali->flash_reg))
> +		return PTR_ERR(denali->flash_reg);
>  
> -	denali->flash_mem = request_and_map(&ofdev->dev, nand_data);
> -	if (!denali->flash_mem)
> -		return -ENOMEM;
> +	nand_data = platform_get_resource_byname(ofdev, IORESOURCE_MEM, "nand_data");
> +	denali->flash_mem = devm_ioremap_resource(&ofdev->dev, nand_data);
> +	if (IS_ERR(denali->flash_mem))
> +		return PTR_ERR(denali->flash_mem);
>  
>  	if (!of_property_read_u32(ofdev->dev.of_node,
>  		"dma-mask", (u32 *)&denali_dma_mask)) {

Thanks,
Brian



More information about the linux-mtd mailing list