Re: [PATCH 1/2] dt-bindings: leds: add Texas Instruments TPS6131x flash LED driver

From: Matthias Fend
Date: Mon Mar 10 2025 - 04:40:16 EST


Hi Krzysztof,

thanks for your review.

Am 10.03.2025 um 08:49 schrieb Krzysztof Kozlowski:
On 28/02/2025 11:31, Matthias Fend wrote:
+
+properties:
+ compatible:
+ enum:
+ - ti,tps61310
+ - ti,tps61311
+
+ reg:
+ maxItems: 1
+
+ '#address-cells':
+ const: 1
+
+ '#size-cells':
+ const: 0

Why do you need these two?

As a template, I also used recently added bindings (silergy,sy7802.yaml). These entries come from there, but as I understand it, they are supposed to be removed, right?


+
+ reset-gpios:
+ maxItems: 1
+ description: GPIO connected to NRESET pin
+
+ ti,valley-current-limit:
+ type: boolean
+ description:
+ Reduce the valley peak current limit from 1750mA to 1250mA (TPS61310) or
+ from 2480mA to 1800mA (TPS61311).
+
+ led:

Why do you have only one led node? Description says three: LED1-3,
unless these are just sinks which always have to be connected to the
same LED?

That is basically correct. If you just want to switch the 3 LEDs on or off, you could map that accordingly.
In detail, however, the 3 channels are not really independent of each other. All channels share, for example, the flash controller, the safety timers and the operating mode. In addition, two channels share the configuration registers. It is therefore not possible to use one channel as a flash and another as a normal LED.
For use as an LED flash controller (what the chip actually is), it therefore only makes sense if one or more channels are combined.


+ type: object
+ $ref: common.yaml#
+ unevaluatedProperties: false
+
+ properties:
+ led-sources:
+ allOf:

Drop allOf

+ - minItems: 1
+ maxItems: 3
+ items:
+ enum: [1, 2, 3]
+
+ led-max-microamp:
+ anyOf:

oneOf

+ - minimum: 25000
+ maximum: 350000
+ multipleOf: 50000
+ - minimum: 25000
+ maximum: 525000

Why two different values?

The channels can in principle be configured in 25mA steps.
If only the two channels that share the configuration register are used, the step size doubles to 50mA. The maximum current values ​​for such a configuration are also different.
There are of course several other combinations of channels that would result in different maximum values, but since the step size is an important value for the API, I wanted to describe these two cases explicitly.

Best regards
~Matthias


+ multipleOf: 25000
+
+ flash-max-microamp:
+ anyOf:

oneOf

+ - minimum: 25000
+ maximum: 800000
+ multipleOf: 50000
+ - minimum: 25000

Same question

+ maximum: 1500000
+ multipleOf: 25000
+
+ flash-max-timeout-us:
+ enum: [ 5300, 10700, 16000, 21300, 26600, 32000, 37300, 68200, 71500,
+ 102200, 136300, 170400, 204500, 340800, 579300, 852000 ]
+
+ required:
+ - led-sources
+ - led-max-microamp
+ - flash-max-microamp
+ - flash-max-timeout-us
+
+required:
+ - compatible
+ - reg
+ - '#address-cells'
+ - '#size-cells'

Why?

+ - led
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/leds/common.h>
+ #include <dt-bindings/gpio/gpio.h>
+
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ led-controller@33 {
+ compatible = "ti,tps61310";
+ reg = <0x33>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ reset-gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;
+
+ tps61310_flash: led {

Drop unused label

Best regards,
Krzysztof