diff options
author | Julia Lawall <Julia.Lawall@lip6.fr> | 2012-08-04 16:36:38 -0400 |
---|---|---|
committer | David Woodhouse <David.Woodhouse@intel.com> | 2012-09-29 10:05:32 -0400 |
commit | e1ed147fd4a322741e63f66d76e68ad83876d2ea (patch) | |
tree | ab857e4008a894e0ad73ddecbfb4b0bb662ad5f8 | |
parent | 99f2b107924c07bee0bae7151426495fb815ca6e (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>
-rw-r--r-- | drivers/mtd/devices/spear_smi.c | 83 |
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 | |||
896 | err_map: | ||
897 | iounmap(flash->base_addr); | ||
898 | |||
899 | err_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 | ||
1026 | err_bank_setup: | 1005 | err_bank_setup: |
1027 | free_irq(irq, dev); | ||
1028 | platform_set_drvdata(pdev, NULL); | 1006 | platform_set_drvdata(pdev, NULL); |
1029 | err_irq: | 1007 | err_irq: |
1030 | clk_disable_unprepare(dev->clk); | 1008 | clk_disable_unprepare(dev->clk); |
1031 | err_clk_prepare_enable: | ||
1032 | clk_put(dev->clk); | ||
1033 | err_clk: | ||
1034 | iounmap(dev->io_base); | ||
1035 | err_ioremap: | ||
1036 | release_mem_region(smi_base->start, resource_size(smi_base)); | ||
1037 | err_mem: | ||
1038 | kfree(dev); | ||
1039 | err: | 1009 | err: |
1040 | return ret; | 1010 | return ret; |
1041 | } | 1011 | } |
@@ -1049,11 +1019,8 @@ err: | |||
1049 | static int __devexit spear_smi_remove(struct platform_device *pdev) | 1019 | static 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; |