diff options
Diffstat (limited to 'drivers/leds/leds-lm355x.c')
-rw-r--r-- | drivers/leds/leds-lm355x.c | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/drivers/leds/leds-lm355x.c b/drivers/leds/leds-lm355x.c index 591eb5e58ae3..f5112cb2d991 100644 --- a/drivers/leds/leds-lm355x.c +++ b/drivers/leds/leds-lm355x.c | |||
@@ -413,6 +413,12 @@ out: | |||
413 | 413 | ||
414 | static DEVICE_ATTR(pattern, S_IWUSR, NULL, lm3556_indicator_pattern_store); | 414 | static DEVICE_ATTR(pattern, S_IWUSR, NULL, lm3556_indicator_pattern_store); |
415 | 415 | ||
416 | static struct attribute *lm355x_indicator_attrs[] = { | ||
417 | &dev_attr_pattern.attr, | ||
418 | NULL | ||
419 | }; | ||
420 | ATTRIBUTE_GROUPS(lm355x_indicator); | ||
421 | |||
416 | static const struct regmap_config lm355x_regmap = { | 422 | static const struct regmap_config lm355x_regmap = { |
417 | .reg_bits = 8, | 423 | .reg_bits = 8, |
418 | .val_bits = 8, | 424 | .val_bits = 8, |
@@ -501,25 +507,18 @@ static int lm355x_probe(struct i2c_client *client, | |||
501 | else | 507 | else |
502 | chip->cdev_indicator.max_brightness = 8; | 508 | chip->cdev_indicator.max_brightness = 8; |
503 | chip->cdev_indicator.brightness_set = lm355x_indicator_brightness_set; | 509 | chip->cdev_indicator.brightness_set = lm355x_indicator_brightness_set; |
510 | /* indicator pattern control only for LM3556 */ | ||
511 | if (id->driver_data == CHIP_LM3556) | ||
512 | chip->cdev_indicator.groups = lm355x_indicator_groups; | ||
504 | err = led_classdev_register((struct device *) | 513 | err = led_classdev_register((struct device *) |
505 | &client->dev, &chip->cdev_indicator); | 514 | &client->dev, &chip->cdev_indicator); |
506 | if (err < 0) | 515 | if (err < 0) |
507 | goto err_create_indicator_file; | 516 | goto err_create_indicator_file; |
508 | /* indicator pattern control only for LM3554 */ | ||
509 | if (id->driver_data == CHIP_LM3556) { | ||
510 | err = | ||
511 | device_create_file(chip->cdev_indicator.dev, | ||
512 | &dev_attr_pattern); | ||
513 | if (err < 0) | ||
514 | goto err_create_pattern_file; | ||
515 | } | ||
516 | 517 | ||
517 | dev_info(&client->dev, "%s is initialized\n", | 518 | dev_info(&client->dev, "%s is initialized\n", |
518 | lm355x_name[id->driver_data]); | 519 | lm355x_name[id->driver_data]); |
519 | return 0; | 520 | return 0; |
520 | 521 | ||
521 | err_create_pattern_file: | ||
522 | led_classdev_unregister(&chip->cdev_indicator); | ||
523 | err_create_indicator_file: | 522 | err_create_indicator_file: |
524 | led_classdev_unregister(&chip->cdev_torch); | 523 | led_classdev_unregister(&chip->cdev_torch); |
525 | err_create_torch_file: | 524 | err_create_torch_file: |
@@ -534,8 +533,6 @@ static int lm355x_remove(struct i2c_client *client) | |||
534 | struct lm355x_reg_data *preg = chip->regs; | 533 | struct lm355x_reg_data *preg = chip->regs; |
535 | 534 | ||
536 | regmap_write(chip->regmap, preg[REG_OPMODE].regno, 0); | 535 | regmap_write(chip->regmap, preg[REG_OPMODE].regno, 0); |
537 | if (chip->type == CHIP_LM3556) | ||
538 | device_remove_file(chip->cdev_indicator.dev, &dev_attr_pattern); | ||
539 | led_classdev_unregister(&chip->cdev_indicator); | 536 | led_classdev_unregister(&chip->cdev_indicator); |
540 | flush_work(&chip->work_indicator); | 537 | flush_work(&chip->work_indicator); |
541 | led_classdev_unregister(&chip->cdev_torch); | 538 | led_classdev_unregister(&chip->cdev_torch); |