Re: [PATCH v14 04/19] leds: multicolor: Introduce a multicolor class definition

From: Dan Murphy
Date: Wed Oct 23 2019 - 08:23:52 EST



On 10/18/19 4:44 PM, Jacek Anaszewski wrote:
Dan,

Thank you for the update.

On 10/18/19 2:25 PM, Dan Murphy wrote:
Introduce a multicolor class that groups colored LEDs
within a LED node.

The multi color class groups monochrome LEDs and allows controlling two
aspects of the final combined color: hue and lightness. The former is
controlled via <color>_intensity files and the latter is controlled
via brightness file.

Signed-off-by: Dan Murphy <dmurphy@xxxxxx>
---
.../ABI/testing/sysfs-class-led-multicolor | 36 +++
Documentation/leds/index.rst | 1 +
Documentation/leds/leds-class-multicolor.rst | 100 +++++++
drivers/leds/Kconfig | 10 +
drivers/leds/Makefile | 1 +
drivers/leds/led-class-multicolor.c | 271 ++++++++++++++++++
include/linux/led-class-multicolor.h | 97 +++++++
7 files changed, 516 insertions(+)
create mode 100644 Documentation/ABI/testing/sysfs-class-led-multicolor
create mode 100644 Documentation/leds/leds-class-multicolor.rst
create mode 100644 drivers/leds/led-class-multicolor.c
create mode 100644 include/linux/led-class-multicolor.h
[...]
# LED Platform Drivers
diff --git a/drivers/leds/led-class-multicolor.c b/drivers/leds/led-class-multicolor.c
new file mode 100644
index 000000000000..453fd8e913e9
--- /dev/null
+++ b/drivers/leds/led-class-multicolor.c
@@ -0,0 +1,271 @@
+// SPDX-License-Identifier: GPL-2.0
+// LED Multi Color class interface
+// Copyright (C) 2019 Texas Instruments Incorporated - http://www.ti.com/
+
+#include <linux/device.h>
+#include <linux/init.h>
+#include <linux/led-class-multicolor.h>
+#include <linux/module.h>
+#include <linux/slab.h>
+#include <linux/uaccess.h>
+
+#include "leds.h"
+
+#define INTENSITY_NAME "_intensity"
+#define MAX_INTENSITY_NAME "_max_intensity"
+
+int led_mc_calc_color_components(struct led_classdev_mc *mcled_cdev,
+ enum led_brightness brightness,
+ struct led_mc_color_conversion color_component[])
+{
+ struct led_mc_color_entry *priv;
+ int i = 0;
+
+ list_for_each_entry(priv, &mcled_cdev->color_list, list) {
+ color_component[i].color_id = priv->led_color_id;
+ color_component[i].brightness = brightness *
+ priv->intensity / priv->max_intensity;
+ i++;
+ }
For lines in the function above:

s/component/components/

Ack



+ return 0;
+}
+EXPORT_SYMBOL_GPL(led_mc_calc_color_components);