Document Texas Instruments TPS61310/TPS61311 flash LED driver devicetree
bindings.
Signed-off-by: Matthias Fend <matthias.fend@emfend.at>
---
.../devicetree/bindings/leds/ti,tps6131x.yaml | 123 +++++++++++++++++++++
1 file changed, 123 insertions(+)
diff --git a/Documentation/devicetree/bindings/leds/ti,tps6131x.yaml b/Documentation/devicetree/bindings/leds/ti,tps6131x.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..c08b3cef7abcec07237d3271456ff1f888b2b809
--- /dev/null
+++ b/Documentation/devicetree/bindings/leds/ti,tps6131x.yaml
@@ -0,0 +1,123 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/leds/ti,tps6131x.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Texas Instruments TPS6131X flash LED driver
+
+maintainers:
+ - Matthias Fend <matthias.fend@emfend.at>
+
+description: |
+ The TPS61310/TPS61311 is a flash LED driver with I2C interface.
+ Its power stage is capable of supplying a maximum total current of roughly 1500mA.
+ The TPS6131x provides three constant-current sinks, capable of sinking
+ up to 2 × 400mA (LED1 and LED3) and 800mA (LED2) in flash mode.
+ In torch mode, each sink (LED1, LED2, LED3) supports currents up to 175mA.
+
+ The data sheet can be found at:
+ https://www.ti.com/lit/ds/symlink/tps61310.pdf
+
+properties:
+ compatible:
+ enum:
+ - ti,tps61310
+ - ti,tps61311
+
+ reg:
+ maxItems: 1
+
+ '#address-cells':
+ const: 1
+
+ '#size-cells':
+ const: 0
+
+ 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:
+ type: object
+ $ref: common.yaml#
+ unevaluatedProperties: false
+
+ properties:
+ led-sources:
+ allOf:
+ - minItems: 1
+ maxItems: 3
+ items:
+ enum: [1, 2, 3]
+
+ led-max-microamp:
+ anyOf:
+ - minimum: 25000
+ maximum: 350000
+ multipleOf: 50000
+ - minimum: 25000
+ maximum: 525000
+ multipleOf: 25000
+
+ flash-max-microamp:
+ anyOf:
+ - minimum: 25000
+ maximum: 800000
+ multipleOf: 50000
+ - minimum: 25000
+ 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'
+ - 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 {
+ function = LED_FUNCTION_FLASH;
+ color = <LED_COLOR_ID_WHITE>;
+ led-sources = <1>, <2>, <3>;
+ led-max-microamp = <525000>;
+ flash-max-microamp = <1500000>;
+ flash-max-timeout-us = <852000>;
+ };
+ };
+ };
--
2.34.1
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?
> +
> + 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?
> + 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?
> + 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
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
On 10/03/2025 09:40, Matthias Fend wrote: > 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? They make no sense based on the bindings. > >> >>> + >>> + 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. You define the binding which will be set in stone. This binding says it is not possible to use two or three LEDs. I am fine with this, but be aware of it and explain this in binding description. > >> >>> + 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. > ok Best regards, Krzysztof
On Fri, Feb 28, 2025 at 11:31:23AM +0100, Matthias Fend wrote:
> Document Texas Instruments TPS61310/TPS61311 flash LED driver devicetree
> bindings.
>
> Signed-off-by: Matthias Fend <matthias.fend@emfend.at>
> ---
> .../devicetree/bindings/leds/ti,tps6131x.yaml | 123 +++++++++++++++++++++
> 1 file changed, 123 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/leds/ti,tps6131x.yaml b/Documentation/devicetree/bindings/leds/ti,tps6131x.yaml
> new file mode 100644
> index 0000000000000000000000000000000000000000..c08b3cef7abcec07237d3271456ff1f888b2b809
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/leds/ti,tps6131x.yaml
With a filename matching one of the compatibles in the file,
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
Cheers,
Conor.
> @@ -0,0 +1,123 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/leds/ti,tps6131x.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Texas Instruments TPS6131X flash LED driver
> +
> +maintainers:
> + - Matthias Fend <matthias.fend@emfend.at>
> +
> +description: |
> + The TPS61310/TPS61311 is a flash LED driver with I2C interface.
> + Its power stage is capable of supplying a maximum total current of roughly 1500mA.
> + The TPS6131x provides three constant-current sinks, capable of sinking
> + up to 2 × 400mA (LED1 and LED3) and 800mA (LED2) in flash mode.
> + In torch mode, each sink (LED1, LED2, LED3) supports currents up to 175mA.
> +
> + The data sheet can be found at:
> + https://www.ti.com/lit/ds/symlink/tps61310.pdf
> +
> +properties:
> + compatible:
> + enum:
> + - ti,tps61310
> + - ti,tps61311
> +
> + reg:
> + maxItems: 1
> +
> + '#address-cells':
> + const: 1
> +
> + '#size-cells':
> + const: 0
> +
> + 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:
> + type: object
> + $ref: common.yaml#
> + unevaluatedProperties: false
> +
> + properties:
> + led-sources:
> + allOf:
> + - minItems: 1
> + maxItems: 3
> + items:
> + enum: [1, 2, 3]
> +
> + led-max-microamp:
> + anyOf:
> + - minimum: 25000
> + maximum: 350000
> + multipleOf: 50000
> + - minimum: 25000
> + maximum: 525000
> + multipleOf: 25000
> +
> + flash-max-microamp:
> + anyOf:
> + - minimum: 25000
> + maximum: 800000
> + multipleOf: 50000
> + - minimum: 25000
> + 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'
> + - 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 {
> + function = LED_FUNCTION_FLASH;
> + color = <LED_COLOR_ID_WHITE>;
> + led-sources = <1>, <2>, <3>;
> + led-max-microamp = <525000>;
> + flash-max-microamp = <1500000>;
> + flash-max-timeout-us = <852000>;
> + };
> + };
> + };
>
> --
> 2.34.1
>
Hi Conor,
Am 28.02.2025 um 19:24 schrieb Conor Dooley:
> On Fri, Feb 28, 2025 at 11:31:23AM +0100, Matthias Fend wrote:
>> Document Texas Instruments TPS61310/TPS61311 flash LED driver devicetree
>> bindings.
>>
>> Signed-off-by: Matthias Fend <matthias.fend@emfend.at>
>> ---
>> .../devicetree/bindings/leds/ti,tps6131x.yaml | 123 +++++++++++++++++++++
>> 1 file changed, 123 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/leds/ti,tps6131x.yaml b/Documentation/devicetree/bindings/leds/ti,tps6131x.yaml
>> new file mode 100644
>> index 0000000000000000000000000000000000000000..c08b3cef7abcec07237d3271456ff1f888b2b809
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/leds/ti,tps6131x.yaml
>
> With a filename matching one of the compatibles in the file,
> Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
thank you very much for your feedback.
Since I found different variants in the LED bindings, I wasn't quite
sure here.
So is it okay if I simply rename the file to 'ti,tps61310.yaml', even
though there are multiple compatible strings and the driver is called
leds-tps6131x?
Thanks
~Matthias
>
> Cheers,
> Conor.
>
>> @@ -0,0 +1,123 @@
>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/leds/ti,tps6131x.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: Texas Instruments TPS6131X flash LED driver
>> +
>> +maintainers:
>> + - Matthias Fend <matthias.fend@emfend.at>
>> +
>> +description: |
>> + The TPS61310/TPS61311 is a flash LED driver with I2C interface.
>> + Its power stage is capable of supplying a maximum total current of roughly 1500mA.
>> + The TPS6131x provides three constant-current sinks, capable of sinking
>> + up to 2 × 400mA (LED1 and LED3) and 800mA (LED2) in flash mode.
>> + In torch mode, each sink (LED1, LED2, LED3) supports currents up to 175mA.
>> +
>> + The data sheet can be found at:
>> + https://www.ti.com/lit/ds/symlink/tps61310.pdf
>> +
>> +properties:
>> + compatible:
>> + enum:
>> + - ti,tps61310
>> + - ti,tps61311
>> +
>> + reg:
>> + maxItems: 1
>> +
>> + '#address-cells':
>> + const: 1
>> +
>> + '#size-cells':
>> + const: 0
>> +
>> + 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:
>> + type: object
>> + $ref: common.yaml#
>> + unevaluatedProperties: false
>> +
>> + properties:
>> + led-sources:
>> + allOf:
>> + - minItems: 1
>> + maxItems: 3
>> + items:
>> + enum: [1, 2, 3]
>> +
>> + led-max-microamp:
>> + anyOf:
>> + - minimum: 25000
>> + maximum: 350000
>> + multipleOf: 50000
>> + - minimum: 25000
>> + maximum: 525000
>> + multipleOf: 25000
>> +
>> + flash-max-microamp:
>> + anyOf:
>> + - minimum: 25000
>> + maximum: 800000
>> + multipleOf: 50000
>> + - minimum: 25000
>> + 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'
>> + - 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 {
>> + function = LED_FUNCTION_FLASH;
>> + color = <LED_COLOR_ID_WHITE>;
>> + led-sources = <1>, <2>, <3>;
>> + led-max-microamp = <525000>;
>> + flash-max-microamp = <1500000>;
>> + flash-max-timeout-us = <852000>;
>> + };
>> + };
>> + };
>>
>> --
>> 2.34.1
>>
On 10/03/2025 08:20, Matthias Fend wrote: > Hi Conor, > > Am 28.02.2025 um 19:24 schrieb Conor Dooley: >> On Fri, Feb 28, 2025 at 11:31:23AM +0100, Matthias Fend wrote: >>> Document Texas Instruments TPS61310/TPS61311 flash LED driver devicetree >>> bindings. >>> >>> Signed-off-by: Matthias Fend <matthias.fend@emfend.at> >>> --- >>> .../devicetree/bindings/leds/ti,tps6131x.yaml | 123 +++++++++++++++++++++ >>> 1 file changed, 123 insertions(+) >>> >>> diff --git a/Documentation/devicetree/bindings/leds/ti,tps6131x.yaml b/Documentation/devicetree/bindings/leds/ti,tps6131x.yaml >>> new file mode 100644 >>> index 0000000000000000000000000000000000000000..c08b3cef7abcec07237d3271456ff1f888b2b809 >>> --- /dev/null >>> +++ b/Documentation/devicetree/bindings/leds/ti,tps6131x.yaml >> >> With a filename matching one of the compatibles in the file, >> Reviewed-by: Conor Dooley <conor.dooley@microchip.com> > > thank you very much for your feedback. > Since I found different variants in the LED bindings, I wasn't quite > sure here. > So is it okay if I simply rename the file to 'ti,tps61310.yaml', even > though there are multiple compatible strings and the driver is called > leds-tps6131x? > I think that was exactly the review comment you got. Best regards, Krzysztof
© 2016 - 2025 Red Hat, Inc.