diff options
30 files changed, 164 insertions, 158 deletions
diff --git a/drivers/leds/led-class.c b/drivers/leds/led-class.c index 48cce18e9d6d..a20752f562bc 100644 --- a/drivers/leds/led-class.c +++ b/drivers/leds/led-class.c | |||
| @@ -211,7 +211,7 @@ int led_classdev_register(struct device *parent, struct led_classdev *led_cdev) | |||
| 211 | led_trigger_set_default(led_cdev); | 211 | led_trigger_set_default(led_cdev); |
| 212 | #endif | 212 | #endif |
| 213 | 213 | ||
| 214 | printk(KERN_DEBUG "Registered led device: %s\n", | 214 | dev_dbg(parent, "Registered led device: %s\n", |
| 215 | led_cdev->name); | 215 | led_cdev->name); |
| 216 | 216 | ||
| 217 | return 0; | 217 | return 0; |
diff --git a/drivers/leds/led-triggers.c b/drivers/leds/led-triggers.c index 262eb4193710..3c972b2f9893 100644 --- a/drivers/leds/led-triggers.c +++ b/drivers/leds/led-triggers.c | |||
| @@ -166,6 +166,19 @@ void led_trigger_set_default(struct led_classdev *led_cdev) | |||
| 166 | } | 166 | } |
| 167 | EXPORT_SYMBOL_GPL(led_trigger_set_default); | 167 | EXPORT_SYMBOL_GPL(led_trigger_set_default); |
| 168 | 168 | ||
| 169 | void led_trigger_rename_static(const char *name, struct led_trigger *trig) | ||
| 170 | { | ||
| 171 | /* new name must be on a temporary string to prevent races */ | ||
| 172 | BUG_ON(name == trig->name); | ||
| 173 | |||
| 174 | down_write(&triggers_list_lock); | ||
| 175 | /* this assumes that trig->name was originaly allocated to | ||
| 176 | * non constant storage */ | ||
| 177 | strcpy((char *)trig->name, name); | ||
| 178 | up_write(&triggers_list_lock); | ||
| 179 | } | ||
| 180 | EXPORT_SYMBOL_GPL(led_trigger_rename_static); | ||
| 181 | |||
| 169 | /* LED Trigger Interface */ | 182 | /* LED Trigger Interface */ |
| 170 | 183 | ||
| 171 | int led_trigger_register(struct led_trigger *trig) | 184 | int led_trigger_register(struct led_trigger *trig) |
| @@ -300,13 +313,13 @@ void led_trigger_register_simple(const char *name, struct led_trigger **tp) | |||
| 300 | if (err < 0) { | 313 | if (err < 0) { |
| 301 | kfree(trig); | 314 | kfree(trig); |
| 302 | trig = NULL; | 315 | trig = NULL; |
| 303 | printk(KERN_WARNING "LED trigger %s failed to register" | 316 | pr_warn("LED trigger %s failed to register (%d)\n", |
| 304 | " (%d)\n", name, err); | 317 | name, err); |
| 305 | } | 318 | } |
| 306 | } else | 319 | } else { |
| 307 | printk(KERN_WARNING "LED trigger %s failed to register" | 320 | pr_warn("LED trigger %s failed to register (no memory)\n", |
| 308 | " (no memory)\n", name); | 321 | name); |
| 309 | 322 | } | |
| 310 | *tp = trig; | 323 | *tp = trig; |
| 311 | } | 324 | } |
| 312 | EXPORT_SYMBOL_GPL(led_trigger_register_simple); | 325 | EXPORT_SYMBOL_GPL(led_trigger_register_simple); |
diff --git a/drivers/leds/leds-88pm860x.c b/drivers/leds/leds-88pm860x.c index b7e8cc0957fc..6be2edd41173 100644 --- a/drivers/leds/leds-88pm860x.c +++ b/drivers/leds/leds-88pm860x.c | |||
| @@ -165,15 +165,13 @@ static int pm860x_led_probe(struct platform_device *pdev) | |||
| 165 | res = platform_get_resource_byname(pdev, IORESOURCE_REG, "control"); | 165 | res = platform_get_resource_byname(pdev, IORESOURCE_REG, "control"); |
| 166 | if (!res) { | 166 | if (!res) { |
| 167 | dev_err(&pdev->dev, "No REG resource for control\n"); | 167 | dev_err(&pdev->dev, "No REG resource for control\n"); |
| 168 | ret = -ENXIO; | 168 | return -ENXIO; |
| 169 | goto out; | ||
| 170 | } | 169 | } |
| 171 | data->reg_control = res->start; | 170 | data->reg_control = res->start; |
| 172 | res = platform_get_resource_byname(pdev, IORESOURCE_REG, "blink"); | 171 | res = platform_get_resource_byname(pdev, IORESOURCE_REG, "blink"); |
| 173 | if (!res) { | 172 | if (!res) { |
| 174 | dev_err(&pdev->dev, "No REG resource for blink\n"); | 173 | dev_err(&pdev->dev, "No REG resource for blink\n"); |
| 175 | ret = -ENXIO; | 174 | return -ENXIO; |
| 176 | goto out; | ||
| 177 | } | 175 | } |
| 178 | data->reg_blink = res->start; | 176 | data->reg_blink = res->start; |
| 179 | memset(data->name, 0, MFD_NAME_SIZE); | 177 | memset(data->name, 0, MFD_NAME_SIZE); |
| @@ -224,9 +222,6 @@ static int pm860x_led_probe(struct platform_device *pdev) | |||
| 224 | } | 222 | } |
| 225 | pm860x_led_set(&data->cdev, 0); | 223 | pm860x_led_set(&data->cdev, 0); |
| 226 | return 0; | 224 | return 0; |
| 227 | out: | ||
| 228 | devm_kfree(&pdev->dev, data); | ||
| 229 | return ret; | ||
| 230 | } | 225 | } |
| 231 | 226 | ||
| 232 | static int pm860x_led_remove(struct platform_device *pdev) | 227 | static int pm860x_led_remove(struct platform_device *pdev) |
diff --git a/drivers/leds/leds-adp5520.c b/drivers/leds/leds-adp5520.c index dcd9128a51a9..e8072abe76e5 100644 --- a/drivers/leds/leds-adp5520.c +++ b/drivers/leds/leds-adp5520.c | |||
| @@ -5,10 +5,10 @@ | |||
| 5 | * | 5 | * |
| 6 | * Loosely derived from leds-da903x: | 6 | * Loosely derived from leds-da903x: |
| 7 | * Copyright (C) 2008 Compulab, Ltd. | 7 | * Copyright (C) 2008 Compulab, Ltd. |
| 8 | * Mike Rapoport <mike@compulab.co.il> | 8 | * Mike Rapoport <mike@compulab.co.il> |
| 9 | * | 9 | * |
| 10 | * Copyright (C) 2006-2008 Marvell International Ltd. | 10 | * Copyright (C) 2006-2008 Marvell International Ltd. |
| 11 | * Eric Miao <eric.miao@marvell.com> | 11 | * Eric Miao <eric.miao@marvell.com> |
| 12 | * | 12 | * |
| 13 | * Licensed under the GPL-2 or later. | 13 | * Licensed under the GPL-2 or later. |
| 14 | */ | 14 | */ |
diff --git a/drivers/leds/leds-bd2802.c b/drivers/leds/leds-bd2802.c index 9abe8de40edd..851517030cc1 100644 --- a/drivers/leds/leds-bd2802.c +++ b/drivers/leds/leds-bd2802.c | |||
| @@ -26,8 +26,8 @@ | |||
| 26 | #define BD2802_LED_OFFSET 0xa | 26 | #define BD2802_LED_OFFSET 0xa |
| 27 | #define BD2802_COLOR_OFFSET 0x3 | 27 | #define BD2802_COLOR_OFFSET 0x3 |
| 28 | 28 | ||
| 29 | #define BD2802_REG_CLKSETUP 0x00 | 29 | #define BD2802_REG_CLKSETUP 0x00 |
| 30 | #define BD2802_REG_CONTROL 0x01 | 30 | #define BD2802_REG_CONTROL 0x01 |
| 31 | #define BD2802_REG_HOURSETUP 0x02 | 31 | #define BD2802_REG_HOURSETUP 0x02 |
| 32 | #define BD2802_REG_CURRENT1SETUP 0x03 | 32 | #define BD2802_REG_CURRENT1SETUP 0x03 |
| 33 | #define BD2802_REG_CURRENT2SETUP 0x04 | 33 | #define BD2802_REG_CURRENT2SETUP 0x04 |
| @@ -93,7 +93,7 @@ struct bd2802_led { | |||
| 93 | * In ADF mode, user can set registers of BD2802GU directly, | 93 | * In ADF mode, user can set registers of BD2802GU directly, |
| 94 | * therefore BD2802GU doesn't enter reset state. | 94 | * therefore BD2802GU doesn't enter reset state. |
| 95 | */ | 95 | */ |
| 96 | int adf_on; | 96 | int adf_on; |
| 97 | 97 | ||
| 98 | enum led_ids led_id; | 98 | enum led_ids led_id; |
| 99 | enum led_colors color; | 99 | enum led_colors color; |
| @@ -328,7 +328,7 @@ static ssize_t bd2802_store_reg##reg_addr(struct device *dev, \ | |||
| 328 | int ret; \ | 328 | int ret; \ |
| 329 | if (!count) \ | 329 | if (!count) \ |
| 330 | return -EINVAL; \ | 330 | return -EINVAL; \ |
| 331 | ret = strict_strtoul(buf, 16, &val); \ | 331 | ret = kstrtoul(buf, 16, &val); \ |
| 332 | if (ret) \ | 332 | if (ret) \ |
| 333 | return ret; \ | 333 | return ret; \ |
| 334 | |||
