aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorPeter Ujfalusi <peter.ujfalusi@ti.com>2012-12-21 04:43:55 -0500
committerBryan Wu <cooloney@gmail.com>2013-02-01 20:47:04 -0500
commit9ea6cdac9ba5fbc65adde4dc6a3cbee1206508df (patch)
treef5edea4f81669ed2b7413b577a5c0d1e9078a65d /drivers
parent8614fb46637a993258146022b0140d553132a0b7 (diff)
leds: leds-pwm: Convert to use devm_get_pwm
Update the driver to use the new API for requesting pwm so we can take advantage of the pwm_lookup table to find the correct pwm to be used for the LED functionality. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Signed-off-by: Bryan Wu <cooloney@gmail.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/leds/leds-pwm.c19
1 files changed, 6 insertions, 13 deletions
diff --git a/drivers/leds/leds-pwm.c b/drivers/leds/leds-pwm.c
index 2157524f277c..351257c2a7b8 100644
--- a/drivers/leds/leds-pwm.c
+++ b/drivers/leds/leds-pwm.c
@@ -67,12 +67,11 @@ static int led_pwm_probe(struct platform_device *pdev)
67 cur_led = &pdata->leds[i]; 67 cur_led = &pdata->leds[i];
68 led_dat = &leds_data[i]; 68 led_dat = &leds_data[i];
69 69
70 led_dat->pwm = pwm_request(cur_led->pwm_id, 70 led_dat->pwm = devm_pwm_get(&pdev->dev, cur_led->name);
71 cur_led->name);
72 if (IS_ERR(led_dat->pwm)) { 71 if (IS_ERR(led_dat->pwm)) {
73 ret = PTR_ERR(led_dat->pwm); 72 ret = PTR_ERR(led_dat->pwm);
74 dev_err(&pdev->dev, "unable to request PWM %d\n", 73 dev_err(&pdev->dev, "unable to request PWM for %s\n",
75 cur_led->pwm_id); 74 cur_led->name);
76 goto err; 75 goto err;
77 } 76 }
78 77
@@ -86,10 +85,8 @@ static int led_pwm_probe(struct platform_device *pdev)
86 led_dat->cdev.flags |= LED_CORE_SUSPENDRESUME; 85 led_dat->cdev.flags |= LED_CORE_SUSPENDRESUME;
87 86
88 ret = led_classdev_register(&pdev->dev, &led_dat->cdev); 87 ret = led_classdev_register(&pdev->dev, &led_dat->cdev);
89 if (ret < 0) { 88 if (ret < 0)
90 pwm_free(led_dat->pwm);
91 goto err; 89 goto err;
92 }
93 } 90 }
94 91
95 platform_set_drvdata(pdev, leds_data); 92 platform_set_drvdata(pdev, leds_data);
@@ -98,10 +95,8 @@ static int led_pwm_probe(struct platform_device *pdev)
98 95
99err: 96err:
100 if (i > 0) { 97 if (i > 0) {
101 for (i = i - 1; i >= 0; i--) { 98 for (i = i - 1; i >= 0; i--)
102 led_classdev_unregister(&leds_data[i].cdev); 99 led_classdev_unregister(&leds_data[i].cdev);
103 pwm_free(leds_data[i].pwm);
104 }
105 } 100 }
106 101
107 return ret; 102 return ret;
@@ -115,10 +110,8 @@ static int led_pwm_remove(struct platform_device *pdev)
115 110
116 leds_data = platform_get_drvdata(pdev); 111 leds_data = platform_get_drvdata(pdev);
117 112
118 for (i = 0; i < pdata->num_leds; i++) { 113 for (i = 0; i < pdata->num_leds; i++)
119 led_classdev_unregister(&leds_data[i].cdev); 114 led_classdev_unregister(&leds_data[i].cdev);
120 pwm_free(leds_data[i].pwm);
121 }
122 115
123 return 0; 116 return 0;
124} 117}