diff --git a/[refs] b/[refs] index bde43668cddb..6d4f961afd84 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: db6eaf8388a413a5ee1b4547ce78506b9c6456b0 +refs/heads/master: 240085e255cd2818aff2ccde3066b7db1f29076a diff --git a/trunk/drivers/leds/leds-lp55xx-common.c b/trunk/drivers/leds/leds-lp55xx-common.c index 578902ab604f..9638ad4dc635 100644 --- a/trunk/drivers/leds/leds-lp55xx-common.c +++ b/trunk/drivers/leds/leds-lp55xx-common.c @@ -493,8 +493,19 @@ EXPORT_SYMBOL_GPL(lp55xx_unregister_leds); int lp55xx_register_sysfs(struct lp55xx_chip *chip) { struct device *dev = &chip->cl->dev; + struct lp55xx_device_config *cfg = chip->cfg; + int ret; + + if (!cfg->run_engine || !cfg->firmware_cb) + goto dev_specific_attrs; + + ret = sysfs_create_group(&dev->kobj, &lp55xx_engine_attr_group); + if (ret) + return ret; - return sysfs_create_group(&dev->kobj, &lp55xx_engine_attr_group); +dev_specific_attrs: + return cfg->dev_attr_group ? + sysfs_create_group(&dev->kobj, cfg->dev_attr_group) : 0; } EXPORT_SYMBOL_GPL(lp55xx_register_sysfs); diff --git a/trunk/drivers/leds/leds-lp55xx-common.h b/trunk/drivers/leds/leds-lp55xx-common.h index 8473abf9830c..64eb78da1c4b 100644 --- a/trunk/drivers/leds/leds-lp55xx-common.h +++ b/trunk/drivers/leds/leds-lp55xx-common.h @@ -45,6 +45,7 @@ struct lp55xx_reg { * @set_led_current : LED current set function * @firmware_cb : Call function when the firmware is loaded * @run_engine : Run internal engine for pattern + * @dev_attr_group : Device specific attributes */ struct lp55xx_device_config { const struct lp55xx_reg reset; @@ -65,6 +66,9 @@ struct lp55xx_device_config { /* used for running firmware LED patterns */ void (*run_engine) (struct lp55xx_chip *chip, bool start); + + /* additional device specific attributes */ + const struct attribute_group *dev_attr_group; }; /*