Re: [PATCH v2 1/2] led: led-class: Read max-brightness from devicetree

From: Astrid Rost
Date: Mon Jul 03 2023 - 03:53:14 EST


Hello Jacek,

I am having problems with the PWM controller LP5024.

https://www.ti.com/product/LP5024

There is no such a calculation in the data-sheet like:
max_brightness = max_current / constant.

I also assume it is depending on the type of LEDs and circuit, which are connected.

It supports two current modes: 25,5 mA and and 35 mA, both is to high for the LEDs I have.

For max_brightness seems to be everything inside the kernel, but reading the value from devicetree. I first thought I could add it in the lp50xx
driver, but Andy and Rob thought that I better put it into the general parts. And of course drivers having led-max-microamp should better use it.

Please, let me know if you have a better suggestion.

Astrid





On 7/1/23 13:09, Jacek Anaszewski wrote:
Hi Astrid,

On 6/30/23 11:22, Astrid Rost wrote:
Add max-brightness in order to reduce the current on the connected LEDs.
Normally, the maximum brightness is determined by the hardware, and this
property is not required. This property is used to set a software limit.
It could happen that an LED is made so bright that it gets damaged or
causes damage due to restrictions in a specific system, such as mounting
conditions. Note that led-max-microamp should be preferably used, if it
is supported by the controller.

Signed-off-by: Astrid Rost <astrid.rost@xxxxxxxx>
---
  drivers/leds/led-class.c | 4 ++++
  1 file changed, 4 insertions(+)

diff --git a/drivers/leds/led-class.c b/drivers/leds/led-class.c
index 9255bc11f99d..ce652abf9336 100644
--- a/drivers/leds/led-class.c
+++ b/drivers/leds/led-class.c
@@ -457,6 +457,10 @@ int led_classdev_register_ext(struct device *parent,
              if (fwnode_property_present(init_data->fwnode,
                              "retain-state-shutdown"))
                  led_cdev->flags |= LED_RETAIN_AT_SHUTDOWN;
+
+            fwnode_property_read_u32(init_data->fwnode,
+                "max-brightness",
+                &led_cdev->max_brightness);
          }
      } else {
          proposed_name = led_cdev->name;

We have led-max-microamp for that and every LED class driver is supposed
to calculate its max brightness level basing on it.