aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mtd/devices
diff options
context:
space:
mode:
authorJulia Lawall <Julia.Lawall@lip6.fr>2012-08-04 16:36:38 -0400
committerDavid Woodhouse <David.Woodhouse@intel.com>2012-09-29 10:05:32 -0400
commite1ed147fd4a322741e63f66d76e68ad83876d2ea (patch)
treeab857e4008a894e0ad73ddecbfb4b0bb662ad5f8 /drivers/mtd/devices
parent99f2b107924c07bee0bae7151426495fb815ca6e (diff)
mtd: spear_smi: use devm_ functions consistently
Use devm_kzalloc for all calls to kzalloc and not just the first. Use devm functions for other allocations as well. Move the call to platform_get_resource(pdev, IORESOURCE_MEM, 0) closer to where its result is passed to devm_request_and_ioremap to make the lack of need for a NULL test more evident. The semantic match that finds the inconsistency is as follows: (http://coccinelle.lip6.fr/) // <smpl> @@ @@ *devm_kzalloc(...) ... *kzalloc(...) // </smpl> Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr> Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Diffstat (limited to 'drivers/mtd/devices')
-rw-r--r--drivers/mtd/devices/spear_smi.c83
1 files changed, 18 insertions, 65 deletions
diff --git a/drivers/mtd/devices/spear_smi.c b/drivers/mtd/devices/spear_smi.c
index 421bc65ae829..dcc3c9511530 100644
--- a/drivers/mtd/devices/spear_smi.c
+++ b/drivers/mtd/devices/spear_smi.c
@@ -827,7 +827,7 @@ static int spear_smi_setup_banks(struct platform_device *pdev,
827 if (!flash_info) 827 if (!flash_info)
828 return -ENODEV; 828 return -ENODEV;
829 829
830 flash = kzalloc(sizeof(*flash), GFP_ATOMIC); 830 flash = devm_kzalloc(&pdev->dev, sizeof(*flash), GFP_ATOMIC);
831 if (!flash) 831 if (!flash)
832 return -ENOMEM; 832 return -ENOMEM;
833 flash->bank = bank; 833 flash->bank = bank;
@@ -838,15 +838,13 @@ static int spear_smi_setup_banks(struct platform_device *pdev,
838 flash_index = spear_smi_probe_flash(dev, bank); 838 flash_index = spear_smi_probe_flash(dev, bank);
839 if (flash_index < 0) { 839 if (flash_index < 0) {
840 dev_info(&dev->pdev->dev, "smi-nor%d not found\n", bank); 840 dev_info(&dev->pdev->dev, "smi-nor%d not found\n", bank);
841 ret = flash_index; 841 return flash_index;
842 goto err_probe;
843 } 842 }
844 /* map the memory for nor flash chip */ 843 /* map the memory for nor flash chip */
845 flash->base_addr = ioremap(flash_info->mem_base, flash_info->size); 844 flash->base_addr = devm_ioremap(&pdev->dev, flash_info->mem_base,
846 if (!flash->base_addr) { 845 flash_info->size);
847 ret = -EIO; 846 if (!flash->base_addr)
848 goto err_probe; 847 return -EIO;
849 }
850 848
851 dev->flash[bank] = flash; 849 dev->flash[bank] = flash;
852 flash->mtd.priv = dev; 850 flash->mtd.priv = dev;
@@ -888,17 +886,10 @@ static int spear_smi_setup_banks(struct platform_device *pdev,
888 count); 886 count);
889 if (ret) { 887 if (ret) {
890 dev_err(&dev->pdev->dev, "Err MTD partition=%d\n", ret); 888 dev_err(&dev->pdev->dev, "Err MTD partition=%d\n", ret);
891 goto err_map; 889 return ret;
892 } 890 }
893 891
894 return 0; 892 return 0;
895
896err_map:
897 iounmap(flash->base_addr);
898
899err_probe:
900 kfree(flash);
901 return ret;
902} 893}
903 894
904/** 895/**
@@ -942,13 +933,6 @@ static int __devinit spear_smi_probe(struct platform_device *pdev)
942 } 933 }
943 } 934 }
944 935
945 smi_base = platform_get_resource(pdev, IORESOURCE_MEM, 0);
946 if (!smi_base) {
947 ret = -ENODEV;
948 dev_err(&pdev->dev, "invalid smi base address\n");
949 goto err;
950 }
951
952 irq = platform_get_irq(pdev, 0); 936 irq = platform_get_irq(pdev, 0);
953 if (irq < 0) { 937 if (irq < 0) {
954 ret = -ENODEV; 938 ret = -ENODEV;
@@ -956,26 +940,20 @@ static int __devinit spear_smi_probe(struct platform_device *pdev)
956 goto err; 940 goto err;
957 } 941 }
958 942
959 dev = kzalloc(sizeof(*dev), GFP_ATOMIC); 943 dev = devm_kzalloc(&pdev->dev, sizeof(*dev), GFP_ATOMIC);
960 if (!dev) { 944 if (!dev) {
961 ret = -ENOMEM; 945 ret = -ENOMEM;
962 dev_err(&pdev->dev, "mem alloc fail\n"); 946 dev_err(&pdev->dev, "mem alloc fail\n");
963 goto err; 947 goto err;
964 } 948 }
965 949
966 smi_base = request_mem_region(smi_base->start, resource_size(smi_base), 950 smi_base = platform_get_resource(pdev, IORESOURCE_MEM, 0);
967 pdev->name);
968 if (!smi_base) {
969 ret = -EBUSY;
970 dev_err(&pdev->dev, "request mem region fail\n");
971 goto err_mem;
972 }
973 951
974 dev->io_base = ioremap(smi_base->start, resource_size(smi_base)); 952 dev->io_base = devm_request_and_ioremap(&pdev->dev, smi_base);
975 if (!dev->io_base) { 953 if (!dev->io_base) {
976 ret = -EIO; 954 ret = -EIO;
977 dev_err(&pdev->dev, "ioremap fail\n"); 955 dev_err(&pdev->dev, "devm_request_and_ioremap fail\n");
978 goto err_ioremap; 956 goto err;
979 } 957 }
980 958
981 dev->pdev = pdev; 959 dev->pdev = pdev;
@@ -991,17 +969,18 @@ static int __devinit spear_smi_probe(struct platform_device *pdev)
991 dev->num_flashes = MAX_NUM_FLASH_CHIP; 969 dev->num_flashes = MAX_NUM_FLASH_CHIP;
992 } 970 }
993 971
994 dev->clk = clk_get(&pdev->dev, NULL); 972 dev->clk = devm_clk_get(&pdev->dev, NULL);
995 if (IS_ERR(dev->clk)) { 973 if (IS_ERR(dev->clk)) {
996 ret = PTR_ERR(dev->clk); 974 ret = PTR_ERR(dev->clk);
997 goto err_clk; 975 goto err;
998 } 976 }
999 977
1000 ret = clk_prepare_enable(dev->clk); 978 ret = clk_prepare_enable(dev->clk);
1001 if (ret) 979 if (ret)
1002 goto err_clk_prepare_enable; 980 goto err;
1003 981
1004 ret = request_irq(irq, spear_smi_int_handler, 0, pdev->name, dev); 982 ret = devm_request_irq(&pdev->dev, irq, spear_smi_int_handler, 0,
983 pdev->name, dev);
1005 if (ret) { 984 if (ret) {
1006 dev_err(&dev->pdev->dev, "SMI IRQ allocation failed\n"); 985 dev_err(&dev->pdev->dev, "SMI IRQ allocation failed\n");
1007 goto err_irq; 986 goto err_irq;
@@ -1024,18 +1003,9 @@ static int __devinit spear_smi_probe(struct platform_device *pdev)
1024 return 0; 1003 return 0;
1025 1004
1026err_bank_setup: 1005err_bank_setup:
1027 free_irq(irq, dev);
1028 platform_set_drvdata(pdev, NULL); 1006 platform_set_drvdata(pdev, NULL);
1029err_irq: 1007err_irq:
1030 clk_disable_unprepare(dev->clk); 1008 clk_disable_unprepare(dev->clk);
1031err_clk_prepare_enable:
1032 clk_put(dev->clk);
1033err_clk:
1034 iounmap(dev->io_base);
1035err_ioremap:
1036 release_mem_region(smi_base->start, resource_size(smi_base));
1037err_mem:
1038 kfree(dev);
1039err: 1009err:
1040 return ret; 1010 return ret;
1041} 1011}
@@ -1049,11 +1019,8 @@ err:
1049static int __devexit spear_smi_remove(struct platform_device *pdev) 1019static int __devexit spear_smi_remove(struct platform_device *pdev)
1050{ 1020{
1051 struct spear_smi *dev; 1021 struct spear_smi *dev;
1052 struct spear_smi_plat_data *pdata;
1053 struct spear_snor_flash *flash; 1022 struct spear_snor_flash *flash;
1054 struct resource *smi_base; 1023 int ret, i;
1055 int ret;
1056 int i, irq;
1057 1024
1058 dev = platform_get_drvdata(pdev); 1025 dev = platform_get_drvdata(pdev);
1059 if (!dev) { 1026 if (!dev) {
@@ -1061,8 +1028,6 @@ static int __devexit spear_smi_remove(struct platform_device *pdev)
1061 return -ENODEV; 1028 return -ENODEV;
1062 } 1029 }
1063 1030
1064 pdata = dev_get_platdata(&pdev->dev);
1065
1066 /* clean up for all nor flash */ 1031 /* clean up for all nor flash */
1067 for (i = 0; i < dev->num_flashes; i++) { 1032 for (i = 0; i < dev->num_flashes; i++) {
1068 flash = dev->flash[i]; 1033 flash = dev->flash[i];
@@ -1073,21 +1038,9 @@ static int __devexit spear_smi_remove(struct platform_device *pdev)
1073 ret = mtd_device_unregister(&flash->mtd); 1038 ret = mtd_device_unregister(&flash->mtd);
1074 if (ret) 1039 if (ret)
1075 dev_err(&pdev->dev, "error removing mtd\n"); 1040 dev_err(&pdev->dev, "error removing mtd\n");
1076
1077 iounmap(flash->base_addr);
1078 kfree(flash);
1079 } 1041 }
1080 1042
1081 irq = platform_get_irq(pdev, 0);
1082 free_irq(irq, dev);
1083
1084 clk_disable_unprepare(dev->clk); 1043 clk_disable_unprepare(dev->clk);
1085 clk_put(dev->clk);
1086 iounmap(dev->io_base);
1087 kfree(dev);
1088
1089 smi_base = platform_get_resource(pdev, IORESOURCE_MEM, 0);
1090 release_mem_region(smi_base->start, resource_size(smi_base));
1091 platform_set_drvdata(pdev, NULL); 1044 platform_set_drvdata(pdev, NULL);
1092 1045
1093 return 0; 1046 return 0;