diff options
author | Lars-Peter Clausen <lars@metafoo.de> | 2013-06-09 15:10:05 -0400 |
---|---|---|
committer | Chris Ball <cjb@laptop.org> | 2013-06-27 12:39:14 -0400 |
commit | 017d84bd45d1d2e584d01f3875aacbfa481aa95a (patch) | |
tree | 525cc3a72d8c0c987439d310b2b7e5d3d4152440 | |
parent | 58e300af8192d2f33d0e2dd47c9e31fb5d50c417 (diff) |
mmc: jz4740: Use managed resources
Use managed resources for the mmio memory region and the clock.
Makes the code a bit shorter.
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Chris Ball <cjb@laptop.org>
-rw-r--r-- | drivers/mmc/host/jz4740_mmc.c | 37 |
1 files changed, 6 insertions, 31 deletions
diff --git a/drivers/mmc/host/jz4740_mmc.c b/drivers/mmc/host/jz4740_mmc.c index e904e6e57e9b..0308c9f1cf52 100644 --- a/drivers/mmc/host/jz4740_mmc.c +++ b/drivers/mmc/host/jz4740_mmc.c | |||
@@ -121,7 +121,6 @@ struct jz4740_mmc_host { | |||
121 | int irq; | 121 | int irq; |
122 | int card_detect_irq; | 122 | int card_detect_irq; |
123 | 123 | ||
124 | struct resource *mem; | ||
125 | void __iomem *base; | 124 | void __iomem *base; |
126 | struct mmc_request *req; | 125 | struct mmc_request *req; |
127 | struct mmc_command *cmd; | 126 | struct mmc_command *cmd; |
@@ -755,6 +754,7 @@ static int jz4740_mmc_probe(struct platform_device* pdev) | |||
755 | struct mmc_host *mmc; | 754 | struct mmc_host *mmc; |
756 | struct jz4740_mmc_host *host; | 755 | struct jz4740_mmc_host *host; |
757 | struct jz4740_mmc_platform_data *pdata; | 756 | struct jz4740_mmc_platform_data *pdata; |
757 | struct resource *res; | ||
758 | 758 | ||
759 | pdata = pdev->dev.platform_data; | 759 | pdata = pdev->dev.platform_data; |
760 | 760 | ||
@@ -774,39 +774,25 @@ static int jz4740_mmc_probe(struct platform_device* pdev) | |||
774 | goto err_free_host; | 774 | goto err_free_host; |
775 | } | 775 | } |
776 | 776 | ||
777 | host->clk = clk_get(&pdev->dev, "mmc"); | 777 | host->clk = devm_clk_get(&pdev->dev, "mmc"); |
778 | if (IS_ERR(host->clk)) { | 778 | if (IS_ERR(host->clk)) { |
779 | ret = PTR_ERR(host->clk); | 779 | ret = PTR_ERR(host->clk); |
780 | dev_err(&pdev->dev, "Failed to get mmc clock\n"); | 780 | dev_err(&pdev->dev, "Failed to get mmc clock\n"); |
781 | goto err_free_host; | 781 | goto err_free_host; |
782 | } | 782 | } |
783 | 783 | ||
784 | host->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 784 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
785 | if (!host->mem) { | 785 | host->base = devm_ioremap_resource(&pdev->dev, res); |
786 | ret = -ENOENT; | ||
787 | dev_err(&pdev->dev, "Failed to get base platform memory\n"); | ||
788 | goto err_clk_put; | ||
789 | } | ||
790 | |||
791 | host->mem = request_mem_region(host->mem->start, | ||
792 | resource_size(host->mem), pdev->name); | ||
793 | if (!host->mem) { | ||
794 | ret = -EBUSY; | ||
795 | dev_err(&pdev->dev, "Failed to request base memory region\n"); | ||
796 | goto err_clk_put; | ||
797 | } | ||
798 | |||
799 | host->base = ioremap_nocache(host->mem->start, resource_size(host->mem)); | ||
800 | if (!host->base) { | 786 | if (!host->base) { |
801 | ret = -EBUSY; | 787 | ret = -EBUSY; |
802 | dev_err(&pdev->dev, "Failed to ioremap base memory\n"); | 788 | dev_err(&pdev->dev, "Failed to ioremap base memory\n"); |
803 | goto err_release_mem_region; | 789 | goto err_free_host; |
804 | } | 790 | } |
805 | 791 | ||
806 | ret = jz_gpio_bulk_request(jz4740_mmc_pins, jz4740_mmc_num_pins(host)); | 792 | ret = jz_gpio_bulk_request(jz4740_mmc_pins, jz4740_mmc_num_pins(host)); |
807 | if (ret) { | 793 | if (ret) { |
808 | dev_err(&pdev->dev, "Failed to request mmc pins: %d\n", ret); | 794 | dev_err(&pdev->dev, "Failed to request mmc pins: %d\n", ret); |
809 | goto err_iounmap; | 795 | goto err_free_host; |
810 | } | 796 | } |
811 | 797 | ||
812 | ret = jz4740_mmc_request_gpios(mmc, pdev); | 798 | ret = jz4740_mmc_request_gpios(mmc, pdev); |
@@ -863,12 +849,6 @@ err_free_gpios: | |||
863 | jz4740_mmc_free_gpios(pdev); | 849 | jz4740_mmc_free_gpios(pdev); |
864 | err_gpio_bulk_free: | 850 | err_gpio_bulk_free: |
865 | jz_gpio_bulk_free(jz4740_mmc_pins, jz4740_mmc_num_pins(host)); | 851 | jz_gpio_bulk_free(jz4740_mmc_pins, jz4740_mmc_num_pins(host)); |
866 | err_iounmap: | ||
867 | iounmap(host->base); | ||
868 | err_release_mem_region: | ||
869 | release_mem_region(host->mem->start, resource_size(host->mem)); | ||
870 | err_clk_put: | ||
871 | clk_put(host->clk); | ||
872 | err_free_host: | 852 | err_free_host: |
873 | mmc_free_host(mmc); | 853 | mmc_free_host(mmc); |
874 | 854 | ||
@@ -890,11 +870,6 @@ static int jz4740_mmc_remove(struct platform_device *pdev) | |||
890 | jz4740_mmc_free_gpios(pdev); | 870 | jz4740_mmc_free_gpios(pdev); |
891 | jz_gpio_bulk_free(jz4740_mmc_pins, jz4740_mmc_num_pins(host)); | 871 | jz_gpio_bulk_free(jz4740_mmc_pins, jz4740_mmc_num_pins(host)); |
892 | 872 | ||
893 | iounmap(host->base); | ||
894 | release_mem_region(host->mem->start, resource_size(host->mem)); | ||
895 | |||
896 | clk_put(host->clk); | ||
897 | |||
898 | mmc_free_host(host->mmc); | 873 | mmc_free_host(host->mmc); |
899 | 874 | ||
900 | return 0; | 875 | return 0; |