aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/spi/spi-rspi.c
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>2013-11-26 19:41:46 -0500
committerMark Brown <broonie@linaro.org>2013-11-27 11:31:38 -0500
commit5d79e9ac89b45643c98b68ea7ce62c80b3b4e160 (patch)
tree729b102a1cd53dd1d0fd02cb193bc98b8f2162ac /drivers/spi/spi-rspi.c
parent5ffbe2d90d81b8734eaf69ee4dad8507f318aad0 (diff)
spi: rcar: Use devm_* managed allocators
This simplies error and cleanup code paths. Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> Signed-off-by: Mark Brown <broonie@linaro.org>
Diffstat (limited to 'drivers/spi/spi-rspi.c')
-rw-r--r--drivers/spi/spi-rspi.c38
1 files changed, 13 insertions, 25 deletions
diff --git a/drivers/spi/spi-rspi.c b/drivers/spi/spi-rspi.c
index 621be5dbea31..19c65c43cbc5 100644
--- a/drivers/spi/spi-rspi.c
+++ b/drivers/spi/spi-rspi.c
@@ -889,9 +889,6 @@ static int rspi_remove(struct platform_device *pdev)
889 889
890 spi_unregister_master(rspi->master); 890 spi_unregister_master(rspi->master);
891 rspi_release_dma(rspi); 891 rspi_release_dma(rspi);
892 free_irq(platform_get_irq(pdev, 0), rspi);
893 clk_put(rspi->clk);
894 iounmap(rspi->addr);
895 892
896 return 0; 893 return 0;
897} 894}
@@ -913,12 +910,6 @@ static int rspi_probe(struct platform_device *pdev)
913 dev_err(&pdev->dev, "there is no set_config_register\n"); 910 dev_err(&pdev->dev, "there is no set_config_register\n");
914 return -ENODEV; 911 return -ENODEV;
915 } 912 }
916 /* get base addr */
917 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
918 if (unlikely(res == NULL)) {
919 dev_err(&pdev->dev, "invalid resource\n");
920 return -EINVAL;
921 }
922 913
923 irq = platform_get_irq(pdev, 0); 914 irq = platform_get_irq(pdev, 0);
924 if (irq < 0) { 915 if (irq < 0) {
@@ -936,19 +927,20 @@ static int rspi_probe(struct platform_device *pdev)
936 platform_set_drvdata(pdev, rspi); 927 platform_set_drvdata(pdev, rspi);
937 rspi->ops = ops; 928 rspi->ops = ops;
938 rspi->master = master; 929 rspi->master = master;
939 rspi->addr = ioremap(res->start, resource_size(res)); 930
940 if (rspi->addr == NULL) { 931 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
941 dev_err(&pdev->dev, "ioremap error.\n"); 932 rspi->addr = devm_ioremap_resource(&pdev->dev, res);
942 ret = -ENOMEM; 933 if (IS_ERR(rspi->addr)) {
934 ret = PTR_ERR(rspi->addr);
943 goto error1; 935 goto error1;
944 } 936 }
945 937
946 snprintf(clk_name, sizeof(clk_name), "%s%d", id_entry->name, pdev->id); 938 snprintf(clk_name, sizeof(clk_name), "%s%d", id_entry->name, pdev->id);
947 rspi->clk = clk_get(&pdev->dev, clk_name); 939 rspi->clk = devm_clk_get(&pdev->dev, clk_name);
948 if (IS_ERR(rspi->clk)) { 940 if (IS_ERR(rspi->clk)) {
949 dev_err(&pdev->dev, "cannot get clock\n"); 941 dev_err(&pdev->dev, "cannot get clock\n");
950 ret = PTR_ERR(rspi->clk); 942 ret = PTR_ERR(rspi->clk);
951 goto error2; 943 goto error1;
952 } 944 }
953 clk_enable(rspi->clk); 945 clk_enable(rspi->clk);
954 946
@@ -966,36 +958,32 @@ static int rspi_probe(struct platform_device *pdev)
966 master->transfer = rspi_transfer; 958 master->transfer = rspi_transfer;
967 master->cleanup = rspi_cleanup; 959 master->cleanup = rspi_cleanup;
968 960
969 ret = request_irq(irq, rspi_irq, 0, dev_name(&pdev->dev), rspi); 961 ret = devm_request_irq(&pdev->dev, irq, rspi_irq, 0,
962 dev_name(&pdev->dev), rspi);
970 if (ret < 0) { 963 if (ret < 0) {
971 dev_err(&pdev->dev, "request_irq error\n"); 964 dev_err(&pdev->dev, "request_irq error\n");
972 goto error3; 965 goto error1;
973 } 966 }
974 967
975 rspi->irq = irq; 968 rspi->irq = irq;
976 ret = rspi_request_dma(rspi, pdev); 969 ret = rspi_request_dma(rspi, pdev);
977 if (ret < 0) { 970 if (ret < 0) {
978 dev_err(&pdev->dev, "rspi_request_dma failed.\n"); 971 dev_err(&pdev->dev, "rspi_request_dma failed.\n");
979 goto error4; 972 goto error2;
980 } 973 }
981 974
982 ret = spi_register_master(master); 975 ret = spi_register_master(master);
983 if (ret < 0) { 976 if (ret < 0) {
984 dev_err(&pdev->dev, "spi_register_master error.\n"); 977 dev_err(&pdev->dev, "spi_register_master error.\n");
985 goto error4; 978 goto error2;
986 } 979 }
987 980
988 dev_info(&pdev->dev, "probed\n"); 981 dev_info(&pdev->dev, "probed\n");
989 982
990 return 0; 983 return 0;
991 984
992error4:
993 rspi_release_dma(rspi);
994 free_irq(irq, rspi);
995error3:
996 clk_put(rspi->clk);
997error2: 985error2:
998 iounmap(rspi->addr); 986 rspi_release_dma(rspi);
999error1: 987error1:
1000 spi_master_put(master); 988 spi_master_put(master);
1001 989