diff options
Diffstat (limited to 'drivers/mtd/nand/s3c2410.c')
-rw-r--r-- | drivers/mtd/nand/s3c2410.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/drivers/mtd/nand/s3c2410.c b/drivers/mtd/nand/s3c2410.c index fa6e9c7fe511..239aadfd01b0 100644 --- a/drivers/mtd/nand/s3c2410.c +++ b/drivers/mtd/nand/s3c2410.c | |||
@@ -929,14 +929,13 @@ static int s3c24xx_nand_probe(struct platform_device *pdev) | |||
929 | 929 | ||
930 | pr_debug("s3c2410_nand_probe(%p)\n", pdev); | 930 | pr_debug("s3c2410_nand_probe(%p)\n", pdev); |
931 | 931 | ||
932 | info = kmalloc(sizeof(*info), GFP_KERNEL); | 932 | info = kzalloc(sizeof(*info), GFP_KERNEL); |
933 | if (info == NULL) { | 933 | if (info == NULL) { |
934 | dev_err(&pdev->dev, "no memory for flash info\n"); | 934 | dev_err(&pdev->dev, "no memory for flash info\n"); |
935 | err = -ENOMEM; | 935 | err = -ENOMEM; |
936 | goto exit_error; | 936 | goto exit_error; |
937 | } | 937 | } |
938 | 938 | ||
939 | memset(info, 0, sizeof(*info)); | ||
940 | platform_set_drvdata(pdev, info); | 939 | platform_set_drvdata(pdev, info); |
941 | 940 | ||
942 | spin_lock_init(&info->controller.lock); | 941 | spin_lock_init(&info->controller.lock); |
@@ -957,7 +956,7 @@ static int s3c24xx_nand_probe(struct platform_device *pdev) | |||
957 | 956 | ||
958 | /* currently we assume we have the one resource */ | 957 | /* currently we assume we have the one resource */ |
959 | res = pdev->resource; | 958 | res = pdev->resource; |
960 | size = res->end - res->start + 1; | 959 | size = resource_size(res); |
961 | 960 | ||
962 | info->area = request_mem_region(res->start, size, pdev->name); | 961 | info->area = request_mem_region(res->start, size, pdev->name); |
963 | 962 | ||
@@ -994,15 +993,13 @@ static int s3c24xx_nand_probe(struct platform_device *pdev) | |||
994 | /* allocate our information */ | 993 | /* allocate our information */ |
995 | 994 | ||
996 | size = nr_sets * sizeof(*info->mtds); | 995 | size = nr_sets * sizeof(*info->mtds); |
997 | info->mtds = kmalloc(size, GFP_KERNEL); | 996 | info->mtds = kzalloc(size, GFP_KERNEL); |
998 | if (info->mtds == NULL) { | 997 | if (info->mtds == NULL) { |
999 | dev_err(&pdev->dev, "failed to allocate mtd storage\n"); | 998 | dev_err(&pdev->dev, "failed to allocate mtd storage\n"); |
1000 | err = -ENOMEM; | 999 | err = -ENOMEM; |
1001 | goto exit_error; | 1000 | goto exit_error; |
1002 | } | 1001 | } |
1003 | 1002 | ||
1004 | memset(info->mtds, 0, size); | ||
1005 | |||
1006 | /* initialise all possible chips */ | 1003 | /* initialise all possible chips */ |
1007 | 1004 | ||
1008 | nmtd = info->mtds; | 1005 | nmtd = info->mtds; |
@@ -1013,7 +1010,8 @@ static int s3c24xx_nand_probe(struct platform_device *pdev) | |||
1013 | s3c2410_nand_init_chip(info, nmtd, sets); | 1010 | s3c2410_nand_init_chip(info, nmtd, sets); |
1014 | 1011 | ||
1015 | nmtd->scan_res = nand_scan_ident(&nmtd->mtd, | 1012 | nmtd->scan_res = nand_scan_ident(&nmtd->mtd, |
1016 | (sets) ? sets->nr_chips : 1); | 1013 | (sets) ? sets->nr_chips : 1, |
1014 | NULL); | ||
1017 | 1015 | ||
1018 | if (nmtd->scan_res == 0) { | 1016 | if (nmtd->scan_res == 0) { |
1019 | s3c2410_nand_update_chip(info, nmtd); | 1017 | s3c2410_nand_update_chip(info, nmtd); |