diff options
| author | Sebastian Reichel <sre@debian.org> | 2014-03-15 21:43:25 -0400 |
|---|---|---|
| committer | Lee Jones <lee.jones@linaro.org> | 2014-03-18 04:07:15 -0400 |
| commit | e7f22b75167d8b8a4d4c67d12b026a746aec05f6 (patch) | |
| tree | a4792d3a7b84f65d76e6e433272a11de8a750845 | |
| parent | 0414855fdc4a40da05221fc6062cccbc0c30f169 (diff) | |
mfd: twl4030-madc: Use managed resources
Update twl4030-madc driver to use managed resources.
Signed-off-by: Sebastian Reichel <sre@debian.org>
Acked-by: Jonathan Cameron <jic23@kernel.org>
Tested-by: Marek Belisko <marek@goldelico.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
| -rw-r--r-- | drivers/mfd/twl4030-madc.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/drivers/mfd/twl4030-madc.c b/drivers/mfd/twl4030-madc.c index 4c583e471339..54585617ab51 100644 --- a/drivers/mfd/twl4030-madc.c +++ b/drivers/mfd/twl4030-madc.c | |||
| @@ -702,14 +702,14 @@ static int twl4030_madc_probe(struct platform_device *pdev) | |||
| 702 | { | 702 | { |
| 703 | struct twl4030_madc_data *madc; | 703 | struct twl4030_madc_data *madc; |
| 704 | struct twl4030_madc_platform_data *pdata = dev_get_platdata(&pdev->dev); | 704 | struct twl4030_madc_platform_data *pdata = dev_get_platdata(&pdev->dev); |
| 705 | int ret; | 705 | int irq, ret; |
| 706 | u8 regval; | 706 | u8 regval; |
| 707 | 707 | ||
| 708 | if (!pdata) { | 708 | if (!pdata) { |
| 709 | dev_err(&pdev->dev, "platform_data not available\n"); | 709 | dev_err(&pdev->dev, "platform_data not available\n"); |
| 710 | return -EINVAL; | 710 | return -EINVAL; |
| 711 | } | 711 | } |
| 712 | madc = kzalloc(sizeof(*madc), GFP_KERNEL); | 712 | madc = devm_kzalloc(&pdev->dev, sizeof(*madc), GFP_KERNEL); |
| 713 | if (!madc) | 713 | if (!madc) |
| 714 | return -ENOMEM; | 714 | return -ENOMEM; |
| 715 | 715 | ||
| @@ -726,7 +726,7 @@ static int twl4030_madc_probe(struct platform_device *pdev) | |||
| 726 | TWL4030_MADC_ISR1 : TWL4030_MADC_ISR2; | 726 | TWL4030_MADC_ISR1 : TWL4030_MADC_ISR2; |
| 727 | ret = twl4030_madc_set_power(madc, 1); | 727 | ret = twl4030_madc_set_power(madc, 1); |
| 728 | if (ret < 0) | 728 | if (ret < 0) |
| 729 | goto err_power; | 729 | return ret; |
| 730 | ret = twl4030_madc_set_current_generator(madc, 0, 1); | 730 | ret = twl4030_madc_set_current_generator(madc, 0, 1); |
| 731 | if (ret < 0) | 731 | if (ret < 0) |
| 732 | goto err_current_generator; | 732 | goto err_current_generator; |
| @@ -770,7 +770,9 @@ static int twl4030_madc_probe(struct platform_device *pdev) | |||
| 770 | 770 | ||
| 771 | platform_set_drvdata(pdev, madc); | 771 | platform_set_drvdata(pdev, madc); |
| 772 | mutex_init(&madc->lock); | 772 | mutex_init(&madc->lock); |
| 773 | ret = request_threaded_irq(platform_get_irq(pdev, 0), NULL, | 773 | |
| 774 | irq = platform_get_irq(pdev, 0); | ||
| 775 | ret = devm_request_threaded_irq(&pdev->dev, irq, NULL, | ||
| 774 | twl4030_madc_threaded_irq_handler, | 776 | twl4030_madc_threaded_irq_handler, |
| 775 | IRQF_TRIGGER_RISING, "twl4030_madc", madc); | 777 | IRQF_TRIGGER_RISING, "twl4030_madc", madc); |
| 776 | if (ret) { | 778 | if (ret) { |
| @@ -783,9 +785,6 @@ err_i2c: | |||
| 783 | twl4030_madc_set_current_generator(madc, 0, 0); | 785 | twl4030_madc_set_current_generator(madc, 0, 0); |
| 784 | err_current_generator: | 786 | err_current_generator: |
| 785 | twl4030_madc_set_power(madc, 0); | 787 | twl4030_madc_set_power(madc, 0); |
| 786 | err_power: | ||
| 787 | kfree(madc); | ||
| 788 | |||
| 789 | return ret; | 788 | return ret; |
| 790 | } | 789 | } |
| 791 | 790 | ||
| @@ -793,10 +792,8 @@ static int twl4030_madc_remove(struct platform_device *pdev) | |||
| 793 | { | 792 | { |
| 794 | struct twl4030_madc_data *madc = platform_get_drvdata(pdev); | 793 | struct twl4030_madc_data *madc = platform_get_drvdata(pdev); |
| 795 | 794 | ||
| 796 | free_irq(platform_get_irq(pdev, 0), madc); | ||
| 797 | twl4030_madc_set_current_generator(madc, 0, 0); | 795 | twl4030_madc_set_current_generator(madc, 0, 0); |
| 798 | twl4030_madc_set_power(madc, 0); | 796 | twl4030_madc_set_power(madc, 0); |
| 799 | kfree(madc); | ||
| 800 | 797 | ||
| 801 | return 0; | 798 | return 0; |
| 802 | } | 799 | } |
