diff options
Diffstat (limited to 'drivers/mtd/nand/socrates_nand.c')
| -rw-r--r-- | drivers/mtd/nand/socrates_nand.c | 15 | 
1 files changed, 4 insertions, 11 deletions
diff --git a/drivers/mtd/nand/socrates_nand.c b/drivers/mtd/nand/socrates_nand.c index 09dde7d2717..fe8058a4505 100644 --- a/drivers/mtd/nand/socrates_nand.c +++ b/drivers/mtd/nand/socrates_nand.c @@ -15,6 +15,7 @@  #include <linux/mtd/mtd.h>  #include <linux/mtd/nand.h>  #include <linux/mtd/partitions.h> +#include <linux/of_address.h>  #include <linux/of_platform.h>  #include <linux/io.h> @@ -149,17 +150,13 @@ static int socrates_nand_probe(struct platform_device *ofdev)  	struct mtd_part_parser_data ppdata;  	/* Allocate memory for the device structure (and zero it) */ -	host = kzalloc(sizeof(struct socrates_nand_host), GFP_KERNEL); -	if (!host) { -		printk(KERN_ERR -		       "socrates_nand: failed to allocate device structure.\n"); +	host = devm_kzalloc(&ofdev->dev, sizeof(*host), GFP_KERNEL); +	if (!host)  		return -ENOMEM; -	}  	host->io_base = of_iomap(ofdev->dev.of_node, 0);  	if (host->io_base == NULL) { -		printk(KERN_ERR "socrates_nand: ioremap failed\n"); -		kfree(host); +		dev_err(&ofdev->dev, "ioremap failed\n");  		return -EIO;  	} @@ -211,9 +208,7 @@ static int socrates_nand_probe(struct platform_device *ofdev)  	nand_release(mtd);  out: -	dev_set_drvdata(&ofdev->dev, NULL);  	iounmap(host->io_base); -	kfree(host);  	return res;  } @@ -227,9 +222,7 @@ static int socrates_nand_remove(struct platform_device *ofdev)  	nand_release(mtd); -	dev_set_drvdata(&ofdev->dev, NULL);  	iounmap(host->io_base); -	kfree(host);  	return 0;  }  | 
