aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Reichel <sre@debian.org>2014-03-15 21:43:25 -0400
committerLee Jones <lee.jones@linaro.org>2014-03-18 04:07:15 -0400
commite7f22b75167d8b8a4d4c67d12b026a746aec05f6 (patch)
treea4792d3a7b84f65d76e6e433272a11de8a750845
parent0414855fdc4a40da05221fc6062cccbc0c30f169 (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.c15
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);
784err_current_generator: 786err_current_generator:
785 twl4030_madc_set_power(madc, 0); 787 twl4030_madc_set_power(madc, 0);
786err_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}