diff options
| author | Peter Ujfalusi <peter.ujfalusi@ti.com> | 2012-12-21 04:43:55 -0500 |
|---|---|---|
| committer | Bryan Wu <cooloney@gmail.com> | 2013-02-01 20:47:04 -0500 |
| commit | 9ea6cdac9ba5fbc65adde4dc6a3cbee1206508df (patch) | |
| tree | f5edea4f81669ed2b7413b577a5c0d1e9078a65d | |
| parent | 8614fb46637a993258146022b0140d553132a0b7 (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>
| -rw-r--r-- | drivers/leds/leds-pwm.c | 19 | ||||
| -rw-r--r-- | include/linux/leds_pwm.h | 2 |
2 files changed, 7 insertions, 14 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 | ||
| 99 | err: | 96 | err: |
| 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 | } |
diff --git a/include/linux/leds_pwm.h b/include/linux/leds_pwm.h index 33a071167489..a65e9646e4b1 100644 --- a/include/linux/leds_pwm.h +++ b/include/linux/leds_pwm.h | |||
| @@ -7,7 +7,7 @@ | |||
| 7 | struct led_pwm { | 7 | struct led_pwm { |
| 8 | const char *name; | 8 | const char *name; |
| 9 | const char *default_trigger; | 9 | const char *default_trigger; |
| 10 | unsigned pwm_id; | 10 | unsigned pwm_id __deprecated; |
| 11 | u8 active_low; | 11 | u8 active_low; |
| 12 | unsigned max_brightness; | 12 | unsigned max_brightness; |
| 13 | unsigned pwm_period_ns; | 13 | unsigned pwm_period_ns; |
