diff options
| author | Sachin Kamat <sachin.kamat@linaro.org> | 2012-11-24 23:58:10 -0500 |
|---|---|---|
| committer | Bryan Wu <cooloney@gmail.com> | 2012-11-27 17:49:24 -0500 |
| commit | 04195823aa16d648cd7f52abd2ea6df1b9aee53f (patch) | |
| tree | d24ee2ee37483000d91f32bf233d34b1e4ea21d4 | |
| parent | 95a8ff835674e1156c0640f83829773f8bfe655a (diff) | |
leds: leds-ns2: use devm_gpio_request_one
devm_gpio_request_one is device managed and makes error handling
and cleanup simpler.
Cc: Simon Guinot <sguinot@lacie.com>
Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Bryan Wu <cooloney@gmail.com>
| -rw-r--r-- | drivers/leds/leds-ns2.c | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/drivers/leds/leds-ns2.c b/drivers/leds/leds-ns2.c index 5df2a250a13e..9505d862a216 100644 --- a/drivers/leds/leds-ns2.c +++ b/drivers/leds/leds-ns2.c | |||
| @@ -191,7 +191,7 @@ create_ns2_led(struct platform_device *pdev, struct ns2_led_data *led_dat, | |||
| 191 | int ret; | 191 | int ret; |
| 192 | enum ns2_led_modes mode; | 192 | enum ns2_led_modes mode; |
| 193 | 193 | ||
| 194 | ret = gpio_request_one(template->cmd, | 194 | ret = devm_gpio_request_one(&pdev->dev, template->cmd, |
| 195 | GPIOF_DIR_OUT | gpio_get_value(template->cmd), | 195 | GPIOF_DIR_OUT | gpio_get_value(template->cmd), |
| 196 | template->name); | 196 | template->name); |
| 197 | if (ret) { | 197 | if (ret) { |
| @@ -200,13 +200,13 @@ create_ns2_led(struct platform_device *pdev, struct ns2_led_data *led_dat, | |||
| 200 | return ret; | 200 | return ret; |
| 201 | } | 201 | } |
| 202 | 202 | ||
| 203 | ret = gpio_request_one(template->slow, | 203 | ret = devm_gpio_request_one(&pdev->dev, template->slow, |
| 204 | GPIOF_DIR_OUT | gpio_get_value(template->slow), | 204 | GPIOF_DIR_OUT | gpio_get_value(template->slow), |
| 205 | template->name); | 205 | template->name); |
| 206 | if (ret) { | 206 | if (ret) { |
| 207 | dev_err(&pdev->dev, "%s: failed to setup slow GPIO\n", | 207 | dev_err(&pdev->dev, "%s: failed to setup slow GPIO\n", |
| 208 | template->name); | 208 | template->name); |
| 209 | goto err_free_cmd; | 209 | return ret; |
| 210 | } | 210 | } |
| 211 | 211 | ||
| 212 | rwlock_init(&led_dat->rw_lock); | 212 | rwlock_init(&led_dat->rw_lock); |
| @@ -221,7 +221,7 @@ create_ns2_led(struct platform_device *pdev, struct ns2_led_data *led_dat, | |||
| 221 | 221 | ||
| 222 | ret = ns2_led_get_mode(led_dat, &mode); | 222 | ret = ns2_led_get_mode(led_dat, &mode); |
| 223 | if (ret < 0) | 223 | if (ret < 0) |
| 224 | goto err_free_slow; | 224 | return ret; |
| 225 | 225 | ||
| 226 | /* Set LED initial state. */ | 226 | /* Set LED initial state. */ |
| 227 | led_dat->sata = (mode == NS_V2_LED_SATA) ? 1 : 0; | 227 | led_dat->sata = (mode == NS_V2_LED_SATA) ? 1 : 0; |
| @@ -230,7 +230,7 @@ create_ns2_led(struct platform_device *pdev, struct ns2_led_data *led_dat, | |||
| 230 | 230 | ||
| 231 | ret = led_classdev_register(&pdev->dev, &led_dat->cdev); | 231 | ret = led_classdev_register(&pdev->dev, &led_dat->cdev); |
| 232 | if (ret < 0) | 232 | if (ret < 0) |
| 233 | goto err_free_slow; | 233 | return ret; |
| 234 | 234 | ||
| 235 | ret = device_create_file(led_dat->cdev.dev, &dev_attr_sata); | 235 | ret = device_create_file(led_dat->cdev.dev, &dev_attr_sata); |
| 236 | if (ret < 0) | 236 | if (ret < 0) |
| @@ -240,11 +240,6 @@ create_ns2_led(struct platform_device *pdev, struct ns2_led_data *led_dat, | |||
| 240 | 240 | ||
| 241 | err_free_cdev: | 241 | err_free_cdev: |
| 242 | led_classdev_unregister(&led_dat->cdev); | 242 | led_classdev_unregister(&led_dat->cdev); |
| 243 | err_free_slow: | ||
| 244 | gpio_free(led_dat->slow); | ||
| 245 | err_free_cmd: | ||
| 246 | gpio_free(led_dat->cmd); | ||
| 247 | |||
| 248 | return ret; | 243 | return ret; |
| 249 | } | 244 | } |
| 250 | 245 | ||
| @@ -252,8 +247,6 @@ static void delete_ns2_led(struct ns2_led_data *led_dat) | |||
| 252 | { | 247 | { |
| 253 | device_remove_file(led_dat->cdev.dev, &dev_attr_sata); | 248 | device_remove_file(led_dat->cdev.dev, &dev_attr_sata); |
| 254 | led_classdev_unregister(&led_dat->cdev); | 249 | led_classdev_unregister(&led_dat->cdev); |
| 255 | gpio_free(led_dat->cmd); | ||
| 256 | gpio_free(led_dat->slow); | ||
| 257 | } | 250 | } |
| 258 | 251 | ||
| 259 | static int __devinit ns2_led_probe(struct platform_device *pdev) | 252 | static int __devinit ns2_led_probe(struct platform_device *pdev) |
