]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
leds: leds-lp55xx: Generalize multicolor_brightness function
authorChristian Marangi <ansuelsmth@gmail.com>
Wed, 26 Jun 2024 16:00:16 +0000 (18:00 +0200)
committerLee Jones <lee@kernel.org>
Wed, 26 Jun 2024 16:08:31 +0000 (17:08 +0100)
Generalize multicolor_brightness function as the implementation is the
same for most of the lp55xx based LED driver.

Suggested-by: Lee Jones <lee@kernel.org>
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Link: https://lore.kernel.org/r/20240626160027.19703-12-ansuelsmth@gmail.com
Signed-off-by: Lee Jones <lee@kernel.org>
drivers/leds/leds-lp5521.c
drivers/leds/leds-lp5523.c
drivers/leds/leds-lp55xx-common.c
drivers/leds/leds-lp55xx-common.h

index e4d0dcdbf11bad885f05637f68f3fe7287b11703..dd7e996f22f999b6fee08c5e3fdd678212b68251 100644 (file)
@@ -222,25 +222,6 @@ static int lp5521_run_selftest(struct lp55xx_chip *chip, char *buf)
        return 0;
 }
 
-static int lp5521_multicolor_brightness(struct lp55xx_led *led)
-{
-       struct lp55xx_chip *chip = led->chip;
-       int ret;
-       int i;
-
-       mutex_lock(&chip->lock);
-       for (i = 0; i < led->mc_cdev.num_colors; i++) {
-               ret = lp55xx_write(chip,
-                                  LP5521_REG_LED_PWM_BASE +
-                                  led->mc_cdev.subled_info[i].channel,
-                                  led->mc_cdev.subled_info[i].brightness);
-               if (ret)
-                       break;
-       }
-       mutex_unlock(&chip->lock);
-       return ret;
-}
-
 static ssize_t show_engine_mode(struct device *dev,
                                struct device_attribute *attr,
                                char *buf, int nr)
@@ -381,7 +362,7 @@ static struct lp55xx_device_config lp5521_cfg = {
        .max_channel  = LP5521_MAX_LEDS,
        .post_init_device   = lp5521_post_init_device,
        .brightness_fn      = lp55xx_led_brightness,
-       .multicolor_brightness_fn = lp5521_multicolor_brightness,
+       .multicolor_brightness_fn = lp55xx_multicolor_brightness,
        .set_led_current    = lp5521_set_led_current,
        .firmware_cb        = lp55xx_firmware_loaded_cb,
        .run_engine         = lp5521_run_engine,
index a3b4063d504ee267ea05424057c4ae2a10e57381..bfa0c4431ede8020c6d9f581335b7e297c9c9b45 100644 (file)
@@ -664,25 +664,6 @@ leave:
        return ret;
 }
 
-static int lp5523_multicolor_brightness(struct lp55xx_led *led)
-{
-       struct lp55xx_chip *chip = led->chip;
-       int ret;
-       int i;
-
-       mutex_lock(&chip->lock);
-       for (i = 0; i < led->mc_cdev.num_colors; i++) {
-               ret = lp55xx_write(chip,
-                                  LP5523_REG_LED_PWM_BASE +
-                                  led->mc_cdev.subled_info[i].channel,
-                                  led->mc_cdev.subled_info[i].brightness);
-               if (ret)
-                       break;
-       }
-       mutex_unlock(&chip->lock);
-       return ret;
-}
-
 static LP55XX_DEV_ATTR_RW(engine1_mode, show_engine1_mode, store_engine1_mode);
 static LP55XX_DEV_ATTR_RW(engine2_mode, show_engine2_mode, store_engine2_mode);
 static LP55XX_DEV_ATTR_RW(engine3_mode, show_engine3_mode, store_engine3_mode);
@@ -754,7 +735,7 @@ static struct lp55xx_device_config lp5523_cfg = {
        .max_channel  = LP5523_MAX_LEDS,
        .post_init_device   = lp5523_post_init_device,
        .brightness_fn      = lp55xx_led_brightness,
-       .multicolor_brightness_fn = lp5523_multicolor_brightness,
+       .multicolor_brightness_fn = lp55xx_multicolor_brightness,
        .set_led_current    = lp5523_set_led_current,
        .firmware_cb        = lp55xx_firmware_loaded_cb,
        .run_engine         = lp5523_run_engine,
index cc393e407837fecb2d988cac5c0b4e6fbb39bf9d..27008b6a4757220687f8db66bb9f186459373ca7 100644 (file)
@@ -256,6 +256,27 @@ int lp55xx_led_brightness(struct lp55xx_led *led)
 }
 EXPORT_SYMBOL_GPL(lp55xx_led_brightness);
 
+int lp55xx_multicolor_brightness(struct lp55xx_led *led)
+{
+       struct lp55xx_chip *chip = led->chip;
+       const struct lp55xx_device_config *cfg = chip->cfg;
+       int ret;
+       int i;
+
+       mutex_lock(&chip->lock);
+       for (i = 0; i < led->mc_cdev.num_colors; i++) {
+               ret = lp55xx_write(chip,
+                                  cfg->reg_led_pwm_base.addr +
+                                  led->mc_cdev.subled_info[i].channel,
+                                  led->mc_cdev.subled_info[i].brightness);
+               if (ret)
+                       break;
+       }
+       mutex_unlock(&chip->lock);
+       return ret;
+}
+EXPORT_SYMBOL_GPL(lp55xx_multicolor_brightness);
+
 static void lp55xx_reset_device(struct lp55xx_chip *chip)
 {
        const struct lp55xx_device_config *cfg = chip->cfg;
index 4578418e501148050e51c900042fcace5c508833..021dd17bc5d7b2e0d560c29563df582d9386fd64 100644 (file)
@@ -216,6 +216,7 @@ extern int lp55xx_update_program_memory(struct lp55xx_chip *chip,
                                        const u8 *data, size_t size);
 extern void lp55xx_firmware_loaded_cb(struct lp55xx_chip *chip);
 extern int lp55xx_led_brightness(struct lp55xx_led *led);
+extern int lp55xx_multicolor_brightness(struct lp55xx_led *led);
 
 /* common probe/remove function */
 extern int lp55xx_probe(struct i2c_client *client);