diff options
author | Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> | 2013-11-26 19:41:46 -0500 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2013-11-27 11:31:38 -0500 |
commit | 5d79e9ac89b45643c98b68ea7ce62c80b3b4e160 (patch) | |
tree | 729b102a1cd53dd1d0fd02cb193bc98b8f2162ac | |
parent | 5ffbe2d90d81b8734eaf69ee4dad8507f318aad0 (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>
-rw-r--r-- | drivers/spi/spi-rspi.c | 38 |
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 | ||
992 | error4: | ||
993 | rspi_release_dma(rspi); | ||
994 | free_irq(irq, rspi); | ||
995 | error3: | ||
996 | clk_put(rspi->clk); | ||
997 | error2: | 985 | error2: |
998 | iounmap(rspi->addr); | 986 | rspi_release_dma(rspi); |
999 | error1: | 987 | error1: |
1000 | spi_master_put(master); | 988 | spi_master_put(master); |
1001 | 989 | ||